ESP32CAM 视频小车

简介


请添加图片描述

演示视频

开源esp32视频小车支持自动发现

这是最后一个可以轻松使用arduino ide编译的版本源码以打标签可在此下载压缩包https://gitcode.net/qq_26700087/esp32camcar/-/releases/0.0.3

当前的可以通过服务端远程操作的版本

esp32cam 4g远程小车

源码路径https://gitcode.net/qq_26700087/esp32camcar 对应标签0.0.3.1

所需原料

  • esp32Cam开发板带摄像头

    默认是ov2640,本文代码只支持ov2640。若更换了摄像头请修改src目录的下cam.cpp的摄像头初始化配置。

  • 电机驱动板:

    这里的代码测试过迷你超L298NL9110S两路电机驱动板,其它的两路电机驱动板也可尝试。

    由于esp32Cam的io被摄像头和sd卡槽大量占用,剩余的io有较多strapping 引脚,我们使用到strapping引脚去连接驱动板,而L9110S一旦上电,接收PWM输入的针脚会有反灌电压到MCU,而ESP系列芯片上电时会检测strapping管脚的电平状态来决定芯片的工作模式,所以反灌电压到strapping引脚产生不正确的电平状态导致无法启动。

    若只有L9110S可以实际使用中先将ESP32cam上电再将L9110S上电。

    更推荐前者迷你超L298N。(参考下图,大约售价在1.3 ~2元,不要买成更贵的还装了散热片那种,那种没有测试过当前代码)。

迷你超L298N

  • 供电:两节 18650电池

  • 18650电池座两节版本

  • 本文使用的小车底盘,含4个TT电机和轮子。但代码是两路的驱动的,鄙人使用两路驱动板驱动四个马达,动力层面是四驱的。

    此处可按自己喜好选用两路或者四路。

  • 杜邦线若干。

  • USB-TTL烧录器,或者ESP32-CAM专用的TTL烧录底座。

  • 天线可选

    在esp32s模组上有个天线接口,可以外接天线增加wifi效果,但注意天线接口附近有个0欧电阻,需要将其掉头连接外接天线或者去掉它用一坨锡代替连接外接天线。

  • 散热片可选

    大量传图芯片本身会较严重发热,而这个降压的电路比较简单,这里输入7.4v也会造成严重发热。

关于供电

L9110S的输入在 2.5 V~ 12 V

ESP32-CAM 的5V引脚不止可以输入5V。

官网可以看到原理图如下(也可以点击前面的链接跳转)。

在这里插入图片描述

可以看到ESPCAM上的AMS1117-3.3 模块的输入端是直连5V引脚的

AMS1117-3.3的输入范围 4.75~15V,官方建议ESP32CAM的5V引脚 至少5V 2A否则图片会有水纹。

因而为了简便供电,我们可以与 L298N或L9110S 的输入取一个并集。5 ~ 10V。虽然并联会分流,但这里使用两节18650输出7.4V,实测没有影响,因为不需要输入特别精准的电压。

当然此处还要考虑马达可以承受的电压。普通的TT电机说的是6V上限。不过我实测在两节18650电池输入,在L9110S的输出端接了四个TT马达并无异常。

接线

两种接线大同小异

  • 迷你超L298N

在这里插入图片描述

  • L9110S两路

Esp32CamCar接线图

有些L9110S标记的控制引脚可能与图中不一致,大体上按照两个IO控制一个电机接口的方式即可

注意:在esp32Cam启动之前将L9110S的VCC和GND与电源断开,否则会导致ESP32Cam无法启动。

代码

开发环境

不再累述,参考本人上一篇esp32cam 服务端远程视频方案中关于ardunio ide 准备esp32cam环境 以及 platformio 准备esp32cam 环境相关内容。

新建项目时请选择对应的开发板AI Thinker ESP32-CAM。platformio注意framework选择ardunio。

该教程将不再更新,请具体参考设备代码和安卓代码的readme ,因为每当新特性更新,教程就会过时。

以下内容已过时

代码路径

云逸之 / Esp32CamCar · GitCode :https://gitcode.net/qq_26700087/esp32camcar

点个star ⭐️,烧录不报错。

使用platformio的同学,注意源码中platformio.ini的已指定端口请按自己实际情况修改。
使用ardunio ide的同学,为了保险起见,可以将src目录下内容拷贝到一个新的目录,把main.cpp改名,main.ino或者其他以ino结尾的名字。
修改main.cpp 其中的wifi的ssid和密码以及上位机的ip.
但如果你使用手机热点,可能热点所在ip与以下的host值一致,而热点的ssid和密码可以设置,你也可以不用修改ssid和密码,重设手机热点wifi也行。查看热点所在的ip参考后文–安卓上位机项目中的readme.

const char* ssid = "test0";
const char* passwd = "12345687";

