制作会呼吸的WIFI机器人_第1页
制作会呼吸的WIFI机器人_第2页
制作会呼吸的WIFI机器人_第3页
制作会呼吸的WIFI机器人_第4页
制作会呼吸的WIFI机器人_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z1

Linu*平台:线路连接与摄像头驱动1.1

准备硬件1.2

刷系统1.3

设置局域网络1.4

安装摄像头2

Linu*平台:安装与串口调试2.1

什么是ser2net.ipk软件包2.2

安装ser2net.ipk软件包3

Linu*平台:openwrt系统中添加自启动4

单片机模块4.1

构建STC11F02E最小系统4.2

中断方式接收串口数据4.3

PWM调光编程5

电机驱动模块5.1

用L298N制作电机驱动电路6

功能演示7

DIYer签到处1Linu*平台:线路连接与摄像头驱动1.1准备硬件首先要选择能够加载Openwrt平台的硬件设备,其实能加载LINU*系统的设备非常常见,比方我们家庭用的路由器。这里要注意的是路由器的选择,首先,路由器要能够加载openwrt系统,其次,要具有USB口以及TTL接口。一般来讲,我们选择的型号是DB120或者RG100A-AA,我选择的型号是RG100A-AA。1.2刷系统得到路由器后,首先要做的事是给路由器换个系统,即通俗所说的“刷机〞,关于网络上RG100A-AA刷机的教程很多,这里不再赘述,不过需要补充的是,对于拥有单片机的爱好者,大可不必专门购置USB-TTL线,我们手中的单片机的开发板就可以为路由器与个人PC进展连接,下面给出开发板与路由器TTL线的连线图,,路由器从左到右依次是:VCC,GND,T*,R*,这里注意一定不要接VCC线。我的系统是Openwrtbackfire10.03.1RC6测试单片机的开发板是否连接正确,可以通过PUTYY的串口连接方式进展连接,注意这里的波特率是:115200口的选择要查看个人PC中的设备管理器,以连接的为准。1.3设置局域网络刷完系统后,设置个人PC的网络IP:192.168.1.*,以及子网掩码。这里的*是除1之外的任意,当然不能大于255然后连接个人PC与路由的LAN3口,用PUTYY进展SHH连接,输入用户名ROOT,以及密码ADMIN,设置以及连接正确后进入。1.4安装摄像头设置IP的目的是为了上传摄像头的驱动文件,我采用的摄像头是OV519芯片的SONY摄像头,因此驱动文件为:运行winscp,将IPK包上传到根目录下,注意,这里要选择SCP方式。成功连接后。winscp非常方便,拖拽文件即可,跟FTP方式完全一样。我的摄像头。上传完毕后,运行PUTTY,进展安装,安装口令:opkginstall***.ipk安装完毕后可以用dmesg命令进展查看是否安装完成,或者直接在浏览器中输入以图形化的方式进展查看。安装完驱动后,安装MJPG-STREAMER,这是一个用于查看视频IPK程序,可以直接在浏览器中查看摄像头捕捉到的图像,注意安装完毕后要开启效劳,或者也可以设置为自自动,这里不再赘述。这里我采用了网络上研究智能机器人的前人Liuviking的程序来捕捉MJPG-STREAMER的图像,运行此程序要先安装,DOTNET3.5,运行后成功便如下图:至此,摄像头的安装完毕。2Linu*平台:安装与串口调试2.1什么是ser2net.ipk软件包首先解释一下什么是ser2net.ipk软件包。这是一个可以通过个人PC向路由器的指定端口发送数据,然后路由原封不动的将数据发送到路由的TTL接口的程序。当安装完这个程序后,我们就可以通过编制的程序向路由的TTL口发送串行数据,意义在于:单片机就可以承受路由发送的串行数据进展各种控制。2.2安装ser2net.ipk软件包下面简单的讲解如何在openwrt下进展软件包ser2net.ipk的安装有两种方法:方法一是在路由已经联结上互联网的情况下,可以由网络进展安装。非常的方便,但我并未采用。方法二是利用winscp连接上路由,上传ser2net.ipk,然后运行putty,登陆路由执行opkgupdateopkginstall软件包地址同昨日安装ov519驱动。安装完毕ser2net后,需要进展一定的设置,在命令行界面下输入cd/进入路由根目录,再输入cdetc进入ect目录后执行viser2net.conf〔当安装成功后才会出现此设置文件〕找到2001:raw:600:/dev/ttyS0:9600NONE1STOPBIT8DATABITS*ON*OFFLOCAL-RTSCTS*2002:raw:600:/dev/ttyS1:9600NONE1STOPBIT8DATABITS*ON*OFFLOCAL-RTSCTS注意,这里"*"代表的是屏蔽,我们修改的是非屏蔽语句,可以看到,上位机发送的端口是2001,这就是我们需要发送的端口号,波特率是9600,其它的略。设置完毕后记得保存退出,然后这里要执行一次ser2net,以开启效劳。一切设置妥当后,我们再次借用liuviking的程序进展串口通讯的测试,运行liuviking的程序,然后再运行“串口调试助手〞,在程序中点击发送串口数据,可以看到在“串口调试助手〞,有正确的数据输出,至此,Shy的串口连接局部设置完毕。3Linu*平台:openwrt系统中添加自启动添加自启动项的目的是为了在SHY启动的时候能够自动启动更多的效劳,配合UCI命令。在/etc/init.d里添加需要启动的shell脚本,假设名字为my-plugin。接下来模仿该目录下其他启动脚本的格式,添加你的代码。[cpp]viewplaincopyprint?1.*!/bin/sh/etc/rc.mon2.*/init.d/my-plugin3.START=50*启动顺序4.5.start(){6.*启动项执行的代码7.}8.9.stop(){10.killallmy-plugin11.}之后还需要在rc.d目录下做一个,启动时系统会按顺序启动rc.d目录下的脚本,对应执行init.d目录下的启动脚本。命令如下:ln-s../init.d/my-plugin/etc/rc.d/S50my-plugin参考地址:附:/etc/rc.d/init.d和/etc/init.d联系区别地址:.blogs./balaamwe/archive/2012/01/16/2323665.html4单片机模块4.1构建STC11F02E最小系统我们选用STC11F02E单片机作为SHY的控制芯片电路局部,关于STC11F02E的参数如下:STC11F02E单片机为增强型的8051内核,具有2KB的片内Flash程序存储器、2KB的EEPROM存储器和256KB的片内SRAM数据存储器。这款单片机的UART〔UniversalAsynchronousReceiver/Transmitter,通用异步收发器〕模块的最大特点就是通过配置特殊功能存放器AU*R1中的第7位UART_P1的状态可以使UART模块的两个引脚〔R*D、T*D〕接到P3端口的P3.0、P3.1引脚,或者接到P1端口的P1.6、P1.7引脚,从而可以充当两个串口使用。因为制作SHY需要的引脚并不是很多,所以我们只需要20引脚的单片机即可。这片STC11F02E符合20引脚,小巧,作为增强型STC芯片,功耗小。有两个串口通讯接口,可一个用于下载,一个用于openwrt路由通讯。从DATASHEET中得到STC11F02E的芯片管脚图在这里,我们需要用到:P1.7作为串口的T*(transmit)传送接口P1.6作为串口的R*(Recive)接收接口P1.5-P1.0用于控制L298N驱动电路P3.7用于PWM控制LED灯P3.6/RST用于复位电路*TAL2*TAL1用于11.0592MHZ晶振R*DT*D用于在线下载线路复位电路图关于复位电路的解释RST保持两个机器周期以上的高电平时自动复位晶振,复位电路,VCC,GND,连接好后至此,STC11F02E最小系统完成。4.2中断方式接收串口数据接收串口数据的目的是为了与openwrt路由完成通讯,STC11F02E要准确无误的辨识出openwrt路由发过来的指令,编制测试程序如下:*include*include*defineucharunsignedchar*defineuintunsignedintunsignedcharReceive(void){unsignedchardat;while(RI==0);//只要接收中断标志位RI没有被置“1〞当接收完毕时,中断标志RI被置1//等待,直至接收完毕〔RI=1〕RI=0;//为了接收下一帧数据,需将RI清0dat=SBUF;//将接收缓冲器中的数据存于datreturndat;}voidmain(void){SCON=0*50;//REN=1允许串行承受状态,串口工作模式2TMOD|=0*20;//定时器1工作方式2TH1=0*FD;//baud/*波特率9600、数据位8、停顿位1。效验位无(11.0592M)TL1=0*FD;TR1=1;REN=1;while(1){if(Receive()=='W')P1=~P1;}}以上程序有一个缺点是,并没有使用串口中断,其实在在这个程序上,用不用中断处理程序对于单片机都是一样的,因为使用的是一样的开销。但是,我们在前面提到过,完成Shy的一个目的是学习,所以我们要使用串口中断完成这个程序的编制完成串口中断的编写,如下:*include*include*defineucharunsignedchar*defineuintunsignedintvoidInitUART(void){SCON=0*50;TMOD|=0*20;TH1=0*FD;TL1=0*FD;TR1=1;REN=1;ES=1;//允许串行口中断EA=1;//单片机中断允许}unsignedcharReceive(void){unsignedchardat;while(RI==0);RI=0;dat=SBUF;returndat;}voidmain(void){InitUART();while(1){}}voidserial(void)interrupt4using3{if(Receive()=='W')P1=~P1;}可以看到,程序被精简,并且模块化,主函数中几乎没有代码。经过测试,能够正常使用。在这里:interrupt0指明是外部中断0;interrupt1指明是定时器中断0;interrupt2指明是外部中断1;interrupt3指明是定时器中断1;interrupt4指明是串行口中断;using0是第0组存放器;using1是第1组存放器;using2是第2组存放器;using3是第3组存放器;51单片机的中断编号如下:51单片机的中断功能号如下:几个比拟重要的概念如下:EA、E*0、ET0、E*1、ET1、ES、ET2中断名称、中断号、入口地址中断允许控制存放器〔interruptenable〕中断优先级控制存放器〔interruptpriority〕SHY的中断方式接收串口数据局部完毕。4.3PWM调光编程正规的解释如下:脉冲宽度调制(PWM),是英文“PulseWidthModulation〞的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进展控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进展控制的一种非常有效的技术。随着电子技术的开展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等,而在镍氢电池智能充电器中采用的脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而到达控制充电电流的目的。以上参考地址:baike.baidu./view/168039.htm可以看到,以上的解释非常抽象。在我的单片机开发板中,有PWM的例如程序,但不是以函数的形式,改写为函数的形式如下:unsignedintCYCLE=600,PWM_LOW=0;//PWM-定义周期并赋值voidPWM_LED(void){LED0=1;Delay(60000);//特意加延时,可以看到熄灭的过程for(PWM_LOW=1;PWM_LOW0;PWM_LOW--){//与逐渐变亮相反的过程LED0=0;Delay(PWM_LOW);LED0=1;Delay(CYCLE-PWM_LOW);}}例如程序的流程图图片来源:?LY-51S开发板说明书v1.1.pdf?烧制入单片机后演示此刻,在官方的解释中“是利用微处理器的数字输出来对模拟电路进展控制的一种非常有效的技术〞此句,是否以不再抽象.根本上来说,在这个LED应用中,是采用时分法,用时差来进展电压连续变化量的模拟。因为在单片机中,管脚的输出不是1就是0如何输出一定电压*围的模拟量,PWM就是解决这个问题的一种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论