跑跑啦航模

  ESP32-CAM模块集成了ESP32芯片和OV2640摄像头,支持WiFi和蓝牙,成本不到30元。用它做一台手机遥控视频小车,全套下来不到100元。

一、材料清单

  ESP32-CAM模块(带OV2640摄像头)× 1

  FT232 USB转串口模块(用于烧录程序)× 1

  L298N电机驱动模块 × 1

  直流减速电机 × 2 + 小车底盘

  7.4V锂电池 + 降压模块(输出5V给ESP32)

  杜邦线若干

二、ESP32-CAM引脚说明

  ESP32-CAM的GPIO资源有限,但做视频小车刚好够用:

  GPIO 1:U0TXD(串口发送)

  GPIO 3:U0RXD(串口接收)

  GPIO 2:内置LED(可用于指示状态)

  GPIO 4:摄像头闪光灯(也可以做普通IO)

  GPIO 12/13/14/15:可用于电机控制

  注意:GPIO 0 拉低进入下载模式。

三、烧录程序

  1. 将ESP32-CAM的U0TXD接FT232的RXD,U0RXD接FT232的TXD。

  2. GPIO 0 接 GND(进入下载模式),FT232的3.3V接ESP32的3.3V,GND共地。

  3. 在Arduino IDE中安装ESP32开发板支持包。

  4. 选择开发板 AI Thinker ESP32-CAM。

  5. 烧录完成后,断开GPIO0的GND连接,按RST复位。

四、Web视频遥控代码

#include "esp_camera.h"
#include <WiFi.h>
#include <WebServer.h>

// WiFi配置
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";

// 摄像头引脚配置(ESP32-CAM)
#define PWDN_GPIO_NUM    32
#define RESET_GPIO_NUM   -1
#define XCLK_GPIO_NUM    0
#define SIOD_GPIO_NUM    26
#define SIOC_GPIO_NUM    27
#define Y9_GPIO_NUM      35
#define Y8_GPIO_NUM      34
#define Y7_GPIO_NUM      39
#define Y6_GPIO_NUM      36
#define Y5_GPIO_NUM      21
#define Y4_GPIO_NUM      19
#define Y3_GPIO_NUM      18
#define Y2_GPIO_NUM      5
#define VSYNC_GPIO_NUM   25
#define HREF_GPIO_NUM    23
#define PCLK_GPIO_NUM    22

// 电机引脚
#define MOTOR_A1 12
#define MOTOR_A2 13
#define MOTOR_B1 14
#define MOTOR_B2 15

WebServer server(80);

void handleRoot() {
  String html = "<!DOCTYPE html><html><body>";
  html += "<h2>ESP32-CAM 智能小车</h2>";
  html += "<img src=\"/stream\" width=320 height=240><br>";
  html += "<button onmousedown='fetch(\"/fwd\")' onmouseup='fetch(\"/stop\")'>前进</button><br>";
  html += "<button onmousedown='fetch(\"/left\")' onmouseup='fetch(\"/stop\")'>左转</button>";
  html += "<button onmousedown='fetch(\"/right\")' onmouseup='fetch(\"/stop\")'>右转</button><br>";
  html += "<button onmousedown='fetch(\"/bwd\")' onmouseup='fetch(\"/stop\")'>后退</button>";
  html += "</body></html>";
  server.send(200, "text/html", html);
}

void setup() {
  Serial.begin(115200);
  
  // 电机引脚初始化
  pinMode(MOTOR_A1, OUTPUT);
  pinMode(MOTOR_A2, OUTPUT);
  pinMode(MOTOR_B1, OUTPUT);
  pinMode(MOTOR_B2, OUTPUT);

  // 摄像头初始化
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  // ...(完整配置见ESP32-CAM示例代码)
  esp_camera_init(&config);

  // WiFi连接
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  Serial.println(WiFi.localIP());

  // 路由
  server.on("/", handleRoot);
  server.on("/stream", HTTP_GET, handleStream);
  server.on("/fwd", forward);
  server.on("/bwd", backward);
  server.on("/left", turnLeft);
  server.on("/right", turnRight);
  server.on("/stop", stopMotor);
  server.begin();
}

void loop() {
  server.handleClient();
}

五、运行效果

  烧录成功后,打开串口监视器查看ESP32获取的IP地址。手机浏览器输入该IP,即可看到实时画面和遥控按钮。按住按钮小车前进/转向,松开停止。

六、常见问题

  Q:烧录失败怎么办?

  A:确认GPIO0已接GND,FT232选择3.3V模式,串口波特率建议115200。

  Q:摄像头画面卡顿?

  A:在代码中降低图片质量(增加压缩比),或降低分辨率到QVGA(320x240)。

跑跑啦航模详情

联系手机15058675618 qq售后群号241350086 微信号paopaola_com
长距离FPV无人机,高清传感器模块,终身保修和升级服务。