1、 手把手 教你做 Wifi机器人 毕业论文、 毕业设计资料 目录 一、前言 . 5 二、硬件部分 . 5 2.1 汽车 . 5 2.2 路由器 . 6 2.3 微控制器的选择 . 7 2.4 操控电路( steering circuit) . 9 2.5 电池 . 9 2.6 电源导轨( Power Rails) . 10 2.7 微控制器电路( Microcontroller Circuit) .11 2.8 摄像头 . 13 2.9 喇叭 . 14 2.10 硬件安装 . 15 2.11 未来可能还会添加的部件 . 17 三、软件部分 . 17 3.1 如何让串口工作起来 . 18 3.2
2、 运行 Wifi机器人客户端应用程序 . 19 3.3 微控制器固件 . 19 3.4 下载所有的文件 . 20 3.5 免责声明 . 20 四、衡量标准和实测数据 . 21 4.1 最高时速 . 21 4.2 距离 . 21 4.3 数据传输速率 . 21 4.4 功率测量 . 22 4.5 温度 /过热问题 . 23 五、工程造价 . 24 先来看看最后做出来的成品图片: 一、前言 Wifi机器人( Wifi Robot):其实是一辆能通过互联网,或 500米以外的笔记本无线设施来远程控制的遥控汽车。由于在车上配备了一个网络摄像头,因此在视野范围之外都能够遥控该车,此外,车上还装了一个喇叭
3、,您可以远程朝人们按喇叭。 我发现 Linksys WRT54GL路由器 非常的 hacker-friendly(黑客友好),它运行 Linux和一些已经被反向工程( reverse engineered)了的硬件。世面上有一大批针对这种路由器的固件版本( firmware version)可供选择,本项目用到的版本是可订制化的 Linux firmware Open-WRT。有了路由器的相关软件,对一大堆硬件进行改装也变得可能。因此,既然有这样一个廉价的、可改装的、嵌入式 Linux 系统可以随我所用 我知道我能做件很酷的事情,于是, Wifi机器人的想法诞生了。 本文的目的是提供一个该项目
4、的概览,同时也列出了一些相关软件和电子产品的实施细节,但它并不是一个一步一步详细介绍如何制作 Wifi 机器人的手册,不过,那些具备一定电子和软件知识的人根据本文提供的信息也能够做出自己的 Wifi机器人。我已经遵循 GNU GPL v2发布了所有的源代码,因此,希望大家都来用这个源码,并尽量去完善它! 二、硬件部分 2.1 汽车 在汽车上增加网络摄像头、路由器、沉重的电池、额外的电路,以及一大堆的电线会大大超出汽车原本设计的载重量。因此,考虑到这些额外要加的重量,您需要找到一个超大型的遥控汽车。旧货店常常有一些遥控车卖,价格 3到 5美元不等( 不包括遥控器),我已经买了许多这样的汽车以供使
5、用。您最好选择那些体积大于或等于现实生活中真车体积 1/10的玩具遥控汽车,体积太小的就不要考虑了。下图这两辆遥控汽车是我在 Value Village花 5美元买下的。 我一共拆了约 20辆遥控汽车。我发现几乎每一辆车都使用了 Realtek RX2/TX2芯片 或其他 引脚兼容( pin-compatible)的芯片 ,而且说明 书里有各引脚的具体连接方式。这意味着真的很容易改装这些汽车,而不必加上一大堆我们自己的电路。我们可以将一个微控制器直接与这些引脚连接起来,直接控制汽车。充分利用汽车的原有电路能节省很多的时间和精力。 2.2 路由器 我已经改装了我的 WRT54GL,现在它有 2个
6、串口和一个 1GB 的 SD 卡(用来充当 1GB的硬盘)。在本项目中其实没有用到这个 SD卡,但用到了一个串口。两个串口中的一个作为控制台端口,另一个作为我们将来会使用 到的 TTS/1(语音合成)端口。这个项目我使用的固件版本是 Open-WRT White Russian v0.9,还有更多更新的固件版本,但我们这个项目并不需要。 本文的后面提供了参考链接,可以帮助您使用自己的串口。 2.3 微控制器的选择 在本项目中我评估了三种不同的微控制器,以下是一个简要的评估结果。 微控制器 PIC16F628A Arduino (ATmega168) Freeduino MaxSerial AV
7、R Butterfly (ATmega169) 优点 价格相对便宜;稳定的软件控制; 很容易编程(用 C 语言,而且有许多内置的函数库);集成串行( integrated serial);预包装的开发套件,很少或根本不需要焊接; 比 PIC (C)容易编程;集成串行; 较少需要焊接; 弊端 很难编程(基于汇编语言的);必须要手动连接电路;需要配备 额外 的串 行硬件( MAX232A);需要额外编码器; 价格相对较高 Bootloader 错误(详见下文);集成外设导致奇怪的输出电压;价格相对较高 最后,出于 以下几个原因我选择了 PIC16F628A: 1. 我手边有一堆 PIC16F628
8、A。 2. 我对 PIC16F628A 最熟悉。 3. 我想要块面积小的板子, PIC 是三个微控制器中面积最小的。 4. 我想完全控制代码实现的功能, PIC 是基于汇编语言编程,因此很适合。 Arduino (Freeduino MaxSerial)是我的第二选择,它很容易安装和运行,我真的很喜欢。 社区支持 非常强,而且非常好用。 我原先使用的是 AVR Butterfly开发板,但我发现 AVR butterfly的 bootloader 上有 一个错误 会破坏代码,并且不允许你重新编写它,除非载入一个新的 bootloader。我花了相当长的一段时间来调试和解决这个问题,不过最终还是
9、决定放弃它。此外,我还发现输出电压是难以预测的,因为输出还要驱动液晶显示屏之类的集成外设。 PIC 和 Arduino 微控制器平台的源代码我都有。两个都经过了测试,所以你觉得哪个好用就用哪个。 Arduino (Freeduino MaxSerial)用起来最方便,我买了 这个 。 2.4 操控电路( steering circuit) 实际上,我在车上装了两个控制板。这样做的理由是,我开始不小心烧掉了车上附带的原始驱动晶体管( drive transistor)。幸好我还能将烧掉的晶体管拆掉,同时也拆掉了一起被烧掉的 RX2芯片,从而挽救了操控电路。 该驱动晶体管的额定电流为 5A,当我努
10、力将电路电压加到 16V 时,晶体管在一阵壮观的烟雾中 “牺牲 ”了,因为正常情况下用电池驱动汽车只要 9.6V。我只好又拿了另一辆遥控汽车的板子装上了 这么做当然是为了要用板子上的驱动晶体管。当我把电压打到 12V时,尽管上面的晶体管已经变得非常热,但一切正常。如果能够利用遥控汽车已有的电路,而不必建立自己的 H桥电机驱动( H-bridge)电路 ,那将会节省大量的时间和金钱。 2.5 电池 我花了 50多美元在易趣上买了一些高级的遥控汽车电池 ,它们的电池容量都是 3800毫安( mAh)的,另外还有一个 1.8A 的智能充电器。在完全没电的情况下,每 个电池大概需要花 1.5小时充电。
11、 我用标准 ATX 电源 Molex 连接器换下了所有的遥控电池连接器。这样,我就可以用我已有的廉价连接器将它们连接起来,并且比较容易做一个分配连接器( splitter connector)来进行功率测量。这些完全充好电的电池串联连接时总电压约为 16V。 2.6 电源导轨( Power Rails) 5V (7805 1A 稳压器 ) 9.2V ( 来自12V-7812 导轨 ) 12V (7812 1A 稳压器 ) 12V (LT1083 7.5A 稳压器 ) 微控制器 摄像头; 操控电路控制器; 喇叭 wifi 路由器 有电动控制器的驱动板( drive board with motor controller) 9.6V 导轨( rail)是由 7812 12V 导轨供电,不过,我们首先需要将 4个二极管与 7812 12V 导轨串联在一起。这样做的理由是,每个二极管需要 0.7V(实际不超过 0.7V)的电压,把这 4个二极管串联,就能把 7812 12V 导轨的总电压降低约 2.8V,变为 9V 左右,从而得