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

上传人:xin****828 文档编号:6704369 上传时间:2020-03-02 格式:DOC 页数:20 大小:4.31MB
返回 下载 相关 举报
基于51单片机WiFi智能小车制作.doc_第1页
第1页 / 共20页
基于51单片机WiFi智能小车制作.doc_第2页
第2页 / 共20页
基于51单片机WiFi智能小车制作.doc_第3页
第3页 / 共20页
点击查看更多>>
资源描述
基于51单片机WiFi智能小车制作一、基本原理51单片机WiFi智能小车是利用PC或手机作为控制端,通过手机连接wifi模块(路由器)以获得wifi信号,同时车载也连接wifi模块以获得和手机相同的IP地址,实现手机和小车的连接,然后利用PC或手机上的控制软件以wifi网络信号为载体发送相关信号,wifi模块接收PC或手机端发送来的相关信号并分析转换成TTL电平信号,然后发送给单片机,单片机接收到的电平信号处理、分析、计算,转化成控制指令并发送给电机驱动模块以实现小车的前进、后退、左拐、右拐等功能。二、购买所需材料了解51单片机WiFi智能小车基本原理后,需要购买所需材料进行制作。下面列出所需制作材料:序号材料备注图例151单片机最小系统一般采用11.0592M晶振251单片机3703n路由器DB120或WiFi模块4L298n电机驱动模块有动手能力的可以自己做5减速电机及轮子一套6小车底盘7摄像头根据固件支持摄像头购买8电源根据自己需要购买种类9杜邦线及小配件制作所需工具:序号工具名称备注图例1电烙铁一套包括松香焊锡2螺丝刀平口、十字等3微型电钻可以自制4手工刀5剪刀6万用表7热熔胶枪或快干胶8USB下载器三、开始制作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 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。百度百科:http:/baike.baidu.com/link?url=18s7ZQFh6grF8LDGfd4LtrUdBXv5GWlDKLrNh8CeK1W0ixQpA9f2FGZuf9ZOtKTlDZOhM1m7YsqlHXe_RNzzp_-第一步:把电脑IP改为192.168.1.xxx第二步:把路由网络接口和电脑网卡直接用网线相连第三步:打开路由的控制界面,地址默认一般是192.168.1.1(FAST和TP的一样),用户名密码均为admin,自己修改过的用自己修改后的地址第四步:进入路由的控制界面,点“系统工具”“软件升级”“浏览”,选择下载的固件文件第五步:点击升级,耐心等待。升级成功后只能用无线和路由器连接。到此,路由器刷固件完成。4 51单片机最小系统制作该步骤就不多说了,一般在网上买单片机最小系统,买回来直接安装单片机上去就可以了。不过有兴趣的朋友可以买些散件自己焊接。5 下载下位机到单片机把编写好的下位机程序下载到单片机,下图为usb-ttl与单片机链接示意图。6安装上位机程序至PC或手机下载上位机程序到电脑端或者手机上,进行安装。7 测试上、下位机通信测试上、下位机通信首先需要把路由器、单片机最小系统、电机驱动模块、减速电机连接起来,上电测试。具体接法见下图:注意:该图从网上下载,最终接法按照各位买的模块说明书进行接线,不过接线方法都是大同小异。控制单元连接需要根据下位机程序连接in14.路由器与单片机连接按照下图标示的接口,GND连GND、TX连RX、RX连TX。连接好各自的线路后(有摄像头的可以插上摄像头),最后给单片机、电机驱动板、路由器上电,等待路由器启动完成。在电脑无线网络里寻找WifRobot的昵称连接上。打开上位机软件,按如下设置:确定后重启上位机程序,查看摄像头图像是否正常,分别按下wasd看是否能驱动电机转动。7 组装WiFi小车到这一步基本没什么问题了,接下来就按照自己的嗜好组装自己心爱的小车了。8 调试车子安装好了以后就可以试车了,前后左右功能是否正常?摄像头功能是否正常?前进与后退有没有偏向?上位机程序private void ReadFromArm() byte buffertocheck = new byte1; int bytesize = 0; do byte bufferofread = new byte1024; 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 bytebuffertochecktemp.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 byteindex_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 (bufferofdecode0 = bufferofdecode.Length & CheckSum(bufferofdecode)/保证从ARM来的帧是正确的 byte Zuohao = new byte2; int subindex = 1, index = bufferofdecode1*256+bufferofdecode2-1; string status=null; switch (bufferofdecode3)/分别处理从ARM来的帧 case POWER_ON:/从ARM来的上电状态 status = 上电; subindex = 1; break; case POWER_OFF:/从ARM来的断电状态 status = 断电; subindex = 1; break; case ABNORMAL:/从ARM来的异常状态 status = 异常; subindex = 1; break; case WARNING:/从ARM来的警告信号 status = 有; subindex = 2; break; case NEED_HELP:/从ARM来的求救信号 status = 有; subindex = 3; break; if (0 = index & index = 49) listView1.Itemsindex.SubItemssubindex.Text = status; if (status = 异常 | status = 有) listView1.Itemsindex.SubItemssubindex.ForeColor = Color.Red; else listView1.Itemsindex.SubItemssubindex.ForeColor = Color.Black; int newlength = buffertocheck.Length - 1 - index_2; if (newlength = 0) buffertocheck = new byte1; else buffertochecktemp = buffertocheck; buffertocheck = new bytenewlength; Array.Copy(buffertochecktemp, index_2 + 1, buffertocheck, 0, newlength); while (connection = Indicator.Connected); / / 向ARM发送 / / 座号 2字节 / 命令字 1字节 public void WriteToArm(byte Zuohao, byte mingling) if (connection = Indicator.Connected)/在与ARM保持连接的情况下可写 byte frame = new byte5; frame0 = 0x05; Array.Copy(Zuohao, 0, frame, 1, 2); frame3 = mingling; byte temp = 0; foreach (byte item in frame) temp += item; frame4 = (byte)(0 - temp); byte frametosend = PPP.Encode(frame); Console.WriteLine(BitConverter.ToString(frametosend); try stream.Write(frametosend, 0, frametosend.Length); catch (Exception ex) / / 向ARM发送 / / 座号 2字节 / 命令字加ASC码 n字节 public void WriteToArm(byte Zuohao, byte minglingandASC) if (connection = Indicator.Connected)/在与ARM保持连接的情况下可写 byte frame = new byte4+minglingandASC.Length; frame0 = (byte)frame.Length; Array.Copy(Zuohao, 0, frame, 1, 2); Array.Copy(minglingandASC,0,frame,3,minglingandASC.Length); byte temp = 0; foreach (byte item in frame) temp += item; frameframe.Length-1 = (byte)(0 - temp); byte frametosend = PPP.Encode(frame); Console.WriteLine(BitConverter.ToString(frametosend); try stream.Write(frametosend, 0, frametosend.Length); catch (Exception ex) 另外数据收发还需要协议,和嵌入式网关通信的指令和协议定制如下:因此数据量较少,协议也就比较简单,此协议在发送接收时用PPP封装。显示部分使用C#编写的运行于Windows .Net Framework 上的窗体应用程序,根据实际需求,对每个实验台状态的显示使用ListView控件实现,当出现异常情况,或实验台出现警告、求助信号时,ListView的相应字段文字会通过改变颜色来提醒监视人员,监视人员还可以通过一个文字发送窗体来向LED屏发送要显示的文字。总之界面清晰直观,简便易用。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!