Romeo mini 控制器(ESP32-C3)

简介

Romeo mini机器人控制器是Romeo BLE mini的ESP32版,板载一颗EPS32-C3模组,支持Wi-Fi 和 Bluetooth 5双模通讯,拥有两路1.7A电机驱动。

Romeo mini具备11路IO接口(复用模拟、数字、UART、I2C),每个接口都兼容Gravity标准,可以外接各类Gravity传感器模组,舵机接口可以通过舵机电源口供电,为舵机等大电流设备提供稳定的电源供应,背面还板载一个GDI接口,可连接IPS显示屏,显示项目中所需要的信息,控制器可满足机器人电机、舵机两种控制方案。

技术规格

基本参数

  • 主控芯片:ESP32-C3-MINI-1
  • Type-C输入电压:5V
  • VIN输入电压:5-12V
  • 电机输出电流:1.7A单通道连续驱动电流
  • Servo输入电压:5-12V
  • 模块尺寸:47x38.5mm

接口引脚

  • 数字I/O x4
  • 模拟I/O x3
  • UART x1
  • I2C x1
  • 直流电机接口 x2
  • GDI接口 x1
  • Type-c接口 x1
  • Vin电源接口 x1
  • Servo接口 x1

功能引脚示意图

引脚示意图 引脚示意图
名称 功能描述
VIN 电机驱动和控制器外接电源:5~12V,必须连接该端口,M1/M2电机才工作
Servo 数字口电源输入5~12V,如在数字输出口(VCC端)使用大电流高于5V电压外设,可连接该接口,
否则可能烧毁Type-C USB接口
M1/M2端口 2路电机控制端;
M1:GPIO1(方向控制),GPIO0(PWM控制)
M2:GIPO10(方向控制),GPIO2(PWM控制)
I2C 标准I2C接口;SDA(8),SCL(9),VCC(3.3V),GND
A-3.3V-GND 标准模拟接口;
A(蓝色):模拟口3,4,5;
3.3V(红色):电源正极;
GND(黑色):电源负极;
D-VCC-GND 标准数字接口;
D(绿色):数字口6,7,20,21;
VCC(红色):电源正极(当Servo端口未接电源时,VCC为5V;
当Servo端口接上电源时VCC为Servo端的输入电源);
GND(黑色):电源负极
UART RX(20),TX(21),VCC(5V),GND
因为UART与其中两路舵机复用IO口,所以使用舵机时,无法使用UART口
RST 控制器复位按键
BOOT 控制器下载按钮

尺寸图

尺寸图

使用教程

1、Arduino环境配置

当您首次使用ESP32-C3相关开发板,您需要了解以下步骤

注意:电脑首次连接romeo mini模块时,若usb口无法正常显示,需要先长按住BOOT键再按点击RST键,最后同时松开BOOT与RST键

  1. 添加IDE中的json链接
  2. 下载主控的核心
  3. 选择开发板以及串口
  4. 打开示例程序并烧录
  5. 了解串口监视器
  • Arduino IDE 编译环境配置

  • 配置URL网址到Arduino IDE

  • 打开Arduino IDE,点击File->Preferences,如下图所示:

Beetle ESP32-C3

  • 在新打开的界面中,点击如下图红色圆圈中的按钮

Beetle ESP32-C3

  • 将如下链接地址复制到新弹出的对话框中:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  • 注意:如果您之前安装过其它的环境,那么您可以在上一个链接地址开头或末尾处直接回车并将上面链接粘贴在其上下任意一行

Beetle ESP32-C3

  • 点击OK
  • 更新板卡
  • 打开Tools->Board:->Boards Manager...,如下图所示:

Beetle ESP32-C3

  • Boards Manager会自动更新板卡,如下图所示:

Beetle ESP32-C3

  • 更新完成后,您可以在上方输入esp32,出现如下情况时选择esp32点击安装即可(当前安装为2.0.0版本):

Beetle ESP32-C3

  • 等待如下进度条结束:

Beetle ESP32-C3

  • 安装完成后,列表会显示已经安装esp32主板,如下图所示:

Beetle ESP32-C3

  • 点击Tools->Board:,选择ESP32C3 Dev Module(通常在列表第一个)

Beetle ESP32-C3

  • 在开始前您还需要配置如下设置(如果您需要通过USB在Arduino监视器上打印,您需要选择Enable)

