基于Arduino单片机控制的WiFi智能小车
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
呼伦贝尔学院
计算机科学与技术学院
本科生毕业论文(设计)
题目:基于Arduino控制的
WIFI智能小车
学生:苑伟
学号:2011121138
专业班级:2011级计算机科学与技术一班
指导教师:锐
完成时间:2015年5月22日
目录
摘要 (I)
Abstract (II)
第1章绪论 (1)
1.1 论文选题背景 (1)
1.2 论文选题的意义 (1)
1.3 论文论述 (2)
第2章系统方案选择与总体设计 (3)
2.1 设计任务 (3)
2.2 设计中考虑到的问题 (3)
2.3 系统方案的选择与比较 (3)
2.4 总体设计方案 (4)
2.4.1整体系统 (4)
2.4.2 整体工作原理 (5)
第3章硬件介绍及设计 (6)
3.1 Arduino Uno R3 单片机系统 (6)
3.1.1 概要 (6)
3.1.2主控芯片ATmege328P-PU (7)
3.1.3 Arduino Uno最小系统[3] (9)
3.1.4 Arduino Uno R3单片机系统的使用 (13)
3.2 路由器WR703N (14)
3.2.1 路由器硬件介绍 (14)
3.2.2 路由器改装 (15)
3.2.3路由器刷OpenWRT (17)
3.3 电机驱动电路 (18)
3.3.1 电机驱动模块使用 (18)
3.3.2驱动原理及电路图 (19)
3.4 摄像头介绍 (20)
3.4.1 摄像头简介 (21)
3.4.2 摄像头的分类 (21)
3.4.3摄像头的工作原理 (21)
3.4.4摄像头的主要结构和组件 (21)
3.5 测速传感器 (22)
3.5.1测速传感器说明 (22)
3.5.2 测速传感器使用 (23)
3.6 超声波传感器 (23)
3.6.1传感器说明及原理 (23)
3.6.2 HC-SR04传感器的使用 (24)
3.7舵机模块 (24)
3.7.1舵机的控制 (25)
3.7.2舵机的作用 (26)
3.9 硬件系统整体设计 (27)
第4章系统软件安装及设计 (28)
4.1系统程序简介 (28)
4.2单片机程序流程图 (28)
4.2.1主程序流程图 (28)
4.2.2外部串口中断函数流程图 (29)
4.2.3定时器中断子函数流程图 (29)
4.2.4 控制小车程序流程图 (30)
4.2.5避障子程序流程图 (32)
4.2.6舵机子程序流程图 (33)
4.3路由器软件安装及程序流程图 (34)
4.3.1软件的安装及配置 (34)
4.3.2 程序设计及流程图 (35)
第5章系统调试及问题解决 (37)
5.1 系统仿真 (37)
5.1.1 常用软件介绍 (37)
5.1.2 仿真测试 (38)
5.2硬件设计问题及调试 (38)
5.2.1 测速模块的调试及问题解决 (38)
5.2.2 摄像头调试及问题解决 (39)
5.3 软件设计问题及调试 (40)
5.3.1单片机软件调试及问题 (40)
5.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控制
Abstract
The 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 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. 通过设计任务及要求,设计前考了到的问题等,在网上搜索大量资料提炼出以下几种设计方案。
方案一:选择网上最典型的且容易上手的TP—LINK 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
图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集成开发环境,提供丰富的库函数。
[10] 3.1.1 概要
Arduino 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-1 Arduino Uno R3
图3-2 Arduino Uno R3电路图
3.1.2主控芯片ATmege328P-PU
ATmege328P-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年(85°C)-100年(2°C),可选Boot代码区具有独立锁定位在系统编程的片上引导程序,且真正的同时读写操作,还有编程软件安全;工作电压为1.8 - 5.5V,温度围-40°C到85°C;速度等级:0 - 4MHz工作电压为1.8 - 5.5V、0 - 10MHz工作电压为2.7 - 5.5.V、0 - 20MHz 工作电压为4.5 - 5.5V;功耗在1MHz,1.8V,25°C,主动模式为0.2mA,掉电模式为0.1μA- 省电模式功为0.75μA。
图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为三态时复位条件变得活跃,即使系统时钟没有运行。
AVcc
AVcc是电源电压引脚为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最小系统[11]
3.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越好。
使用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脚输
图3-4 外部直流电源通过电源插座供电
出低电平。
器件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 EEPROM
3.1.3.3 输入输出
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:信号为低时复位单片机芯片。
3.1.3.4 通信接口
串口: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(片选)。
3.1.3.5下载程序
Arduino UNO上的ATmega328已经预置了bootloader程序,因此可以通过Arduino软件直接下载程序到UNO中。
可以直接通过UNO上ICSP header直接下载程序到ATmega328p。
3.1.3.6注意要点
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。
标有0~13标号的引脚对应的是数字端口,在0~13前面有符号“~”的引脚对应的端口具有PWM输出功能。
标有A0~A5标号的是模拟端口。
图3-6 Arduino Uno端口与ATmege328P引脚关
图3-7 Arduino Uno端口与ATmege328引脚关系
Arduino Uno微控制器的数字I/O口输出,通过4、5端口(6、7端口)给驱动模块送控制信号用于控制左侧(右侧)电机的转动方向、通过9端口(10端口)向驱动模块送PWM控制信号控制左侧(右侧)电机的转速、通过2端口(3端口)接收左侧测速模块(右侧测试模块)信息。
通过11端口向摄像头发送PWM控制信号调节灯光亮度,通过TWI通信端口接收舵机的数据信息,单片机的部定时器的使用是用于结算测速模块测量的速度,以及其他需要精确时间的地方。
单片机的串口通信,用于与路由器进行的串口通讯,接收电脑终端发送的串口指令,从而控制小车的运动。
3.2 路由器WR703N
TP-LINK的TL-WR703N是一款小而强大的路由器,不足百元的价格,拥有一款无线路由器具有的基本功能(如图3-8),而且可以支持USB 3G无线网卡。
但703N的潜力不止如此,目前有不少电子爱好者开始了基于703N 的折腾,OpenWrt通用固件已经出现在常用的家庭路由器中,也是一款特别不错的嵌入式系统。
3.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就像电脑的
图3-8 TP-Link WR703N。