esp32-cam摄像头+远程遥控小车

news/2024/10/23 10:30:26/

目录

      • 1、esp32cam开发
      • 2、51单片机开发
      • 3、手机端开发
      • 4、总结

先来说说需要的器件,因为是心血来潮做的一个简单的实验,所以用的也都是最基础的东西。淘宝买的一个小车底板,外加四个带轮子的减速电机,一个51单片机最小系统开发板(因为32的不会),一个L298N电机驱动模块,3块3.7V锂电池,一个电源降压模块,一个esp32cam,还有一个esp8266,若干杜邦线。
再说一说弊端,摄像头模块只能在局域网下访问,所以我们可以在外面控制家里的摄像头,却不能把小车带到外面,当然你也可以连接你的手机热点,但那样也就不是远程遥控了。如果你有一个树莓派或是4G模块,自然没有这个问题。

1、esp32cam开发

1)这里我们使用arduino IDE开发,网上也有很多使用安信可开发环境,可以自行百度,这里不再赘述。
首先打开arduino IDE后要先安装esp32开发板。点击文件–>首选项–>附加开发板管理网址输入https://dl.espressif.com/dl/package_esp32_index.json。
然后点击工具–>开发板–>开发板管理器搜索esp32,点击下载安装,安装过程会有些慢。
完成之后点击工具–>开发板,选择ESP32 Wrover Module
点击Partition scheme选择Huge APP。如图在这里插入图片描述
2)点击文件–>示例–>ESP32–>Camera–>CameraWebServer。如图在这里插入图片描述
生成代码后修改ssid和password为自己的WiFi名和密码。注意烧录时要把IO0和GND短接,否则程序烧不进去。如图在这里插入图片描述
3)拔出IO0和GND短接的线,按一下复位键,若出现以下画面,则esp32cam配置成功在这里插入图片描述
4)这里我们使用花生壳内网穿透到上面这个IP,端口号81,访问时要加上“/stream”,也就是你的花生壳域名/stream访问图片流。

2、51单片机开发

1)单片机部分主要用来产生PWM波来控制电机的转速和方向,用到一个8266来接收手机发出的信号,8266和单片机串口通信,通过这个信号单片机产生相应的PWM波。
8266我们依旧使用MQTT协议连接onenet平台,具体可以看上一篇博客。在onenet创建一个产品然后添加一个设备,注意是基于旧版MQTT协议的。产品号设备号鉴权信息记着这些就行。
2)在这里我把同一侧两个电机接到一起,因为同侧两个电机是同步的,转速和方向都一样。所以只需要产生两路PWM波控制两侧的电机,通过差速实现转弯。这里没有使用舵机控制的前桥拐弯,实在有些简陋。暂时这么用,以后再改进。
3)如图,1和6是A和B两个端口使能,2、3是A输入端,4、5是B输入端,7、8分别是AB输出端接电机。9、10是8266和单片机的串口通信,11、12接12V和GND给L298N和电机供电。线接的连七八糟,凑合着看。
在这里插入图片描述
4)单片机使用定时器产生PWM波,其实就是高电平的占空比,在一个周期内,占空比越高则电机速度越快,而两个使能端就是接单片机产生的PWM波。这里使用Keil4编程,烧录使用stc-isp-15xx,在网上都可以下载到。这里不再提供。看主要代码

 TMOD=0X22;  //双定时器都打开工作方式2SCON=0X50;TH1=0XFD;    //9600的波特率TL1=0XFD;TL0=245;	 //1ms定时器TH0=245;ET0=1;        //打开定时器0中断TR0=1;       //定时器0开始计数TR1=1;        //定时器1开始计数EA=1;       //打开总中断ES=1;      //打开串口中断PS=1;       //串口中断有最高优先级
if(flag == 1){		  //前进Count++;           //时间计数 每1ms加一PWM_OUT2=0;PWM_OUT1=1;PWM_OUT4=0;PWM_OUT3=1;if(Count<=pwm)    //计数时间小于规定占空比{ENA = 1;ENB = 1;}else                      //到达了规定时间{ENA = 0;ENB = 0;if(Count>=100)   //计数值到了100{Count=0;     //计数值清零}}}

5)8266的开发也是使用arduino IDE,下载esp8266开发板,具体步骤参见我的上一篇博客。在这里我们使用PubSubClient里的mqtt_esp8266。主要代码

void callback(char* topic, byte* payload, unsigned int length) {for (int i = 0; i < length; i++) {    Serial.print((char)payload[i]);}
}

把接受到的消息通过串口发送到单片机进行处理。

3、手机端开发