Beetle ESP32-C3

  • 点击Port选择对应的串口(如果串口不停的出现,然后消失,需要先长按住BOOT键再按点击RST键,最后同时松开BOOT与RST键)

Beetle ESP32-C3

2、PWM驱动直流电机

需要准备

  • 直流电机 x2

  • Romeo mini x1

连接图

模块5-12V供电,根据电机选择合适的供电电压。

电机连接图

控制方式

EN PH 功能
H H 正向
H L 反向
PWM L 正向
PWM H 反向

示例代码

int EN1 = 0; //M1电机PWM控制
int PH1 = 1; //M1电机方向控制
int EN2 = 2;//M2电机PWM控制
int PH2 = 10;//M2电机方向控制
void setup() {
  pinMode(EN1, OUTPUT);
  pinMode(PH1, OUTPUT);
  pinMode(EN2, OUTPUT);
  pinMode(PH2, OUTPUT);

}
void loop() {
  M1_Forward(200);//M1路电机正转,PWM调速
  M2_Forward(200);//M2路电机正转,PWM调速
  delay(5000);
  M1_Backward(200);//M1路电机反转,PWM调速
  M2_Backward(200);//M2路电机反转,PWM调速
  delay(5000);
}

void M1_Forward(int Speed1) //正向快衰模式,Speed1值越大,电机转动越快
{
  analogWrite(EN1, Speed1);
  digitalWrite(PH1, LOW);
}

void M1_Backward(int Speed1) //反向慢衰模式,Speed2值越小,电机转动越快
{
  int Speed2 = 255 - Speed1;
  analogWrite(EN1, Speed2);
  digitalWrite(PH1, HIGH);
}

void M2_Forward(int Speed1)
{
  analogWrite(EN2, Speed1);
  digitalWrite(PH2, LOW);
}

void M2_Backward(int Speed1)
{
  int Speed2 = 255 - Speed1;
  analogWrite(EN2, Speed2);
  digitalWrite(PH2, HIGH);
}

示例结果:烧录示例程序,M1与M2电机先同时快速正转,然后M1与M2电机同时慢速反转

3、PWM驱动舵机

需要准备

  • 5V PWM舵机 x1

  • Romeo mini x1

连接图

如果需要用到高于5V电压的舵机或外设,可连接Servon端到电源,供电范围为5-12V,Servon端输入多少电压,VCC端电压就等于Servon端输入电压,Servon端不连接时,VCC端电压默认5V。

电机连接图

示例代码

void setup(){
    ledcSetup(0, 50, 10); //通道0, 5KHz,10位解析度
    ledcAttachPin(6, 0); //pin6定义为通道0的输出引脚
}
void loop(){
    ledcWrite(0, 125); // 通道0输出, PWM输出0~100%(0~2^10=1024)
    delay(1000);
    ledcWrite(0, 25);
    delay(1000); 
}

示例结果:烧录示例程序,1路舵机循环0-180°来回转动

4、驱动SPI屏幕

需要准备

接线图

显示屏连接图

示例代码

#include "DFRobot_GDL.h"
#define TFT_DC  8
#define TFT_CS  7
#define TFT_RST 9

DFRobot_ST7789_172x320_HW_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST);
/* M0 mainboard DMA transfer */
//DFRobot_ST7789_172x320_DMA_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST);
void setup() {
  screen.begin();
  screen.setTextSize(2);
  screen.fillScreen(COLOR_RGB565_BLACK);//背景颜色
  screen.setFont(&FreeMono24pt7b);//字体大小(9 12 18 24)
  screen.setCursor(/*x=*/32,/*y=*/200);//文字位置
  screen.setTextColor(COLOR_RGB565_LGRAY);//文字颜色
  screen.setTextWrap(true);
  screen.print("DF");//英文字符
}
void loop() {
}

示例结果:
烧录示例程序,屏幕显示灰色英文“DF”

屏幕点亮示意图

常见问题

烧录报错

原因

  • 如果Loop中延时过短或者不加延时会导致烧录超时

  • 错误的调用一些函数会导致计算机不能识别USB

解决办法

  • 先按住BOOT按键,再点击RST按键,最后松开BOOT按键.

串口无打印

解决办法

  • 检查USB CDC是否处于Enable状态
  • 使用其他的串口调试助手查看打印信息

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFRobot 商城购买链接