林锋教你一步一步玩机器人(arduino)系列------制作篇 (入门组件上)----- 张林锋/文2012-5-28目录1 前言 (3)2. 准备工作 (3)2.1 元器件准备工作 (3)2.2 实验板子准备 (4)3 LED 实验 (5)4 蜂鸣器实验 (7)5.按键实验 (9)6 8*8点阵实验 (11)7 串口实验 (12)8 模拟量输入(电压输入) (16)9 直流电机控制(L298N驱动模块) (18)10 PMW 脉冲宽度调试 (21)11 控制舵机 (22)12 超声波模块 (23)13 巡线防跌模块 (26)14 红外遥控 (27)说明写这系列文章主要目的是和读者一同分享下自己的学习过程,也希望能给读者带来一些帮助,文章部分内容剪裁网络文章,部分自己撰写。
文章内容用于爱好者之间学习,不得用于商业目的。
当然笔者才疏学浅,所书内容难免有缺点和漏洞,还请读者多多海涵,希望能和广大电子爱好者交流心得。
本人QQ:65198204邮箱:65198024@博客:/u/27758246901 前言在淘宝买的Arduino 主板套件终于在26号到了,物流也太慢了,发了4天才到。
套件包含:4轮小车,Arduino MEGA 2560 主板,配套的MEGA Sensor Shield V2.0扩展板,超声波模块,红外遥控模块,寻线防跌模块,舵机。
套件是在27°寒语电子工作室(/)买的,也就是科易互动科技的子站(/)。
备注一下:套件性价比很高,也有配套的相关资料,不过个人觉得配套资料写的不够详细和全面,对于新手制作会带来很多不便。
在制作篇系列文章中,我会对入门组件的应用,以及4轮小车套件的制作,做出详细的制作流程,图文并茂。
相信会对新手入门带来一定收获。
读者在做本文章实验时可以结合阅读我的相关入门知识文章,基本篇,硬件篇,软件篇。
制作篇分:入门上篇:主要介绍一些基础配件,以及小车所要用的器件。
4轮小车篇:主要介绍小车制作全过程。
入门下篇:主要介绍一些其他外围器件应用。
比如:1602,12864液晶应用,时钟模块应用等。
4轮小车改造篇:加入自己的一些元素。
2. 准备工作2.1 元器件准备工作本篇实验器件所用到的元器件如下:(1)发光二极管(2)蜂鸣器(3)按键(4)可变电阻(5)8*8点阵(6)串口(7)直流电机(8)伺服电机(9)超声波模块(10)寻线防跌模块(11)红外遥控。
下面给我的全家福来个图,呵呵。
2.2 实验板子准备首先把一些常用的器件可以焊在洞洞板上,并把引脚焊出来,方便实验。
如下图顺便把51单片机的最小实验板也焊一下,为后面的对比实验用。
(STC12C5A60S2)下面发个全家福3 LED 实验全世界都在用的第一个实验。
虽然简单还是做一下,温故而知新,实验无小事。
呵呵。
至于Arduino软件如何使用,我在制作篇就不过多的描述了,(下载绿色版,插上USB线,寻找驱动,设置主板类型,设置COM口,就可以下载了)。
发光二极管注意正负。
也不一定要接限流电阻,一般烧不了的。
这里用到的Arduino 主板的I/O口为13脚(单片机为P1.0).这里要注意的是:51单片机上电后,全部I/O管脚都为高电平,这是个2560不同的。
首先看看2560运行效果程序如下(注意:Arduino开发平台不支持汉字,如要要显示汉字,需先用写字板输入后拷贝过来)单片机程序如下4 蜂鸣器实验关于蜂鸣器的介绍,DFRobot 的基础套餐中文教程里有详细的介绍。
我这里做一下简单的描叙。
蜂鸣器分为2种:有源,无源。
如下图,黑色胶封的为有源蜂鸣器,有绿色电路板的为无源蜂鸣器。
(也可以用万用表的欧姆档可以测量出来,有源蜂鸣器的电阻为几百Ω,无源蜂鸣器的电阻为4~16Ω)。
本实验用的事有源蜂鸣器,内带驱动电路。
不许要三极管驱动。
由于蜂鸣器实验效果图看不出来,和LED实验类似。
就没有贴图了Arduino MEGA 2560 程序:51单片机程序:5.按键实验本实验为按键亮灯,注意2560的按键口必须接下拉电阻(10K),然后后面的判断语句会有误。
按键输入接12脚。
(单片机接P1.1)效果图:Arduino MEGA 2560 程序:单片机实验效果:51单片机程序:6 8*8点阵实验FJ1088BH 8*8点阵引脚说明1~8 列正极,a~h 行负极由于单片机I/O口的驱动能力有限,无法直接驱动这么多点阵。
单片机的实验这一节就省了。
呵呵,偷个懒。
下面来说说2560把,2560的I/O口驱动能力很强,可以达到40mA.。
可以直接驱动。
实验比较简单,大家细心将线连上就OK了。
实验效果图如下:程序如下:这个实验提前做的原因是为了方便后面实验的数据演示,比如AI输入,PMW等。
2560 编写串口通信非常方便,只需调用Serial函数便可,Serial函数有很多功能,具体参照软件篇,或者去看官网的说明 这里用到的就是一个串口定义,和串口输出的功能2560程序:2560运行效果:点击这个是Arduino 开发平台自带的串口调试工具,不过有个缺点只能锁定USB转串口这个口。
右边是串口调试工具显示的值。
这里我的USB转到我PC上的串口为COM4,(我遇到的问题:2560主板有4个串口,USB转换对应的COM0,也就是0 脚RX ,1脚TX,如果定义这个口发送数据,电脑端用USB转换过来后的COM4接收,显示正常如上图所示,如果我用电脑自带的原生态串口COM1,或者COM2来接收数据就是乱码,一直还没找到原因,不知道读者是否遇到同样的情况,目前也不纠结这个问题了。
以免影响后面实验的进度)。
51单片机运行效果单片机程序:8 模拟量输入(电压输入)A TMEGA2560可以读取0到5V的电压,ADC的分辨率为10-bit(1024个状态量),换句话说5/1024=4.8mV 是最小分辨率电压值。
实验效果:(0~1023变化)程序:9 直流电机控制(L298N驱动模块)接线示意图:(VMS为电机驱动电源,5V逻辑控制电源可以外接也可以用板载,注意跳线跳上表示使用板上电源,使用板载电源时,MCU的GND要连在一起。
)2560 程序:51 单片机程序:10 PMW 脉冲宽度调试线路沿用上面的电机的线路,结合实验8 ,实验效果:(外用表实时观看PMW电压)2560程序:11 控制舵机用Arduino控制舵机是灰常方便的。
(封装好了Servo类库,方便调用,具体功能见软件篇)舵机原理图:实物图:接线:灰---GND 接扩展板的G位接口红---+5V 接扩展板的+5V接口黄---接信号程序:12 超声波模块主要技术参数:1.使用电压:DC5V2.静态电流:小于2mA3:电平输出:高5V 4:电平输出:低0V5:感应角度:不大于15度 6:探测距离:2cm-450cm 7:高精度:可达3mm接线方式,VCC、trig(输入)、echo(输出)、GND地线注意:trig(输入)对应2560主板应该是TX(发送)。
echo(输出)对应2560主板应该是RX(接收)。
时序图:工作原理:(1)采用IO触发测距,给至少10us的高电平信号;(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.(4)公式:us/58=cm或us/148=英寸,测试距离=(高电平时间*声速(340M/S))/2; 注意:测量周期最好60ms以上。
{1秒=1000毫秒(ms)=1000000微秒(μs) }实验效果:程序:13 巡线防跌模块性能参数:1:检测距离,检测白纸时约为2厘米。
视颜色的不同距离有所不同,白色最远。
2.供电电压:2.5V~12V,不要超过12V。
(注意:最好用低电压供电,供电电压太高传感器的寿命会变短。
5V供电为佳。
)3.工作电流,5V时18~20ma。
经大量测试,传感器硬件设置为18~20ma工作电流时性能最佳,主要表现在抗干扰能力上。
如果客户需要小功耗的,本店也可以修改,最小能做到5ma。
拍下留言注明即可。
4.检测到物体,信号端输出低电平;未检测到物体,信号端输出高电平。
实验效果:程序:14 红外遥控红外线调试也很简单,用到了科易互动给出的库。
(这里一定要注意:库最好用Arduino 0022或者0023,最新版本编译会报错)。
首先用到科易互动的一个数据收集程序IrReceive,用于收集:遥控器协议,按键编码,按键位数,(现在小车已经装好,应为红外实验是最后一步,昨天下午调试红外老是编译报错,就是上面我说道的版本问题,所以没去管了,直接装好小车了,这里感谢群里的Chen提示我可能是版本问题,要不是我也没想到。
)基本家里的遥控器都可以用上,呵呵,把按键编码住就OK了。
我还是用科易互动的遥控器来做。
按键编码如下:Protocol: NEC, irCode: FFA25D, bits: 32Protocol: NEC, irCode: FF629D, bits: 32Protocol: NEC, irCode: FFE21D, bits: 32Protocol: NEC, irCode: FF22DD, bits: 32Protocol: NEC, irCode: FF02FD, bits: 32Protocol: NEC, irCode: FFC23D, bits: 32Protocol: NEC, irCode: FFE01F, bits: 32Protocol: NEC, irCode: FFA857, bits: 32Protocol: NEC, irCode: FF906F, bits: 32Protocol: NEC, irCode: FF9867, bits: 32Protocol: NEC, irCode: FFB04F, bits: 320:Protocol: NEC, irCode: FF6897, bits: 321:Protocol: NEC, irCode: FF30CF, bits: 322:Protocol: NEC, irCode: FF18E7, bits: 323:Protocol: NEC, irCode: FF7A85, bits: 324:Protocol: NEC, irCode: FF10EF, bits: 325:Protocol: NEC, irCode: FF38C7, bits: 326:Protocol: NEC, irCode: FF5AA5, bits: 327:Protocol: NEC, irCode: FF42BD, bits: 328:Protocol: NEC, irCode: FF4AB5, bits: 329:Protocol: NEC, irCode: FF52AD, bits: 32。