Edwin Guo's Blog home

Start create your own robot(4)

到目前为止,使用CubieBoard1已经基本验证,可以用这个开发板作为一个机器人的核心板。

作为轮式的移动平台,基本的简易功能都可以试做成功。

接下去就是玩人形机器了,市面上人形机器做的好的也就那么几家。优必选的alpha 1 大概5000RMB左右,炫酷的外形,巴拉巴拉。。。。

仔细分析这款机器人,Alpha 1S 其实也就是一堆舵机的组合,并且被他们公司,用一个主控板限制了进一步的开发。为了更多的控制能力,可以直接买一块arduino 的 nano板,也就2x10厘米的大小。带2个串口。不带蓝牙功能,更省电!

准备好硬件,就开始动手拆分重组吧。

先来看看 Alpha1s的主控板:

红色框一个是喇叭,一个是LED灯,也就是眼睛的灯。黄色框是四路舵机串口数据和供电线。蓝色的两路是电源和充电线。

因为选用的是Dreamer Nano V4.0 的板子,没有充电模块,所以舵机供电电路还是先不做改动。拔掉没用的喇叭和LED灯。连接四路舵机中间的串口数据线到nano的串口1:

橙色线表示舵机串联的半双工总线。 上位机和nano的通信为全双工的串口线,所以有两条。

按照这样连线之后,原装的板子仅用来供电给舵机。需要额外追加一个电源,一个上位机开发板,一个nano。 如果需要还可以为上位机加摄像头,加LCD触控屏。加你想要的一切外设,前提是你的电源带得动,alpha上能安装的下,重心还能保持在中间。总结一句:硬件坑不比软件少。

接下去,可以试着用nano发送串口指令来控制舵机的转动了。注意,这里串口半双工控制。所以需要arduino上用代码控制一下串口收发。测试代码参考这个hdx_serial。nano的上位机通信用的10和11的软串口通信,舵机用的串口1,下载代码和调试用的串口0。

核心的半双工控制代码,还要结合舵机的时序,400微秒的响应。nano控制板只有全双工串口,所以需要代码控制一下:默认RX使能关闭,TX使能开启。指令发送后TX使能关闭,RX使能开启。然后等待400微秒的舵机响应,检查串口缓冲数据并读取,最后TX重新使能。

这样主控板nano做的唯一的事情就是接受上位机指令换成半双工发送给舵机。解决了上位机无法精确模拟半双工的问题。并且可以在nano上电时,设置一个默认的指令,给16个舵机发送一串reset的指令。这样一上电,alpha就可以自动站立。同时也支持了上位机直接发送指令控制舵机转动的需求。比如增加一个舵机作为头部,并且控制转动,也非常方便。

Fork me on GitHub