




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
呼伦贝尔学院计算机科学与技术学院本科生毕业论文(设计)题 目: 基于Arduino控制的 WIFI智能小车 学生姓名: 苑 伟 学 号: 2011121138 专业班级:2011级计算机科学与技术一班 指导教师: 陶锐 完成时间: 2015年5月22日 目录摘要IAbstractII第1章 绪论11.1 论文选题背景11.2 论文选题的意义11.3 论文论述2第2章 系统方案选择与总体设计32.1 设计任务32.2 设计中考虑到的问题32.3 系统方案的选择与比较32.4 总体设计方案42.4.1整体系统42.4.2 整体工作原理5第3章 硬件介绍及设计63.1 Arduino Uno R3 单片机系统63.1.1 概要63.1.2主控芯片ATmege328P-PU73.1.3 Arduino Uno最小系统393.1.4 Arduino Uno R3单片机系统的使用133.2 路由器WR703N143.2.1 路由器硬件介绍143.2.2 路由器改装153.2.3路由器刷OpenWRT173.3 电机驱动电路183.3.1 电机驱动模块使用183.3.2驱动原理及电路图193.4 摄像头介绍203.4.1 摄像头简介213.4.2 摄像头的分类213.4.3摄像头的工作原理213.4.4摄像头的主要结构和组件213.5 测速传感器223.5.1测速传感器说明223.5.2 测速传感器使用233.6 超声波传感器233.6.1传感器说明及原理233.6.2 HC-SR04传感器的使用243.7舵机模块243.7.1舵机的控制253.7.2舵机的作用263.9 硬件系统整体设计27第4章 系统软件安装及设计284.1系统程序简介284.2单片机程序流程图284.2.1主程序流程图284.2.2外部串口中断函数流程图294.2.3定时器中断子函数流程图294.2.4 控制小车程序流程图304.2.5避障子程序流程图324.2.6舵机子程序流程图334.3路由器软件安装及程序流程图344.3.1软件的安装及配置344.3.2 程序设计及流程图35第5章 系统调试及问题解决375.1 系统仿真375.1.1 常用软件介绍375.1.2 仿真测试385.2硬件设计问题及调试385.2.1 测速模块的调试及问题解决385.2.2 摄像头调试及问题解决395.3 软件设计问题及调试405.3.1单片机软件调试及问题405.3.2路由器软件调试及问题42第6章 总结44参考文献:45致谢46附录1元器件明细表47附录2 单片机部分程序源码48附录3路由器部分程序源码54摘要本次设计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 manageII第1章 绪论1.1 论文选题背景21世纪是一个遍布智能化设备的时代,我们身边充满了各式各样的智能化设备,智能电视,智能冰箱,智能洗衣机等,然而这些设备都离不开嵌入式系统与单片机系统。并且现如今又出现了物联网这一个概念使得无线控制、无线传输变的更加火热,因此物联网将会是我们说有设备之间连接通信不可缺少的一部分。也许有人会问什么是物联网。物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。9英文名称:“Internet of things(IoT)”。物联网是物与物相连的互联网。它的两种含义:一 、物联网其实仍然是互联网,只是互联网的一种延伸和扩展的网络;二、其用户互联网络伸展到了任何物品与物品之间,并且进行信息交互和通信,这可以称为物物相息了。物联网通过各种通信感知技术(智能感知、识别技术、普适计算)广泛应用于网络的融合中,也被称为继计算机。对于我们的家庭设备来说物联网的核心设备与出口就是路由器,而路由器的系统Openwrt更是这个网络控制的主脑设备。 Openwrt是一个嵌入式的Linux体统,它的特点是高度自动化、模块化,并且拥有强大的网络组件与扩展性。在智能家居、小型机器人、工控设备、VOIP设备及路由器中通常可以见到它的身影。如果对Linux体统有一定的了解,对于想学习嵌入式Linux的人来说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可以同数字口0(RX)和1(TX)与外部实现串口通信。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电路图3.1.2主控芯片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工作电压为2.7 - 5.5.V、 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:接地。端口B(PB7:0):XTAL1/XTAL2/TOSC1/TOSC2端口B为8位双向带内部上拉电阻的I / O端口(每个选定位).该端口B输出缓冲器具有高汇和源能力对称的驱动特性.作为输入,端口B pins被外部拉低,将输出电流,如果上拉电阻被激活. 端口B pins为三态时复位条件变得活跃,即使系统时钟没有运行。根据不同的时钟选择熔丝设置,PB6可以作为输入到反相振荡放大器和输入到内部时钟工作电路。根据不同的时钟选择熔丝设置,PB7可作为反向输出振荡放大器.如果内部标定RC振荡器作为芯片时钟源,PB7 . 6作为TOSC2 . 1为输入异步T/C2寄存器ASSR的AS2置位。端口C(PC5:0):端口C为7位双向带内部上拉电阻的I / O端口(每个选定位)。该PC5 . 0输出缓冲器具有高汇和源能力对称的驱动特性.作为输入,端口C pins被外部拉低,将输出电流,如果上拉电阻被激活。端口C pins为三态时复位条件变得活跃,即使系统时钟没有运行。PC6/RESET:如果RSTDISBL位被编程,PC6作为一个I / O引脚.请注意,PC6的电气特性与端口C的其他引脚不同如果RSTDISBL熔丝位未编程,PC6作为复位输入.该引脚上的低电平持续时间大于最小脉冲长度将产生复位,即使系统时钟没有运行。端口D(PD7: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:6(TQFP和QFN / MLF封装):在TQFP和QFN / MLF封装的ADC7:6作为模拟输入到A / D转换器.这些引脚从模拟电源供电,并作为10位ADC通道。3.1.3 Arduino Uno最小系统 电源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 - 地脚。 存储器ATmega328p包括了片上32KB Flash,其中0.5KB用于Bootloader。同时还有2KB SRAM和1KB EEPROM 输入输出14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能。串口信号RX(0号)、TX(1号): 与内部 ATmega8U2 USB-to-TTL 芯片相连,提供TTL电压水平的串口接收信号。外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。脉冲宽度调制PWM(3、5、6、9、10 、11):提供6路8位PWM输出。SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。6路模拟输入A0到A5:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能TWI接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。AREF:模拟输入信号的参考电压。Reset:信号为低时复位单片机芯片。 通信接口串口:ATmega328内置的UART可以通过数字口0(RX)和1(TX)与外部实现串口通信;ATmega16U2可以访问数字口实现USB上的虚拟串口。TWI(兼容I2C)接口:SDA(A4)是双向数据线,SCL(A5)是时钟线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口的输入输出功能、串口通信RX(0号)TX(1号)功能、外部中断(2号3号)功能、脉冲宽频调制PWM(9、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.11n1x1的2.4 GHz系统单晶片(SoC)的无线局域网(WLAN)AP和路由器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.11n1x1的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的长度为128KB(0x20000);art为64KB(0x10000);fw有4M和8M的区别,4M的为3840K(0x3c0000),8M的为7936KB(0x7c0000)。在刷机之前要对要刷入flash的uboot、fw、art的文件长度用ultraedit或winhex进行校验。尤其是uboot,如果大小不对,千万不要尝试刷入,那是一定会变砖的。4M的FLASH:flash地址从0x0000000x3FFFFF(如表3-1)ttl访问flash的地址从0x9F0000000x9F3FFFFF(如表3-1)表3-1 4MB的FLASH地址flash起始地址TTL起始地址flash终止地址TTL终止地址uboot0X0000000X9F0000000X01FFFF0X9F01FFFFfw0X0200000X9F0200000X3DFFFF0X9F3DFFFFart0X3F00000X9F3F00000X3FFFFF0X9F3FFFFF3.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线的RX端,TP-IN连接USBTTL线的TX端。图3-10 WR703N路由器TTL串口为了增加WR703N路由器的WIFI信号的传输功率我们需要为路由图添加SMA天线(如图3-11),网上有传说,去掉C30电容后,会增大发射功率。实际效果并不明显。图3-11 SMA外接天线位置3.2.3路由器刷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驱动芯片实物及引脚3.3.2驱动原理及电路图驱动部分我们使用的是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将视频信号发送出去。电脑等终端接收设备,接收到视频信号后通过控制软件的界面显示图像。3.4.4摄像头的主要结构和组件 从摄像头的工作原理就可以列出摄像头的主要结构和组件:1、主控芯片2、感光芯片3、镜头4、LED灯。摄像头内部需要两种工作电压:3.3V和2.5V,因此好的摄像头内部电源也是保证摄像头稳定工作的一个因素。在本次wifi小车的制作中我们使用的是中星微ZC301的摄像头,如图3-15所示图3-15 中星微ZC301摄像头3.5 测速传感器本设计通过两块测速传感器来测量两个轮胎之间的速度差,然后通过PWM信号来控制小车是直线行驶,转弯等,同时监控当前小车的行驶速度等数据。3.5.1测速传感器说明我们的测试传感器使用的是最新的电机马达测速传感器模块对射光电传感器(槽型光耦)。该传感器广泛的用于电机转速检测,脉冲计数,位置限位等方面,它的工作电压为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超声波传感器主要用于测量前方物体距离小车的距离以及通过测量距离避免小车因向前行驶速度过快撞击前方障碍物毁坏车体。3.6.1传感器说明及原理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 以上脉冲触
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 难点解析人教版八年级上册物理光现象《光的反射》重点解析试卷(含答案详解版)
- 会计资格证考试题目及答案
- 2025济南小教面试考试真题及答案
- 贵池十中分班考试题及答案
- 个人债权转让协议示范文本8篇
- 汶上三中分班考试试卷及答案
- 金水区公益性岗位考试题及答案
- 2025年《劳动关系协调员》考试练习题及答案
- 2025年陕西省西安市碑林区事业单位招聘考试综合类无领导小组讨论面试真题模拟试卷
- 2025年陕西省事业单位招聘考试卫生类医学影像专业知识真题模拟及答案
- 地板送风系统讨论
- 高中美术-从瓜形壶说起课件
- KTV管理章程协议
- 2021年甘肃省白银市中考道德与法治试卷
- GB/T 2794-2022胶黏剂黏度的测定
- GB/T 4744-2013纺织品防水性能的检测和评价静水压法
- TSAAD型螺杆式空气压缩机
- GB/T 18645-2002动物结核病诊断技术
- 无菌技术操作技能评分标准
- 安恩.雅各布森
- 汉语作为第二语言教学概论课件
评论
0/150
提交评论