在写这篇帖子之前,先感谢前段时间,在论坛里,为我耐心解答的大神朋友们,无论我问出什么奇葩的问题,都能为我耐心解答,真心感谢你们。 【注】转载请声明出处和作者,尊重个人劳动成果,谢谢。 蓝牙4.0小车说明 20171003-XHS file:///C:\temp\ksohtml\wpsA583.tmp.png[size=12.0000pt] 简介[size=12.0000pt]蓝牙小车使用了玩具坦克车的底盘,由两个614空心杯电机驱动。整车使用一块3.7V 110mAh锂电池,满电续航约10分钟。主芯片为ATmega328P-AU,直流电机驱动为L9110S,蓝牙4.0模块为RF-BM-S02I芯片CC2540,直接由安卓APP遥控,不带调速。
一、底盘[size=12.0000pt]常见的蓝牙小车多使用香蕉电机提供动力,我主要想实现蓝牙控制,直接选择了成品玩具拆机。逛遍X宝,最终选择了全X宝第二小的模型坦克,感觉最小的那个颜值不够,地方小了,也不太方便放置DIY电路板。特别是这精致的履带深深的吸引了我,果断剁手,确实是没有找到比这更加省事的方法了。网上的空心杯电机减速箱虽然有一堆,但是结构和尺寸都不太合适。
[size=12.0000pt]
file:///C:\temp\ksohtml\wpsA584.tmp.png [size=12.0000pt]拿到这款坦克的时候,被强大的中国制造震惊到。从林虎式坦克的细节都表现得很好,反复的抚摸过后,充电跑起。这家伙算是比较灵活的,放在地上看起来比较慢,但是放在桌面上,速度就比较快了。这很符合桌面小车的定位,并且是高逼格的履带小车额。OK 掀起她精致的外衣,我们一起看个究竟。下面的内容不可描述,大概就两个614空心杯电机二级减速驱动履带。我的天!居然还有高端的涡轮减速箱,真是减速又防滑。炮台是360°的,由一个更小的空心杯电机四级减速驱动。当然,这样的玩具一定有一个黑色的小喇叭模拟引擎的声音,这声音就尬了!还是默默的拆下来吧。原厂的电路板功能牛逼,但是做工确实和价格相符,手工焊接的痕迹很明显。拆了!拆了!剩下的就是非常完美的桌面小车履带总成了,不过电池确实比较小,110mAh! 罢了!罢了!桌面跑跑应该是够了。
二、电机驱动
[size=12.0000pt]完成这个桌面坦克之前,我也是用香蕉电机、L298N模块、Arduino Nano 和蓝牙4.0模块全部走通一次。L298N非常便宜好用,可以同时驱动两个直流有刷电机。
file:///C:\temp\ksohtml\wpsA594.tmp.png[size=12.0000pt] [size=12.0000pt]我没有使用PWM调速,只是控制电机的转向。这个模块对于我的小车来说就太大了,我仔细看了原厂板子。基础太差,不知道它是怎么实现的,可能直接三极管驱动的,但是没有看到怎么实现换向。为了满足体积的要求,就在网上找了一个贴片的驱动芯片L9110S
file:///C:\temp\ksohtml\wpsA595.tmp.jpg
file:///C:\temp\ksohtml\wpsA596.tmp.jpg[size=12.0000pt]
[size=12.0000pt]原理和[size=12.0000pt]L298N相似,少了使能调速,不过我也用不上。IA和IB接口高低不同电平就可以控制电机的正反转了。
三、主芯片
[size=12.0000pt]因为只会Arduino,就只好抄了一块Arduino mini的板子。程序的所有定义,也是根据Arduino mini来的。放弃了原来的三脚晶振,换了16MHz的四脚无源晶振。其他的都一样,采用了MIC5219-5.0BM5为主控芯片提供5V稳压。
[size=12.0000pt]
file:///C:\temp\ksohtml\wpsA5A7.tmp.png
四、原理图
[size=12.0000pt]我用AD14画原理图,画原理图的时候就是把L9110S这个驱动芯片给加进去了,还有为了给蓝牙提供3.3V稳压,使用了MIC5219-3.3BM5这个芯片。
file:///C:\temp\ksohtml\wpsA5A8.tmp.jpg
[size=12.0000pt]考虑到我的小板子不需要那么多的接口,就只留下了[size=12.0000pt]ICSP和UART这两个必须的口子。ICSP是用来给Arduino烧写bootloader,UART是用来上传程序和蓝牙通信。
五、PCB设计
[size=12.0000pt]PCB的设计就必须要考虑车体的大小了,我参照原厂的设计画了个同样大的板子。原厂的设计是有走飞线的,不过为了好看,我把所有的接点都放置在了一侧,而开关的位置又必须在中间。对于一个新手来说,这就比较为难了。我的电源线穿过了整个电路板。按照原设计打了安装孔,还为我的蓝牙天线贴心的打上了过线槽。用CAD把原理图都画好了,结果我的AD14不能导入CAD文件,这就比较艰难了,只好一点点手绘PCB机械层。
[size=12.0000pt] file:///C:\temp\ksohtml\wpsA5A9.tmp.jpgfile:///C:\temp\ksohtml\wpsA5AA.tmp.jpgfile:///C:\temp\ksohtml\wpsA5BB.tmp.jpg[size=12.0000pt] [size=12.0000pt]
[size=12.0000pt]画板子的时候没什么经验,板子扑铜了,居然有的地方GND死铜,不过后来都修复了。
六、蓝牙4.0模块
[size=12.0000pt]以前都是使用HC-05的蓝牙模块,效果也很正常,连上就能用。直到有人推荐我蓝牙4.0功耗更低,我想确实应该升级一下自己的蓝牙了。都21世纪了,蓝牙4.0更有逼格,关键4.0和2.0一个价。当!当!当!这就蓝牙4.0模块RF-BM-S02I,采用CC2540主芯片。当然还有个原因,HC-05模块太大了,PCB背面没有这么大的空间,而RF-BM-S02I可以直接贴在背面。这东西可以外置天线,确实就解决了我这小空间,信号不好的问题。
file:///C:\temp\ksohtml\wpsA5BC.tmp.pngfile:///C:\temp\ksohtml\wpsA5BD.tmp.png [size=12.0000pt]使用贴片[size=12.0000pt]RF-BM-S02I模块的串口功能,只需要使用7个接口,如下。
[size=12.0000pt]注意蓝牙3.3V供电,串口模式下EN、BRTS接地。
七、购买元件 | | | | | | | | | Cap
| C5, C6
| | 22pF
| 0603
|
| | Cap
| C7
| | 10uF
| 0603
|
| | Cap Pol1
| C11, C13
| | 10uF
| 1206
|
| | Res
| R1, R2, R3, R4
| | 1K
| 0603
|
| | Cap
| C1, C2, C3, C4, C8, C10
| | 0.1uF
| 0603
|
| | Cap
| C9, C12
| | 0.01uF
| 0603
|
| | ATMEGA328AU
| U2
| |
| TQFP-32
| arduino主芯片
| | BLUETOOTH4.0
| U4
| |
| BLUETOOTH4.0
| 蓝牙4.0模块
| | ICSP-UART
| ICSP-UART
| |
| 2X04
| ICSP-UART
| | L9110S
| U1, U3
| |
| SOP-8
| 电机驱动
| | LED
| D1,D2, D3
| |
| 0603
| 显示灯
| | MIC5219-3.3BM5
| U5
| |
| SOT23-5
| 3.3V稳压输出 蓝牙供电
| | MIC5219-5.0BM5
| U6
| |
| SOT23-5
| 5.0V稳压输出 主芯片供电
| | SW
| SW1
| |
| SW
| 开关
| | X 3225
| X 1
| |
| X 3225
| 晶振
| [size=12.0000pt]
[size=12.0000pt]当然除了这些,还要买一个玩具坦克,比如丛林虎式坦克。
八、烧写程序
[size=12.0000pt]PCB打样,采购元器件。等这些快递都到了,就可以打开焊台,按照原理图把芯片一个个焊到PCB上面。干完这些,把板子洗洗干净,就可以给板子烧写程序了。
[size=12.0000pt]首先要给Arduino 烧写bootloader。为了使用Arduino 给Arduino烧写bootloader这一高级的功能,我看了好几个帖子都只是看得半懂。跟着实验了好多次都不行,一晚上就过去了,还是无法烧录。第二天才发现晶振焊错了!跟着示例把线连起来,一步步走就可以了。每个Arduino 板子的接口定义都略有不同,我用Arduino Nano给我的空板烧写引导程序。
[size=12.0000pt] [size=12.0000pt]这是Arduino Nano 上的ISP接口
[size=12.0000pt]
[size=12.0000pt]这是蓝牙小车上的接口
| |
| | | ————
| | | ————
| | | ————
| | | ————
| | | ————
| | | ————
| | [size=12.0000pt]用杜邦线把对应的接口连接起来就可以愉快的烧写Bootloader了。接下来正常使用UART口就可以给蓝牙小车下载程序了。程序很简单,打开串口,根据读入的数据采用switch()判断。
[size=12.0000pt]void loop()
[size=12.0000pt]{
[size=12.0000pt] if(Serial.available())
[size=12.0000pt] {
[size=12.0000pt] incomingByte = Serial.read();
[size=12.0000pt] switch(incomingByte)
[size=12.0000pt] {
[size=12.0000pt] case 0x05 :
[size=12.0000pt] {turnLeft( ); break; } //左转
[size=12.0000pt] case 0x04:
[size=12.0000pt] {forward( ); break;} //前进
[size=12.0000pt] case 0x06:
[size=12.0000pt] {turnRight( ); break;} //右转
[size=12.0000pt] case 0x08:
[size=12.0000pt] {_stop(); break;} //停止
[size=12.0000pt] case 0x07:
[size=12.0000pt] {back( ); break;} //后退
[size=12.0000pt] }
[size=12.0000pt] }
[size=12.0000pt]}
九、安卓APP
[size=12.0000pt]安卓APP使用“易安卓”这款软件编写,集成了按钮、重力、语音三种控制方式。语音控制使用了讯飞语音,需要联网才能使用,这就比较尴尬了。
file:///C:\temp\ksohtml\wpsA5CF.tmp.png
[size=12.0000pt]就蓝牙程序的编写来说,蓝牙[size=12.0000pt]4.0确实比蓝牙2.0复杂了一些。大概是蓝牙4.0的功能更多,需要设置的项目更多了。另有APP使用说明,在此就不赘述了。
|