为NyBoard上传1.0版本程序
您可以使用Arduino IDE配置NyBoard并为之上传程序。
以下视频展示了如何使用Arduino IDE 对 Bittle 进行配置。 这些步骤与 Nybble 相同,您只需要将 OpenCat.h 中的产品定义更改为 Nybble。
1 NyBoard
1.1 阅读用户手册
在 NyBoard 上找到主板的版本信息。如下图所示:
Nybble
相应的规格文档:NyBoard V0_1、NyBoard V0_2、NyBoard V1_0 或 NyBoard V1_1(轻度修订)。
Bittle
相应的规格文档:NyBoard V1_0 或 NyBoard V1_1。
以 NyBoard V1_0 为例,如下图所示:
错误的操作可能会损坏您的 NyBoard!
1.2 把滑动开关拨到Arduino档.
滑动开关用于选择Nyboard上板载I2C设备(陀螺仪/I2C PWM控制器以及EEPROM)的连接属性。
当开关位于“Arduino”端的时候,这些I2C设备将同ATMega328P通信,Arduino可以访问这些设备
当开关位于“Pi”端的时候,这些I2C设备将断开和ATMega328P的连接,主板上的 树莓派接口 和 Grove I2C 接口上的设备将成为主设备。
有时,如果您无法启动,则可能是您不小心将开关拨到了“Pi”端。
以下部分保留用于 NyBoard 旧版本 (V0系统):
1.3 把电位器顺时针转至最低输出
从NyBoard V0_2开始,我们在板上添加了一个跳线帽选择开关,可以绕过降压芯片电路直接给舵机供电。如果您使用的是Nybble套件中的金属齿舵机,可以跳过这一小节。
高电压可以提升舵机的转矩,使Nybbles运动更迅速。代价是它同时会增大电流、缩短电池寿命,降低电路的稳定性,以及加速舵机的磨损。据我们测试,5.5V的电压可以得到一个比较平衡的性能表现。
在最初组装时,先不要把NyBoard的螺丝拧紧,因为可能还要调节电位器。在微调校准之前 ,确保所有舵机可以在当前电压设置下正常、稳定地转动。
1.4. 把NyBoard调节到最佳状态
在设计NyBoard时我考虑了两种使用场景:作为Nybble配套的驱动板,和DIY用户的开发板。
板载的降压电路可在5~8V输出之间调节,峰值电流不能超过5A。Nybble套件中的金属齿舵机可以承受高压,功率大,通过NyBoard的降压电路会有过载保护的问题,最好由电池直接供电。而DIY用户往往选用更便宜的塑料齿舵机,但它们不能承受高压,必须降压到5.5V左右才能使用。好在塑料齿舵机的工作电流更低,也不会触发降压电路的过载保护了。
所以如果使用的是配套的金属齿舵机,推荐直接由电池供电。对于初版NyBoard_V0_1,这需要一些焊接工作,可见论坛帖子。对于更新NyBoard_V0_2,可以更方便地把跳线帽SW3接在BATT和V_S之间(出厂时SW3默认接在V_S和V+之间,以免烧坏塑料齿舵机)。
V_S 表示舵机供电。跳线帽可以选择到底是由降压电路(V+)还是电池组(BATT)供电,所以BATT和V+永远不应该短接。
事实证明,当直接使用 BATT 而不是 V+ 为金属齿舵机供电时,NyBoard 的工作更稳定。 但是,如果您使用 NyBoard 驱动您自己的塑料齿轮伺服系统,则需要使用降压电路。
NyBoard用7.2V电池直接为金属舵机供电,电池充满电时为8.4V。您不能使用NyBoard直接驱动自己的塑料舵机(比如SG系列)。
2 下载和安装软件环境
您将需要配置Arduino集成开发环境,且最好是最新的版本,旧版本往往会编译出可能超出内存限制十六进制文件。Arduino的版本更新不会覆盖掉您之前的库和工程。
如果您先前已添加其他库并看到错误消息``XXX库已安装'',我建议您先删除它们。
由于Arduino IDE安装的配置不同,如果您在以后的编译过程中看到有关缺少库的任何错误消息,只需用baidu他们(google也可以)并将其安装到IDE中即可。
如果您在 2022 年 1 月 3 日之后从 GitHub 下载了最新的 OpenCat 代码,则可以跳过以下库安装步骤。
2.1 通过库管理器安装所需的库文件
在Arduino的库管理器(操作指南 : https://www.arduino.cc/en/Guide/Libraries)中,搜素并安装以下的库:
Adafruit PWM Servo Driver
QList(非必须)
IRremote
IRremote库在近期有更新,甚至更改了按键的编码。你可以安装2.6.1版本实现对我们代码的兼容。
为节省编程空间,你可以禁用IRremote.h中没用到的解码器,这样可以省出10%的flash空间!
在Mac上,找到Documents/Arduino/libraries/IRremote/src/IRremote.h,并把没用到的解码器置0:
2.2 使用压缩包(.zip)安装库
使用被广泛使用的I2Cdev库和MPU6050库,传送门:jrowberg/i2cdevlib: I2C device library collection for AVR/Arduino or other C++-based MCUs
我相信你们的git用的很好,下载下来就OK。无论是用git clone或者download zip。注意选一下是Arduino下的,主要要红色箭头指示的2个库,I2Cdev是负责I2C通信的;MPU6050是启用DMP(数字融合处理器,做姿态解算的),当然也可以全部下载下来。
在IDE里点击:项目 -> 加载库 -> 添加.zip库,把刚刚下的ZIP直接导入即可
服务到位给您下载好了:
2.3 增加NyBoard支持
对于V1版本的Nyboard (NyBoard V1_*) 完全兼容UNO,选UNO即可。
以下部分适用于旧版本 (V0)
如果你手上的是NyBoard V0_*,因为它超频到了20MHz,你需要按下列步骤添加配置文件:
自动添加NyBoard支持
感谢A-Ron对这一节的贡献!
打开Arduino首选项面板。
在附加开发板管理器网址处,添加: https://raw.githubusercontent.com/PetoiCamp/OpenCat/main/Resources/NyBoard/boardManager/package_petoi_nyboard_index.json。如果里面已经有其他网址了,可以用逗号或者换行来分隔它们。
点击“好”关闭首选项面板(需要先关闭之前的网址编辑器)。
从工具 -> 开发板: XXXX -> 开发板管理器... 打开 开发板管理器。
搜索“nyboard”。
安装NyBoard。
关闭开发板管理器。
从 工具 -> 开发板 选择 开发板 ATmega328P (5V, 20 MHz) NyBoard XXXX (NyBoardV0_1 和 NyBoardV0_2 选用同样的开发板)。
手动添加NyBoard支持
只有当以上方法无效时使用!
找到开发板配置文件 boards.txt
苹果系统:
/Users/UserName/Library/Arduino15/packages/arduino/hardware/avr/version#/
或
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr
右键点击Arduino.app图标显示程序包内容。
Windows系统:
C:\Program Files(x86)\Arduino\hardware\arduino\avr\
通过Microsoft商店安装的程序可能会安装在隐藏目录,可以直接从Arduino官网下载IDE并手动选择安装位置。
Linux
从终端命令行下载到的也许不是最新版本,可以从Arduino官网下载IDE然后解压安装:
sudo install.sh
boards.txt 的位置可能随Linux版本有不同:
Fedora:
/etc
Arch:
/usr/share/arduino/hardware/archlinix-arduino/avr/
Mint:
location_of_installation/arduino/hardware/arduino/avr
Ubuntu (on 18.04 when installing with `apt-get install arduino`):
/usr/share/arduino/hardware/arduino/boards.txt
找到 boards.txt 后:
备份 boards.txt 便于回滚操作
新建一份 boards.txt
您可以下载我修改后的boards.txt,或者自行修改您原来的boards.txt,可能需要管理员权限。
用文本编辑器打开boards.txt,找到pro.name=Arduino Pro or Pro Mini
的代码段,插入
如下图:
保存并退出编辑器。
下载 ATmega328_20MHz.hex 并保存到Arduino文件夹 ./bootloaders/atmega/。 在该文件夹中应该还有其他开发板的后缀为.Hex的文件。
重启Arduino IDE。在工具->开发板中,选择Arduino Pro or Pro Mini。在子目录里会出现 ATmega328P (5V, 20 MHz) NyBoard。
如果完成以上操作后仍找不到NyBoard,可能是您的Arduino IDE的有效配置文件存在其他位置。在电脑的所有位置搜索boards.txt,看看是不是有新的发现。
只有当引导程序崩溃时才需要进行下列操作!
2.4 为板子烧录Arduino的Bootloader(这不是常规操作)
每块NyBoard在出厂时都经过了功能性测试,这意味着它们已经预先烧录了引导程序。但是,在极个别情况下,引导程序可能会崩溃并导致无法上传Arduino代码。
当然,不能上传代码往往是由其他原因造成的,而不是因为引导程序崩溃:
有时USB驱动可能会检测到一个USB设备的电流过大而主动禁用该设备。这时需要更换USB端口甚至重启电脑来再次激活USB端口;
需要安装FTDI USB到UART上传器的驱动;
在Arduino IDE中没有选对串口;
接触不良;
运气不好 ☯️ 过两天可能又好了。
如果您确实需要重新烧录引导程序:
如果你手上的是NyBoard V1_*,在Arduino IDE的Tool下选用Arduino Uno
如果你手上的是NyBoard V0_* ,就需要选用NyBoard (ATmega328P 5V, 20MHz)
选择您的烧录工具。上面的截图突出显示了两种常用的编程器,高亮的 USBtinyISP是一种小巧便宜的专门的编程器,打勾的Arduino as ISP是用另一块Arduino板作为编程器
把编程器接到NyBoard的2x6的SPI端口,注意接插方向和良好接触
点击烧录引导程序进行烧录。如果这是您第一次尝试烧录,请耐心多等一会儿,直到看见进度条达到100%并不再有新进度条或新信息跳出为止。
2.5 连接USB上载器(USB适配器)
此步骤不需要将Nyboard安装在机器人身上。
下图显示了之前套件中的两个 FTDI 板。
红色上传器上有电平选择跳线帽,拔到5V。在连接上传器和NyBoard的6针母座时要注意方向,可以用地线GND作为参考。
先用 miniUSB-USB 线缆连接电脑和FTDI上传器。红色款上传器有三个LED灯,电源,Tx和Rx,蓝色款上传器没有电源灯。在接通电脑USB的瞬间,Tx和Rx灯会闪一下然后会熄灭,表明有初始的信息传输。然后您可以在Arduino IDE的工具->端口找到对应的串口 “/dev/cu.usbserial-xxxxxxxx”(苹果系统) 或 “COM#” (Windows系统)。
通过USB到micro-USB电缆将您的计算机与USB上载器连接。
USB上载器具有三个LED,即电源(红色),Tx和Rx。连接后,Tx和Rx应该闪烁一秒钟,指示初始通信,然后变暗。仅电源LED指示灯应保持点亮状态。您可以在“工具”->“端口”下找到一个新端口,名称为:
“ /dev/cu.usbserial-xxxxxxxx” (Mac)
“ COMX ”(Windows,注意一定不是COM1,COM1一般台式机有,RS232串口)
“ttyUSB” (Linux,注意Arduino是否有读写该设备的权限,没有就chmod)
如果Tx和Rx灯常亮,也不闪烁,则串口通讯可能存在问题,这时串口也不会显示在串口列表里。这往往是由于NyBoard在驱动舵机时没有外接电源,USB端口被过流保护禁用导致的。
特别提一下Linux,将上载器连接到计算机后,您将在串行端口列表中看到“ ttyUSB#”。但是上传时,您仍然可能会遇到串行端口错误。您将需要授予串行端口权限。请转到此链接并按照说明进行操作 https://playground.arduino.cc/Linux/All/#Permission
驱动程序在这里,理论上Win10免驱
2.6 连接蓝牙模块 (可选)
连接蓝牙模块, 您可以使用智能手机 APP 或 Web API 控制机器人。
在标准机器人套件中包含我们的官方蓝牙模块。 波特率请设置为 115200。
您需要像使用蓝牙 AirPod 一样将其连接到计算机。 默认密码为 0000 或 1234。然后您可以在 Arduino IDE 的 Tools->Port 下选择它,使用方法与USB上载器相同。
具体连接方法请参考双模蓝牙模块相应章节。
如果您使用的是NyBoard V0_* 主板,您需要将其波特率设置为 57600 。
在 Mac 上,蓝牙可能会在多次上传后断开连接。 在这种情况下,请删除连接再重新连接。
在矽递及其代理渠道销售的版本中不包含蓝牙模块,请向support@petoi.com咨询购买方式。
2.7 下载OpenCat软件包
从 GitHub 下载 1.0 OpenCat 存储库:https://github.com/PetoiCamp/OpenCat/tree/1.0
如果下载代码的Zip文件,则解压缩后将获得一个OpenCat-1.0文件夹。您需要在打开OpenCat.ino之前将其重命名为OpenCat(Arduino规定代码必须放在同名文件夹之下)。
无论您将文件夹保存在何处,文件结构都应为:
ModuleTests文件夹中有几个名为testX(X代表外设,比如蜂鸣器陀螺仪).ino的代码。您可以上传它们以分别测试某些模块。打开任何带有前缀“ test”的testX.ino的工程。 (我建议您使用testBuzzer.ino作为第一个测试项目)。
打开串行监视器并设置波特率:
使用NyBoard V1_ *,将开发板选为Arduino Uno,然后在代码和串口监视器中将波特率设置为115200。
使用NyBoard V0_*,将开发板选为NyBoard (ATmega328P 5V, 20MHz),然后在代码和串行监视器中将波特率设置为 57600。
编译代码,应该没有错误提示。如果有请根据提示查找问题,一般问题为缺少某些库,根据需要安装即可。随后上传到您的开发板上,您应该看到Tx和Rx LED快速闪烁。一旦它们停止闪烁,消息应出现在串口监视器上。
在输入命令之前,请确保串口监视器设置为“没有结束符” (No line ending)。否则,不可见的' \n'或' \r'字符将使解析函数失效。
对于Linux计算机,您初次编译时可能会看到错误消息,例如“ permission denied(权限被拒绝)”。
您将需要向avr-gcc添加执行特权才能编译Arduino程序:
sudo chmod +x filePathToTheBinFolder/bin/avr-gcc
此外,您需要为/ bin中的所有文件添加执行权限,因此命令为:
sudo chmod -R +x /filePathToTheBinFolder/bin
3 使用串口通信协议
通过连接NyBoard和Arduino IDE的USB上载器 /蓝牙模块,就可以和Nyboard直接通信了。
我们预先定义了一些指令,指令和参数表如下:
所有的命令都是以单个ASCII字符开头,并区分大小写。通常指令为小写。
有的指令,如“c”和“m”是复合命令:
比如:连续命令如:“ m8 40”,“ m8 -35”,“ m 0 50”可以写为“ m8 40 8 -35 0 50”。您最多可以组合四个相同类型的命令。确切地说,字符串的长度应小于30个字符。您可以在代码中更改限制,但是串行缓冲区可能会有系统的限制。
一些命令尚未实现,例如“h”。 命令“i”和“l”在软件版本 1.0 中仍然存在一些错误。
4 使用树莓派接口
机器人的运动是不需要树莓派的,树莓派是机器人的主控上位机。
您需要断开USB上载器才能与 Pi 的串行端口进行通信。
您可以在NyBoard上焊接2x5插座,就可以连接Raspberry Pi。 Pi 3A +最适合Bittle的型号。
Nybble
Bittle
焊上了2x5的插座后,Bittle的盖子就盖不上了。
红色的树莓派卡扣可以3D打印。
如串行协议所示,Arduino IDE的串口监视器支持的命令参数全部编码为AscII码字符串,主机(例如RasPi)支持额外的命令,大多数命令都编码为二进制字符串以进行有效编码。例如,当编码角度为65度时:
Ascii码字符串: 2个字节的char,'6' 和 '5'
二进制字符串: 1个字节的char,‘A’
值 -113 如何处理? 它需要四个字节作为 AscII码字符串,但在二进制编码中仍然只需要一个字节,尽管内容将不再可作为字符打印。
显然,二进制编码比AscII码字符串有效得多。但是,传输的消息将不会直接被人类读取。在OpenCat存储库中,有一个简单的Python脚本ardSerial.py,它可以处理NyBoard和Pi之间的串行通信。
4.1 配置树莓派的串行接口
打开树莓派的终端,输入 sudo raspi-config
在 Interface(接口)选项,选择 Serial(串行接口)选项以启用串口。禁用串行登录 shell 并启用串行接口以使用主 UART:
使用 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
重启树莓派(关闭、打开机器人电池电源)
或者创建一个自动执行这些操作的脚本。
4.2 给 ardSerial.py 增加执行权限给
如果您想在bash里运行ardSerial.py,您还需要为它添加可执行权限:
chmod +x ardSerial.py
同时您可能需要把文件第一行的Python安装路径#!/user/bin/python
改成您电脑上的设置。
4.3 用 ardSerial.py 向机器人发送指令
NyBoard 只有一个串口。 如果你想用树莓派的串口控制机器人,你需要拔掉USB上载器。
在树莓派的终端输入./ardSerial.py <args>
就相当于之前在Arduino串口监视器里输入 <args> 。比如,./ardSerial.py kcr
表示“执行 skill crawl”。
Python脚本ardSerial.py 和Nybble.ino里对应的解析代码都比较简略,需要逐渐完善。
对于Nybble:
连接到树莓派时可能会降低运动能力! 需要更强的电池。
某些快速的步态,比如小跑(trot,指令是ktr
),可能会导致系统重启。目前系统由两节14500电池串联供电,您可以升级供电方案,比如模型专用的锂聚合物动力电池。
在改装过程中需要综合考虑软硬件的协作。对于Nybble小巧的身躯而言,最好是把它作为一个编程平台来研究系统整合与决策树,而不是作为一台遥控赛车。
5 电池
尽管通过USB上载器供电是可以给Nyboard上传程序的,但是仅使用USB上载器为 NyBoard 供电时,舵机存在明显的充电和放电现象,并导致黄色 LED 闪烁。USB 数据线的电流不足以维持舵机正常工作。 因此,舵机必须由外部电池供电才能正常工作。
Bittle
5.1 电压
NyBoard需要7.4〜8.4V外部电源来驱动舵机。我们在Bittle套件中包括了带有内置充电和保护电路的定制锂电池。短按电池按钮将显示其状态。蓝灯表示有电,红灯表示电量低。
5.2 连接插头和打开电源
连接电源时,请注意极性。 NyBoard上的插座具有防呆功能(防止反向插座),因此您将无法以错误的方向插入。详情请看这里(请不要 大 力 出 奇 迹!)
长按按钮3秒钟以打开/关闭电池。
反接电池有可能会损坏Nyboard!虽然我们也设计了简单的防反接电路~
5.3 电池续航能力
电池寿命因使用情况而异
如果您主要是编码和测试姿势,则可以持续几个小时,如果保持Bittle的运行,则可以持续不到30分钟。
电量不足时,电池指示灯将变为红色。电源将自动切断。
5.4 充电
请使用输出为5V-1A 的 USB充电器为电池充电。我们不建议使用快速充电器。电池在充电过程中无法供电。充电时请注意电池安全。
完全充电大约需要1.5至2小时,为确保安全,防止将其置于无人处持续充电。
5.5 玩耍结束该做的事情
请记住长按电池上电源键2.5秒以上关闭电源。建议您最好在关闭电源后把电池从NyBoard板上拔下来。
Nybble
5.1. 电压
NyBoard需要7.4~9V 外接强力电源来驱动舵机。在调试狸宝时,我们用的是8V电源,通常可以通过串联两节锂离子或锂聚合物电池来获得。一节电池充满电是4.2V,在3.6V以上都可以正常工作,串联后就是8.4~7.2V的电压区间。如前所述,驱动套件配送的舵机最好采用电池直连,也就是把跳线帽SW3连接在BATT和V_S之间。
在购买电池时,搜索关键词“14500 3.7V 锂离子电池”,最好再加上“无保护板”。我注意到有些有过载保护的电池可能会过早地触发断电保护(<2.5A),导致狸宝不能正常工作,比如重启或死机。电池的放电能力越大越好,比如能稳定以2A放电,或2C以上。
我们的用户在论坛上对各国能买到的电池品牌作了汇总。
5.2. 尺寸
套件中的电池盒适用于14500锂离子电池,14表示直径为14mm,50表示电池长度,有时会差±2mm,但仍可适用。这个尺寸和常见的5号AA干电池一样,但是同尺寸的锂电池电压更高。
注意不要和普通5号电池混淆而误装到其他设备上!
另外,要选购正极有按钮状突起的电池。如果您在美国,可以在沃尔玛网购“EBL 14500 Li-ion”电池;在中国,可以在淘宝上试试运气。不要买标榜900mAh以上的电池,至少它们在容量上就不诚实。
您也可以自己设计电池盒来安装其他的电源方案,尤其是当您想添加树莓派做一些严肃的开发 ,或者纯粹想让狸宝跑得更快的时候。
5.3. 接线
接线时要注意极性,确保您能清楚地区分NyBoard电源接线端子和电池上的正负号(+/-)。
电源反接几乎必然会损坏NyBoard!
把NyBoard电源端子的螺丝拧松,插入电池盒引出的电源线,然后拧紧螺丝。闭合开关后,蓝光(主控)和黄光(舵机供电)LED都会点亮。
1月1日之后发货的套件中,端子更换为防反接插座,这样您就不会插错方向了。
5.4. 续航时间
续航时间取决于使用场景。如果您主要是用狸宝编程和测试一些动作,电池可以支持几个小时。如果您一直让狸宝跑来跑去,那就玩不到一个小时,大约四十分钟左右。
当电量不足时,黄色LED可能会不稳定地抖动。这时NyBoard仍可驱动一两个舵机,但更多舵机的负载的叠加会使电路极不稳定,导致持续重启或舵机的异常转动。在极个别情况下,电压波动会恰好翻转EEPROM中的关键常数,那就需要重新上传代码来恢复数据了。
5.5 充电
最好使用与电池配套的锂电池智能充电器,比如“充电器+4节电池”的套装。在充电期间最好在场以防发生意外 。
5.6 归置
使用后,记得把电池从电池盒中取出,以防无意中接通开关导致电池过度放电。
5.7 信号干扰
可以同时连接FTDI上载器和外接电源。事实上,如果在不接外接电源时命令舵机转动,会使USB端口负载过量电流,导致USB端口被禁用。在电池电量不足时,多个舵机的负载的叠加会波及逻辑电路,导致输出乱码、重启或死机。
Last updated