为方便阅读,把解密过程,移动到这里
遥控坦克DIY过程解密(01)
【序言】
贴子发布了几天创造有很多网友对“@ZiShi”这个遥控坦克的DIY过程比较感兴趣,时时有朋友通过QQ加好友讯问这个坦克的DIY过程和掌握事理,为了大家进一步理解这个项目,“@ZiShi”将本着开放、分享的原则对这个坦克的DIY过程进行“解密”,说是“解密”可能更多针对一些DIY“新手”而言的,对付一个DIY“高手”来说这些可能并不算什么,但是仍旧希望DIY“高手”们来分享这个过程并提出您的改进见地。
【面向玩家】
这个坦克的DIY过程紧张面向广大的小车、模型、电子、机器DIY爱好者,重点在于分享DIY过程以及DIY心得,与更多朋友分享DIY的乐趣。
如果您是一个DIY“新手”通过“@ZiShi”的这些笔墨您可以理解到DIY过程中利用到的一些工具、设备、干系根本知识以及这个坦克的组装过程。如果您是一个DIY“熟手”,您可能曾经做过类似的事情,同时更希望理解“@ZiShi”这个坦克的DIY过程以及内部事理,“@ZiShi”在这里都会呈现给大家。如果您是一个DIY“老手”的话,那么“@ZiShi”的这篇笔墨在您面前就显得班门弄斧了,我们更希望您能为我们的进步提出更多宝贵见地,在这先说一声感激。
【几点解释】
在此要解释几点:
由于精力和韶光的限定再加上内容较多,这篇笔墨会不断更新直到完成,请大家持续关注;
“解密”过程将会沿着电路、软件、机器、组装的过程展开;
由于篇幅所限笔墨将侧重事理进行讲解;
笔墨中会涉及到一些专业知识如机器、电子以及软件,如果我们哪里做的不合理或禁绝确请您明确指出;
对付一个DIY的作品很多地方是不能利用产品级的眼力去看待的,这样会给DIY过程带来很大困难,当然我们力争做到专业;
上面说了很多题外话,下面进入正题。
【解密-电路】
待续……
遥控坦克DIY过程解密(02)
连续解密……
首先我们进行一个大略设计,方案一下我们的遥控坦克要具备哪些功能。我们希望DIY后的遥控坦克可以实现下面一些功能:
1、提高;
2、退却撤退;
3、左转;
4、右转;
5、炮塔顺时针旋转;
6、炮塔逆时针旋转;
7、通过遥控办法实现功能1-6;
我们知道坦克的移动以及炮塔的旋转可以通过电机实现,对付遥控功能的话我们这里选用的是NRF24L01这个无线收发模块,以是对上面7点进一步概括的话我们只要实现电机的掌握以及无线吸收与发送就可以了。
下面是遥控坦克的功能图。
图中的“M”表示坦克上的3个电机,分别是2个轮子和1个炮塔,绿色的框代表NRF24L01这个无线收发模块(须要2只),实际上剩下的事情大家都很随意马虎想到,只要吸收模块吸收到遥控发来的命令然后对命令进行识别,末了掌握电机旋转。
做过电机掌握的朋友都知道只要通过一个叫“H桥”的电路就可以轻松掌握电机迁徙改变,那么实现“H桥”的方法有很多,大家可以利用独立元器件去搭建电路当然也可以选择现成的掌握芯片,我们选择第二种方法,选择利用芯片有几个好处,第一它能够大大节省我们的DIY韶光,第二降落了实现的难度,同时芯片的集成度也比较高让电路看起来比较都雅。这里我们不去谈论如何选择“H桥”芯片,我们只大略的先容我们利用的这款芯片“L9110”,由于他价格不贵而且利用方便,下图是L9110利用手册上的截图。
我们创造这个芯片上有8个引脚,我们只要关注个中的4个就够了分别是IA、IB、OA和OB那么这四个引脚的关系是什么呢,连续看芯片的利用手册(本来是件挺轻松的事情结果动不动就要把手册请出来,真是头大),通过浏览芯片的利用手册我们会创造这样一张图,如下:
这张引脚波形图已经清楚的见告我们,IA和OA的关系以及IB和OB的关系,用一句话概括便是输入是高那么输出也是高,输入是低输出也是低,怎么样大略吧。
知道了引脚的时序关系后就可以要把他它连接到电路中了,芯片的利用手册上已经给出了运用电路,我们照做就好了,看下图:
这个电路看起来还是蛮大略的,芯片左边连接电机右边连接单片机的IO。
待续……
遥控坦克DIY过程解密(03)
连续解密……
上一回我们已经大致理解了“H桥”芯片L9110的利用方法了,这一回我们将阐明如何利用这个芯片来掌握小马达的旋转,参考上一回芯片手册上给出的运用电路,我们可以清楚的知道只要将芯片的OA和OB引脚与马达的两个引脚相连就完成了马达与芯片的连接,如图3-1所示:
马达与芯片连接好往后,坦克掌握系统的主角就要登场了,她便是微掌握器(MCU),在我们的坦克系统中马达的启动、停滞、旋转方向以及旋转速率都是由微掌握器进行精确掌握的,可见她的地位是非常主要的。
说道微掌握器我们也叫他单片机,常见的单片机有很多51、AVR、Arduino、ARM等等,我们这个坦克所利用的单片机是51兼容的单片机,详细型号是STC89C52,这款单片机的程序空间以及她的数据空间完备能够知足我们DIY遥控坦克的须要,而且利用起来也比较方便,图3-2是一个STC89C52单片机:
单片机的IO引脚是其与外界通信的主要手段,我们正是利用单片机的IO与L9110进行通信的,下面看我们是若何将两者进行连接的,如图3-3所示:
将单片机的P10和P11分别和L9110的IB和IA相连,这里须要提醒那些想利用这个电路DIY的朋友,须要把稳图中那两个虚框专业上称为上拉电阻的家伙,有的时候单片机引脚的驱动能力有限须要利用这种方法提高她的驱动能力,这个要视情形而定,并不是所有情形下都须要这个电阻的,可能有人会问到如果须要的话选什么阻值呢,根据我们的履历选择10K欧姆电阻式可以正常事情的。
有了上面这个电路我们就可以完成一组电机的掌握了,这里我们须要三个电机那么如法炮制,只要再次分配4个IO口连接其余2块L9110就可以了,如图3-4所示:
其余这里还涉及到单片机的事情问题,比如电源怎么接、地线怎么接、还有复位电路等等,这里都没有描述,由于这些内容讲起来比较占用篇幅,如果有想利用这个电路进行DIY但又不太熟习单片机的朋友可以联系“@ZiShi”,我们可以供应更细致的资料。
电机掌握事理基本先容完了,看起来并不繁芜,后面该先容数据吸收部分的电路了。
本日就到这里,下回连续……
遥控坦克DIY过程解密(04)
上一回我们分享了电机掌握的事理,这一回我们连续看下遥控是如何实现的。
对付一个坦克或小车来讲我们总不肯望他拖个长长的尾巴跑来跑去(线控)这样会大大的限定住坦克的活动范围,如果是飞机或舰船的话利用线控就显得更不得当了,那么利用什么方法来对坦克进行远程的掌握呢,同样有很多方案供DIY爱好者选择,大略来说有下面几种:
1、常见的航模遥控器,如图4-1,加上吸收器一套下来估计最便宜的那种都要一两百元,不太适宜资金有限的DIY朋友;
2、还有一种遥控外不雅观如图4-2,这种遥控器紧张用来掌握电灯的开关,以及常常出入停车场的朋友常常会看到门卫手里拿的这个东西遥控进出口栏杆的起降,这个种模块利用非常大略,但是有一点不敷这个模块可以表达的信息有限,对付大略的开关完备可以,但假如功能多起来,这个遥控就搪塞不明晰,尤其要实现比例遥控的话这个模块就无能为力了;
3、第三个便是我们这里要谈论的NRF24L01这个模块了如图4-3,首先他价格便宜其次它是一个数据传输模块可以传输多种掌握命令,但它也有缺点那便是他的接口比较繁芜须要特定的时序才能完成对它的掌握;
经由综合的考虑我们选择了NRF24L01这个模块,决定利用单片机对它进行掌握。
下面便是硬件的连接问题了,说到这里我们又要去翻看芯片的利用手册,还好我们有图4-3这样的模块,模块中已经帮我们做好了芯片的周边电路,我们并不须要做这些事情过了,我们只要理解这个模块各个针脚的定义就好了,看图4-4。
这个模块有8个针脚,分别代表VCC、GND、CE、CSN、SCK、MOSI、MISO、IRQ,我们看看如何把这个模块和51单片机相连,如图4-5。
我们将无线模块的各个引脚与单片机的P2口相连,同时将它的中断引脚连接到单片机的INT0引脚,这部分硬件电路的搭建基本就结束了,须要把稳的是图中那个上拉电阻,到了这里坦克一真个硬件电路基本已经形成了,看下完全的电路,图4-6。
后面我们再简要先容一下,遥控手柄一真个电路,本日先到这里。
待续……
遥控坦克DIY过程解密(05)
上一回我们先容完了坦克一真个硬件部分,这回连续先容一下手柄一真个硬件,比较之前的电路手柄这边的电路要大略一些了,还是老习气我们先剖析一下手柄的功能,如图5-1。
手柄的紧张任务便是处理玩家的一些动作,然后将玩家的动作以命令形式发送给坦克。那么玩家都有哪些动作呢?总结下来就一个动作“按键”,当手柄创造用户按下按键后,判断用户按下的是哪个按键末了将这个按键对应的操作以命令形式发送给坦克。
根据前面对坦克功能的定义我们要实现的动作有提高、退却撤退、左转、右转、炮塔顺时针转、炮塔逆时针转这几个动作,那么我们就来设计一个带有6个按键的手柄,其大致外不雅观如图5-2。
功能基本确定了我们来看下手柄一真个电路如何设计,涉及到数据传输模块的设计实在与坦克一端是一样的,可以直接参考《遥控坦克DIY过程解密(04)》来完成干系电路的设计,我们仅仅谈论按键电路的设计,如图5-3所示。
个中阴影部分电路便是遥控手柄的按键电路,同时已经给出了数据传输模块的电路。我们一共定义了6个按键利用单片机的P0口去读取按键的状态,如果读入的数据是‘0’解释按键是抬起状态,如果读入的数据是‘0’解释按键被按下。怎么样实在实现一个手柄也并不繁芜,对付我们DIY来说这个电路已经完备够用了。我们可以选择图5-4这种小按键来制作我们的手柄。
把这种按键焊接在万能版上效果如图5-5所示。
DIY这个遥控坦克所涉及到的硬件部分基本先容完毕了,后面的事情便是根据事理图(在万能版或面包板上)把电路搭建好,搭建好电路后就可以进入软件设计阶段了。
本日前辈行到这里,待续……
遥控坦克DIY过程解密(06)
【解密-软件】
我们说硬件是载体软件是灵魂,前面已经先容了遥控坦克的硬件部分接下来我们该去实现它的软件部分了,说大略便是写程序掌握我们的坦克完成估量功能。看过前面笔墨的朋友知道我们的硬件系统分为两部分,它们是坦克系统和手柄系统,我们要分别为这两个别系编写程序。首先我们先设计一下坦克一真个软件架构,如图6-1。
从图中我们能看出坦克一端在不断的吸收命令,如果有命令发来就解析命令然后实行命令,如果没有命令那么连续下一次吸收命令,总之坦克一旦上电就在一直的吸收命令直到关闭电源。这里给出部分源程序作为参考,考虑到有些朋友不太熟习程序设计为不影响大家对事理的理解,在代码中利用了很多注释和伪代码乃至插入很多中文信息,如图6-2。
从图中我们可以清晰的看出程序的实行过程,系统在无止境的循环吸收命令、解析命令、实行命令。个中赤色方框部分是这段程序的主体,我们会创造它的核心便是掌握电机的旋转,那么如何通过程序来掌握电机的旋转呢,这就要回顾一下前面先容的硬件电路了(《遥控坦克DIY过程解密(02)》),如图6-3。
根据L9110的事情时序图以及我们的硬件事理图,我们可以清楚的看出要想让电机旋转我们只要让单片机的两个IO引脚P10、P11输出反相就可以了,如果转化成代码如图6-4所示。
上图中赤色方框中表示的是对一个马达的掌握,对其余2个马达的掌握方法也是一样的,进行到这里我们已经可以通过程序来掌握电机的旋转了,只要精确的折衷3个马达的旋转方向,我们就可以让我们的坦克完成提高、退却撤退、左转、右转、炮塔顺时针旋转以及炮塔逆时针旋转这几个功能。
那么系统是如何知道已经吸收到数据的呢?只要有2种方法,一种方法是对NRF24L01的状态不断进行查询,另一种方法是当NRF24L01吸收到数据往后主动关照MCU,根据我们的硬件事理图同时为了提高系统实行效率,我们采取第二种方法,代码如图6-5、6-6。
当吸收到数据传输模块触发的中断后,我们去读取传输模块的状态,如果吸收到数据我们就设置一个标志,图6-2的程序会不断查询这个标志,一旦创造有数据发送来,就可以对数据进行解析了。
当然这里面我们省略了初始化硬件、定时器以及传输模块的详细步骤,如果大家在DIY过程中也碰着到了详细技能问题,可以随时翻阅资料或学习,当然也可以与“@ZiShi”进行互换。
如果要让坦克正常解析吸收到的命令,我们可以定义一些大略的协议,如图6-7。
有了命令列表,通信双方就可以根据这个“协议”进行通信了,如果坦克一端吸收到0X00,那么坦克就全速向前冲,如果坦克一端吸收到0X02,那么坦克就会左转,大家还可以自己扩充这个命令列表,让自己的坦克完成更多的功能。
坦克一真个程序事理已经先容完毕了,后面我们还会连续先容遥控手柄一真个程序事理。
本日先到这里……
遥控坦克DIY过程解密(07)
前面先容了坦克一真个程序事理这一回我们来看看手柄程序是怎么实现的,要实现手柄一真个程序我们还得回顾一下手柄一真个硬件事理图,如图7-1。
根据事理图我们可以看出当按键没有被按下是,单片机对应的IO引脚为高电平,当有按键按下时候,单片机对应的IO引脚为低电平,根据这一事理,我们的程序可以不断去读取IO引脚的状态来判断是哪个按键被按下了,请看图7-2。
图7-2是一段按键扫描程序,这段程序会返回被按下按键的编号,末了根据按键的编号发送对应的掌握命令。系统程序运行起来后我们只要不断的调用这个按键扫描函数,就可以不断的读取用户输入,发送掌握命令,如图7-3。
至此程序部分的基本事理已经先容完毕了,有了这些程序我们已经可以掌握我们的坦克完成估量的功能了,如果后面再须要其他功能我们会在这个程序上进行扩展,其余这里给出的只是框架性的内容,为了不影响对整体程序功能的理解,我们略去了部分技能细节。
有些朋友可能对单片机编程或者对一些芯片、模块的利用不太熟习,这些涉及到详细细节的问题我们可以其余进行谈论,这里还是以事理为主。
软件部分的“解密”基本完成了,下一回我们要开始进行构造与外不雅观的设计了,敬请期待……
遥控坦克DIY过程解密(01)
【序言】
贴子发布了几天创造有很多网友对“@ZiShi”这个遥控坦克的DIY过程比较感兴趣,时时有朋友通过QQ加好友讯问这个坦克的DIY过程和掌握事理,为了大家进一步理解这个项目,“@ZiShi”将本着开放、分享的原则对这个坦克的DIY过程进行“解密”,说是“解密”可能更多针对一些DIY“新手”而言的,对付一个DIY“高手”来说这些可能并不算什么,但是仍旧希望DIY“高手”们来分享这个过程并提出您的改进见地。
【面向玩家】
这个坦克的DIY过程紧张面向广大的小车、模型、电子、机器DIY爱好者,重点在于分享DIY过程以及DIY心得,与更多朋友分享DIY的乐趣。
如果您是一个DIY“新手”通过“@ZiShi”的这些笔墨您可以理解到DIY过程中利用到的一些工具、设备、干系根本知识以及这个坦克的组装过程。如果您是一个DIY“熟手”,您可能曾经做过类似的事情,同时更希望理解“@ZiShi”这个坦克的DIY过程以及内部事理,“@ZiShi”在这里都会呈现给大家。如果您是一个DIY“老手”的话,那么“@ZiShi”的这篇笔墨在您面前就显得班门弄斧了,我们更希望您能为我们的进步提出更多宝贵见地,在这先说一声感激。
【几点解释】
在此要解释几点:
由于精力和韶光的限定再加上内容较多,这篇笔墨会不断更新直到完成,请大家持续关注;“解密”过程将会沿着电路、软件、机器、组装的过程展开;由于篇幅所限笔墨将侧重事理进行讲解;笔墨中会涉及到一些专业知识如机器、电子以及软件,如果我们哪里做的不合理或禁绝确请您明确指出;对付一个DIY的作品很多地方是不能利用产品级的眼力去看待的,这样会给DIY过程带来很大困难,当然我们力争做到专业;上面说了很多题外话,下面进入正题。
【解密-电路】
待续……
遥控坦克DIY过程解密(02)
连续解密……
首先我们进行一个大略设计,方案一下我们的遥控坦克要具备哪些功能。我们希望DIY后的遥控坦克可以实现下面一些功能:
1、提高;
2、退却撤退;
3、左转;
4、右转;
5、炮塔顺时针旋转;
6、炮塔逆时针旋转;
7、通过遥控办法实现功能1-6;
我们知道坦克的移动以及炮塔的旋转可以通过电机实现,对付遥控功能的话我们这里选用的是NRF24L01这个无线收发模块,以是对上面7点进一步概括的话我们只要实现电机的掌握以及无线吸收与发送就可以了。
下面是遥控坦克的功能图。
图中的“M”表示坦克上的3个电机,分别是2个轮子和1个炮塔,绿色的框代表NRF24L01这个无线收发模块(须要2只),实际上剩下的事情大家都很随意马虎想到,只要吸收模块吸收到遥控发来的命令然后对命令进行识别,末了掌握电机旋转。
做过电机掌握的朋友都知道只要通过一个叫“H桥”的电路就可以轻松掌握电机迁徙改变,那么实现“H桥”的方法有很多,大家可以利用独立元器件去搭建电路当然也可以选择现成的掌握芯片,我们选择第二种方法,选择利用芯片有几个好处,第一它能够大大节省我们的DIY韶光,第二降落了实现的难度,同时芯片的集成度也比较高让电路看起来比较都雅。这里我们不去谈论如何选择“H桥”芯片,我们只大略的先容我们利用的这款芯片“L9110”,由于他价格不贵而且利用方便,下图是L9110利用手册上的截图。
我们创造这个芯片上有8个引脚,我们只要关注个中的4个就够了分别是IA、IB、OA和OB那么这四个引脚的关系是什么呢,连续看芯片的利用手册(本来是件挺轻松的事情结果动不动就要把手册请出来,真是头大),通过浏览芯片的利用手册我们会创造这样一张图,如下:
这张引脚波形图已经清楚的见告我们,IA和OA的关系以及IB和OB的关系,用一句话概括便是输入是高那么输出也是高,输入是低输出也是低,怎么样大略吧。
知道了引脚的时序关系后就可以要把他它连接到电路中了,芯片的利用手册上已经给出了运用电路,我们照做就好了,看下图:
这个电路看起来还是蛮大略的,芯片左边连接电机右边连接单片机的IO。
待续……
遥控坦克DIY过程解密(03)
连续解密……
上一回我们已经大致理解了“H桥”芯片L9110的利用方法了,这一回我们将阐明如何利用这个芯片来掌握小马达的旋转,参考上一回芯片手册上给出的运用电路,我们可以清楚的知道只要将芯片的OA和OB引脚与马达的两个引脚相连就完成了马达与芯片的连接,如图3-1所示:
马达与芯片连接好往后,坦克掌握系统的主角就要登场了,她便是微掌握器(MCU),在我们的坦克系统中马达的启动、停滞、旋转方向以及旋转速率都是由微掌握器进行精确掌握的,可见她的地位是非常主要的。
说道微掌握器我们也叫他单片机,常见的单片机有很多51、AVR、Arduino、ARM等等,我们这个坦克所利用的单片机是51兼容的单片机,详细型号是STC89C52,这款单片机的程序空间以及她的数据空间完备能够知足我们DIY遥控坦克的须要,而且利用起来也比较方便,图3-2是一个STC89C52单片机:
单片机的IO引脚是其与外界通信的主要手段,我们正是利用单片机的IO与L9110进行通信的,下面看我们是若何将两者进行连接的,如图3-3所示:
将单片机的P10和P11分别和L9110的IB和IA相连,这里须要提醒那些想利用这个电路DIY的朋友,须要把稳图中那两个虚框专业上称为上拉电阻的家伙,有的时候单片机引脚的驱动能力有限须要利用这种方法提高她的驱动能力,这个要视情形而定,并不是所有情形下都须要这个电阻的,可能有人会问到如果须要的话选什么阻值呢,根据我们的履历选择10K欧姆电阻式可以正常事情的。
有了上面这个电路我们就可以完成一组电机的掌握了,这里我们须要三个电机那么如法炮制,只要再次分配4个IO口连接其余2块L9110就可以了,如图3-4所示:
其余这里还涉及到单片机的事情问题,比如电源怎么接、地线怎么接、还有复位电路等等,这里都没有描述,由于这些内容讲起来比较占用篇幅,如果有想利用这个电路进行DIY但又不太熟习单片机的朋友可以联系“@ZiShi”,我们可以供应更细致的资料。
电机掌握事理基本先容完了,看起来并不繁芜,后面该先容数据吸收部分的电路了。
本日就到这里,下回连续……
遥控坦克DIY过程解密(04)
上一回我们分享了电机掌握的事理,这一回我们连续看下遥控是如何实现的。
对付一个坦克或小车来讲我们总不肯望他拖个长长的尾巴跑来跑去(线控)这样会大大的限定住坦克的活动范围,如果是飞机或舰船的话利用线控就显得更不得当了,那么利用什么方法来对坦克进行远程的掌握呢,同样有很多方案供DIY爱好者选择,大略来说有下面几种:
1、常见的航模遥控器,如图4-1,加上吸收器一套下来估计最便宜的那种都要一两百元,不太适宜资金有限的DIY朋友;
2、还有一种遥控外不雅观如图4-2,这种遥控器紧张用来掌握电灯的开关,以及常常出入停车场的朋友常常会看到门卫手里拿的这个东西遥控进出口栏杆的起降,这个种模块利用非常大略,但是有一点不敷这个模块可以表达的信息有限,对付大略的开关完备可以,但假如功能多起来,这个遥控就搪塞不明晰,尤其要实现比例遥控的话这个模块就无能为力了;
3、第三个便是我们这里要谈论的NRF24L01这个模块了如图4-3,首先他价格便宜其次它是一个数据传输模块可以传输多种掌握命令,但它也有缺点那便是他的接口比较繁芜须要特定的时序才能完成对它的掌握;
经由综合的考虑我们选择了NRF24L01这个模块,决定利用单片机对它进行掌握。
下面便是硬件的连接问题了,说到这里我们又要去翻看芯片的利用手册,还好我们有图4-3这样的模块,模块中已经帮我们做好了芯片的周边电路,我们并不须要做这些事情过了,我们只要理解这个模块各个针脚的定义就好了,看图4-4。
这个模块有8个针脚,分别代表VCC、GND、CE、CSN、SCK、MOSI、MISO、IRQ,我们看看如何把这个模块和51单片机相连,如图4-5。
我们将无线模块的各个引脚与单片机的P2口相连,同时将它的中断引脚连接到单片机的INT0引脚,这部分硬件电路的搭建基本就结束了,须要把稳的是图中那个上拉电阻,到了这里坦克一真个硬件电路基本已经形成了,看下完全的电路,图4-6。
后面我们再简要先容一下,遥控手柄一真个电路,本日先到这里。
待续……
遥控坦克DIY过程解密(05)
上一回我们先容完了坦克一真个硬件部分,这回连续先容一下手柄一真个硬件,比较之前的电路手柄这边的电路要大略一些了,还是老习气我们先剖析一下手柄的功能,如图5-1。
手柄的紧张任务便是处理玩家的一些动作,然后将玩家的动作以命令形式发送给坦克。那么玩家都有哪些动作呢?总结下来就一个动作“按键”,当手柄创造用户按下按键后,判断用户按下的是哪个按键末了将这个按键对应的操作以命令形式发送给坦克。
根据前面对坦克功能的定义我们要实现的动作有提高、退却撤退、左转、右转、炮塔顺时针转、炮塔逆时针转这几个动作,那么我们就来设计一个带有6个按键的手柄,其大致外不雅观如图5-2。
功能基本确定了我们来看下手柄一真个电路如何设计,涉及到数据传输模块的设计实在与坦克一端是一样的,可以直接参考《遥控坦克DIY过程解密(04)》来完成干系电路的设计,我们仅仅谈论按键电路的设计,如图5-3所示。
个中阴影部分电路便是遥控手柄的按键电路,同时已经给出了数据传输模块的电路。我们一共定义了6个按键利用单片机的P0口去读取按键的状态,如果读入的数据是‘0’解释按键是抬起状态,如果读入的数据是‘0’解释按键被按下。怎么样实在实现一个手柄也并不繁芜,对付我们DIY来说这个电路已经完备够用了。我们可以选择图5-4这种小按键来制作我们的手柄。
把这种按键焊接在万能版上效果如图5-5所示。
DIY这个遥控坦克所涉及到的硬件部分基本先容完毕了,后面的事情便是根据事理图(在万能版或面包板上)把电路搭建好,搭建好电路后就可以进入软件设计阶段了。
本日前辈行到这里,待续……
大家一起DIY
遥控坦克DIY过程解密(06)
【解密-软件】
我们说硬件是载体软件是灵魂,前面已经先容了遥控坦克的硬件部分接下来我们该去实现它的软件部分了,说大略便是写程序掌握我们的坦克完成估量功能。看过前面笔墨的朋友知道我们的硬件系统分为两部分,它们是坦克系统和手柄系统,我们要分别为这两个别系编写程序。首先我们先设计一下坦克一真个软件架构,如图6-1。
从图中我们能看出坦克一端在不断的吸收命令,如果有命令发来就解析命令然后实行命令,如果没有命令那么连续下一次吸收命令,总之坦克一旦上电就在一直的吸收命令直到关闭电源。这里给出部分源程序作为参考,考虑到有些朋友不太熟习程序设计为不影响大家对事理的理解,在代码中利用了很多注释和伪代码乃至插入很多中文信息,如图6-2。
从图中我们可以清晰的看出程序的实行过程,系统在无止境的循环吸收命令、解析命令、实行命令。个中赤色方框部分是这段程序的主体,我们会创造它的核心便是掌握电机的旋转,那么如何通过程序来掌握电机的旋转呢,这就要回顾一下前面先容的硬件电路了(《遥控坦克DIY过程解密(02)》),如图6-3。
根据L9110的事情时序图以及我们的硬件事理图,我们可以清楚的看出要想让电机旋转我们只要让单片机的两个IO引脚P10、P11输出反相就可以了,如果转化成代码如图6-4所示。
上图中赤色方框中表示的是对一个马达的掌握,对其余2个马达的掌握方法也是一样的,进行到这里我们已经可以通过程序来掌握电机的旋转了,只要精确的折衷3个马达的旋转方向,我们就可以让我们的坦克完成提高、退却撤退、左转、右转、炮塔顺时针旋转以及炮塔逆时针旋转这几个功能。
那么系统是如何知道已经吸收到数据的呢?只要有2种方法,一种方法是对NRF24L01的状态不断进行查询,另一种方法是当NRF24L01吸收到数据往后主动关照MCU,根据我们的硬件事理图同时为了提高系统实行效率,我们采取第二种方法,代码如图6-5、6-6。
当吸收到数据传输模块触发的中断后,我们去读取传输模块的状态,如果吸收到数据我们就设置一个标志,图6-2的程序会不断查询这个标志,一旦创造有数据发送来,就可以对数据进行解析了。
当然这里面我们省略了初始化硬件、定时器以及传输模块的详细步骤,如果大家在DIY过程中也碰着到了详细技能问题,可以随时翻阅资料或学习,当然也可以与“@ZiShi”进行互换。
如果要让坦克正常解析吸收到的命令,我们可以定义一些大略的协议,如图6-7。
有了命令列表,通信双方就可以根据这个“协议”进行通信了,如果坦克一端吸收到0X00,那么坦克就全速向前冲,如果坦克一端吸收到0X02,那么坦克就会左转,大家还可以自己扩充这个命令列表,让自己的坦克完成更多的功能。
坦克一真个程序事理已经先容完毕了,后面我们还会连续先容遥控手柄一真个程序事理。
本日先到这里……
遥控坦克DIY过程解密(07)
前面先容了坦克一真个程序事理这一回我们来看看手柄程序是怎么实现的,要实现手柄一真个程序我们还得回顾一下手柄一真个硬件事理图,如图7-1。
根据事理图我们可以看出当按键没有被按下是,单片机对应的IO引脚为高电平,当有按键按下时候,单片机对应的IO引脚为低电平,根据这一事理,我们的程序可以不断去读取IO引脚的状态来判断是哪个按键被按下了,请看图7-2。
图7-2是一段按键扫描程序,这段程序会返回被按下按键的编号,末了根据按键的编号发送对应的掌握命令。系统程序运行起来后我们只要不断的调用这个按键扫描函数,就可以不断的读取用户输入,发送掌握命令,如图7-3。
至此程序部分的基本事理已经先容完毕了,有了这些程序我们已经可以掌握我们的坦克完成估量的功能了,如果后面再须要其他功能我们会在这个程序上进行扩展,其余这里给出的只是框架性的内容,为了不影响对整体程序功能的理解,我们略去了部分技能细节。
有些朋友可能对单片机编程或者对一些芯片、模块的利用不太熟习,这些涉及到详细细节的问题我们可以其余进行谈论,这里还是以事理为主。
软件部分的“解密”基本完成了,下一回我们要开始进行构造与外不雅观的设计了,敬请期待……
遥控坦克DIY过程解密(08)
前面先容了很多专业内容,估计大家看的有些不耐烦了,本日换换口味,欣赏一下我们拍摄的照片,之前一贯有朋友反响视频看的不是很清楚,很多细节没有看到,本日给大家上几张图,我们也正在翻录新的视频,希望能做的更好,话不多说开始上图喽,图8-1:
上面这张图,是我们用铜柱和螺母拼出的“DIY”和“ZiShi”字样,图中这两样东西,是我们拼接外壳的紧张连接件。他们都是很常见的零件,相信常常DIY的朋友对这种零件并不陌生。在看下一张,图8-2。
看到这个图大家会不会想起儿时玩的四驱车呢,如果能够回顾起解释您从小就十分热爱DIY这项充满刺激的动手活动。我们的坦克便是利用这些大略的组件搭建出来的,蛮神奇的。
后来我们都终年夜了,但心依然年轻,从未放弃自己热爱的事情,只是不再知足于“大略”的四驱车,齐心专心想要做出自己的超级战车,同时我们的战车该当具有聪明的“大脑”,而不是大略的前、后、左、右,我们要实现更多功能让它具备更快的反响能力,要说反应能力快在这是天下上谁还能快过打算机呢,我们打算在战车中植入打算机让它具有思维,下图便是我们引入的51打算机,图8-3。
有了大脑战车才会变得更加聪明。
要说DIY真的乐趣很多,可以充分发挥大家的想象力和动手能力,同时让我们在学校里学到的知识不被摧残浪费蹂躏掉,以是我们一贯鼓励大家动手去做去实践。
说到坦克我们再来看看他的履带长什么样子,如图8-4。
大家看到了吗,坦克的履带,我们就以这张笑脸结束本日的笔墨,希望我们能为大家带来更多的快乐,同时也感谢前一段韶光大家对“ZiShi”遥控坦克的支持,感谢大家。
后面我们连续回到构造设计的话题,请看下一回……
遥控坦克DIY过程解密(09)
连续解密
本日进行我们遥控坦克项目的末了一个“解密”部分,末了一部分紧张是关于机器构造的解密。对付一样平常的DIY爱好者来讲螺丝刀、钳子、钢锯、电钻这些工具还都是具备的,但是要说到数控机床、激光切割之类的大家伙可能很少有人具备这个条件了,是不是没有这些大家伙我们就不能进行DIY了呢?当然不是的。DIY的精神就在于有条件要DO,没条件创造条件也要DO,没有工具没有专业的知识都不能阻挡我们去DIY。
本日在这里“ZiShi”要给大家分享的内容是,在有限的加工工具和有限的专业知识条件下如何进行个人的DIY,当然我们这回是环绕机器构造部分展开的。
我们会分两回进行这部分内容,第一回先容金属加工方法,第二回先容非金属加工方法。
先来看金属加工方法,做任何事之前都须要进行大略设计,如果不进行设计就开工后面会碰着很多麻烦,对付机器加工来说我们第一步要做的便是绘图,可能有朋友说了没学过CAD怎么做呢?我们说没紧要一杆笔一把直尺足够了,当然有时候还会用到圆规。有条件的朋友可以现在坐标纸上进行设计,没有坐标纸呢找一张白纸也完备可以,有了这些就可以开工喽,详细怎么画不用详细先容,我们只要一上图,大家立时明白,请看图9-1、9-2:
这是我们曾经设计过的一个实例—机器腿,看着可能有些繁芜,但仔细不雅观察创造图中除了线便是圆,一把直尺一支笔一个圆规完备能搞定了,怎么样事理并不繁芜吧没有CAD我们也可以DIY的,有了这张图接下来便是绘制详细的零件了,这个就更加随意马虎了,看图9-3:
上面的图展示了3个零件的绘制方法,零件画好往后顺便标记尺寸,这个尺寸便是我们后面进行加工的依据了。上面这个图是一个立体效果,我们还要把它转化成平面的尺寸,看图9-4:
图9-4是一个大略的零件,被展开后便是一个矩形,我们只要把下半部分的图纸用剪刀剪下,然后贴到金属材料上(铁皮、铝片),然后利用钢锯沿着图纸进行切割就好了,切割好的材料根据预先设计的尺寸进行折弯处理,请看图9-5:
被加工好的零件与图9-5左下方的效果类似,这种加工方法效率不算高但是可行的,为了充分解释这个方法的可行性,我们展示一下当时做的机器腿效果,如图9-6:
这里只进行了事理性的解释,我想大家该当可以理解这个过程,交代的可能不是很细致,由于详细的手工加工过程还是有很多技巧的,而且对动手能力有比较高的哀求,最主要的是有耐心由于这种方法的效率并不高,还有最最主要的是把稳安全,紧张保护好眼睛和手。如果大家对这种DIY办法感兴趣我们可以进一步分享履历。
下一回我们就先容非金属材料的加工,这部分和装甲车就很靠近了……
遥控坦克DIY过程解密(10)
上回先容了金属加工,本来操持接着先容非金属的手工加工方法,不过团队中卖力构造的兄弟以及完成了坦克内部构造与组装的“解密”,同时这个地方很多网友又比较感兴趣,以是我们前辈行战车的构造和组装“解密”,后面抽个机会再与大家分享非金属的手工加工方法。
首先来个回顾,看看我们的坦克有几部分构成,看图10-01:
如果以从上到下的办法去不雅观察的话,我们的战车紧张包括了炮塔和底盘两大部分,以是我们在DIY这个战车时候也依据这样的顺序,炮塔的组装、车体的组装、整体的装置以及末了的电路调试过程。
组装这个坦克涉及的工具并不繁芜,一把螺丝刀一把小钳子基本就知足了。
首先看看炮塔是如何组装的,既然是“解密”就要让大家看的清清楚楚,我们特意将车体零件“散开”让大家进一步理解其内部构造,首先看看这个炮塔是怎么构成的,如图10-02:
通过上面的图我们已经很清晰的看出了炮管以及炮塔主体的内部构造,而且他的组装过程也极其大略,只要看着这个3D图拼拼插插就好了,末了在关键部位利用螺钉锁紧(哎,连我自己都佩服设计坦克的兄弟,这是怎么构思滴泥,如果朋友们也觉得神奇,一定要顶我们哦,先感激大家,嘿嘿)。再来看看炮管和炮塔主体是如何进行连接的,看图10-03:
一个完全的炮塔已经跃然纸上,不过大家纯挚看图可能很难体会到DIY的乐趣了,紧张还是得动手试一试,后面我们也会给大家先容如何通过手工方法达到类似效果,当然了仅限于大略的外不雅观,像坦克这么大的工程如果完备手工打造的话不是不可以而是韶光长零件精度方面不好掌握。我们团队也是花了很多韶光反复修正才把坦克变成本日这个样子的,只要大家肯在DIY上面花韶光,当然也要花点银子,基本工具和材料还是要买的,相信每个人都能D出自己满意的作品。
炮塔的组装基本就先容完毕了,后面的组装过程也是类似的拼拼插插,相信大家一看就能理解,组装过程还用到了一些链接件,都很常见,如图10-04:
铜柱、螺钉和螺母,相信每一个DIY爱好者家里都有不少这种东西,详细怎么利用自然不用多说。
好了,炮塔的内部构造和组装过程已经先容完了,本日就到这里,下回连续……
-----------------------------------------------------
之前的一篇帖子紧张分享了遥控坦克DIY的事理,涉及了一些机器、电子、软件事理,受到很多朋友的支持和鼓励,本日再发一帖紧张先容这个坦克的组装过程,
如果按照之前的顺序本日是第11篇笔墨了,看看本日聊些什么内容......
遥控坦克DIY过程解密(11)
上一回我们已经先容了炮塔的组装过程,这一回我们看看车体是如何组装的。先来看看车体长什么样子,如图11-01:
车体部分的零件要比炮塔部分的零件多些,以是组装起来会更加有趣一些,从上面的图我们可以创造,车体部分紧张有下面几部分构成,“上面板组件”,“履带传动板组件”,“底盘前锁紧组件”,“承重轮组件”,“导向轮组件”,“驱动轮组件”以及“底板组件”。我们会分别看下这几个组件的组装过程,末了再看看这些个组件是如何构成坦克的车体的。
上面板的紧张浸染是用来固定炮塔电机的,我们利用螺丝和螺母将炮塔电机固定在坦克的上面板上,请看图11-02:
在上图中我们还能瞥见上面板组件上还有4跟长长的“立柱”,这4跟立柱紧张用来连接上面板组件和底板组件。接下来看看称重轮组件,所谓称重轮组件便是车身两侧的起到支撑旁边的轮子,如图11-03、11-04:
有了这排称重轮坦克才能发挥履带车的上风,面对任何地形如履平地。履带的迁徙改变依赖驱动轮的带动,我们看看驱动轮是如何安装的,看图11-05:
只要把驱动小齿轮安装在坦克的马达上,它就可以带动坦克履带提高了,相信大家一定能够明白履带的驱动事理了。前面我们提到了支撑轮、马达和驱动轮,那么这些组件是如何组织在一起的呢,我们须要另一个组件,我们称为“履带传动板组件”,如图11-06:
后面我们会把坦克支撑轮、马达以及驱动轮固定在这个传动板上,图中的长螺丝还有螺母正是固定传动板和马达的。我们所采取的电机便是常见的TT马达,如图11-07:
接下来看一下底盘底板组件的安装,底盘底板组件紧张有两个功能,一个是功能是将塔克底盘封起来让坦克看上去更加封闭,另一个功能是固定电池盒,看图11-08:
当我们把这个底板固定到坦克的底盘之后全体车身就被封闭起来,电路、电机还有电池盒全部被装到坦克的身体里,这样看上去坦克更加的都雅。末了我们看看以上先容的底盘组件是如何组装起来形成坦克底盘的,看图11-09:
上面这张图较清晰的解释了底盘的构成。这一回的坦克组装先容前辈行到这里,我们下回连续。
---------------------------------------------------
遥控坦克DIY过程解密(12)
本日进行遥控坦克末了的整体装置,前面已经先容了炮塔的组装以及坦克底盘的组装。图12-01是炮塔,图12-02是坦克底盘。
末了的装置紧张便是将炮塔和底盘进行连接,过程比较大略,只须要一个零件我们称为“炮塔限位板”,形如图12-03:
这个小零件有两个浸染,仔细看零件中间的孔恰好可以卡在电机输出轴上,从而带动炮塔的旋转,它的另一个浸染就如它的名字了,进行旋转过程中的限位掌握,我们不会让炮塔进行360度旋转,以是对其进行限位,限位是如何实现的呢,我们看图12-04:
可以看到坦克底盘的上面板有两颗螺丝(红圈处),这两颗螺丝会限定住炮塔的旋转角度。
末了我们看看炮塔、限位板以及底盘是如何进行连接的,图12-05、图12-06:
穿过炮塔和限位板,利用一颗螺丝直接将炮塔固定在电机输出轴就完成了炮塔与底盘的连接,末了再看看组装完的坦克效果图12-07:
大功告成,坦克拼装任务基本结束了,不过现在的坦克还不能动弹,由于还没有为它安装掌握电路,欲知详情咱们下回分解……
经由前面12次“解密”,相信大家对遥控坦克的事理以及基本构造有了一定认识,如果要让我们的坦克跑起来还要经历一个调试阶段,实在调试的紧张目的就让坦克根据我们的操作产生精确的行为。比如我们按前坦克就向前走,我们按做坦克就向左转等等。
首先我们要将坦克的3个电机与掌握板进行连接,如图13-01:
大家可以看到掌握板上有6根(3组)插针,中间一组掌握炮塔,两边2组掌握坦克履带,首先我们把炮塔电机插到中间的一组插针上,然后把履带电机插到两侧的插针上如图13-02:
电机与掌握连接后我们开始调试事情,调试紧张便是不雅观察电机的旋转方向是否精确,以上面的图为例,我们描述调试过程:
1. 按动遥控器上的“上键”,如果两条履带向下滚动,我们进入步骤3,否则进入步骤2;
2. 将旋转方向缺点的电机的插针交流位置(组内交流),使其旋转方向精确,进入步骤3;
3. 按动遥控器上的“左键”,如果左侧履带向下滚动,右侧履带向上滚动,调试结束,否则将旁边两个电机接入插针的位置进行交流(组间交流),然后回到步骤1;
上面的过程看起来可能有点不清晰,我们还是画张图,来清晰解释组内交流和组间交流的观点,如图13-03:
直到第三步的条件得到知足,坦克的调试事情结束,对付炮塔动作的调试比较大略,只涉及到组内交流只要方向反了把插针交流一下就可以了,这里不进行先容了。坦克调试结束后我们就可以遥控他自由驰骋喽。
末了我们展示一下手柄图片,目前手柄按键是针对遥控坦克进行开拓的,上面有7个按键,我们暂时利用个中的6个,如图13-04:
关于手柄的更多实现细节我们会单独做一次讲解,本日就到这里喽。
--------------------------------
遥控坦克DIY过程解密(14)
本日给大家先容一下遥控坦克的无线手柄,实际上这个手柄不仅仅可以利用在坦克上,他可以运用在任何必要无线遥控的场合,比如小车、机器人等。当然这个手柄也是可编程的,我们可以根据自己的须要对其进行编程改变每个按键的功能。我们还是通过图片形式与大家分享这个手柄的DIY过程,图14-01是手柄的整体外不雅观。
手柄的构培养大略多了,组装一个这样的手柄大概也就2-3分钟的韶光,它紧张包含高下两层面板中间是它主控电路,我们进去看看他的构造,图14-02:
我们利用一节9V电池为其供电。对付内部的电路来说我们利用高下双层构造,个中一层紧张用来放置按键、指示灯、以及开关等电路,其余一层便是无线手柄的核心电路了,我们看图14-03、14-04:
核心板是基于51单片机的我们也预留了编程接口,这样方便我们对手柄功能进行DIY。我们将两块层板对接后效果如图14-05:
怎么样构造还算大略吧,只要高下对插,然后通过四根螺钉与面板固定就大功告成喽。末了我们看下手柄与坦克主控板的合影如图14-06:
有了他们我们就可以轻松DIY自己的坦克喽,好了本日先到这里,我们下回连续……
-------------------------------------------------
遥控坦克DIY过程解密(15)-为手柄编写程序
前面我们已经先容过子时DIY的无线遥控手柄是可编程的,同时在第7次解密中也先容过为手柄编写程序的事理。那么这次“解密”就来详细看看如何为手柄编写C程序。
看过前面解密的朋友可能更加理解我们无线遥控手柄的硬件构造,我们紧张利用51单片机和NRF24L01模块来实现这个遥控手柄。既然是编写C程序我们须要选择一个开拓环境,这里我们选择常见的KEIL作为我们的集成开拓环境,如图15-01:
关于这个开拓环境的利用方法在这里就不进行先容了,如果您对这个工具的利用不太熟习可以通过网络搜索这个工具的利用方法或直接联系“子时”,我们很高兴与您磋商在编写程序过程中碰着的问题。
编写手柄程序关键的两个事情便是处理按键的变革和发送用户命令,我们先来看看如何通过程序来处理按键变革,我们这里实现一个按键扫描函数KeyScan,下面就看看KeyScan的源程序,如图15-02:
KeyScan函数的事情流程,如图15-03:
函数中利用变量KeyState来记录当前的按键状态,为了判断按键的状态变革我们还须要设置一个变量来记录按键的原始状态以是定义了局部静态变量KeyStateOld,每次进行按键扫描时都会去判断按键状态是否有变革,如果按键状态有变革解释用户在操作手柄那么就根据新的按键状态来发送对应的命令。我们可以将KeyScan函数放在主程序中不断进行调用,来实时监控用户的操作。
处理完用户的操作后须要将用户的操作以命令办法发送出去,命令的发送比较大略我们利用NRF24L01_LIB.LIB库来实现,我们紧张利用三个函数就可以完成命令的发送事情,三个函数分别是WirelessDevInit、WirelessSetDataBuf、WirelessTransData,下面看一段例子程序,图15-04:
上面是一段例子程序我们只须要在系统初始阶段调用函数WirelessDevInit、WirelessSetDataBuf对无线设备进行初始化操作,当须要发送数据时候调用函数WirelessTransData便可以完成无线数据发送。可以结合上面的按键扫描程序对代码进行修正,修正后的代码形式如图15-05:
这里先容的仅是个中的一种为无线手柄编写程序的方法,当然大家可以根据自己的设计编写自己的程序来实现不同的手柄行为,比如扩展更多的命令,支持更多的组合键等等,这里仅仅列举了一些代码片段。
代码中涉及到一些C措辞的知识以及程序设计技巧,如果大家阅读过程中碰着任何程序设计方面的问题可以随时提出,我们共同谈论。程序写好后我们还要将程序烧录到单片机中,这个是下一次解密的话题,本日就到这里……
本次解密是针对遥控坦克作品的末了一次解密,感谢坛友们一贯以来对【DIY遥控坦克】的支持,希望往后能有更故意思的作品与大家分享。
上次给大家先容了如何为无线遥控手柄编写程序,本日为大家先容如何将写好的程序放到单片机中,做过单片机开拓的朋友一定都清楚,我们一样平常是在PC上编辑、编译源程序,但是程序是运行在目标设备上的,常日我们称这个过程为“交叉编译”,大略来说便是在X86架构下编译出可以在51(或其他)单片机上实行的程序。
一样平常来讲我们编译出的可实行程序是一个二进制文件,对付Keil编译环境来说他会天生一个以.hex为后缀的文件。我们的目的便是把这个.hex文件下载(烧录、写入)到我们的单片机中,下面看看如何来操作。
我们已经在遥控手柄的电路板上预留了编程接口,如图16-01:
我们利用串口办法对程序进行下载,以是还须要一根USB转串口的数据线,这种数据线比较多,比如图16-02:
图16-02是一个USB转串口的模块,利用它前须要安装干系驱动程序。通过这个模块我们可以对单片机进行编程,线路的连接比较大略USB一端插在我们的PC机上,其余的3根线对应的是GND、TX、RX(地、发、收),分别与我们的手柄电路板上的编程接口相连,对应关系是GND-GND、RX-TX、TX-RX。电路连接完毕后开始下载程序,由于我们利用的是STC系列的51单片机以是我们利用STC-ISP.exe这个工具对单片机进行编程,看一下这个工具的截图,图16-03:
操作过程大概分为5步:
1. 选择芯片类型,我们利用STC89C52RC;
2. 选择编译产生的.hex,文件;
3. 选择串口(可以在设备管理器中查看串口编号);
4. 点击下载按钮;
5. 当提示框提示为单片机上电时,打开系统电源;
下载结束后系统会给出提示信息。
经由上面的操作后我们的程序已经下载到单片机中,为系统上电后我们的程序就可以运行了,赶紧验证一下自己编写的程序吧。
实际上为单片机下载程序的方法都是近似的,包括为坦克下载程序的方法和手柄一端是相同的,唯一不同的是它们所运行的程序是不一样的。
(注:教程转自51黑电子,我认为这篇文章的细节部分写的很到位,整理出来希望对朋友们有帮助)