基于Arduino单片机控制的WiFi智能小车

上传人:dc****87 文档编号:69051317 上传时间:2022-04-05 格式:DOC 页数:55 大小:5.78MB
返回 下载 相关 举报
基于Arduino单片机控制的WiFi智能小车_第1页
第1页 / 共55页
基于Arduino单片机控制的WiFi智能小车_第2页
第2页 / 共55页
基于Arduino单片机控制的WiFi智能小车_第3页
第3页 / 共55页
点击查看更多>>
资源描述
.呼伦贝尔学院计算机科学与技术学院本科生毕业论文(设计)题目:基于Arduino控制的 WIFI智能小车学生:苑伟*: 2011121138 专业班级:2011级计算机科学与技术一班指导教师:锐完成时间: 2015年5月22日. .目录摘要IIAbstractII第1章绪论21.1 论文选题背景21.2 论文选题的意义21.3 论文论述2第2章系统方案选择与总体设计22.1 设计任务22.2 设计中考虑到的问题22.3 系统方案的选择与比拟22.4 总体设计方案2整体系统22.4.2 整体工作原理2第3章硬件介绍及设计23.1 Arduino Uno R3 单片机系统23.1.1 概要2主控芯片ATmege328P-PU23.1.3 Arduino Uno最小系统323.1.4 Arduino Uno R3单片机系统的使用23.2 路由器WR703N23.2.1 路由器硬件介绍23.2.2 路由器改装2路由器刷OpenWRT23.3 电机驱动电路23.3.1 电机驱动模块使用2驱动原理及电路图23.4 摄像头介绍23.4.1 摄像头简介23.4.2 摄像头的分类2摄像头的工作原理2摄像头的主要构造和组件23.5 测速传感器2测速传感器说明23.5.2 测速传感器使用23.6 超声波传感器2传感器说明及原理23.6.2 HC-SR04传感器的使用23.7舵机模块2舵机的控制2舵机的作用23.9 硬件系统整体设计2第4章系统软件安装及设计24.1系统程序简介24.2单片机程序流程图2主程序流程图2外部串口中断函数流程图2定时器中断子函数流程图24.2.4 控制小车程序流程图2避障子程序流程图2舵机子程序流程图24.3路由器软件安装及程序流程图2软件的安装及配置24.3.2 程序设计及流程图2第5章系统调试及问题解决25.1 系统仿真25.1.1 常用软件介绍25.1.2 仿真测试25.2硬件设计问题及调试25.2.1 测速模块的调试及问题解决25.2.2 摄像头调试及问题解决25.3 软件设计问题及调试2单片机软件调试及问题2路由器软件调试及问题2第6章总结2参考文献:2致2附录1元器件明细表2附录2 单片机局部程序源码2附录3路由器局部程序源码2. .摘要本次设计wifi智能小车主要采用Arduino作为底层硬件控制核心,接收来自路由器的指令执行相关操作;采用PWM脉冲调节小车速度、舵机控制以及灯光亮度;采用定时器实现小车数据的发送、小车的避障及计算小车的行驶速度;运用简单的PID算法实现轮胎直接的差速控制;采用路由器发射无线wifi,使用Lua脚本实现了接收单片机数据及发送操作指令,设计了web页面控制小车的B/S模式构造。关键字: Arduino;PWM脉冲;PID算法;web控制AbstractThe design of wi-fi smart cars mainly adopts the Arduino as the control core to receive instructions from the router perform related operations; Using PWM pulse to adjust the vehicle speed, steering gear control and lighting brightness; using timer to realise the transmission of car data , the breakdown of the car and calculate the car speeds; Using the simple PID algorithm tyre direct differential control; Using wireless wifi router launch, using the Lua script implements receiving MCU data and send operation instructions,and at last, it designs a web page to control the car B/S mode structure.Keyword: Arduino; PWM Pulse; PID arithmetic; Web manage. .第1章绪论1.1 论文选题背景21世纪是一个遍布智能化设备的时代,我们身边充满了各式各样的智能化设备,智能电视,智能冰箱,智能洗衣机等,然而这些设备都离不开嵌入式系统与单片机系统。并且现如今又出现了物联网这一个概念使得无线控制、无线传输变的更加炽热,因此物联网将会是我们说有设备之间连接通信不可缺少的一局部。也许有人会问什么是物联网。物联网是新一代信息技术的重要组成局部,也是信息化时代的重要开展阶段。9英文名称:Internet of thingsIoT。物联网是物与物相连的互联网。它的两种含义:一、物联网其实仍然是互联网,只是互联网的一种延伸和扩展的网络;二、其用户互联网络伸展到了任何物品与物品之间,并且进展信息交互和通信,这可以称为物物相息了。物联网通过各种通信感知技术智能感知、识别技术、普适计算广泛应用于网络的融合中,也被称为继计算机。对于我们的家庭设备来说物联网的核心设备与出口就是路由器,而路由器的系统Openwrt更是这个网络控制的主脑设备。 Openwrt是一个嵌入式的Linu*体统,它的特点是高度自动化、模块化,并且拥有强大的网络组件与扩展性。在智能家居、小型机器人、工控设备、VOIP设备及路由器常可以见到它的身影。如果对Linu*体统有一定的了解,对于想学习嵌入式Linu*的人来说openwrt是一个不错的选择。它的好处在于对于开发人员,OpenWrt 拥有完整的框架来构建应用程序,并且无需建立一个固件来支持,同时还支持很多种不同芯片的路由器以及源码开放;对于用户来说,可以完全制定想要的功能,互联网上提供很多应用程序,可以以不一样的方式玩转设备。这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。对于现代的智能设备来说远程无线遥控已成为一种趋势,我们可以通过远程遥控家里的电源开关,网络摄像头,空调等。在军用方面我们可以通过远程遥控无人侦察机查看军情,可以遥控智能机器人撤除炸弹等,这可以减少人员的伤亡。1.2 论文选题的意义但当我们出门在外时家里缺少一位智能管家,他可以监控管理我们的房屋及家具设备,而他的前身就是由WiFi智能小车,WiFi智能机器人开展而来。同时其他的远程遥控设备,如无人机,智能机器人及其他远程智能设备都离不开单片机,无线模块等设备。而wifi智能小车的研究可以学习了解到这些技术,同时通过wifi小车的精准控制等研究可以也可以运用到其他的远程设备上。wifi小车可以实现室的室外的远程监控,使得网络视频监控更加灵活。1.3 论文论述本系统能够实现通过摄像头远程监控周围环境,对小车的运动状态进展实时监控,系统要求控制灵活、可靠、精准度高、可实现与其他设备的连接与通信。本系统采用的单片机是Arduino Uno。它是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板。UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口其中6路可作为PWM输出,6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。ATmega328置的UART可以同数字口0R*和1T*与外部实现串口通信。14路数字输入端口工作电压为5v、最大电流为40mA。外部中断端口为数字口2号和3号,触发条件为上升沿、下降沿或同时触发。由于Arduino Uno R3 的性能满足wifi小车的数据传输及时间精度的要求,而且产品为开源硬件提供相当完善的硬件构造,产品来源丰富应,用也相当成熟,是一款适合大学生学习研究的性价比很高的产品。本设计中要研究的容是基于Arduino开源硬件及WR703N路由器设计的一部wifi智能小车。小车能够实现前方物体自动避障,超声波车辆距离,无线视频监控,小车差速控制,摄像头灯光控制等。Wifi智能小车系统包括了两路电机、两个光电测试模块、Arduino单片机控制板、电机驱动模块、超声波测速模块、无线路由器、usb灯光摄像头等硬件设备。本工程主要论述的是wifi小车设计方案的选择、硬件设计、软件设计以及测试方法等。在第2章我们主要涉及到的容就是系统方案的整体设计与选择,以及选择这种方案的原因与优缺点;第3章我们主要讲到的是单片机的详细电气特性,各个引脚接口的使用,路由器ttl串口的查找与增益天线的焊接,电机驱动与测距模块的详细说明,各个设备之间的电源供应情况,以及模块的电路图简单说明与整体的电路图设计。第4章我们主要讲到的是单片机的软件编程,路由器的软件安装与选择,Android控制端的软件设计等,在路由器过lua脚本、stty串口软件等配合控制单片机。第5章我们主要讲到的是软件与硬件的测试与调试,以及在在调试过程中的问题解决。第2章系统方案选择与总体设计2.1 设计任务本设计主要是通过无线网络或者远程连接WiFi小车实现小车的前进、后退、转弯、监控视频采集、其他数据的采集以及前方距离探测等功能。本设计要求通过web浏览器端进展控制。1. 实现pc端、手机与小车wifi的连接。2. 能够通过web网页对小车进展实时控制。2.2 设计中考虑到的问题1. 由于设计中的小车底层硬件控制是通过单片机控制,单片机与无线模块的通信如何实现,启动设备时如何初始化。2. 如果前方有障碍物时小车行驶速度太快,如何防止撞到前方障碍物,以及小车如何转弯时角度的测量与小车当前方向。3. 各元件之间额定电压与电流各不一样如何控制各元件电压与电流的供应以及整个系统电源的稳定性。4. 由于单片机IO口的电流为mA级的,无法直接驱动电机,如何进展电机的驱动。5.对于通过Android客户端控制wifi小车是如何进展通信,选择何种协议进展通信,在软件设计方面如何实现不同手机设备之间的兼容性。2.3 系统方案的选择与比拟1. 通过设计任务及要求,设计前考了到的问题等,在网上搜索大量资料提炼出以下几种设计方案。方案一:选择网上最典型的且容易上手的TPLINK WR703N无线路由器作为wifi小车的wifi通信模块,使用51系列单片机作为wifi小车的底层控制芯片。该方案路由器功耗小相关资料齐全。方案二:选择网上比拟耗电功率大性能较好的大亚db120-wg无线路由器作为wifi小车的wifi通信模块,使用STC11F02F单片机核心为8051作为wifi小车的底层控制芯片,需要电源稳定容量大。方案三:网上购置直接与单片机相连的wifi控制模块作为wifi小车的通信模块。使用近几年出现的开源硬件arduino单片机作为wifi小车的底层控制芯片,缺点是要求单片机性能较高、本钱高,需要编写大量的驱动程序,设计复杂,优点无线设备与单片机联系严密且之间通信较好。2. 通过上述方案的比拟以及我们对于本钱制作性的考虑设计出方案四,下面为方案四的选件理由方案四:我们选择TP-LINK WR703N无线路由器,特点是功耗小性能比拟强大,相关资料齐全,不需要编写大量的驱动程序;wifi小车的控制芯片我们选择Arduino Uno单片机,特点是:Arduino系列的单片机为开源硬件,相关硬件软件资源齐全,单片机烧写容易,无需其他的编码器下载器等,而且Arduino IDE中工具可以通过图形界面进展编程。2.4 总体设计方案Wifi智能小车包含的模块有:wifi模块、电机驱动模块、单片机控制模块、摄像头模块、超声波测距模块、光电测速模块、舵机模块等构成。2.4.1 整体系统系统整体设计方案如以下图2-1摄像头路由器Pc/android端测速模块舵机模块摄像头灯光电机驱动Arduino Uno R3编码器电机超声波感应图2-1 方案设计图工程系统包括路由器、Arduino Uno单片机、电机驱动电路、电机、电平转换电路、光感测速电路、舵机电路、电源电路、摄像头、摄像头灯光电路,超声波感应电路等。路由器用于接收PC或手机等终端设备发来的指令和将采集到的视频信号传送到pc或手机登终端设备;Arduino Uno R3单片机是整个小车的控制核心,控制着各个模块统一协调工作;电机驱动电路用于驱动电机转动,可以使电机产生正转、反转,从而使车体产生前进、后退、转弯等动作;电机的作用就是使整个车体运动;电平转换电路是将路由器输出的3.3V串口电平转换为单片机能判断的上下电平;电源电路作用是为整个小车系统供电;摄像头用于采集视频信号;摄像头灯光电路通过单片机控制调节灯光亮度方便为小车在夜间行驶提供照明;超声波感应电路用于防止小车行驶速度过快撞到前方物体以及测量前方障碍物距离;光感测速电路用于测量小车左右轮胎的差速,防止小车不能正确向前行驶;舵机电路用于控制摄像头的旋转方向。2.4.2 整体工作原理指令传送,由pc等终端,通过WIFI无线网络连接到路由器,再通过web网页向路由器发送控制命令及数据。路由器接收到数据后通过部的串口发送软件,将接收到的命令和数据通过路由器串口发送到Arduino Uno单片机的串口端,单片机接收到这些命令后执行相应的指令,如:驱动小车运动、调节照明灯光电路、调节小车行驶等。信息采集,通过测速模块测量行驶速度,超声波感应测量前方距离、舵机等获取到数据传输给单片机,再由单片机通过串口发送给路由器,再由路由器将这些数据与视频信息,发送到pc或手机终端,并在其应用软件中显示摄像头采集到的视频信号和行驶速度等信息。第3章硬件介绍及设计3.1 Arduino Uno R3 单片机系统Arduino是一个能够用来感应和控制现实物理世界的一套工具。它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序的开发环境组成。准确的说Arduino是一块简单、方便的以AVR单片机为核心的GPIO接口板,并可以通过USB接口和电脑通信。它基于开放的源代码编程,具有使用类似Java,C语言的IDE集成开发环境,提供丰富的库函数。103.1.1 概要图3-1 Arduino Uno R3Arduino Uno 是Arduino 开源平台中最典型的参考标准,其处理器为ATmega328p,工作电压为5v,输入电压推荐7-12v围6-20v,数字io脚14路其中6路作为PWM输出,模拟输入脚6路,IO脚直流电流40mA,3.3V脚直流电流50mA,Flash Menory 32Kb其中0.5Kb用于bootloader,静态随机存储器SRAM为2Kb,电可擦除只读存储器EEPROM为1Kb,工作时钟为16MHz,产品样式如图3-1,电路图如图3-2图3-2 Arduino Uno R3电路图主控芯片ATmege328P-PUATmege328P-PU如图3-3属于美国ATMEL公司AVR单片机成员之一,它采用8位高性能,低功耗AVR微控制器以及先进的RISC构造有131条指令,绝大多数为单时钟周期执行,32个8位通用工作存放器全静态工作,片上2周期乘法器;高耐久性非易失性存段:系统可编程Flash程序存储器32Kbytes,1KBytes的EEPROM,2KBytes部SRAM,写/擦除周期10,000 Flash/100,000的EEPROM,数据保存20年85C-100年2C,可选Boot代码区具有独立锁定位在系统编程的片上引导程序,且真正的同时读写操作,还有编程软件平安;工作电压为1.8 - 5.5V,温度围-40C到85C;速度等级: 0 - 4MHz工作电压为1.8 - 5.5V、 0 - 10MHz工作电压为、 0 - 20MHz 工作电压为 4.5 - 5.5V;功耗在1MHz,1.8V,25C,主动模式为0.2mA,掉电模式为0.1A- 省电模式功为0.75A。图3-3 ATmege328P-PU主要功能特性:外设特性有两个8-bit定时器/计数器具有独立预分频器和比拟模式,1个16位定时器/计数器具有独立预分频器,比拟功能和捕捉功能,实时计数器具有独立振荡器,六个PWM通道,8通道10位ADC在TQFP和QFN / MLF封装, 6通道10位ADC PDIP封装,可编程的串行USART,主/从SPI串行接口,面向字节的两线串行接口飞利浦I2C兼容,片模拟比拟器- 中断和引脚电平变化唤醒;单片机的特殊功能有上电复位和可编程的掉电检测,部校准振荡器,外部和部中断源,6种睡眠模式:空闲,ADC降噪,省电,掉电,待机,和扩展待机; 23可编程I / O线, 28引脚PDIP,32引脚TQFP封装,28焊盘QFN / MLF以及32引脚QFN / MLF。管脚说明:VCC:数字电源电压。GND:接地。端口BPB7:0:*TAL1/*TAL2/TOSC1/TOSC2端口B为8位双向带部上拉电阻的I / O端口每个选定位.该端口B输出缓冲器具有高汇和源能力对称的驱动特性.作为输入,端口B pins被外部拉低,将输出电流,如果上拉电阻被激活. 端口B pins为三态时复位条件变得活泼,即使系统时钟没有运行。根据不同的时钟选择熔丝设置,PB6可以作为输入到反相振荡放大器和输入到部时钟工作电路。根据不同的时钟选择熔丝设置,PB7可作为反向输出振荡放大器.如果部标定RC振荡器作为芯片时钟源,PB7 . 6作为TOSC2 . 1为输入异步T/C2存放器ASSR的AS2置位。端口CPC5:0:端口C为7位双向带部上拉电阻的I / O端口每个选定位。该PC5 . 0输出缓冲器具有高汇和源能力对称的驱动特性.作为输入,端口C pins被外部拉低,将输出电流,如果上拉电阻被激活。端口C pins为三态时复位条件变得活泼,即使系统时钟没有运行。PC6/RESET:如果RSTDISBL位被编程,PC6作为一个I / O引脚.请注意,PC6的电气特性与端口C的其他引脚不同如果RSTDISBL熔丝位未编程,PC6作为复位输入.该引脚上的低电平持续时间大于最小脉冲长度将产生复位,即使系统时钟没有运行。端口DPD7:0:端口D为8位双向带部上拉电阻的I / O端口每个选定位。该端口D输出缓冲器具有高汇和源能力对称的驱动特性.作为输入,端口D pins被外部拉低,将输出电流,如果上拉电阻被激活.港口D pins为三态时复位条件变得活泼,即使系统时钟没有运行。AVccAVcc是电源电压引脚为A / D转换器,PC3:0,ADC7:6.它应在外部连接到VCC即使不使用ADC.如果ADC被使用时,它应连接到VCC通过一个低通滤波器.请注意,PC6- 4使用数字电源电压,VCC。AREF:AREF是模拟参考引脚为A / D转换器。ADC7:6TQFP和QFN / MLF封装:在TQFP和QFN / MLF封装的ADC7:6作为模拟输入到A / D转换器.这些引脚从模拟电源供电,并作为10位ADC通道。3.1.3 Arduino Uno最小系统113.1.3.1 电源Arduino UNO可以通过3种方式供电,而且能自动选择供电方式:外部直流电源通过电源插座供电,电池连接电源连接器的GND和VIN引脚以及USB接口直接供电。使用外接电源进展输入时如图3-4, A是电源输入口,电源的输入的围为7V到12V. 图中B是二极管,二极管的特性是单向导通。使用二极管的目的是:即使电源输入的正反极性反转,也不会烧毁线路板上的元器件。C是稳压管,把输入电压稳定在5V。由于C器件的输入和输出间需要一定的压差,所以A的输入电压不能低于7V. 另外,如果A的输入电压过高,会使得器件C输入和输出电压差过大,从而使得C因为温度过高也烧毁。在使用外接电源输入时,请把输入电源的电压围控制在7V到12V之间。原则上,越靠近7V越好。图3-4 外部直流电源通过电源插座供电使用USB口直接供电时如图3-5。图中A是USB接头,可以给Arduino UNO提供5V的电压。B是保险管,当UNO所需要的电流大于500mA的时候,该保险管会自动断开,以防止损坏电脑。保险管B是带自我恢复功能的,当Arduino UNO所需要的5V电流恢复到允许的围后,保险管会自动恢复连接,继续为Arduino UNO提供5V电压。图中C是10K的排阻,用来对外接电源输入进展分压。当外接电源输入电压VIN大于7V时,D器件的第3脚由于电压高于D器件的第2脚(3.3V),所以D器件的第1脚输出高电平。器件E是PMOS,当D器件的第1脚输出高电平时,器件E处于截至状态,从而切断了USB接口的供电。当外接电源输入电压VIN小于6V时,D器件的第3脚由于电压低于D器件的第2脚(3.3V),所以D器件的第1脚输出低电平。器件E处于导通状态,此时,Arduino UNO由USB口进展供电。器件F是线性稳压器,负责把5V电源转变成3V电源,该器件能给Arduino UNO提供大约50mA的电流。图3-5 USB接口直接供电电源引脚说明:VIN - 当外部直流电源接入电源插座时,可以通过VIN向外部供电;也可以通过此引脚向UNO直接供电;VIN有电时将忽略从USB或者其他引脚接入的电源。5V - 通过稳压器或USB的5V电压,为UNO上的5V芯片供电。3.3V - 通过稳压器产生的3.3V电压,最大驱动电流50mA。GND - 地脚。3.1.2.2 存储器ATmega328p包括了片上32KB Flash,其中0.5KB用于Bootloader。同时还有2KB SRAM和1KB EEPROM3.1.3.3 输入输出14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。每一路配置了20-50K欧姆部上拉电阻默认不连接)。除此之外,有些引脚有特定的功能。串口信号R*0号、T*1号: 与部 ATmega8U2 USB-to-TTL 芯片相连,提供TTL电压水平的串口接收信号。外部中断2号和3号:触发中断引脚,可设成上升沿、下降沿或同时触发。脉冲宽度调制PWM3、5、6、9、10 、11:提供6路8位PWM输出。SPI10(SS),11(MOSI),12(MISO),13(SCK):SPI通信接口。LED13号:Arduino专门用于测试LED的保存接口,输出为高时点亮LED,反之输出为低时LED熄灭。6路模拟输入A0到A5:每一路具有10位的分辨率即输入有1024个不同值,默认输入信号围为0到5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能TWI接口SDA A4和SCL A5:支持通信接口兼容I2C总线。AREF:模拟输入信号的参考电压。Reset:信号为低时复位单片机芯片。3.1.3.4 通信接口串口:ATmega328置的UART可以通过数字口0R*和1T*与外部实现串口通信;ATmega16U2可以访问数字口实现USB上的虚拟串口。TWI兼容I2C接口:SDAA4是双向数据线,SCLA5是时钟线SCL。在TWI总线上传送数据,首先送最高位,由主机发出启动信号,SDA在SCL 高电平期间由高电平跳变为低电平,然后由主机发送一个字节的数据。数据传送完毕,由主机发出停顿信号,SDA在SCL 高电平期间由低电平跳变为高电平。SPI 接口:它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以单向传输时。也是所有基于SPI的设备共有的,它们是SDI数据输入、SDO数据输出、SCLK时钟、CS片选。下载程序Arduino UNO上的ATmega328已经预置了bootloader程序,因此可以通过Arduino软件直接下载程序到UNO中。可以直接通过UNO上ICSP header直接下载程序到ATmega328p。注意要点Arduino UNO上USB口附近有一个可重置的保险丝,对电路起到保护作用。当电流超过500mA是会断开USB连接。Arduino UNO提供了自动复位设计,可以通过主机复位。这样通过Arduino软件下在程序到UNO中软件可以自动复位,不需要在复位按钮。在印制板上丝印RESET EN处可以使能和制止该功能3.1.4 Arduino Uno R3单片机系统的使用本次设计,使用到了Arduino Uno单片机的I/O口的输入输出功能、串口通信R*0号T*1号功能、外部中断2号3号功能、脉冲宽频调制PWM9、10、11功能、TWI通信SDA A4和SCL A5功能、部定时器功能。Arduino微控制器的数字端口和模拟端口与ATMEGA 328芯片引脚的对应关系如图3-4。标有013标号的引脚对应的是数字端口,在013前面有符号的引脚对应的端口具有PWM输出功能。标有A0A5标号的是模拟端口。图3-7 Arduino Uno端口与ATmege328引脚关系图3-6 Arduino Uno端口与ATmege328P引脚关系Arduino Uno微控制器的数字I/O口输出,通过4、5端口6、7端口给驱动模块送控制信号用于控制左侧右侧电机的转动方向、通过9端口10端口向驱动模块送PWM控制信号控制左侧右侧电机的转速、通过2端口3端口接收左侧测速模块右侧测试模块信息。通过11端口向摄像头发送PWM控制信号调节灯光亮度,通过TWI通信端口接收舵机的数据信息,单片机的部定时器的使用是用于结算测速模块测量的速度,以及其他需要准确时间的地方。单片机的串口通信,用于与路由器进展的串口通讯,接收电脑终端发送的串口指令,从而控制小车的运动。3.2 路由器WR703NTP-LINK的TL-WR703N是一款小而强大的路由器,缺乏百元的价格,拥有一款无线路由器具有的根本功能如图3-8,而且可以支持USB 3G无线网卡。但703N的潜力不止如此,目前有不少电子爱好者开场了基于703N的折腾,OpenWrt通用固件已经出现在常用的家庭路由器中,也是一款特别不错的嵌入式系统。图3-8 TP-Link WR703N3.2.1 路由器硬件介绍TP-Link WR703N采用Atheros的AR9331-AL1A处理器,主频400MHz,它是一个高度集成和本钱效益的IEEE 802.11n1*1的2.4 GHz系统单晶片SoC的无线局域网WLANAP和路由器platforms.In的一个单芯片,AR9331包括一个MIPS24K五端口处理器,IEEE802.3快速以太网交换机的MAC/ PHY,一个USB 2.0 MAC/ PHY和外部存储器接口串行闪存,SDRAM,DDR1或DDR2,音频接口I2S/SPDIF-Out,SLIC的VOIP / PCM接口, UART,GPIO,可以用于LED控制或其他通用接口配置。AR9331集成了两个千兆互助委员会加一个五端口快速以太网交换机,交通四个一流的效劳质量QoS的AR9331集成引擎。的802.11n1*1的MAC/ BB/无线电与部PA和LNA。它支持802.11n操作高达72 Mbps的为20 MHz和150 Mbps的分别为40 MHz信道,IEEE802.11b / g的数据传输速率。其他功能还包括片上一次性可编程OTP存储器。WR703N的SPI FLASH为4MB,RAM为32MB,为了安装跟多的程序需要改装FLASH为8M,如果为了减小CPU的压力就要改RAM为64MB。有一个USB接口,一个10/100Mbps Lan/WAN服用口最高传输功率为150Mbps。路由器固件:编程器固件中包含uboot、fw和art。uboot就像电脑的bios,是底层的管理系统; fw就像电脑的操作系统,实现路由器的各种功能; art就像电脑的无线驱动程序,是无线校验码;uboot的长度为128KB0*20000;art为64KB0*10000;fw有4M和8M的区别,4M的为3840K0*3c0000,8M的为7936KB0*7c0000。在刷机之前要对要刷入flash的uboot、fw、art的文件长度用ultraedit或winhe*进展校验。尤其是uboot,如果大小不对,千万不要尝试刷入,那是一定会变砖的。4M的FLASH:flash地址从0*0000000*3FFFFF如表3-1ttl访问flash的地址从0*9F0000000*9F3FFFFF如表3-1表3-1 4MB的FLASH地址flash起始地址TTL起始地址flash终止地址TTL终止地址uboot0*0000000*9F0000000*01FFFF0*9F01FFFFfw0*0200000*9F0200000*3DFFFF0*9F3DFFFFart0*3F00000*9F3F00000*3FFFFF0*9F3FFFFF3.2.2 路由器改装我们可用过WR703N改装各种不同功能的电子设备,如挂载优盘硬盘当网络硬盘或者离线下载电影等、挂载摄像头当网络监控器、挂载音响当wifi音响等等,自己喜欢的设备。我们要通过路由器与单片机通信实现wifi小车的控制,如图3-9为wr703n路由器的部电路板。要想控制单片机要有串口通信接口TTL,WR703N有两种方式实现TTL串口通信,一种是连接USB转TTL,另一种是直接在电路板上焊接TTL串口,我们采用第二种方式连接获得TTL信号如图3-10。图3-9 TP-LINK WR703N电路板WR703N的TTL串口图的右上角靠近存的位置图3-10,当焊接好ttl线以后要连接USB转TTL线查看连接是否通畅,TP-OUT连接USBTTL线的R*端,TP-IN连接USBTTL线的T*端。图3-10 WR703N路由器TTL串口为了增加WR703N路由器的WIFI信号的传输功率我们需要为路由图添加SMA天线如图3-11,网上有传说,去掉C30电容后,会增大发射功率。实际效果并不明显。图3-11 SMA外接天线位置路由器刷OpenWRT1原WR703N固件刷OpenWRT访问WR703N在OpenWrt的Wiki页,然后在Flashing一节中找到下载:squashfs-factory.bin。进入路由器管理界面,出厂配置为,用户名和密码均为admin。进入路由器管理界面以后,在左侧选择系统工具软件升级,软后选择下载好的固件升级固件,等待一段时间大约2min后路由器自动重启路由器固件刷新成功。2.OpenWRT固件刷OpenWRT第一步:使用WinSCP将升级固件上传到路由的/tmp目录下:1.翻开WinSCP,主机名也就是IP填你的路由IP,端口默认22不改,用户名/密码默认是root/admin。2.文件协议选择SCP,然后点登陆,接着会进展登陆过程,然后弹出一个窗口,直接点确定就可以了,3.双击右方列表框中唯一的目录,显示路由所有的文件列表,再双击/tmp翻开,然后将703N原厂固件拖入该目录,等待几秒完成就行了第二步:1.翻开Putty,输入路由IP,端口23不改,连接类型选择SSH(OpenWRT改正密码之后就不能用Telnet登陆了),再点翻开弹出黑框提示登陆,用户名打root,回车之后输密码再回车(注意,此处密码是不显示的,需保证输入正确),成功之后会显示一个由字符组成的OpenWrt图案以及局部参数2.使用cat /proc/mtd查看路由支持的升级命令。rootOpenWrt:# cat /proc/mtddev: size erasesize namemtd0: 00020000 00010000 u-bootmtd1: 0010e630 00010000 kernelmtd2: 006c19d0 00010000 rootfsmtd3: 004a0000 00010000 rootfs_datamtd4: 00010000 00010000 artmtd5: 007d0000 00010000 firmware3.根据上面的升级参数执行升级命令。mtd r write openWrt.bin mtd53.3 电机驱动电路电动小车的驱动不但要求电机驱动系统具有高转矩重量比、宽调速围、高可靠性,而且电机的转矩-转速特性受电源功率的影响,这就要求驱动具有尽可能宽的高效率区。我们所使用的电机一般为直流电机,主要用到永磁直流电机、伺服电机及步进电机三种。直流电机的控制很简单,性能出众,直流电源也容易实现。我们使用的这种直流电机的驱动及控制需要电机驱动芯片进展驱动。常用的电机驱动芯片有L297/298,MC33886,ML4428等3.3.1 电机驱动模块使用我们使用的L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或制止器件工作有一个逻辑电源输入端,使部逻辑电路局部在低电压下工作;可以外接检测电阻,将变化量反应给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。工程使用的是4个直流电机,工程中使用了两块L298N电机驱动来驱动这四个直流电机的转动。其实物及引脚图如以下图3-7所示,其中6和11引脚是它的使能端,一个使能端控制一个电机,只有当它们都是高电平的时候两个电机才有可能工作,5、7、10、12是298的信号输入端和单片机的IO口相连,2、3、13、14脚是输出端,输入5和7脚控制输出2和3脚,输入的10、12脚控制输出的13、14脚。图3-12 L298驱动芯片实物及引脚驱动原理及电路图驱动局部我们使用的是L298N驱动芯片构成的一个驱动电路模块如图3-13所示。图3-13 电机驱动模块电路原理图如以下图3-14所示。图3-14 L298驱动模块电路原理图使用直流/步进两用驱动器可以驱动两台直流电机。分别为M1和M2。引脚ENA,ENB可用于输入PWM脉宽调制信号对电机进展调速控制。如果无须调速可将两引脚接5V,使电机工作在最高速状态,既将短接帽短接实现电机正反转就更容易了,输入信号端IN1接低电平输入端IN2接高电平,电机M1正转。如果信号端IN1接高电平, IN2接低电平,电机M1反转。控制另一台电机是同样的方式,输入信号端IN3接低电平,输入端IN4接高电平,电机M2正转。反之则反转,PWM信号端A控制M1调速,PWM信号端B控制M2调速参考如表3-2。表3-2 电机驱动状态表电机旋转方向控制端IN1控制端IN2控制端IN3控制端IN4输入PWM信号调速端A调速端BM1正转高低/高/反转低高/高/停顿低低/高/M2正转/高低/高反转/低高/高停顿/低低/高3.4 摄像头介绍本工程中摄像头实现实时监测小车周边情况,使之成为一个无线可控移动的视频监控器,也用于判断小车当前路况。3.4.1 摄像头简介摄像头(CAMERA)又称为电脑相机、电脑眼等,它作为一种视频输入设备,在过去被广泛的运用于视频会议、远程医疗及实时监控等方面。近年以来,随着互联网技术的开展,网络速度的不断提高,再加上感光成像器件技术的成熟并大量用于摄像头的制造上,这使得它的价格降到普通人可以承受的区间。普通的人也可以彼此通过摄像头在网络进展有影像、有声音的交谈和沟通,另外,人们还可以将其用于当前各种流行的数码影像、影音处理。3.4.2 摄像头的分类摄像头分为数字摄像头和模拟摄像头两大类。模拟摄像头可以将视频采集设备产生的模拟视频信号转换成数字信号,进而将其储存在计算机里。模拟摄像头捕捉到的视频信号必须经过特定的视频捕捉卡将模拟信号转换成数字模式,并加以压缩后才可以转换到计算机上运用。数字摄像头可以直接捕捉影像,然后通过串、并口或者USB接口传到计算机里。现在电脑市场上的摄像头根本以数字摄像头为主,而数字摄像头中又以使用新型数据传输接口的USB数字摄像头为主,目前市场上可见的大局部都是这种产品。除此之外还有一种与视频采集卡配合使用的产品,但目前还不是主流。由于个人电脑的迅速普及,模拟摄像头的整体本钱较高等原因,USB接口的传输速度远远高于串口、并口的速度,因此现在市场热点主要是USB接口的数字摄像头。以下主要是指USB接口的数字摄像头。3.4.3摄像头的工作原理摄像头的工作原理大致为:景物通过镜头(LENS)生成的光学图像投射到图像传感器外表上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过USB接口传输到电脑中处理,通过显示器就可以看到图像了。我们这里是将摄像头连接在路由器的USB接口上,通过路由器上的摄像头驱动软件使摄像头工作,并由路由器通过WIFI将视频信号发送出去。电脑等终端接收设备,接收到视频信号后通过控制软件的界面显示图像。摄像头的主要构造和组件从摄像头的工作原理就可以列出摄像头的主要构造和组件:1、主控芯片2、感光芯片3、镜头4、LED灯。摄像头部需要两种工作电压:3.3V和2.5V,因此好的摄像头部电源也是保证摄像头稳定工作的一个因素。在本次wifi小车的制作中我们使用的是中星微ZC301的摄像头,如图3-15所示图3-15 中星微ZC301摄像头3.5 测速传感器本设计通过两块测速传感器来测量两个轮胎之间的速度差,然后通过PWM信号来控制小车是直线行驶,转弯等,同时监控当前小车的行驶速度等数据。测速传感器说明我们的测试传感器使用的是最新的电机马达测速传感器模块对射光电传感器槽型光耦。该传感器广泛的用于电机转速检测,脉冲计数,位置限位等方面,它的工作电压为3.3V5V之间,槽宽10mm,有电源接入状态指示灯与输出状态指示灯,当输出高电平时灯亮,输出低电平时灯灭,如果有遮挡时输出高电平,无遮挡时输出低电平。采用74HC04D六组反相器,有门电路数6个,它是一种高速CMOS器件,兼容低功耗肖特基TTL电路。测速传感器及电路图如3-16所示图3-16 测速传感器及电路图3.5.2 测速传感器使用本次设计中我们使用到两块测试传感器,传感器GND连接Arduino Uno控制板的GND,OUT电平输出端分别连接Arduino Uno控制板2、3外部中断端口。传感器通过感应20孔编码器产生上下电平来记录小车的行驶速度如图3-17所示。图3-17 20孔编码器及使用3.6 超声波传感器本次设计中使用HC-SR04超声波传感器主要用于测量前方物体距离小车的距离以及通过测量距离防止小车因向前行驶速度过快撞击前方障碍物毁坏车体。传感器说明及原理HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。根本工作原理如图3-18:1采用IO口TRIG触发测距,给至少10us的高电平信号;2模块自动发送8个40khz的方波,自动检测是否有信号返回;3有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声;4两次测距时间间隔最少在60ms以上,以防止发射信号对回响信号的影响;波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S)/2;HC-SR04电气参数如表3-3所示表3-3 HC-SR04电气参数电气参数HC-SR04超声波模块工作电压DC5V工作电流15mA工作频率40HZ最远射程400cm最近射程2cm测量角度15度输入出发信号10uS 的 TTL 脉冲输出回应信号输出 TTL 电平信号,与射程成比例图3-18 超声波时序图3.6.2 HC-SR04传感器的使用有时序图可知,只需要提供一个 10uS 以上脉冲触发信号,我们需要把Trig连接Arduino控制板的12端口,该模块部将发出 8 个 40kHz 周期电平并检测回波。需把Echo连接到Arduino Uno控制器的13端口检测回报信号,一但检测到有回波信号则输出回响信号回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:uS/58=厘米或者 uS/148=英寸;或是:距离 =高电平时间*声速340M/S/2;建议测量周期为 60ms 以上,以防止发射信号对回响信号的影响。要注意的是此模块不宜带电连接,假设要带电连接,则先让模块的 GND 端先连接,否则会影响模块的正常工作。测距时,被测物体的面积不少于 0.5 平方米且平面尽量要求平整,否则影响测量的结果。3.7舵机模块在本设计中我们使用的舵机型号为SG90,舵机的输入线共有三条,红色中间是电源线,一边棕色的是地线,这辆根线给舵机提供最根本的能源保证,主要是电机的转动消耗。电源有两种规格,一是4.8V,一是6.0V,分别对应不同的转矩标准,即输出力矩不同,6.0V对应的要大一些,具体看应用条件;另外一根线是控制信号线,Futaba的一般为白色,JR的一般为桔黄色。另外要注意一点,SANWA的*些型号的舵机引线电源线在边上而不是中间,需要识别。但记住红色为电源,黑色或棕色为地线,一般不会有错。舵机如图3-11所示。图3-19 SG90舵机舵机的控制舵机的控制信号为周期是20ms的脉宽调制PWM信号,其中脉冲宽度从,相对应舵盘的位置为0180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。舵机部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比拟器,将外加的PWM信号与基准信号相比拟,判断出方向和大小,从而产生电机的转动信号。由此可见,舵机是一种位置伺服的驱动器,转动围不能超过180度,适用于那些需要角度不断变化并可以保持的驱动当中。比方说机器人的关节、飞机的舵面等。图 3-20 舵机工作原理舵机的作用在本次wifi小车中我们利用两个舵机做成一个云台如图3-21,将摄像头固定在云台上,通过Arduino Uno单片机控制舵机旋转一定的角度,把我们想要角度的图像通过摄像头传送到电脑等终端设备。图3-21 摄像头云台3.8 电源模块在本次设计中为了节约设计本钱以及给小车提供足够的电力,我们将使用已有的12v移动电源来为小车提供充足的电力,通过移动电源12v输出连接一个多了输出电源模块来隔绝电路,路由器的电源通过移动电源5v、1.5A输出口直接供电。3.9 硬件系统整体设计通过各硬件模块构成整个wifi小车硬件系统如下图第4章系统软件安装及设计软件提供了发挥硬件功能的方法和手段扩大其应用围,并能改善人一机界机,方便用户使用。没有配备软件的计算机称为裸机,是没有多少实用价值的。硬件与软件的形象比喻为:硬件是计算机的躯体,软件是计算机的灵魂。对于一款好的智能设备来说,软件就是它的灵魂,如果没有了软件智能设备也不在是智能设备。因此为设备设计一款好的软件也是相当重要的。4.1系统程序简介硬件平台构造一旦确定,大的功能框架即形成,软件在硬件平台上构筑,完成各局部硬件的控制和协调工作。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差异可能很大。因此,软件是系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。我们的小车控制是通过ATmega328p单片机控制驱动电路和给灯光送控制信号,然而这些控制信号的命令又是pc、手机等终端设备通过无线路由器串口传送给单片机的,所以在程序中我们需要设计到串口的使用、定时器使用、数字I/O口的使用。同时我们要接收由超声波传感器、测试模块、电子罗盘的信息,再单片机串口传送给路由器然后由pc、手机等设备接收,所有我们要在路由器上搭建环境设计相应的软件以及手机端的接收软件,单片机的软件总体设计及程序流程如以下图4-1所示。4.2单片机程序流程图智能WIFI小车的软件编写主要分为命令接收局部、命令执行局部、以及具体的信号的采集和处理,以及回传收集到的信息。主程序流程图系统主程序模块主要完成对系统中各模块电路的初始化等工作,主要包括对定时器、串口中断、外部中断的初始化,同时执行电脑等终端设备所发送的命令,等待外部中断以及根据所需要的功能进展相应操作。软件总体设计及程序流程如以下图4-1所示外部串口中断函数流程图通过串口中断,实现单片机和路由器进展通讯。进入中断后关掉中断,防止数据信号重复引起中断。根据命令数据发送的规律,将命令解码储存在相应的二维数组当中,方便在主函数中调用。具体流程图如以下图4-2所示。通过外部中断函数经行测速模块车轮旋转进展计数,实现小车的差速控制与小车的速度检测。要注意的是Arduino单片机中,如果执行外部中断时,串口收到的数据可能会丧失。应该声明一个变
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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