# esp32-wroom-car
**Repository Path**: spark_more/esp32-wroom-car
## Basic Information
- **Project Name**: esp32-wroom-car
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-06-17
- **Last Updated**: 2025-06-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 基于ESP32 开发板(MCU)遥控小车
嵌入式单片机ESP32Arduino 遥控小车(蓝牙版)
## 材料
ESP32主板1个、步进器1个(电机驱动)、3.7V电池1个(18000mAh)、车身架1个、2个轮胎和2个小马达、跳线若干。
### 小车主板
-
-
### 一、ESP32 NodeMCU 单片机
拓展板
由于ESP32引脚数量有限,使用拓展板来引出更多引脚
#### 引脚图
esp32 wroom
#### Arduino IDE 安装ESP32Audio库
1. 打开Arduino IDE。
3. 在菜单栏中,选择Sketch -> Include Library -> Manage Libraries...。
5. 在弹出的库管理器窗口中,输入ESP32库到搜索框中。
7. 在搜索结果中找到ESP32,点击Install按钮进行安装。
#### 选择开发板
1. 打开Arduino IDE。
2. 安装开发板
4. 在菜单栏中,选择工具 -> 开发板 -> 选择 ESP32 Dev Module 或者ESP32-WROOM-DAModule
#### 选择端口
#### 烧入程序引导
#### 驱动安装
### 二、(可变速)L2898N直流电机(步进器电机驱动板)
L298N电机驱动板通常需要四个控制引脚来驱动一个双电机:
- 两个用于控制电机A的方向,另外两个用于控制电机B的方向。
- 还有两个使能引脚(一个用于电机A,一个用于电机B),可以用来控制电机的速度,通常通过PWM信号实现。
1. OUT1和OUT2 电池1、OUT3和OUT4 电池2
2. 12V电源正极(暂不用)、GND电源负极接到esp32电源负极 、+5V接到esp32电源正极极
3. ENA:电机1PWM调速引脚
**注意**:不使用调速引脚,那两个塑料不要拔起来,拔起来后需要用“母对母”跳线连接
5. ENB:电机2PWM调速引脚
6. IN1和IN2:电机1 正反转/停止控制
7. IN3和IN4:电机2 正反转/停止控制
*
*
*
8.左右电机控制
9.引脚对接
(1)esp32
| L298N引脚 | ESP32引脚 |
|-----------|-----------|
| IN1 | 23 |
| IN2 | 22 |
| IN3 | 19 |
| IN4 | 18 |
| ENA | 21 |
| ENB | 5 |
-
-
-
(2)esp8266
[B站视频1](https://www.bilibili.com/video/BV1TW4y1y7PT/?spm_id_from=333.337.search-card.all.click&vd_source=73d9ae1d519db8c687b2d2e7b02c99ed)
[B站视频2](https://www.bilibili.com/video/BV1Xt411372X/?spm_id_from=autoNext&vd_source=73d9ae1d519db8c687b2d2e7b02c99ed)
### 三、(不可变速)L9110S直流电机(步进器电机驱动板)
-
-
-
## 遥控按钮
### 虚拟网页按键
1.程序烧入ESP32主板后,生成wifi热点:“遥控小车”;
2.使用手机或平板连接热点密码:12345678
3.浏览器地址:http://192.168.4.1
### 实体键
要实现一个ESP32作为遥控器端(esp32_wroom_car_client.ino),需要连接4个按钮到ESP32的GPIO引脚,并且当按钮被按下时,发送HTTP POST请求到另一个作为服务器端的ESP32(esp32_wroom_car_server.ino)。
1. 连接每个按钮的一个引脚到ESP32的GPIO引脚,另一个引脚连接到GND。
2. 在客户端代码中配置WiFi连接,以便它可以连接到服务器端ESP32创建的热点。
3. 为每个按钮设置GPIO引脚模式为输入,并启用内部上拉电阻。
4. 在主循环中检测按钮是否被按下,并发送相应的HTTP POST请求到服务器端。
## 常见问题
一、如果你已经将引脚设置为高电平,但是马达没有运动,可能有以下几个原因:
**解决办法**:
1. 电流不足:ESP32的GPIO引脚只能提供很小的电流(大约12mA),这可能不足以驱动马达。可能需要一个马达驱动器或者一个适当的晶体管来放大电流。
2. 连接问题:检查你的马达是否正确连接到ESP32和电源。
3. 马达问题:你的马达可能有问题。试着用另一个马达,或者直接用电源给马达供电,看看马达是否能运动。使用专门的马达控制板(如L293D或者L298N)来驱动你的马达。
4. 代码问题:检查你的代码是否正确设置了GPIO引脚为输出模式,并且设置了高电平。
二、引脚不够
**解决办法**:使用esp32 wroom 30pin 拓展板
三、不想使用USB type-c 数据线烧入
**解决办法**:使用usb to tll 引脚连接esp32
在连接ESP32-WROOM模块到USB to TTL转换器时,你需要按照以下方式连接引脚:
- 3V3 (或标记为VCC的USB to TTL转换器上的3.3V输出) 连接到ESP32的3V3引脚。
- GND (地线) 连接到ESP32的GND引脚。
- RXD (接收数据) 连接到ESP32的TXD引脚(通常是GPIO3)。
- TXD (发送数据) 连接到ESP32的RXD引脚(通常是GPIO1)。
确保连接时不要接错RXD和TXD,因为RXD接收数据,应该连接到ESP32的发送引脚(TXD),反之亦然。此外,不要将5V连接到ESP32,因为这可能会损坏模块。
四、调小旋转的幅度
要调整旋转的幅度,可以通过修改controlCarWithJoystick函数中判断摇杆位置的阈值来实现。
代码中,摇杆的X轴值小于1700时判断为左转,大于2400时判断为右转。你可以将这些阈值调整得更接近中心值(通常为2048),以减小识别为旋转的幅度。
例如,可以将阈值调整为:
- 左转的阈值从1700调整为1900
- 右转的阈值从2400调整为2200
这样,只有当摇杆更接近极端位置时,才会触发旋转命令,从而减小旋转的幅度。
修改后的controlCarWithJoystick函数如下:
```C++
void controlCarWithJoystick() {
int xValue = analogRead(joystickXPin); // 读取X轴值
int yValue = analogRead(joystickYPin); // 读取Y轴值
bool buttonPressed = digitalRead(joystickButtonPin) == LOW; // 读取按钮状态
// 根据摇杆位置决定动作
if (yValue < 1700) { // 前进
Serial.println("前进");
sendCommand(3);
} else if (yValue > 2400) { // 后退
Serial.println("后退");
sendCommand(5);
} else if (xValue < 1900) { // 左转
Serial.println("左");
sendCommand(1);
} else if (xValue > 2200) { // 右转
Serial.println("右");
sendCommand(2);
}
else if (buttonPressed) { // 按钮被按下
sendStopCommand();
}
else {
sendStopCommand(); // 摇杆在中间位置时停止。
}
}
```