为BiBoard上传程序

本章节内容面向具有编程经验的高级用户。

1. 阅读快速上手指南

BiBoard 各功能模块具体参数介绍请参考BiBoard V0 快速上手指南第2章

2. 下载和安装软件环境

2.1 准备ESP32开发环境

详情请参考 BiBoard V0 快速上手指南第3.2.1 章节

2.2 修改库代码文件

sdkconfig.h

  • Windows 路径:

C:\Users\{username}\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.*\tools\sdk\esp32\qio_qspi\include\sdkconfig.h

  • Mac 路径:

/Users/{username}/Library/Arduino15/packages/esp32/hardware/esp32/2.0.*/tools/sdk/esp32/qio_qspi/include/sdkconfig.h

在最后追加一行代码:

#define CONFIG_DISABLE_HAL_LOCKS 1

2.3 增加硬件分区配置选项

阅读 Arduino IDE增加硬件分区配置选项,最终效果见下图:

2.4 下载OpenCatEsp32软件包

我们一直将代码更新为一个开源项目。您可以加星标并关注我们的GitHub代码仓库以获取最新功能和错误修复。您还可以与全球OpenCatEsp32用户共享代码。

欢迎提交代码!!!

  • 从GitHub下载最新的OpenCatEsp32代码库:https://github.com/PetoiCamp/OpenCatEsp32。最好使用GitHub的版本控制功能。否则,请确保您每次都下载全部的OpenCatEsp32文件夹。所有代码必须是相同版本时才能一起使用。

  • 如果下载代码的Zip文件,则解压缩后将获得一个OpenCatEsp32-main文件夹。您需要在打开OpenCatEsp32.ino之前将其重命名为OpenCatEsp32(Arduino规定代码必须放在同名文件夹之下)。

无论您将文件夹保存在何处,文件结构应如下图所示:

  • ModuleTests文件夹中有几个名为testX(X代表功能模块,比如蜂鸣器Buzzer,陀螺仪MPU).ino的代码。您可以上传它们以分别测试对应模块。打开任何带有前缀“ test”的testX.ino的工程。 (建议您使用testBuzzer.ino作为第一个测试项目)。

2.5 编译并上传程序

根据设备类型,修改BiBoard.ino中的设备类型宏定义。

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

根据主板的型号,修改BiBoard.ino中的主板型号宏定义。

// #define BiBoard_V0_1  //ESP32 Board with 12 channels of built-in PWM for joints
#define BiBoard_V0_2

设置好后就可以点击上传按钮上传BiBoard.ino,代码中的更改部分会自动保存。

2.6 程序初始化

新设置的BiBoard上电时,需要连接串口至电脑,在串口监视器窗口中初始化关节和陀螺仪加速传感器(IMU)。

确保将串口监视器设置为 115200 波特率 并且 没有结束符

你将看到以下提示问题:

Reset the joints' calibration offsets? (Y/n):  // 是否清除所有舵机的校准参数?‌‌

输入“Y”,把所有舵机的修正值归零。

- Calibrate the Inertial Measurement Unit (IMU)? (Y/n):  // 是否校准IMU(MPU6050)?

输入“Y”,校准 IMU(即陀螺仪/加速度计传感器)。

将BiBoard平放在水平桌面上,校准时不要触摸它。

有时程序可能会在连接阶段中止。 您可以关闭串口监视器并重新打开它,或按 BiBoard 上的复位按键,重新启动程序。

程序在播放6次音效后开始校准。

串口打印信息详情如下:

* Start *
Scanning I2C network...
- I2C device found at address 0x54  !
- I2C device found at address 0x68  !
- done
Set up the new board...
// 蓝牙连接时使用的设备名称
- Name the new robot as: BittleED    
Reset the joints' calibration offsets? (Y/n): 
Y

Initializing MPU...
- Testing MPU connections...attempt 0
- MPU6050 connection successful
- Initializing DMP...
- Calibrate the Inertial Measurement Unit (IMU)? (Y/n): 
Y

Put the robot FLAT on the table and don't touch it during calibration.
- Calibrating the Inertial Measurement Unit (IMU)...
>..........>..........
MPU offsets:
//           X Accel  Y Accel  Z Accel   X Gyro   Y Gyro   Z Gyro
//OFFSETS     3752,    -968,     942,     170,      76,      21
- Enabling DMP...
- Enabling interrupt detection (Arduino external interrupt 26)...
- DMP ready! Waiting for the first interrupt...
Bluetooth name: BittleED
Waiting for a client connection to notify...
Setup ESP32 PWM servo driver...
Ready!

IMU校准完成后,以后每次机器人上电,将进入常规上电开机程序。

Bittle主程序通过比对EEPROM 中的BIRTHMARK来判断有没有被初始化过,下次开机时不会再次进入初始化流程。

如果你需要重新校准舵机参数,或者重新校准IMU(MPU6050)您可以在串口监视器中输入“R”重新开始。

2.7 上电开机

  • 长按电池上的电源按钮,机器人身体侧立开机(如下图所示),自动进入关节校准状态。 下图为机器人进入关节校准状态后安装了的腿部组件的图片。

详细校准流程请参考第5章🔌连线第6章📐校准

  • 当Bittle的主控板在上电时是正放的(背部朝上),Bittle将从“休息”姿势(即四肢收缩并且所有舵机处于释放状态)启动。

2.8 标准模式和其他模式

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

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

3. 使用App配置

BiBoard 内置蓝牙,您可以将其与新的 Android 应用程序连接,进行设置和遥控:

BiBoard 应用 (Android 4.4+)

您可以在 ChangeLog.md (BiBoard\ChangeLog.md) 中查阅更新历史和新增的功能。

Last updated