BPI-D1试用心得四[niubaty]

应打酱油之要求,打算用D1做个小车。貌似做个小车的话能撑好几篇心得呢,干!
买个小车成本很高的,不仅仅是买几个轮子,买个底板的问题,要买好多散碎零件,一下子成本就飙上去了。
所以,打算做个用纸壳、筷子拼起来的小车,而马达,电子元件还可以拆了留着以后用。哈哈,可持续发展嘛。

1、设计

初步打算,做个三轮车。导向轮由舵机控制,驱动轮由电机控制,而两者又都由D1的gpio控制。



示意图中各部件如下:
M:电机,用来带动轮子的。可用280、130等玩具电机。选用,直接与传动的设计相关,下面再行叙述
serv:舵机,用来控制导向轮的,可用sg90
晶体管:用d1 gpio控制电机通断之用,关于用三极管,还是mos管,下面再行叙述
可调电阻:给电路加个保险,控制电机转速
塑料瓶盖:作轮子用
一次性筷子:做轴用
D1的包装盒子:做小车底板
橡皮筋:传动电机与轴
ab胶:粘粘补补,居家必备
软件方面:由PC上的客户端给D1的服务端下指令,走/停/左/右。软件的编译见下面叙述。软件需要tcp通信(udp也行)、gpio控制、多线程(多线程不一定需要,前面两个写成两个程序,由脚本调用也行)。

2、软件的编译(方法可参考$D1/build/build.sh中代码)
下载D1固件源码,地址见试用心得一,用$D1表示源码解压好后的目录,假设你已经编译固件了。
进入$D1/src/samples/
新建目录tcp
写一段tcp通信的代码,网上一大堆,我这里就不现丑了。该代码名称:tcp.c
复制gpio/Makefile到tcp/Makefile
修改Makefile,把gpio-led改成tcp
进入tcp目录
export PATH=$D1/compiler/arm-2009q3/bin:$(这个是冒号加美元符号,打出来他它就变成表情了)PATH
这里$D1改成你自己的固件源码目录。
make
编译成功。
把tcp和gpio-led复制到sd卡中插入D1中启动,运行成功,其中,gpio-led运行结果是红灯亮灭三次。tcp的运行结果就取决于你怎么写了。
(还有IIC的示例代码,貌似D1还可以做四轴飞行器啊)
(顺便吐槽下:D1的ftp貌似只能get不能put啊)
至此,D1的tcp通信,与gpio控制验证完成。
另,舵机需要给出至少精确到100us的脉冲,d1 的/bin下面竟然有usleep ,粗粗试了一下,感觉达到100us应该是没问题。

d1的gpio还挺多,整个小车、机械手什么的还是绰绰有余的。

3、问题
1)电机不一定要用快的,我上午头脑一热买了五个航模电机,下午就拍脑袋后悔了,其实小车的转速不一定要很快,但扭矩一定不能小。尤其我的轮轴用的是筷子,那么电机就一定不能转的太快了,对小车而言最好采用减速电机。比如,我的瓶盖直径3.7cm,(李子圆花生奶的盖子比较平、垂直,推荐)如果小车速度20cm/s,则轴转速20/(3.14*3.7)=1.7r/s,如果轴、电机上不加皮带轮的话,轴经比=2.5:1,所以电机转速只需要4.3r/s就能满足需求。随便一个航模电机的空载转速就是万转以上,所以用航模电机的话,真的很不明智。另,就算不用航模电机的话,也需要在轴经比上算好使得转速合适,除此之外,还需要可变电阻别让电极转那么快。综上,推荐减速电机,速度慢,扭矩大。
2)mos管可能满足需求,也可能不能满足需求,得买回来测量一下,3V是mos刚刚开启的电压,漏电流不是特别大。可能要根据具体情况,换成三极管。

niub