7493浏览
查看: 7493|回复: 6

[项目] ESP32-CAM WIFI摄像头遥控车

[复制链接]
本帖最后由 云天 于 2022-1-30 15:47 编辑

ESP32-CAM WIFI摄像头遥控车图27

ESP32-CAM WIFI摄像头遥控车图30
想法很简单,用手机控制视频小车,硬件使用ESP32-CAM,手机程序制作软件使用App Inventor2。
【ESP322-CAM简介】
ESP322-CAM是安信可最新推出一款开发板模组,只需要一个ESP32模组和摄像头即可组成一个摄像头系统,ESP32-CAM是一款低成本物联网解决方案的开发板,基于ESP32模块开发的最小系统物联网产品,具有小体积,可板载摄像头的优势,适合快速原型搭建,DIY项目开发,物联网入门学习等。该产品集成了Wi-Fi,支持图片WiFI上传。

【引脚】
下图显示了ESP32-CAM引脚排列(AI-Thinker模块)。
ESP32-CAM WIFI摄像头遥控车图1

有三个GND引脚和两个引脚用于电源:3.3V或5V。

GPIO 1和GPIO 3是串行引脚。您需要这些引脚才能将代码上传到您的电路板。此外,GPIO 0也起着重要作用,因为它确定ESP32是否处于闪烁模式。当GPIO 0连接到GND时,ESP32处于闪烁模式。


以下引脚内部连接到microSD卡读卡器:

  • GPIO 14:CLK
  • GPIO 15:CMD
  • GPIO 2:数据0
  • GPIO 4:数据1(也连接到板载LED)
  • GPIO 12:数据2
  • GPIO 13:数据3

【烧录程序】
我们使用Arduino IDE对ESP32-CAM板进行编程。因此,您需要安装Arduino IDE以及ESP32插件。
1、Arduino IDE配置
Arduino IDE 中,转到文件>首选项
如下图所示,在“Additional Board Manager URLs”字段中输入https://dl.espressif.com/dl/package_esp32_index.json 。然后,单击“确定”按钮:
ESP32-CAM WIFI摄像头遥控车图2
转到工具>板>板管理器...,搜索“ESP32”并按下“ ESP32 by Espressif Systems ”的安装按钮:
ESP32-CAM WIFI摄像头遥控车图3
2、CameraWebServer示例代码

在Arduino IDE中,转到文件 > 示例 > ESP32 > 相机,然后打开CameraWebServer示例。

ESP32-CAM WIFI摄像头遥控车图4

应加载以下代码。

ESP32-CAM WIFI摄像头遥控车图5

在上载代码之前,您需要在以下变量中插入网络凭据:

  1. const char* ssid = "********";
  2. const char* password = "********";
复制代码

然后,确保选择正确的相机模块。在这种情况下,我们使用AI-THINKER模型。

ESP32-CAM WIFI摄像头遥控车图6

所以,注释掉所有其他模型,AI-THINKER模型取消注释:

  1. // Select camera model
  2. //#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
  3. //#define CAMERA_MODEL_ESP_EYE // Has PSRAM
  4. //#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
  5. //#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
  6. //#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
  7. //#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
  8. #define CAMERA_MODEL_AI_THINKER // Has PSRAM
  9. //#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
复制代码

定义电机控制引脚,发现GPIO12不能被占用,与FLASH信号有冲突。所以在下载程序时将12引脚拔下,当传好程序,重启后再插上。

  1.   /* Defining motor and servo pins */
  2. extern int DRV_A = 12;
  3. extern int DRV_B = 13;
  4. extern int DIR_A = 14;
  5. extern int DIR_B = 15;
复制代码

当下载程序时,如不拔下12引脚连接线,会出现如下错误。

ESP32-CAM WIFI摄像头遥控车图8

void setup()中,进行引脚初始化

  1. pinMode(DRV_A, OUTPUT);
  2.   pinMode(DRV_B, OUTPUT);
  3.   pinMode(DIR_A, OUTPUT);
  4.   pinMode(DIR_B, OUTPUT);
复制代码

在文件app_httpd.cpp中,初始引脚

  1. /* Initializing pins */
  2. extern int DRV_A;
  3. extern int DRV_B;
  4. extern int DIR_A;
  5. extern int DIR_B;
复制代码

在static esp_err_t cmd_handler(httpd_req_t *req)中,接收由手机APP发过来的http请求:/control?var=motor&val=对应数字(1为前进,2为后退,3为向左,4为向左,5为停止)

  1. if(!strcmp(variable, "motor")){
  2.         if(val==1)
  3.         {
  4.           Serial.println("Forward Left");
  5.           digitalWrite(DRV_A, HIGH);
  6.           digitalWrite(DRV_B, LOW);
  7.           digitalWrite(DIR_A, HIGH);
  8.           digitalWrite(DIR_B, LOW);
  9.           //digitalWrite(ledPin, HIGH);
  10.           httpd_resp_set_type(req, "text/html");
  11.           return httpd_resp_send(req, "OK", 2);
  12.         }else if(val==2){
  13.           Serial.println("Back");
  14.           digitalWrite(DRV_A, LOW);
  15.           digitalWrite(DRV_B, HIGH);
  16.           digitalWrite(DIR_A, LOW);
  17.           digitalWrite(DIR_B, HIGH);
  18.          
  19.          
  20.           httpd_resp_set_type(req, "text/html");
  21.           return httpd_resp_send(req, "OK", 2);
  22.         }
  23.         else if(val==3){
  24.           Serial.println("Left");
  25.           digitalWrite(DRV_A, LOW);
  26.           digitalWrite(DRV_B,  LOW);
  27.           digitalWrite(DIR_A, HIGH);
  28.           digitalWrite(DIR_B, LOW);
  29.          
  30.          
  31.           httpd_resp_set_type(req, "text/html");
  32.           return httpd_resp_send(req, "OK", 2);
  33.         }
  34.         else if(val==4){
  35.           Serial.println("Right");
  36.           digitalWrite(DRV_A, HIGH);
  37.           digitalWrite(DRV_B,  LOW);
  38.           digitalWrite(DIR_A, LOW);
  39.           digitalWrite(DIR_B, LOW);
  40.          
  41.          
  42.           httpd_resp_set_type(req, "text/html");
  43.           return httpd_resp_send(req, "OK", 2);
  44.         }
  45.         else if(val==5){
  46.           Serial.println("Stop");
  47.           digitalWrite(DRV_A, LOW);
  48.           digitalWrite(DRV_B, LOW);
  49.           digitalWrite(DIR_A, LOW);
  50.           digitalWrite(DIR_B, LOW);
  51.           httpd_resp_set_type(req, "text/html");
  52.           return httpd_resp_send(req, "OK", 2);
  53.         }
  54.         }
