




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于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 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。百度百科:/link?url=18s7ZQFh6grF8LDGfd4LtrUdBXv5GWlDKLrNh8CeK1W0ixQpA9f2FGZuf9ZOtKTlDZOhM1m7YsqlHXe_RNzzp_-第一步:把电脑IP改为192.168.1.xxx第二步:把路由网络接口和电脑网卡直接用网线相连第三步:打开路由的控制界面,地址默认一般是(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); cat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肉类罐头加工过程中的食品安全隐患与预防考核试卷
- 稀土金属冶炼与战略新兴产业考核试卷
- 玻璃纤维射击靶考核试卷
- 篷布企业供应链风险管理考核试卷
- 精神障碍的康复教育介入考核试卷
- 四川大学《移动应用开发(Andoid)》2023-2024学年第一学期期末试卷
- 上海市长宁区高级中学2025年初三下期中生物试题试卷含解析
- 南平市建瓯市2025年重点中学小升初数学入学考试卷含解析
- 山东华宇工学院《中外文化交流(Ⅰ)》2023-2024学年第一学期期末试卷
- 辽宁省普兰店市2025年高考语文试题疯狂小题抢高分含解析
- 2023年辽宁高考数学试题及答案经典word版(理科)
- 博物馆藏品库房管理课件
- 2022年2月兴业银行审计部招聘人员模拟试题3套(含答案解析)
- 工贸行业重点可燃性粉尘目录(2015版)
- 焊接质量检查表
- 形式发票模板
- 高一语文《赤壁赋》 完整版课件PPT
- DB32∕T 2880-2016 光纤传感式桥隧结构健康监测系统设计、施工及维护规范
- 北师大版小学数学二年级下册第三单元《练习二》教学设计建议及课本习题解析
- 渤海财险非车险业务培训
- 水工隧洞施工ppt课件
评论
0/150
提交评论