为NyBoard上传程序

配置流程

OpenCat 软件可在Petoi机器人上运行,主板是由基于 ATmega328P 的 NyBoard。 更详细的硬件信息请参考 NyBoard V1_0NyBoard V1_1

NyBoard 主板型号(版本信息),可参考图示位置:

将I2C开关(SW2)拨到“Arduino”

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%并不再有新进度条或新信息跳出为止。

连接USB上载器(USB适配器)

此步骤不需要将NyBoard安装在机器人身上。

具体步骤可参考USB上载模块中连接NyBoard部分。

连接蓝牙上载器(可选)

具体步骤可参考双模蓝牙模块中连接NyBoard部分。

在 Mac 上,蓝牙可能会在多次上传后断开连接。 在这种情况下,请删除连接再重新连接。

在矽递及其代理渠道销售的版本中不包含蓝牙模块,请向support@petoi.com咨询购买方式。

下载OpenCat软件包

我们一直将代码更新为一个开源项目。您可以加星标并关注我们的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快速闪烁。一旦它们停止闪烁,消息应出现在串口监视器上。

上传程序固件

代码中配置主板,请按照以下步骤操作:

1. 配置机器人产品类型和主板版本

打开文件 OpenCat.ino,选择您的机器人 产品类型 和 主板版本。 例如:

#define BITTLE    //Petoi 9 DOF robot dog: 1x on head + 8x on leg
//#define NYBBLE  //Petoi 11 DOF robot cat: 2x on head + 1x on tail + 8x on leg

//#define NyBoard_V0_1
//#define NyBoard_V0_2
#define NyBoard_V1_0
//#define NyBoard_V1_1

符号 // 停用代码行并将它们转换为注释。 确保您只使用了其中一行并行选项。

2.进入主板配置模式

注释此行代码#define MAIN_SKETCH,保存、编译、上传程序固件后,机器人将进入主板配置模式。 上传完成后,请按照串口提示信息继续操作。

// #define MAIN_SKETCH

如果您激活此行代码 #define AUTO_INIT,程序将自动设置而不进行串口提示。 它不会重置关节校准数据,但会校准 IMU。 对于我们的生产线来说,这只是一个方便的选择。

3. 将 USB 上载器插入您的计算机

如果在 Arduino -> Tools -> Port 下没有找到 USB 端口,请安装驱动程序

4. 将 USB 上载器插入 NyBoard

具体方法可参考USB上载模块中连接NyBoard部分。

5. 上传主板配置程序

点击 上传 按钮即可上传主板配置程序。

6. 打开串口监视器

您可以在菜单栏 工具 下方或者在主界面的右上角找到按钮。

在输入命令之前,请确保串口监视器设置为 “没有结束符”(No line ending),否则不可见的' \n'或' \r'字符将使解析函数失效。波特率设置为 "115200 波特率" (115200 baud)。

7. 清除校准数据

串口提示内容如下:

Reset joint offsets? (Y/n):

如果要将所有关节的校准数据重置为 0,请输入“Y”并按回车键 (Enter)。 程序将进行重置,然后更新静态内存中的常量和本能技能。

您必须输入‘Y’或‘n’来越过这一步,否则后续的参数(比如技能数据)将不能正常地更新到主板上。

8. 校准IMU

串口提示: 是否校准IMU (Inertial Measurement Unit)?

Calibrate the IMU? (Y/n): 

如果您从未校准过 IMU 或想要重新校准,请输入“Y”并按回车键 (Enter)。 将机器人平放在桌子上,不要触摸它。 机器人会长鸣六声给你足够的时间。 然后它将读取数百个传感器数据并保存偏移量。 校准完成时会发出蜂鸣声。

当串口监视器打印“Ready!”时,您可以关闭串口监视器进行下一步操作。

9. 校准舵机驱动芯片

在校准 IMU后有一步可选的操作来校准舵机驱动:

Optional: Connect PWM 3 -> Grove pin A3 to calibrate PCA9685

您可以通过校准舵机驱动芯片(PCA9685 chip)来让角度控制更加精准。用一根跳线连接 PWM 引脚3(舵机控制脚的信号脚之一 )和 Grove 引脚 A3,并把线按稳。

您不需要专门的跳线来完成这一步。任何能连通引脚的细金属线都可以,比如拉直的回形针。

程序会测量信号脉宽,在连续三次测量到相同读数后自动校准芯片。校准修正值会被存入控制板并在下次启动时生效。然后您可以继续进行下一步。

如果机器人的某个舵机停止转动,但将电池断电重启后又能转动,很可能就是因为舵机驱动信号不准,这一步就不可跳过。

10. 上传主要功能程序

此行代码 #define MAIN_SKETCH 取消注释,并保存修改以使其处于激活状态。 编译、上传程序固件后,机器人将运行主要功能的正常程序。

#define MAIN_SKETCH

再次打开串口监视器,当串口监视器打印“Ready!”时,恭喜:机器人已准备好接受您的下一条指令!✌️

请在上传完主要功能程序后,再进行校准舵机

11. 代码中的模块宏

默认程序是标准模式。如果您有一些扩展模块,可以将这些模块的宏定义语句取消注释。这样会禁用陀螺仪的代码节省出一些编程空间,并激活这些扩展模块的演示代码。

官方模块的代码是在 src/里的单独头文件里定义的。您可以在OpenCat/src/io.h -> readSignal()找到它们对应的函数。 OTHER_MODULES(其他模块)的行为在OpenCat/OpenCat.ino -> otherModule()定义。您可以参考示例代码写出自己的功能。

12. 修改“关节-引脚”映射

在某些情形下,您也许需要更改机器人的“关节-引脚”映射,它可以在OpenCat/src/OpenCat.h中修改。注意要按照 OpenCat.ino 开头的主板版本来修改相应的代码段落。修改后记得保存,并重复从第2步开始的上传步骤。

Last updated