1)使用Android Studio编写程序。只有四个按键和一个显示窗口,使用的是webview加载上面提到的花生壳内网穿透域名/stream,这个网页显示的就是摄像头的图片流。页面非常的简单,没有花里胡哨。看图在这里插入图片描述
2)因为是内网穿透加外网访问,所以图传的时候我把图片分辨率调的很小,以免卡顿,但若在局域网内访问则会流畅很多。

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);im = (ImageView)findViewById(R.id.image);btn_go = (ImageButton)findViewById(R.id.go);btn_back = (ImageButton)findViewById(R.id.back);btn_left = (ImageButton)findViewById(R.id.left);btn_right = (ImageButton)findViewById(R.id.right);btn_go.setOnTouchListener(listnner1);//前进btn_back.setOnTouchListener(listnner1);//后退btn_left.setOnTouchListener(listnner1);//左btn_right.setOnTouchListener(listnner1);//右WebView webView = (WebView)findViewById(R.id.wv);webView.loadUrl("http://*******/stream");//******为花生壳域名webView.setWebViewClient(new WebViewClient());try {initClient();//连接ONENET} catch (MqttException e) {e.printStackTrace();}}

3)其实我觉得这个摄像头模块用作家门口的监控会更加贴切一些,这里装在小车上实在有些牵强,但目前只有这些了。

4、总结

我的本意是想做一个远程遥控小车,加上网络摄像头,奈何esp32cam模块局限太大导致小车只能在家里跑,毕竟它便宜,下次用4G模块看看如何,因为我也没用过。但这个模块用作监控还是不错的,可以插入SD卡保存视频。本次分享到此结束,下面是全部的代码。
https://github.com/yuewuge/WiFicar


http://www.ppmy.cn/news/212878.html

相关文章

基于机智云物联网平台与4G DTU远程车库门

一、项目内容及背景 随着物联网技术的飞速发展&#xff0c;逐渐进入了万物互联时代&#xff1b;本项目针对不支持手机远程开门的老旧门锁升级改装&#xff0c;对门锁进行简单升级&#xff0c;接入到机智云物联网云平台&#xff0c;实现手机远程操作。 二、项目材料 1.老旧…

不限距离4g/5g信号远程遥控小车

4g/5g不限距离遥控小车(1) 4g/5g不限距离遥控小车(2) 最开始学习编程也是源于一个想法, 无线遥控小车和飞机操作范围都是在几十米, 远的几百米, 再远的几公里, 那能不能把手机放在小车或飞机上, 利用手机的4g/5g信号来接收指令, 这样只要有手机信号的地方, 就可以不限距离的操作…

CI2451/CI2454无线收发SOC芯片2.4g内置MCU遥控门锁超高性价比

CI2451跟CI2454是一款2.4G的SOC无线收发芯片/集成无线收发器和 8 位 RISC&#xff08;精简指令集&#xff09;MCU,其中CI2451和ci2454在无线收发的特性是一样的&#xff0c;但是在MCU的资源上CI2454的资源会更加优秀&#xff0c;ci2451具有更高的性价比&#xff0c;对成本要求比…

【基于 Arduino 的 RFID门锁】

【基于 Arduino 的 RFID门锁】 1. 概述2. 射频识别的工作原理3. RFID 和 Arduino4. Arduino RFID门锁门禁项目5. 源代码 在本教程中&#xff0c;我们将了解什么是 RFID&#xff0c;它是如何工作的以及如何制作基于 Arduino 的 RFID 门锁。您可以观看以下视频或阅读下面的书面教…

基于STM32F407的智能门锁

智能门锁 一、项目背景 在消费升级渗透在各个领域的今天&#xff0c;国民消费发生着巨大的变化&#xff0c;与每个人息息相关的家居行业也是如此。现今&#xff0c;越来越多的智能家居产品出现在普通老百姓的生活中&#xff0c;智能照明、智能窗帘、智能扫地机器人等各种智能产…

汽车一键启动 汽车手机远程启动系统  汽车无钥匙进入 手机APP控车智能防盗

移动管家手机智能控制汽车系统具有汽车远程启动、汽车远程熄火、远程开关车门锁、远程断油&#xff01;智能感应开关门锁、免钥一键启动、一键熄火、GPS查车、APP软件控车、智能防盗、手机管控.移动管家手机控车系统&#xff0c;手机短信远程启动汽车&#xff0c;一键启动无钥匙…

wifi智能门锁远程控制方案能实现哪些功能

远程智能门锁控制方案&#xff0c;智能创新&#xff0c;改变生活。      生活中&#xff0c;我们都习惯性的携带门锁的钥匙&#xff0c;但没培养这个习惯时&#xff0c;总是会将钥匙落下&#xff0c;而这个事可以说可大可小&#xff0c;往小来说就需要拿备用钥匙开门&#…

手机app+esp8266控制小区大门门锁,实现远程开门

近日笔者自己动手修理自家的门铃时,发现只要接通开门的电源线,就可以打开楼宇的大门了&#xff0c;突发奇想&#xff1a;在门铃引出线加装继电器就可以用esp8266连上互联&#xff0c;实现远程开门了。&#xff08;我家门铃比较老旧&#xff0c;不知其他牌子门铃是否也是可以这样…