基于51单片机WiFi智能小车制作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机WiFi 智能小车制作 一、基本原理

51单片机WiFi 智能小车是利用PC 或手机作为控制端,通过手机连接wifi 模块(路由器)以获得wifi 信号,同时车载也连接wifi 模块以获得和手机相同的IP 地址,实现手机和小车的连接,然后利用PC 或手机上的控制软件以wifi 网络信号为载体发送相关信号,wifi 模块接收PC 或手机端发送来的相关信号并分析转换成TTL 电平信号,然后发送给单片机,单片机接收到的电平信号处理、分析、计算,转化成控制指令并发送给电机驱动模块以实现小车的前进、后退、左拐、右拐等功能。 二、购买所需材料

了解51单片机WiFi 智能小车基本原理后,需要购买所需材料进行制作。下面列出所需制作材料:

WiFi

手的自

持头

口、

三、开始制作

1、制作流程

开始制作前,我们首先需要看购买路由器的型号,笔者采用的是703n路由器,所以需要引出ttl线。

总体步骤为:路由器引TTL线→路由器刷OpenWrt固件→制作51单片机最小系统→下载下位机程序到51单片机→安装上位机程序至PC或手机→测试上、下位机通信→组装→调试完成。

2、路由器引ttl线

首先打开703n路由器,按照下图标示位置焊接ttl线。

注意:1、焊接的时候要小心焊接,焊好后微拉下查看松紧

2、焊接最好采用软线焊接,防止意外整块拉掉焊点

3、焊好后一定用胶固定,最好采用热熔胶

下图为引好ttl线样子

3 刷OpenWrt固件

何为OpenWrt固件,OpenWrt可以被描述为一个嵌入式的Linux 发行版,(主流路由器固件有dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的,静态的系统。OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。

对于开发人员,OpenWrt 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。百度百科:

/link?url=18s7ZQFh6grF8LDGfd4LtrUdBXv5GWlDKLrNh8CeK1W0ixQpA9f2 FGZuf9ZOtKTlDZOhM1m7YsqlHXe_RNzzp_

---------------------------------------------------------------------------------------------------------------

第一步:把电脑IP改为192.168.1.xxx

第二步:把路由网络接口和电脑网卡直接用网线相连

第三步:打开路由的控制界面,地址默认一般是192.168.1.1(FAST和TP的一样),用户名密码均为admin,自己修改过的用自己修改后的地址

第四步:进入路由的控制界面,点“系统工具”>>“软件升级”>>“浏览”,选择下载的固件文件

第五步:点击升级,耐心等待。升级成功后只能用无线和路由器连接。到此,路由器刷固件完成。

4 51单片机最小系统制作

该步骤就不多说了,一般在网上买单片机最小系统,买回来直接安装单片机上去就可以了。不过有兴趣的朋友可以买些散件自己焊接。

5 下载下位机到单片机

把编写好的下位机程序下载到单片机,下图为usb-ttl与单片机链接示意图。

6安装上位机程序至PC或手机

下载上位机程序到电脑端或者手机上,进行安装。

7 测试上、下位机通信

测试上、下位机通信首先需要把路由器、单片机最小系统、电机驱动模块、减速电机连接起

来,上电测试。

具体接法见下图:

注意:该图从网上下载,最终接法按照各位买的模块说明书进行接线,不过接线方法都是大同小异。控制单元连接需要根据下位机程序连接in1~4.

路由器与单片机连接按照下图标示的接口,GND连GND、TX连RX、RX 连TX。

连接好各自的线路后(有摄像头的可以插上摄像头),最后给单片机、电机驱动板、路由器上电,等待路由器启动完成。在电脑无线网络里寻找WifRobot的昵称连接上。

打开上位机软件,按如下设置:

确定后重启上位机程序,查看摄像头图像是否正常,分别按下wasd看是否能驱动电机转动。

7 组装WiFi小车

到这一步基本没什么问题了,接下来就按照自己的嗜好组装自己心爱的小车了。

8 调试

车子安装好了以后就可以试车了,前后左右功能是否正常?摄像头功能是否正常?前进与后退有没有偏向?

上位机程序

private void ReadFromArm()

{

byte[] buffertocheck = new byte[1];

int bytesize = 0;

do

{

byte[] bufferofread = new byte[1024];

try { bytesize = stream.Read(bufferofread, 0,

bufferofread.Length); }

catch (Exception ex) { connection = Indicator.Unconnected; MessageBox.Show("连接中断,程序将退出。"); Application.Exit(); read.Abort(); } //MessageBox.Show(BitConverter.ToString(bufferofread));

byte[] buffertochecktemp = buffertocheck;

buffertocheck = new byte[buffertochecktemp.Length + bytesize]; Array.Copy(buffertochecktemp, 0, buffertocheck, 0, buffertochecktemp.Length);

Array.Copy(bufferofread, 0, buffertocheck,

buffertochecktemp.Length, bytesize);

int index_1, index_2;

while (Check7E(buffertocheck, out index_1, out index_2))

{

byte[] buffertodecode = new byte[index_2 + 1 - index_1];

Array.Copy(buffertocheck, index_1, buffertodecode, 0, index_2 + 1 - index_1);

byte[] bufferofdecode = PPP.Decode(buffertodecode);

//MessageBox.Show(BitConverter.ToString(bufferofdecode)); if (bufferofdecode[0] == bufferofdecode.Length && CheckSum(bufferofdecode))//保证从ARM来的帧是正确的

{

byte[] Zuohao = new byte[2];

int subindex = 1, index =

bufferofdecode[1]*256+bufferofdecode[2]-1;

string status=null;

switch (bufferofdecode[3])//分别处理从ARM来的帧

{

case POWER_ON://从ARM来的上电状态

status = "上电";

subindex = 1;

break;

case POWER_OFF://从ARM来的断电状态

status = "断电";

相关文档
最新文档