复制代码

现在,代码已准备好

下载附件CameraWebServer原例.zip

(原例)

下载附件CameraWebServer修改.zip

(修改)

【ESP32-CAM上传代码】

使用USB to Serial 转串口。

ESP32-CAM WIFI摄像头遥控车图11

ESP32-CAM WIFI摄像头遥控车图12

在烧录的时候要注意,要将开发板中的GPIO0连接到GND,烧录完毕后去掉连接。其他的RX,TX连接就不多说了。


ESP32-CAM WIFI摄像头遥控车图7
您还应该按下板载重置按钮以在闪烁模式下重新启动ESP32。
保证模块输入电源至少5V 2A,否则图片会有几率出现水纹。
【获取IP地址】

上传代码后,断开GPIO 0与GND的连接。以波特率115200打开串行监视器。按ESP32-CAM板载复位按钮。ESP32 IP地址应打印在串行监视器中。

ESP32-CAM WIFI摄像头遥控车图13

【访问视频流服务器】

现在,可以在本地网络上访问您的相机流媒体服务器。打开浏览器并键入ESP32-CAM IP地址。按Start Streaming按钮开始视频流。看到视频,说明Esp32配置成功。

ESP32-CAM WIFI摄像头遥控车图14

【手机APP编写程序】
使用App Inventor2编写手机程序。1、界面设计
ESP32-CAM WIFI摄像头遥控车图15
2、逻辑设计
ESP32-CAM WIFI摄像头遥控车图16
视频流地址:http://IP:81/stream
ESP32-CAM WIFI摄像头遥控车图17
修改视频帧清晰地址:http://IP/control?var=quality&val=滑动条值
ESP32-CAM WIFI摄像头遥控车图18

修改视频帧大小地址:http://IP/control?var=framesize&val=下拉框选中项索引
ESP32-CAM WIFI摄像头遥控车图20


电机控制指令地址:http://IP/control?var=motor&val=数字
ESP32-CAM WIFI摄像头遥控车图19
下载附件esp32.zip
【硬件组装】
1、小车底盘
ESP32-CAM WIFI摄像头遥控车图22
2、电机驱动
ESP32-CAM WIFI摄像头遥控车图23
3、电源使用两节锂电池供电,利用变压模块提供两个5V接口。
ESP32-CAM WIFI摄像头遥控车图32
制作USB供电线
ESP32-CAM WIFI摄像头遥控车图31
4、ESP32 CAM
ESP32-CAM WIFI摄像头遥控车图24

ESP32-CAM WIFI摄像头遥控车图25


5、组装成品车
ESP32-CAM WIFI摄像头遥控车图26ESP32-CAM WIFI摄像头遥控车图28ESP32-CAM WIFI摄像头遥控车图29
【演示视频】

海燕peter  学徒

发表于 2022-5-18 09:10:22

您好,在DF创客社区看到您关于ESP32-CAM摄像头遥控车的项目,我也在做这个项目,但是手机端一直显示Header fields are too long for server to interpret,在网上查阅了很久都说是因为ARDUINO ide编译的原因,您遇到过这个问题吗?
回复

使用道具 举报

海燕peter  学徒

发表于 2022-5-18 09:12:28

手机用edge浏览器可以直接访问,但百度浏览器不行。用appinventor的web浏览器也不行。求助各位大佬……
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2022-5-19 19:18:33

海燕peter 发表于 2022-5-18 09:10
您好,在DF创客社区看到您关于ESP32-CAM摄像头遥控车的项目,我也在做这个项目,但是手机端一直显示Header  ...

我换了一个手机,问题解决!
回复

使用道具 举报

lv7MF1HbRBHm  学徒

发表于 2022-6-19 16:06:32

海燕peter 发表于 2022-5-18 09:10
您好,在DF创客社区看到您关于ESP32-CAM摄像头遥控车的项目,我也在做这个项目,但是手机端一直显示Header  ...

谁有 APP inventor 的地址,给一下喂,感谢各位大佬了,,
回复

使用道具 举报

lv7MF1HbRBHm  学徒

发表于 2022-6-19 16:07:52

谁有 APP inventor 的地址,给一下喂,感谢各位大佬了,,
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2022-6-29 19:11:55

lv7MF1HbRBHm 发表于 2022-6-19 16:07
谁有 APP inventor 的地址,给一下喂,感谢各位大佬了,,

https://app.wxbit.com/
http://app.gzjkw.net/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail