西红柿 发表于 2017-10-3 22:19:30

桌面履带蓝牙4.0小车

在写这篇帖子之前,先感谢前段时间,在论坛里,为我耐心解答的大神朋友们,无论我问出什么奇葩的问题,都能为我耐心解答,真心感谢你们。http://image.geek-workshop.com/album/201710/03/220419i3323oeipmpyjeoy.jpghttp://image.geek-workshop.com/album/201710/03/220434puwu9zg3um434fmj.jpg【注】转载请声明出处和作者,尊重个人劳动成果,谢谢。蓝牙4.0小车说明20171003-XHShttp://image.geek-workshop.com/album/201710/03/220434puwu9zg3um434fmj.jpgfile:///C:\temp\ksohtml\wpsA583.tmp.png 简介蓝牙小车使用了玩具坦克车的底盘,由两个614空心杯电机驱动。整车使用一块3.7V 110mAh锂电池,满电续航约10分钟。主芯片为ATmega328P-AU,直流电机驱动为L9110S,蓝牙4.0模块为RF-BM-S02I芯片CC2540,直接由安卓APP遥控,不带调速。
一、底盘常见的蓝牙小车多使用香蕉电机提供动力,我主要想实现蓝牙控制,直接选择了成品玩具拆机。逛遍X宝,最终选择了全X宝第二小的模型坦克,感觉最小的那个颜值不够,地方小了,也不太方便放置DIY电路板。特别是这精致的履带深深的吸引了我,果断剁手,确实是没有找到比这更加省事的方法了。网上的空心杯电机减速箱虽然有一堆,但是结构和尺寸都不太合适。
http://image.geek-workshop.com/album/201710/03/220449acxwc2ogolgp2og4.png

file:///C:\temp\ksohtml\wpsA584.tmp.png拿到这款坦克的时候,被强大的中国制造震惊到。从林虎式坦克的细节都表现得很好,反复的抚摸过后,充电跑起。这家伙算是比较灵活的,放在地上看起来比较慢,但是放在桌面上,速度就比较快了。这很符合桌面小车的定位,并且是高逼格的履带小车额。OK 掀起她精致的外衣,我们一起看个究竟。下面的内容不可描述,大概就两个614空心杯电机二级减速驱动履带。我的天!居然还有高端的涡轮减速箱,真是减速又防滑。炮台是360°的,由一个更小的空心杯电机四级减速驱动。当然,这样的玩具一定有一个黑色的小喇叭模拟引擎的声音,这声音就尬了!还是默默的拆下来吧。原厂的电路板功能牛逼,但是做工确实和价格相符,手工焊接的痕迹很明显。拆了!拆了!剩下的就是非常完美的桌面小车履带总成了,不过电池确实比较小,110mAh! 罢了!罢了!桌面跑跑应该是够了。
二、电机驱动
完成这个桌面坦克之前,我也是用香蕉电机、L298N模块、Arduino Nano 和蓝牙4.0模块全部走通一次。L298N非常便宜好用,可以同时驱动两个直流有刷电机。
http://image.geek-workshop.com/album/201710/03/220345dv0xxwv4g7kbwgo2.jpg
file:///C:\temp\ksohtml\wpsA594.tmp.png
直流电机旋转方式IN1IN2IN3IN4PWM调速
使能A使能B
M1正转高低//高/
反转低高//高/
停止低低//高/
M2正转//高低/高
反转//低高/高
停止//低低/高
我没有使用PWM调速,只是控制电机的转向。这个模块对于我的小车来说就太大了,我仔细看了原厂板子。基础太差,不知道它是怎么实现的,可能直接三极管驱动的,但是没有看到怎么实现换向。为了满足体积的要求,就在网上找了一个贴片的驱动芯片L9110S
http://image.geek-workshop.com/album/201710/03/220450ixbrrtxyyila0abx.png
http://image.geek-workshop.com/album/201710/03/220450lh8l3h40wf6tsrl8.png
file:///C:\temp\ksohtml\wpsA595.tmp.jpg
file:///C:\temp\ksohtml\wpsA596.tmp.jpg
原理和L298N相似,少了使能调速,不过我也用不上。IA和IB接口高低不同电平就可以控制电机的正反转了。
三、主芯片
因为只会Arduino,就只好抄了一块Arduino mini的板子。程序的所有定义,也是根据Arduino mini来的。放弃了原来的三脚晶振,换了16MHz的四脚无源晶振。其他的都一样,采用了MIC5219-5.0BM5为主控芯片提供5V稳压。


http://image.geek-workshop.com/album/201710/03/220343rzd2h26uxvjc7u7n.jpg

file:///C:\temp\ksohtml\wpsA5A7.tmp.png
四、原理图
我用AD14画原理图,画原理图的时候就是把L9110S这个驱动芯片给加进去了,还有为了给蓝牙提供3.3V稳压,使用了MIC5219-3.3BM5这个芯片。
http://image.geek-workshop.com/album/201710/03/220451mpb3l7aarp7gx3xg.pngfile:///C:\temp\ksohtml\wpsA5A8.tmp.jpg
考虑到我的小板子不需要那么多的接口,就只留下了ICSP和UART这两个必须的口子。ICSP是用来给Arduino烧写bootloader,UART是用来上传程序和蓝牙通信。
五、PCB设计
PCB的设计就必须要考虑车体的大小了,我参照原厂的设计画了个同样大的板子。原厂的设计是有走飞线的,不过为了好看,我把所有的接点都放置在了一侧,而开关的位置又必须在中间。对于一个新手来说,这就比较为难了。我的电源线穿过了整个电路板。按照原设计打了安装孔,还为我的蓝牙天线贴心的打上了过线槽。用CAD把原理图都画好了,结果我的AD14不能导入CAD文件,这就比较艰难了,只好一点点手绘PCB机械层。
file:///C:\temp\ksohtml\wpsA5A9.tmp.jpgfile:///C:\temp\ksohtml\wpsA5AA.tmp.jpgfile:///C:\temp\ksohtml\wpsA5BB.tmp.jpg http://image.geek-workshop.com/album/201710/03/220452dm6fn3pf7207oqom.pnghttp://image.geek-workshop.com/album/201710/03/220452i1c11t1ud9tr9bbd.pnghttp://image.geek-workshop.com/album/201710/03/220453v9kh2gmasur8zhyk.png
画板子的时候没什么经验,板子扑铜了,居然有的地方GND死铜,不过后来都修复了。
六、蓝牙4.0模块
以前都是使用HC-05的蓝牙模块,效果也很正常,连上就能用。直到有人推荐我蓝牙4.0功耗更低,我想确实应该升级一下自己的蓝牙了。都21世纪了,蓝牙4.0更有逼格,关键4.0和2.0一个价。当!当!当!这就蓝牙4.0模块RF-BM-S02I,采用CC2540主芯片。当然还有个原因,HC-05模块太大了,PCB背面没有这么大的空间,而RF-BM-S02I可以直接贴在背面。这东西可以外置天线,确实就解决了我这小空间,信号不好的问题。
http://image.geek-workshop.com/album/201710/03/220344fml0jlr7eue6brum.jpg
http://image.geek-workshop.com/album/201710/03/220453vmqmdi8idw980222.png
file:///C:\temp\ksohtml\wpsA5BC.tmp.pngfile:///C:\temp\ksohtml\wpsA5BD.tmp.png使用贴片RF-BM-S02I模块的串口功能,只需要使用7个接口,如下。

GND——GND
VCC——3.3V
P2.1——STATE
P2.0——EN
P0.5——BRTS
P0.3——TX
P0.2——RX
注意蓝牙3.3V供电,串口模式下EN、BRTS接地。
七、购买元件
元器件说明
Serial numberCommentDesignatorQuantityValueFootprintUseage
1Cap
C5, C6
222pF
0603


