ESP32传感器模块编程实践(一)DIY智能WIFI视频控制小车

文章目录

一.概要

智能小车项目融合了机械、电子、控制、计算机等多学科知识,是提升综合能力的绝佳载体。智能小车的设计是一个"小而全"的工程缩影,它让你在有限的时间和成本内,模拟了真实产品的开发流程,是一次非常宝贵的工程实践和能力证明。体验"从0到1"的创造:从一堆散落的零件和抽象的代码,到最终组装出一台能听话运行的小车,这种创造的成就感是无可替代的。

想让小车拥有"眼睛",还能用手机或电脑远程操控?本文就介绍做一个WIFI视频控制小车,采用直流有刷电机+ESP32-CAMWIFI视频模块。通过电脑或者手机就能实现小车的前进,后退,左转,右转,停止等动作,还能把小车前方画面实时传回手机或电脑浏览器。

二.实验模型原理

1.硬件连接原理框图

模型主要分为两部分:视频采集WIFI连接单元,动作执行单元。

图中动作执行单元L9110S驱动直流有刷电机,视频采集WIFI连接单元是ESP32-CAM模块实现WIFI连接和视频采集,ESP32-CAM同时输出控制L9110S驱动电机。

信号线连接:L9110S模块接ESP32-CAM模块的IO3,IO13,IO14,IO15引脚。

2.各个传感器模块控制原理

WIFI视频采集模块原理

ESP32-CAM模块的硬件主要由主控芯片和摄像头传感器两部分构成。

主控芯片 (ESP32):这是模块的"大脑"。它通常搭载一颗双核32位处理器,主频高达 240MHz。为了应对图像处理所需的大量数据,芯片除了内置的 520KB SRAM 外,还外置了 4MB 的 PSRAM 作为图像帧缓冲区。ESP32 内部集成了 802.11 b/g/n Wi-Fi 和蓝牙 4.2,为无线通信提供了基础。

摄像头传感器 (OV2640):这是模块的"眼睛"。它是一颗 200 万像素的 CMOS 图像传感器,最高支持 1600x1200 (UXGA) 分辨率,并直接支持 JPEG 格式的硬件压缩输出,这极大地减轻了主控芯片的负担。

ESP32-CAM模块的I/O引脚定义如下:

ESP32-CAM模块固件程序可以通过 USB转 TTL模块连接实现硬件连接下载,也可以用ESP32-CAM专用的烧录底座下载,连接的原理是一样的。

硬件连接5根线:

  • TX ↔ RX 交叉(绿 / 蓝线)
  • GND ↔ GND 共地(黑线)
  • 5V ↔ 5V 供电(红线)
  • GPIO0 ↔ GND 烧录时短接,烧完拔掉 (黄线 / 黑色跳线)

    软件开发环境:

使用Arduino-IDE_2.2.1开发软件实现ESP32-CAM 固件的代码编译与下载。主要代码功能就是实现摄像头初始化、Wi-Fi 连接、Web 服务器、MJPEG 视频流、外设控制这些功能。

直流有刷电机控制原理

H桥可控制电机的运动和正反转,H桥式电机驱动电路包括4个三极管和一个电机。 要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。

当Q1和Q4导通时,电流将经过Q1从左往右流过电机,在经过Q4流到电源负极,这时图中电机可以顺时针转动。

当Q3和Q2导通时,电流将经过Q3从右往左流过电机,在经过Q2流到电源负极,这时图中电机可以逆时针转动。

L9110是为消费类产品,玩具和其他低压或者电池供电的运动控制类应用提供了一个集成的电机驱动器解决方案。此器件能够驱动一个直流有刷电机,由一个内部电荷泵生成所需的栅极驱动电压电路和4个功率NMOS组成H桥驱动,集成了电机正转/反转/停止/刹车四个功能。

L9110功能框图

基本工作模式

a)待机状态

在待机状态下, INA=INB=L。包括驱动功率管在内的所有内部电路都处于关断状态。电路消耗极低 的电流。此时马达输出端OUTA 和OUTB 都为高阻状态。

b)正转模式

正转模式的定义为: INA=H,INB= L, 此时马达驱动端OUTA 输出高电平,马达驱动端OUTB 输出 低电平时,马达驱动电流从OUTA 流入马达,从OUTB 流到地端,此时马达的转动定义为正转模式。

c)反转模式

反转模式的定义为: INA=L,INB= H, 此时马达驱动端OUTB 输出高电平,马达驱动端OUTA 输出 低电平时,马达驱动电流从OUTB 流入马达,从OUTA 流到地端,此时马达的转动定义为反转模式。

d)刹车模式

刹车模式的定义为: INA=H,INB=H ,此时马达驱动端OUTA 以及OUTB 都输出低电平,马达内存储的能量将通过OUTA 端NMOS 管或者OUTB 端NMOS 快速释放,马达在短时间内就会停止转动。

注意在刹车模式下电路将消耗静态功耗。

三.WIFI视频小车控制流程

1.电池接到板子后,打开板子上的开关。

2.操作电脑的WIFI配置,找到ESP32-GZWELIN网络热点,密码:12345678,电脑连接上之后,浏览器界面输入192.168.4.1,电脑就能跟小车摄像头连接,能看到小车前方的画面。