安卓上位机

该项目的发行版中有apk文件的压缩包可以下载云逸之 / Light Handler · GitCode
需要查看当前手机的ip可以,也可以借助该app。
本人使用手机开启2.4G(开热点时注意必须2.4G)的wifi热点,再使用esp32Cam连接该上位机,进行控制。这样可以方便在户外操作。
但软件对组网方式无限制,你依然可以使用无线路由器,然后esp32Cam和以及手机加入连接该路由器,然后进行控制。

硬件部件 乐鑫ESP32S× 1个 Raspberry Pi Pi NoIR相机V2× 1个 软件应用程序和在线服务 Arduino IDE 这次我们为机器人配备了摄像头,使其成为监控机器人车。可以使用ESP32-CAM模块轻松构建此网络控制的监视车。除了ESP32-Camera模块之外,在这里我们还将使用两个带有Robot底盘的DC电动机和L293D电动机驱动器模块来制造此Robotic小车ESP32是构建基于IoT的项目的最受欢迎的开发板之一的AI-思想者ESP32-CAM模块带有一个ESP32-S芯片,非常小的尺寸OV2640照相机和microSD卡插槽。MicroSD卡插槽可用于存储从相机拍摄的图像。在此,HTTP通信协议将用于通过Web浏览器从OV2640摄像机接收视频流。网页上还将包含按钮,用于在上,左,右,前进和后退方向上移动汽车,如上图所示。 电路原理图 ESP32-监控摄像头的所有连接信息如下: ESP32-CAM没有USB连接器,因此您需要一个FTDI板将代码上传到ESP32-CAMESP32的VCC和GND引脚与FTDI板的VCC和GND引脚连接。ESP32的Tx和Rx与FTDI板的Rx和Tx连接。两颗直流电机通过L293D模块连接到ESP32。模块引脚连接到ESP32的IO4,IO2,IO14和IO15引脚。 注意:在上传代码之前,将IO0接地。IO0确定ESP32是否处于闪烁模式。当GPIO 0连接到GND时,ESP32处于闪烁模式。 我们通过使用现成的机器人底盘,车轮和直流电动机来构建机器人。我们使用电池为电机驱动模块和ESP32-CAM供电。这是我的监视机器人的外观:
ESP8266遥控小车是一种基于ESP8266微控制器的智能小车项目。ESP8266是一款低成本的Wi-Fi微控制器,广泛应用于物联网(IoT)项目中。通过将ESP8266与电机驱动模块、传感器和其他电子元件结合,可以实现远程控制的小车。 ### 主要组成部分 1. **ESP8266模块**:作为主控制器,负责处理无线通信和控制逻辑。 2. **电机驱动模块**:如L298N,用于控制小车的电机。 3. **直流电机**:驱动小车移动。 4. **电源模块**:为整个系统提供电力。 5. **其他传感器**:如超声波传感器,用于避障。 ### 功能 1. **远程控制**:通过Wi-Fi连接到手机或电脑,使用相应的应用程序或网页界面控制小车的移动。 2. **自动避障**:通过超声波传感器检测前方障碍物,并自动避开。 3. **实时监控**:可以添加摄像头模块,实现小车的实时视频监控。 ### 实现步骤 1. **硬件连接**:将ESP8266模块、电机驱动模块、直流电机和其他传感器按照电路图连接。 2. **编写代码**:使用Arduino IDE或其他开发环境编写控制代码,实现小车的移动控制和传感器数据处理。 3. **配置无线网络**:将ESP8266配置为Wi-Fi客户端,连接到指定的无线网络。 4. **开发控制界面**:在手机或电脑上开发一个简单的网页界面或应用程序,通过按钮控制小车的移动。 ### 示例代码 ```cpp #include <ESP8266WiFi.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; WiFiServer server(80); void setup() { Serial.begin(115200); pinMode(16, OUTPUT); // 控制电机 pinMode(5, OUTPUT); // 控制电机 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } server.begin(); Serial.println("Connected to WiFi"); } void loop() { WiFiClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { String command = client.readStringUntil('\n'); if (command == "FORWARD") { digitalWrite(16, HIGH); digitalWrite(5, LOW); } else if (command == "BACKWARD") { digitalWrite(16, LOW); digitalWrite(5, HIGH); } else if (command == "STOP") { digitalWrite(16, LOW); digitalWrite(5, LOW); } } } client.stop(); } } ``` ### 优点 - **低成本**:ESP8266模块价格低廉,适合DIY项目。 - **灵活性**:可以通过编程实现多种功能。 - **易用性**:与Arduino IDE兼容,编程简单。 ### 缺点 - **功率限制**:ESP8266的功率输出有限,需要外部电机驱动模块。 - **复杂性**:需要一定的电子和编程知识。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值