esp32 您所在的位置:网站首页 wifi模块连接摄像头 esp32

esp32

2023-07-23 04:11| 来源: 网络整理| 查看: 265

目录 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; //双定时器都打开工作方式2 SCON=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 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 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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有