3.点击浏览器界面的前进,后退,左转,右转按钮,ESP32-CAM上的WIFI模块收到信息后,控制L9110模块驱动小车按照控制指令进行运动。

四.WIFI视频控制小车程序

ESP32CAM程序工程

确定视频模块的WIFI用户名,密码,模块默认的IP地址是192.168.4.1。

ESP32模块收到WIFI的控制指令就驱动相应的I/O引脚驱动L9110S,从而控制两个电机运动。

就拿前进来说,收到屏幕的Forward指令,驱动IO14与IO13输出高电平,其余引脚为低电平,IO14与IO13分别与L9110S的A-1B,B-1A相连,g根据电机的输入输出逻辑表,两个电机是相反方向转动。但由于两个电机是左右相反安装,所以最终驱使小车同向方面前进了。

c 复制代码
#define MOTOR_PIN_1 14  //IO14
#define MOTOR_PIN_2 15  //IO15
#define MOTOR_PIN_3 3  //IO3
#define MOTOR_PIN_4 13  //IO13

if (!strcmp(variable, "forward")) {
    Serial.println("Forward");
    digitalWrite(MOTOR_PIN_3, 0);
    digitalWrite(MOTOR_PIN_1, 1);
    digitalWrite(MOTOR_PIN_2, 0);
    digitalWrite(MOTOR_PIN_4, 1);
    //digitalWrite(MOTOR_PIN_5, 0);

  } else if (!strcmp(variable, "left")) {
    Serial.println("Left");
    digitalWrite(MOTOR_PIN_3, 0);
    digitalWrite(MOTOR_PIN_1, 0);
    digitalWrite(MOTOR_PIN_2, 0);
    digitalWrite(MOTOR_PIN_4, 1);
   // digitalWrite(MOTOR_PIN_5, 0);
  } else if (!strcmp(variable, "right")) {
    Serial.println("Right");
    digitalWrite(MOTOR_PIN_3, 0);
    digitalWrite(MOTOR_PIN_1, 1);
    digitalWrite(MOTOR_PIN_2, 0);
    digitalWrite(MOTOR_PIN_4, 0);
    //digitalWrite(MOTOR_PIN_5, 0);
  } else if (!strcmp(variable, "backward")) {
    Serial.println("Backward");
    digitalWrite(MOTOR_PIN_3, 1);
    digitalWrite(MOTOR_PIN_1, 0);
    digitalWrite(MOTOR_PIN_2, 1);
    digitalWrite(MOTOR_PIN_4, 0);
   // digitalWrite(MOTOR_PIN_5, 0);
  } else if (!strcmp(variable, "stop")) {//全低
    Serial.println("Stop");
    digitalWrite(MOTOR_PIN_3, 0);
    digitalWrite(MOTOR_PIN_1, 0);
    digitalWrite(MOTOR_PIN_2, 0);
    digitalWrite(MOTOR_PIN_4, 0);
   // digitalWrite(MOTOR_PIN_5, 0);
  } else {
    res = -1;
  }

五.实验效果视频

ESP32-CAM视频控制小车

ESP32-CAM视频控制小车

六.小结

这套小车不仅是遥控玩具,更是学习嵌入式、WiFi通信、视频传输和电机控制的综合平台,从零搭建,到手机屏上看见小车眼中的世界,再到指尖轻点让它前进后退、左转右转,成就感十足。无论是课堂演示、毕业设计,还是创客比赛,ESP32-CAM的WiFi视频遥控小车,都能让你用低成本体验智能控制的乐趣。

相关推荐
2501_922639582 小时前
率能半导体 SS6628E直流双向马达驱动芯片:20V/7A,覆盖电子锁、玩具、无线充电、机器人四大应用场景
单片机·嵌入式硬件·硬件工程
硅基造物主2 小时前
STM32 从 0 到 1 做智能家居(五):工程结构与代码骨架
stm32·单片机·嵌入式硬件·智能家居
蒲公英内测分发2 小时前
智能家居厂商有多个产品线,包装上的 App 下载入口该共用还是分开?
android·人工智能·数码相机·机器人·智能家居·智能硬件
smartpi_ai2 小时前
机芯智能离线语音模块实战问答:SU-03T、CI-03T、SU-63T 与 JX-A7T 高频问题排查
人工智能·单片机·嵌入式硬件·ci/cd·语音识别
2501_922639583 小时前
率能半导体 SS6635E直流双向马达驱动芯片:30V/4.5A,覆盖电子锁、玩具、无线充电、机器人四大应用场景
单片机·嵌入式硬件·硬件工程
wuyk5553 小时前
TinyML 初探:在 MCU 上部署异常检测模型,实现本地振动故障诊断
stm32·单片机·嵌入式硬件·重构
新晨单片机设计3 小时前
S031A-基于STM32单片机指纹考勤系统【Proteus仿真+Keil程序+原理图】
stm32·单片机·嵌入式硬件·proteus·指纹考勤系统
元器件BOM超人3 小时前
STM32F103R8T6 中密度Cortex-M3 MCU 解析
stm32·单片机·嵌入式硬件
服务器硬件项目经理3 小时前
《超节点修仙录》· 第一卷·炼气期【第02话】 超节点的「身体构造」——CPU、GPU、内存、网卡都是干啥的
服务器·嵌入式硬件·gru·硬件工程·硬件