起因是这样的:一个壕朋友希望我帮忙给他做个小车。具体要求是:能用蓝牙控制,负重500g左右。经过考察,他决定在 DFRobot上选一款,毕竟DFRobot在国内也算首屈一指。根据他的需求,最开始选定的是下面这个:
下订单的时候发现没有货。官方的解释是:春节期间都被洋人买光了……剩下的2个轮子有货的型号的太小不符合要求,最后选的是四个轮子的,就是下面这样的:
上面像眼睛一样的是超声波距离传感器,传感器下面有个舵机,能够带动它进行不同方向的扫描。
下了订单付款之后,第二天就收到了,包装超级好,让我大吃一惊。双层包装,然后全部的小车套件放在里面的塑料工具箱中,用之前的话说叫做“高端大气上档次”。激动过后,先盘点下零件,很惊讶的发现其中竟然有两个巨大的轮子,更惊讶的是只有两个轮子。然后急忙找来装箱单,他们错发了个更昂贵的型号给我……。很无语,急忙拨打客服电话,接电话的是一个妹子,我简单说了下情况,她表示目前是18:20,他们已经下班了,让我明天9:30之后再打电话……第二天上午,打电话过去,问明情况之后,对方表示是他们搞错了,让我快递退回。不知道是不是因为发错了贵的所以才这么痛快。我又问是不是要顺风快递,对方略微迟疑,然后说除了顺风之外的所有都可以,理由是上海市内都是隔天到达。打完电话第二天是周日,赶紧给他们发了快递。周一他们顺利收到,又给我重新发了一个。收到之后第一件事情:打开数轮子
包装比前面那个差多了,没有工具箱。如果让我评价做工最好的配件,我首选那个橘色的USB线。柔软,颜色鲜艳,手感很好。跑到他们官网看了一下,这个数据线要22元。
接下来就开始了安装,首先是底盘和四个直流电机。所有的螺丝在最后组装完成之前都不要拧紧。
没想到的是:安装直流电机后需要焊接电线,我以为能高级一些免烙铁。焊接的时候始终担心不小心弄坏了触点。四个电机,八个点,还好,没问题。
底板的盖,也是电池盒安装的地方。需要5节电池,很奇怪的数字,如果以后用充电电池还不太好一次性充满。
装上盖板就是这个样子,电池盒是在小车下方,面向地面。
上层只有控制板需要安装一下,拧螺丝之类即可。安装简单,牢固度是比较差的。
控制板是这样的(Romeo 三合一Arduino兼容控制器)
本质上他是一个Arduino(ATmega328P),14 通道数字 I/O,6 PWM 通道 8通道10位模拟输入,3组I2C,自带蓝牙,带5个按键,能够直接带动2组直流电机……..
装上电池打开开关就是这个样子:
然后我就开始研究如何蓝牙控制了。很快,我就陷入了迷茫:无论如何都无法让我的笔记本搜索到他的蓝牙设备。无法配对,控制更是无从谈起。我之前用过 HC05 的透传模块,感觉很容易就上手了,没想到这个折腾了很久都没有办法跨出去第一步。上DFRobot的论坛搜索,用AT命令调整各种参数,结果都一样,就是找不到设备。最终在一个帖子中找到了不是很确实的说法:控制板上的蓝牙很高级是蓝牙4.0,如果你的蓝牙Host太矬,是无法找到这个控制板的。想想估计我开发的笔记本很可能不支持蓝牙4.0。第二天,又找了一个平板电脑,肯定支持蓝牙4.0,果真很快找到了设备。配对之后又让我陷入了迷茫:没有出现串口设备啊。只好再搜索。找到一句话,大意是,如果你想用串口透传,那么请购买另外一个USB蓝牙配对的东东……。
心中权衡了一下时间成本和金钱,放弃之,换上我之前的 HC05模块,连接串口 RX/TX ,很快就能控制起来了。最终的样子是这样:
估计了一下,有点不划算。控制板上的资源我只用了2个PWM 2个GPIO?其余的都没用上啊。
程序很简单,就是控制直流电机的转动,基本上就是网站上的Demo例子:
int E1 = 5; //定义M1使能端 int E2 = 6; //定义M2使能端 int M1 = 4; //定义M1控制端 int M2 = 7; //定义M1控制端 void stop(void){ //停止 digitalWrite(E1,LOW); digitalWrite(E2,LOW); } void advance(char a,char b){ //前进 analogWrite (E1,a); //PWM调速 digitalWrite(M1,HIGH); analogWrite (E2,b); digitalWrite(M2,HIGH); } void back_off (char a,char b) { //后退 analogWrite (E1,a); digitalWrite(M1,LOW); analogWrite (E2,b); digitalWrite(M2,LOW); } void turn_L (char a,char b) { //左转 analogWrite (E1,a); digitalWrite(M1,HIGH); analogWrite (E2,b); digitalWrite(M2,LOW); delay(100); } void turn_R (char a,char b) { //右转 analogWrite (E1,a); digitalWrite(M1,LOW); analogWrite (E2,b); digitalWrite(M2,HIGH); delay(100); } void setup(void) { int i; for(i=6;i<=9;i++) pinMode(i, OUTPUT); Serial.begin(9600); //设置串口波特率 } void loop(void) { if(Serial.available()>0){ char val = Serial.read(); if(val!=-1){ switch(val){ case 'w'://前进 advance (255,255); //PWM调速 break; case 's'://后退 back_off (255,255); break; case 'a'://左转 turn_L (255,255); break; case 'd'://右转 turn_R (255,255); break; } delay(40); } else stop(); } stop(); }
PC端控制软件的话,我用Putty 工具,打开串口 WASD 这几个键就能控制前后左右移动。
最后吐槽一下:
1.这个东西要比想象中复杂,我以为买了套件安装会简单多。
2.做工还是有点粗糙,行走直线的时候,你会发现这几个轮子会歪转起来不是完整的圆形,我尝试很多次调整,没什么效果。应该是直流电机和轮子连接上的问题。
3.极客工坊上有朋友说DFRobot发错东西不是一次了,他买个舵机也发错了。如果你对实效要求很高,比如:期望今天下订单,周末用来安装调试,那么一定要小心,搞不好拿到手才发现东西不对。
4.说明做的不好。我估算了一下,组装差不多花了10个小时。这个时间有点多,如果是初学者或者缺少工具的人会遇到很多意想不到的困难。如果能说明一下需要用到的工具就好了。安装说明是在线的,是中英文混合的。这个很讨厌,混合之后就有一个衔接的问题,让人头晕。历史也已经证明,中英文混合是很犯忌讳的事情。比如:有上级问一个人,“你叫什么名字?”“他回答:“Ni Fake”。上级很恼火,“还拽英文?”他一听,以为还要介绍自己的英文名,脱口而出“Fuck Ni”……后面的事情我们都知道了。
5.控制板的设计上还有点问题,有一个螺丝孔位我无法找到合适的螺丝。配件自带螺丝头过大,无法正常拧进去,我只好换了一个自己的螺丝,勉强凑合。
期望 DFRobot 能够努力改进产品,也为国内客户提供更好的服务。有一种说法是国内的Arduino生产厂家不愿在国内进行销售,主要是客户少事情多,然后仿造的太多了根本赚不到什么钱.......