BiBoard V0 快速上手指南
Last updated
Last updated
BiBoard是一款Petoi制作的一款基于ESP32的机器人控制器,主要面向社区开发者和极客发烧友。相比基础的NyBoard,配备了高性能的处理器,更大的内存和存储空间,蓝牙和WiFi连接,还配置了音频电路以满足更多的开发需求。
BiBoard功能模块分区图如下所示:
区域 | 编号 | 模块 | 功能简介 |
---|---|---|---|
电源区 | 1 | 电池接口 | 接入 Bittle 的电池或外接 8.4V 供电 |
2 | 电源指示灯 | 左蓝色为 5V/3.3V 供电,右橙色为舵机 8.4V 供电 | |
3 | 供电电路 | 提供 5V 以及 3.3V 供电 | |
板载模块区 | 4 | USB 下载电路 | 用于下载程序和软复位控制器 |
5 | 陀螺仪 | MPU6050 6 轴陀螺仪, 地址 0x68, 中断连接 1026 | |
6 | EEPROM | 64Kbit I2C EEPROM, 地址 0x51 | |
7 | DAC 功放 | 单声道功放, 连接 1025 | |
8 | 红外模块 | 红外接收器, 连接 1023 | |
扩展接口 | 9 | PWM 舵机接口 | 12 路 ESP32 直出的 PWM 引脚 |
10 | 3路扩展接口 | 4 路模拟输入, 2 个串口, 1 个 I2C, 5V 电源 | |
按键 | 11 | Boot模式键及 Reset复位键 | 经常使用的是复位键,重启程序。按键边有丝印。 |
电路的功能框图如下图所示:
主板的供电方式有2种:通过USB接口供电和电池插座供电。
当使用USB供电时,主板上的舵机和外置5V电源接口没有供电。主板芯片和其他外设工作正常。
当使用电池插座供电时,最大的建议电压为7.4V(最大为8.4V)。此时舵机将获得供电,同时5V开关电源(TPS565201)输出5V电压,可以为树莓派供电。线性稳压器得到5V电压后输出3.3V为主板上的传感器和ESP32主芯片供电。
注意:
Arduino IDE 2.0 版本目前无法增加 large_spiffs_16MB (4.5MB APP with OTA/6.93MB SPIFFS)配置选项。
Arduino IDE 1.8.* 中SPIFFS文件上传插件是用 Java 编写的。 而 Arduino IDE 2.0 是用不同的语言编写的(TypeScript + Golang),因此之前的上传插件不能在Arduino IDE 2.0 中使用。目前还没有支持Arduino IDE 2.0 SPIFFS文件上传插件。
因此建议您暂时安装使用 Arduino IDE 1.8.* 版本集成开发环境。
打开Arduino的“首选项”,添加ESP32开发板的地址:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
保存后退出。
打开“开发板管理器...”,搜索 "esp32" 并安装开发板支持库:
当前最新可用版本是2.0.12,安装2.0.13及以上版本可能导致主板无法正常启动。
当显示“INSTALLED”时,BiBoard的支持库就安装好了。
因为ESP32不带USB电路,我们使用了官方推荐的CP2102 USB转串口桥接芯片,最大下载波特率为921600bps。桥接芯片连接了ESP32的第一串口。
USB使用了最新的TypeC接口,在CC1和CC2脚位上加入了识别电阻。原理图如下图所示:
我们参考了ESP32官方推荐的下载电路以及NodeMCU的下载电路,均不能完美工作。根据ESP32的下载时序我们设计了电路,增加了第三个三极管并修改了EN脚对地电容的阻值,问题解决。
三极管电路接受标准的Modem信号RTS和DTR后产生组合时序控制ESP32进入下载状态并复位。具体原理图如下,若有更好的改进意见也请反馈给我们!
陀螺仪使用的是经典的MPU6050,I2C地址为0x68,数字运动处理器(DMP)的中断脚连接的是IO26。
借助Jrowberg的I2Cdev和MPU6050DMP库,不熟悉姿态融合算法的新手也可以轻松获得动作状态。ESP32如果直接使用MPU6050库需要做一些修改,主要是AVR的8位数据类型以及PGMSpace的问题。增加ESP32的宏定义即可解决,我们也提供修改好的库,直接替换掉原来的文件即可(记得备份)。替换过之后AVR也可以使用。
BiBoard上有64Kbit的EEPROM,这样可以直接使用UNO的EEPROM操作程序存储陀螺仪校准的数值,操作也比较方便。
请注意ESP32中有一个名为EEPROM的示例程序,这个程序并不是操作EEPROM的,而是使用ESP32模块的Flash模拟EEPROM操作。
为了让Bittle的声音更加好听,Biboard使用了DAC输出,并连接了一个单声道D类功放(PAM8302A)。您可以使用以下3种方法驱动音频模块,记得连接扬声器并调节合适的音量大小。
使用系统自带的Tone()函数,即标准的无源蜂鸣器的方法。
使用ESP库函数,dacWrite(). 用法类似analogWrite(),但是精度会比通过PWM调节的analogWrite()精度更高。
使用MP3解码库,使用XTronical开发的ESP32音频库,在Biboard库文件中我们已经为您封装好,需要注意的是ESP32的MP3播放需要文件系统(SPIFFS或者FAT)的支持,以及Flash分区和上传数据的操作。
URL:https://www.xtronical.com/basics/audio/dacs-on-esp32/
Biboard的红外模块和Nyboard型号相同,使用的库也相同(IRremote)。因为Biboard的Flash容量非常大,所以不再需要注释掉IRremote.h中非NEC_DECODE的解码配置,所以可以适配更多的遥控器了。
BiBoard一共设置了12个PWM舵机接口。每个PWM接口对应的IO号被标注在正面的焊盘旁边。
由于ESP32模块体积较大,所以变更了排针的方向。请接线后再装入Bittle。
BiBoard一共有3个扩展接口,对应的丝印号为P15、P16和P17。
该接口用于模拟输入扩展,可以作为脚底压敏传感器接口。
该接口用于板载ESP32的总线扩展。
此接口与树莓派通信,但是无法直接将树莓派安装到BiBoard上,请使用飞线或中间转接板连接。