为NyBoard上传程序
Last updated
Last updated
OpenCat 软件可在Petoi机器人上运行,主板是由基于 ATmega328P 的 NyBoard。 更详细的硬件信息请参考 NyBoard V1_0 或 NyBoard V1_1 。
NyBoard 主板型号(版本信息),可参考图示位置:
I2C 开关用于改变 I2C 设备(陀螺仪/加速度计、伺服驱动器、外部 EEPROM)的主控。 默认“Arduino”时,NyBoard 使用板载 ATmega328P 作为主控芯片; 拨到“RPi”端时,NyBoard 使用通过I2C 端口(SDA、SCL)连接的外部芯片作为主控芯片。
注意:
有时,如果您无法启动Bittle / Nybble,则可能是您不小心将开关拨到了“RPi”端。
在上传固件前,请确保不要在主板的I2C接口连接任何I2C设备,否则会导致固件上载失败。I2C接口位置如下图示(红框内):
您将需要配置Arduino集成开发环境,且最好是最新的版本,旧版本往往会编译出可能超出内存限制十六进制文件。
使用 NyBoard V1_*主板,您只需选择 Arduino Uno。
只有当引导程序崩溃时才需要进行下列操作!
每块NyBoard在出厂时都经过了功能性测试,这意味着它们已经预先烧录了引导程序。但是,在极个别情况下,引导程度可能会崩溃并导致无法上传Arduino代码。
当然,不能上传代码往往是由其他原因造成的,而不是因为引导程序崩溃:
有时USB驱动可能会检测到一个USB设备的电流过大而主动禁用该设备。这时需要更换USB端口甚至重启电脑来再次激活USB端口;
需要安装FTDI USB2.0 UART上传器的驱动;
在Arduino IDE中没有选对串口;
接触不良;
运气不好 ☯️ 过两天可能又好了。
如果您确实需要重新烧录引导程序:
如果你手上的是NyBoard V1_*,在Arduino IDE的Tool下选用Arduino Uno。
选择您的烧录工具。下面的截图突出显示了两种常用的编程器,高亮的 USBtinyISP是一种小巧便宜的专门的编程器,当前选择的Arduino as ISP是用另一块Arduino板作为编程器;
把编程器接到NyBoard的2x6的SPI端口,注意接插方向和良好接触。您可以用手指轻轻按压插针确保良好的接触,但无需为这一次性操作把插针焊到主板上。
点击烧录引导程序进行烧录。如果这是您第一次尝试烧录,请耐心多等一会儿,直到看见进度条达到100%并不再有新进度条或新信息跳出为止。
此步骤不需要将NyBoard安装在机器人身上。
具体步骤可参考USB上载模块中连接NyBoard部分。
具体步骤可参考双模蓝牙模块中连接NyBoard部分。
在 Mac 上,蓝牙可能会在多次上传后断开连接。 在这种情况下,请删除连接再重新连接。
在矽递及其代理渠道销售的版本中不包含蓝牙模块,请向support@petoi.com咨询购买方式。
我们一直将代码更新为一个开源项目。您可以加星标并关注我们的GitHub代码仓库以获取最新功能和错误修复。您还可以与全球OpenCat用户共享代码。
欢迎提交代码!!!
从GitHub下载最新的OpenCat代码库:https://github.com/PetoiCamp/OpenCat。最好使用GitHub的版本控制功能。否则,请确保您每次都下载全部的OpenCat文件夹。所有代码必须是相同版本时才能一起使用。
如果下载代码的Zip文件,则解压缩后将获得一个OpenCat-main文件夹。把它重命名为 OpenCat。
Arduino规定代码必须放在同名文件夹之下,您需要在打开OpenCat.ino之前将文件夹OpenCat-main重命名为OpenCat(即删除-main 后缀),否则,Arduino 会在打开 OpenCat.ino 时创建一个新的 OpenCat 文件夹,并将 OpenCat.ino 移动进去,就会打破相关文件的路径结构。
无论您将文件夹保存在何处,文件结构都应如下图所示:
ModuleTests文件夹中有几个名为testX(X代表功能模块,比如蜂鸣器陀螺仪).ino的代码。您可以上传它们以分别测试对应模块。打开任何带有前缀“ test”的testX.ino的工程。 (我建议您使用testBuzzer.ino作为第一个测试项目)。
打开串行监视器并设置波特率。使用NyBoard V1_ *,将开发板选为Arduino Uno,然后在代码和串口监视器中将波特率设置为115200。
编译代码,应该没有错误提示。如果有请根据提示查找问题,一般问题为缺少某些库,根据需要安装即可。随后上传到您的开发板上,您应该看到Tx和Rx LED快速闪烁。一旦它们停止闪烁,消息应出现在串口监视器上。
代码中配置主板,请按照以下步骤操作:
打开文件 OpenCat.ino,选择您的机器人 产品类型 和 主板版本。 例如:
符号 // 停用代码行并将它们转换为注释。 确保您只使用了其中一行并行选项。
注释此行代码#define MAIN_SKETCH,保存、编译、上传程序固件后,机器人将进入主板配置模式。 上传完成后,请按照串口提示信息继续操作。
如果您激活此行代码 #define AUTO_INIT,程序将自动设置而不进行串口提示。 它不会重置关节校准数据,但会校准 IMU。 对于我们的生产线来说,这只是一个方便的选择。
如果在 Arduino -> Tools -> Port 下没有找到 USB 端口,请安装驱动程序。
具体方法可参考USB上载模块中连接NyBoard部分。
点击 上传 按钮即可上传主板配置程序。
您可以在菜单栏 工具 下方或者在主界面的右上角找到按钮。
在输入命令之前,请确保串口监视器设置为 “没有结束符”(No line ending),否则不可见的' \n'或' \r'字符将使解析函数失效。波特率设置为 "115200 波特率" (115200 baud)。
串口提示内容如下:
如果要将所有关节的校准数据重置为 0,请输入“Y”并按回车键 (Enter)。 程序将进行重置,然后更新静态内存中的常量和本能技能。
您必须输入‘Y’或‘n’来越过这一步,否则后续的参数(比如技能数据)将不能正常地更新到主板上。
串口提示: 是否校准IMU (Inertial Measurement Unit)?
如果您从未校准过 IMU 或想要重新校准,请输入“Y”并按回车键 (Enter)。 将机器人平放在桌子上,不要触摸它。 机器人会长鸣六声给你足够的时间。 然后它将读取数百个传感器数据并保存偏移量。 校准完成时会发出蜂鸣声。
当串口监视器打印“Ready!”时,您可以关闭串口监视器进行下一步操作。
在校准 IMU后有一步可选的操作来校准舵机驱动:
您可以通过校准舵机驱动芯片(PCA9685 chip)来让角度控制更加精准。用一根跳线连接 PWM 引脚3(舵机控制脚的信号脚之一 )和 Grove 引脚 A3,并把线按稳。
您不需要专门的跳线来完成这一步。任何能连通引脚的细金属线都可以,比如拉直的回形针。
程序会测量信号脉宽,在连续三次测量到相同读数后自动校准芯片。校准修正值会被存入控制板并在下次启动时生效。然后您可以继续进行下一步。
如果机器人的某个舵机停止转动,但将电池断电重启后又能转动,很可能就是因为舵机驱动信号不准,这一步就不可跳过。
此行代码 #define MAIN_SKETCH 取消注释,并保存修改以使其处于激活状态。 编译、上传程序固件后,机器人将运行主要功能的正常程序。
再次打开串口监视器,当串口监视器打印“Ready!”时,恭喜:机器人已准备好接受您的下一条指令!✌️
请在上传完主要功能程序后,再进行校准舵机。
默认程序是标准模式。如果您有一些扩展模块,可以将这些模块的宏定义语句取消注释。这样会禁用陀螺仪的代码节省出一些编程空间,并激活这些扩展模块的演示代码。
官方模块的代码是在 src/里的单独头文件里定义的。您可以在OpenCat/src/io.h -> readSignal()找到它们对应的函数。 OTHER_MODULES(其他模块)的行为在OpenCat/OpenCat.ino -> otherModule()定义。您可以参考示例代码写出自己的功能。
在某些情形下,您也许需要更改机器人的“关节-引脚”映射,它可以在OpenCat/src/OpenCat.h中修改。注意要按照 OpenCat.ino 开头的主板版本来修改相应的代码段落。修改后记得保存,并重复从第2步开始的上传步骤。