🍓通过树莓派控制机器人
Last updated
Last updated
机器人的基本运动功能是不需要连接树莓派的,只有当您安装了树莓派时才需要阅读本章节。
如果想和树莓派的串口通信,就需要拔出NyBoard上的串口适配器。
您可以在 NyBoard 上焊接一个 2x5 插座以插入 Raspberry Pi。 Pi 3A+ 最适合 NyBoard 的尺寸。
注意:焊上了2x5的插座后,Bittle背上的盖子就盖不上了。
红色的树莓派卡扣可以3D打印。
如串口协议所示,Arduino IDE的串口监视器支持的命令参数全部编码为AscII码字符串,主机(例如RasPi)支持额外的命令,大多数命令都编码为二进制字符串以进行有效编码。例如,当编码角度为65度时:
Ascii: 2个字节的char '6' and '5'
Binary: 一个Byte的char,‘A’
值 -113 如何处理? 它需要四个字节作为 Ascii 字符串,但在二进制编码中仍然只需要一个字节,尽管内容将不再可作为字符打印。
显然,二进制编码比Ascii字符串有效得多。但是,传输的消息将不会直接被人类读取。在OpenCat存储库中,有一个简单的Python脚本ardSerial.py,它可以处理NyBoard和Pi之间的串行通信。
在树莓派的终端输入sudo raspi-config
在Interface选项下找到 Serial,禁用串口登陆,开放串口界面(Disabled the serial login shell and enable the serial interface):
使用 sudo 权限命令运行 raspi-config:sudo raspi-config
找到 Interface Options-> SerialPort
选项 Would you like a login shell to be accessible over serial? 选择
No
选项 Would you like the serial port hardware to be enabled? 选择
Yes
退出 raspi-config 并重新启动机器人(关闭、打开电池电源)以使更改生效。
你还需要禁用Pi的1-wire接口防止Pi的GPIO 4不断地发送重启信号。
树莓派官方网站上有一个很好的教程。
只要把树莓派和NyBoard通过可选的2x5插座相连,它们的串口就自动连接起来了,逻辑电平是3.3V。如果您连接的是其他AI芯片,就要注意Rx和Tx的连接,以及它们的逻辑电平。外接板上的Rx要连接NyBoard的Tx,外接板上的Tx要连接NyBoard的Rx,还需要连接NyBoard的参考电平输入和外接板的逻辑电压。
注意:如果您在树莓派上安装了 Ubuntu 操作系统,请进行如下配置:
在 /boot/config.txt 添加 enable_uart=1
在 Ubuntu系统的文件 /boot/firmware/cmdline.txt中删除
console=serial0,115200(类似于在树莓派系统中文件/boot/cmdline.txt)
运行以下命令关闭串行控制台:
sudo systemctl stop serial-getty@ttyS0.service && sudo systemctl disable serial-getty@ttyS0.service
请确保您已安装python 串行库 pyserial,而不是来自 apt 的 python-serial。
创建 udev file (/etc/udev/rules.d/50-tty.rules
),并添加以下内容:
运行以下命令重载 udev 规则:
sudo udevadm control --reload-rules && sudo udevadm trigger
运行以下命令更改新的串口设备的用户组:
sudo chgrp -h tty /dev/serial0
sudo chgrp -h tty /dev/serial1
这些设备现在位于 tty 组下。 运行以下命令将用户添加到 tty 组和dialout 组:
sudo adduser $USER tty
sudo adduser $USER dialout
运行以下命令更新设备上组读取的权限:
sudo chmod g+r /dev/ttyS0
sudo chmod g+r /dev/ttyAMA0
重启树莓派(关闭、打开机器人电池电源)
或者创建一个自动执行这些操作的脚本。
如果是通用的Linux系统,将上载器连接到计算机后,您将在串行端口列表中看到“ ttyUSB#”。但是上传时,您仍然可能会遇到串行端口错误。您将需要授予串行端口权限。请转到此链接并按照说明进行操作 https://playground.arduino.cc/Linux/All/#Permission
如果您想在bash里运行ardSerial.py,您还需要为它添加可执行权限:
chmod +x ardSerial.py
同时您可能需要把文件第一行的Python安装路径#!/user/bin/python
改成您电脑上的设置。
在树莓派的终端输入./ardSerial.py <args>
就相当于之前在Arduino串口监视器里输入 <args> 。比如,./ardSerial.py kcr
表示“执行 skill crawl”。
Python脚本ardSerial.py 和Nybble.ino里对应的解析代码都比较简略,需要逐渐完善。
对于Nybble:
连接到 Pi 时可能会降低运动能力! 需要更强的电池。
某些快速的步态,比如小跑(trot,指令是ktr
),可能会导致系统重启。目前系统由两节14500电池串联供电,您可以升级供电方案,比如模型专用的锂聚合物动力电池。
在改装过程中需要综合考虑软硬件的协作。对于Nybble小巧的身躯而言,最好是把它作为一个编程平台来研究系统整合与决策树,而不是作为一台遥控赛车。