2Cap
C7
110uF
0603


3Cap Pol1
C11, C13
210uF
1206


4Res
R1, R2, R3, R4
41K
0603


5Cap
C1, C2, C3, C4, C8, C10
60.1uF
0603


6Cap
C9, C12
20.01uF
0603


7ATMEGA328AU
U2
1
TQFP-32
arduino主芯片

8BLUETOOTH4.0
U4
1
BLUETOOTH4.0
蓝牙4.0模块

9ICSP-UART
ICSP-UART
1
2X04
ICSP-UART

10L9110S
U1, U3
2
SOP-8
电机驱动

11LED
D1,D2, D3
3
0603
显示灯

12MIC5219-3.3BM5
U5
1
SOT23-5
3.3V稳压输出 蓝牙供电

13MIC5219-5.0BM5
U6
1
SOT23-5
5.0V稳压输出 主芯片供电

14SW
SW1
1
SW
开关

15X 3225
X 1
1
X 3225
晶振


当然除了这些,还要买一个玩具坦克,比如丛林虎式坦克。
八、烧写程序
PCB打样,采购元器件。等这些快递都到了,就可以打开焊台,按照原理图把芯片一个个焊到PCB上面。干完这些,把板子洗洗干净,就可以给板子烧写程序了。
首先要给Arduino 烧写bootloader。为了使用Arduino 给Arduino烧写bootloader这一高级的功能,我看了好几个帖子都只是看得半懂。跟着实验了好多次都不行,一晚上就过去了,还是无法烧录。第二天才发现晶振焊错了!跟着示例把线连起来,一步步走就可以了。每个Arduino 板子的接口定义都略有不同,我用Arduino Nano给我的空板烧写引导程序。
http://image.geek-workshop.com/album/201710/03/220344q94729ggy4y7y4us.png
这是Arduino Nano 上的ISP接口
http://image.geek-workshop.com/album/201710/03/220454mzbztbh4s0sikhgp.png
这是蓝牙小车上的接口

烧写bootloader引脚连接
Arduino Nano
待烧写PCB
MISO————
MISO
VTG————
5V
SCK————
SCK
MOSI————
MOSI
D10————
RST
GND————
GND
用杜邦线把对应的接口连接起来就可以愉快的烧写Bootloader了。接下来正常使用UART口就可以给蓝牙小车下载程序了。程序很简单,打开串口,根据读入的数据采用switch()判断。
void loop()
{
    if(Serial.available())
    {
      incomingByte = Serial.read();
      switch(incomingByte)
      {
      case 0x05 :
          {turnLeft( );break; }         //左转
      case 0x04:
          {forward( );   break;}          //前进
      case 0x06:
          {turnRight( );   break;}         //右转
      case 0x08:
          {_stop();   break;}            //停止
      case 0x07:
          {back( );   break;}            //后退
      }
    }   
}
九、安卓APP
安卓APP使用“易安卓”这款软件编写,集成了按钮、重力、语音三种控制方式。语音控制使用了讯飞语音,需要联网才能使用,这就比较尴尬了。
http://image.geek-workshop.com/album/201710/03/220454j5ux0xsxxuzdnxrr.pngfile:///C:\temp\ksohtml\wpsA5CF.tmp.png
就蓝牙程序的编写来说,蓝牙4.0确实比蓝牙2.0复杂了一些。大概是蓝牙4.0的功能更多,需要设置的项目更多了。另有APP使用说明,在此就不赘述了。


wing 发表于 2017-10-3 22:37:47

二战的德国虎式坦克,外形超赞

西红柿 发表于 2017-10-6 09:49:23

wing 发表于 2017-10-3 22:37
二战的德国虎式坦克,外形超赞

可惜电路板不太合适,盖不上盖了:'(:'(:'(
页: [1]
查看完整版本: 桌面履带蓝牙4.0小车