# 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 遥控小车(蓝牙版) image ## 材料 ESP32主板1个、步进器1个(电机驱动)、3.7V电池1个(18000mAh)、车身架1个、2个轮胎和2个小马达、跳线若干。 ### 小车主板 - image - ### 一、ESP32 NodeMCU 单片机 image 拓展板 由于ESP32引脚数量有限,使用拓展板来引出更多引脚 #### 引脚图 esp32 wroom #### Arduino IDE 安装ESP32Audio库 1. 打开Arduino IDE。 3. 在菜单栏中,选择Sketch -> Include Library -> Manage Libraries...。 5. 在弹出的库管理器窗口中,输入ESP32库到搜索框中。 7. 在搜索结果中找到ESP32,点击Install按钮进行安装。 #### 选择开发板 1. 打开Arduino IDE。 2. 安装开发板 image 4. 在菜单栏中,选择工具 -> 开发板 -> 选择 ESP32 Dev Module 或者ESP32-WROOM-DAModule image image #### 选择端口 #### 烧入程序引导 image #### 驱动安装 image ### 二、(可变速)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 正反转/停止控制 * * image * image 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 image ### 实体键 要实现一个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(); // 摇杆在中间位置时停止。 } } ```