为NyBoard上传1.0版本程序

您可以使用Arduino IDE配置NyBoard并为之上传程序。

以下视频展示了如何使用Arduino IDE 对 Bittle 进行配置。 这些步骤与 Nybble 相同,您只需要将 OpenCat.h 中的产品定义更改为 Nybble。

//#include "InstinctBittle.h" //activate the correct header file according to your model 
#include "InstinctNybble.h" 

1 NyBoard

1.1 阅读用户手册

在 NyBoard 上找到主板的版本信息。如下图所示:

Nybble

相应的规格文档:NyBoard V0_1NyBoard V0_2NyBoard V1_0NyBoard V1_1(轻度修订)。

Bittle

相应的规格文档:NyBoard V1_0NyBoard V1_1

以 NyBoard V1_0 为例,如下图所示:

1.2 把滑动开关拨到Arduino档.

滑动开关用于选择Nyboard上板载I2C设备(陀螺仪/I2C PWM控制器以及EEPROM)的连接属性。

当开关位于“Arduino”端的时候,这些I2C设备将同ATMega328P通信,Arduino可以访问这些设备

当开关位于“Pi”端的时候,这些I2C设备将断开和ATMega328P的连接,主板上的 树莓派接口 和 Grove I2C 接口上的设备将成为主设备。

NyBoard用7.2V电池直接为金属舵机供电,电池充满电时为8.4V。您不能使用NyBoard直接驱动自己的塑料舵机(比如SG系列)。

2 下载和安装软件环境

您将需要配置Arduino集成开发环境,且最好是最新的版本,旧版本往往会编译出可能超出内存限制十六进制文件。Arduino的版本更新不会覆盖掉您之前的库和工程。

如果您先前已添加其他库并看到错误消息``XXX库已安装'',我建议您先删除它们

由于Arduino IDE安装的配置不同,如果您在以后的编译过程中看到有关缺少库的任何错误消息,只需用baidu他们(google也可以)并将其安装到IDE中即可。

2.3 增加NyBoard支持

对于V1版本的Nyboard (NyBoard V1_*) 完全兼容UNO,选UNO即可。

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)

特别提一下Linux,将上载器连接到计算机后,您将在串行端口列表中看到“ ttyUSB#”。但是上传时,您仍然可能会遇到串行端口错误。您将需要授予串行端口权限。请转到此链接并按照说明进行操作 https://playground.arduino.cc/Linux/All/#Permission

2.6 连接蓝牙模块 (可选)

连接蓝牙模块, 您可以使用智能手机 APP 或 Web API 控制机器人。

在标准机器人套件中包含我们的官方蓝牙模块。 波特率请设置为 115200。

您需要像使用蓝牙 AirPod 一样将其连接到计算机。 默认密码为 0000 或 1234。然后您可以在 Arduino IDE 的 Tools->Port 下选择它,使用方法与USB上载器相同。

具体连接方法请参考双模蓝牙模块相应章节。

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'字符将使解析函数失效。

NyBoard V0_*
NyBoard V1_*

对于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个字符。您可以在代码中更改限制,但是串行缓冲区可能会有系统的限制。

4 使用树莓派接口

您可以在NyBoard上焊接2x5插座,就可以连接Raspberry Pi。 Pi 3A +最适合Bittle的型号。

Nybble

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:

  1. 使用 sudo 权限命令运行 raspi-config:sudo raspi-config

  2. 找到 Interface Options-> SerialPort

  3. 选项 Would you like a login shell to be accessible over serial? 选择No

  4. 选项 Would you like the serial port hardware to be enabled? 选择Yes

  5. 退出 raspi-config 并重新启动机器人(关闭、打开电池电源)以使更改生效。

树莓派官方网站上有一个很好的教程

只要把树莓派和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 [email protected] && sudo systemctl disable [email protected]

  • 请确保您已安装python 串行库 pyserial,而不是来自 apt 的 python-serial。

  • 创建 udev file (/etc/udev/rules.d/50-tty.rules),并添加以下内容:

    KERNEL=="ttyS0", SYMLINK+="serial0" GROUP="tty" MODE="0660"
    KERNEL=="ttyAMA0", SYMLINK+="serial1" GROUP="tty" MODE="0660"
  • 运行以下命令重载 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 向机器人发送指令

在树莓派的终端输入./ardSerial.py <args> 就相当于之前在Arduino串口监视器里输入 <args> 。比如,./ardSerial.py kcr 表示“执行 skill crawl”。

Python脚本ardSerial.pyNybble.ino里对应的解析代码都比较简略,需要逐渐完善。

5 电池

尽管通过USB上载器供电是可以给Nyboard上传程序的,但是仅使用USB上载器为 NyBoard 供电时,舵机存在明显的充电和放电现象,并导致黄色 LED 闪烁。USB 数据线的电流不足以维持舵机正常工作。 因此,舵机必须由外部电池供电才能正常工作。

Bittle

5.1 电压

NyBoard需要7.4〜8.4V外部电源来驱动舵机。我们在Bittle套件中包括了带有内置充电和保护电路的定制锂电池。短按电池按钮将显示其状态。蓝灯表示有电,红灯表示电量低。

5.2 连接插头和打开电源

连接电源时,请注意极性。 NyBoard上的插座具有防呆功能(防止反向插座),因此您将无法以错误的方向插入。详情请看这里(请不要 大 力 出 奇 迹!)

长按按钮3秒钟以打开/关闭电池。

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干电池一样,但是同尺寸的锂电池电压更高。

另外,要选购正极有按钮状突起的电池。如果您在美国,可以在沃尔玛网购“EBL 14500 Li-ion”电池;在中国,可以在淘宝上试试运气。不要买标榜900mAh以上的电池,至少它们在容量上就不诚实。

您也可以自己设计电池盒来安装其他的电源方案,尤其是当您想添加树莓派做一些严肃的开发 ,或者纯粹想让狸宝跑得更快的时候。

5.3. 接线

接线时要注意极性,确保您能清楚地区分NyBoard电源接线端子和电池上的正负号(+/-)。

把NyBoard电源端子的螺丝拧松,插入电池盒引出的电源线,然后拧紧螺丝。闭合开关后,蓝光(主控)和黄光(舵机供电)LED都会点亮。

1月1日之后发货的套件中,端子更换为防反接插座,这样您就不会插错方向了。

5.4. 续航时间

续航时间取决于使用场景。如果您主要是用狸宝编程和测试一些动作,电池可以支持几个小时。如果您一直让狸宝跑来跑去,那就玩不到一个小时,大约四十分钟左右。

当电量不足时,黄色LED可能会不稳定地抖动。这时NyBoard仍可驱动一两个舵机,但更多舵机的负载的叠加会使电路极不稳定,导致持续重启或舵机的异常转动。在极个别情况下,电压波动会恰好翻转EEPROM中的关键常数,那就需要重新上传代码来恢复数据了。

5.5 充电

最好使用与电池配套的锂电池智能充电器,比如“充电器+4节电池”的套装。在充电期间最好在场以防发生意外 。

5.6 归置

使用后,记得把电池从电池盒中取出,以防无意中接通开关导致电池过度放电。

5.7 信号干扰

可以同时连接FTDI上载器和外接电源。事实上,如果在不接外接电源时命令舵机转动,会使USB端口负载过量电流,导致USB端口被禁用。在电池电量不足时,多个舵机的负载的叠加会波及逻辑电路,导致输出乱码、重启或死机。

Last updated

Was this helpful?