# Arduino-Dog **Repository Path**: thermalogic/arduino-dog ## Basic Information - **Project Name**: Arduino-Dog - **Description**: 基于ESP32-C3和S90舵机的简易四足机器人 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-04-05 - **Last Updated**: 2025-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于ESP32-C3和S90舵机的简易四足机器人(OLED显示版) ## 简介 四足机器人(Quadruped Robot)使用ESP32-C3作为控制器,S90舵机驱动四足。 四足机器人提供WIFI热点服务。连接其热点后,可通过其提供的Web客户端控制机器人运动。 1. 打开控制板上的电源,启动四足机器人WIFI热点 2. 连接WIFI热点:ESP32-C3, 密码:12345678 3. 访问Web服务:http://192.168.4.1 ![Quadruped Robot and web(oled)](img/quadruped_robot_web_oled.jpg) ## 步态 简易四足机器人使用Trot步态:对角的两条腿成对运动(diagonal legs as pair) ```c // trot walk forward void trot_walk_forward() { // Step 1.1: lift front-left and rear-right legs front_left.write(lift_left_angle); rear_right.write(lift_right_angle); // Step 1.2: push front-right and rear-left legs front_right.write(push_right_angle); rear_left.write(push_left_angle); delay(step_speed); // Step 2: move body forward move_body_forward(); delay(step_speed); // Step 3.1: lift front-right and rear-left legs front_right.write(lift_right_angle); rear_left.write(lift_left_angle); // Step 3.2: push front-left and rear-right legs front_left.write(push_left_angle); rear_right.write(push_right_angle); delay(step_speed); // Step 4: move body forward move_body_forward(); delay(step_speed); } ``` ## 元件 * ESP32-C3扩展板(自制) x1 * M2.5尼龙柱、螺丝、螺母 x4 * 开发版:ESP32-C3简约版 x1 * 降压模块:Mini360可调降压模块,x1 * 舵机:S90 180度 x4 * L型MG995 996舵机支架 x1 * M3铜柱、螺丝、螺母 x1 * M2铜柱 x1、螺丝 x2 * 电池: * 16850锂电池 x2 * 二节16850串联锂电池盒 x1 * 杜邦线若干 * 手机盒盖子 x1 ## ESP32-C3扩展板 ESP32-C3扩展板使用一块5x7CM洞洞板制作。板上可插入ESP32-C3简约版、 Mini360可调降压模块和OLED显示屏。 板子提供如下排针和排座连接设备和电源 * 2x16P排座,插入ESP32-C3精简版 * 2x4P排座,插入Mini360可调降压模块 * 2x16P排针,引出所有ESP32-C3精简版接口 * 2x2P排座,提供5组5V电源接口 * 4P排针,连接OLED * 2P接线柱,连接2*3.7V锂电池 ### 扩展板元件 * 洞洞板:单面环氧板,绿油,5*7CM x1 * 开关:SS-12D00,3脚2档,直插立式 拨动开关 * LED: 红色 1个 * 电阻:470欧,1个 * 电线: * 30AWG,彩色电路板飞线 * 22AWG, 1007电子线,红色,黑色 * 接线柱:KF301-2P,间距5.08mm,铜脚 1个 * 排针,排座若干 **白色**线连接的针脚为**ESP32-C3的可用针脚** ![](img/soldered_board_esp32_c3_oled.jpg) ## ESP32-C3简约版 ![esp32-c3](img/esp32-c3.jpg) * https://wiki.luatos.com/chips/esp32c3/board.html Arduino中选择开发板型号为:AirM2M CORE ESP32C3。 SP32-C3简约版可使用的Pin较少。 可使用的管脚: * 优先:GPIO 03/4/5/6/7,10, * 可用 GPIO 00、01 其中 * ADC留给模拟量:GPIO 03,04 * SCL,SDA留给I2C设备:GPIO 05,04 可以使用,但不建议使用 * Strapping 管脚:`GPIO2、GPIO8、GPIO9` 是 Strapping 管脚 * boot: `GPIO09` * 2路贴片LED指示灯:D4,D5(`GPIO12,13`) 不能使用的管脚: * SPI0/1:`GPIO12-17` 通常用于 SPI flash 和 PSRAM,不推荐用于其他用途 * USB-JTAG:`GPIO18、GPIO19` 默认用于 USB-JTAG * ESP32C3的`GPIO11`(VDD_SPI)默认功能是给flash供电 ## Mini360可调降压模块 `顺时针`转电位器降低输出电压,使其稍低于5V(如4.6),给ESP32-C3的5V针脚供电。 ![mini360](img/mini360.jpg) ## S90舵机 ![](img/Servo_S90.jpg) * 电源线(GND、VCC)连接ESP32-C3扩展板的电源排针 * Control Signal连接ESP32-C3扩展板的排针(ESP32-C3的PWM支持任意GPIO,最大4个PWM) | S90 Signal | ESP32-C3 | |--------------|----------| | front_left | GPIO 01 | | rear_left | GPIO 06 | | front_right | GPIO 03 | | rear_right | GPIO 10 | ### 单色0.96英寸OLED显示屏 用OLED技术,I2C通信来显示数据 ![oled](img/oled_096_ssd1315.jpg) OLED通过扩展板上的黄色4P排座连接开发板,其中: | SSD1306 | ESP32-C3 | |-------------|---------------| | GND | GND | | VCC | +3.3V | | SCL | GPIO 05 yellow | | SDA | GPIO 04 green | ### 锂电池 | 电池盒 | 扩展板接线柱 | |----------|----------------| | 红色 + | + (拨动开关)| | 黑色 - | - (Mini360) | ### 杜邦线连接 ![bread_board_esp32_c3_oled](img/bread_board_dog_esp32_c3_oled.jpg) ## 解决问题:ESP32-C3烧录程序上传失败 本来正常在调试并烧录程序,突然就无法上传了,并报错: ```bash A fatal error occurred: Unable to verify flash chip connection (No serial data received.). 上传失败: 上传错误:exit status 2 ``` **解决办法** 可用下面方法重新烧录引导程序: 1. 把开发板从USB口上拔下 2. 按住板载的`Boot`按钮,一直按住,不要松开 3. 把开发板插入电脑的USB口,此时开发板进入bootloader 模式,然后,松开`Boot`按钮 4. 在Aruino的IDE开发环境中,选择串口,然后,点 **“烧录引导程序”**