打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【物联网开发】esp32cam开发板 app inventor

   ( 本次内容与物联网技术相关,与Rhino犀牛建模软件无关哦。)

   该总结虽然针对esp32cam及远程视频,但这属于物联网开发的一种模板套路,通过变形可做很多项目。涉及到硬件烧录和安卓开发。内容本身也是来源于零碎的前期资料搜集和琢磨,然后自己摸索整理(掉了无数头发)出一个完整的操作链路。

    硬件是esp32cam,安卓开发采用了零代码的app inventor。

该项目app原型:

从功能层简单说,这个项目就是实现在手机上远程观看摄像头拍摄的视频,远程拍照以及其它附加功能。

esp32cam+app iventor工作流综述:

Esp32cam负责物理电子电路部分,App iventor负责开发手机移动端软件。用户用手机操作app,和esp32cam进行远程沟通,发送命令和接受信息。比如,用户点击app上显示的一个“拍照”按钮,手机说:我懂了,于是它通过wifi向esp32cam发送一个打开相机的请求request,esp32cam接收到了之后说:我懂了,然后它就去控制电路,打开相机,于是远程打开相机的功能就实现了。

Http协议:

    esp32cam和手机之间的无线沟通通过http协议,这就是所谓的机器与机器之间的交流协议之一。

    esp32cam接收到某个特定的“ip/xxx”格式的命令,它会解读这行文本,首先去掉ip/,读取剩下的xxx,然后它会去自己的代码里面比对xxx对应的是什么操作,然后找到匹配的就执行相应的功能操作。

    ip地址/后面的xxx即开启某个功能操作的钥匙。

    如某个网络环境里esp32cam的ip地址是192.168.111, 想要实现的功能操作是打开一盏灯,可以在esp32cam的代码里面把打开灯这个功能命名为一个函数LightON(格式:Void LightON(){填入打开灯需要的引脚输出信息}),然后还需要给xxx和LightON函数搭桥:这样,如果esp接收到了xxx,则执行LightON功能。xxx名字是自己随便定义的,比如为了统一也定命名为LightON,那么只要手机向esp32cam发送 192.168.111/LightON这行文本, esp32cam通过wifi接收到这行文本后会解密,直接读取到LightON,再由LightON引到LightON这个函数功能,打开一盏灯。

    有人要问了,esp32cam烧录进去这些内容我明白,那么手机端怎么发送这个http的文本信息呢?这就是app inventor做安卓应用的部分了。

    手机端的开发更加简单,它的数据传输很方便,在app inventor只需要在用户界面上加功能按钮,给一个交互逻辑,如:点击一下这个按钮就通过网络发送某个特定的http文本。 接上面的例子,就是可以在画布上拖进去一个按钮,命名为开灯,然后在代码块模式给一个交互逻辑:点击一下这个按钮就会通过网络发送192.168.11/LightON。

    是不是很简单?

什么是esp32cam:

  ESP32可以理解成wifi版的arduino,很便宜(淘宝上十多块一个)很小又有强大wifi功能。ESP系列是物联网项目开发的首选。而后缀了cam的ESP32-Cam模块(淘宝上20-30左右)则是集成了图像传感器OV2640的esp32,可以非常方便的实现图像采集和数据上传。拍摄的像素值是200w。这个价位已经很可以了。

  ESP系列开发板的原生的代码烧录听说用户体验极差,不过它的烧录可以借助arduino平台,其编程语言与arduino一致,我采用的就是arduino平台的方法。

Arduino如何配置esp32所需环境:

①打开Arduino IDE,再打开文件(File)->首选项(Preferences):

在Additional Board Manager URLs选项里输入https://dl.espressif.com/dl/package_esp32_index.json,然后点击OK:

②Tools>Board>Boards Manager, 搜索esp32,找到“ESP32 by Espressif Systems”的项目,点击安装(Install)

③ 安装完成后,重启Arduino IDE。

④ 安装成功后在Tools>Board下面会显示ESP32开发板的一系列选项。

如何烧录esp32cam:

用ftdi模块,按照如图接线方式,

当烧录到窗口显示connecting的时候,按一下复位键即可上传到板子上,

拔掉IO0和GND的线,再按一下复位键一下就能读取串口了。

另外注意导出的时候的参数设置:板子要对 选择esp32 Wrover Module ;下面这个参数也要对;除此之外是最基本的端口要对。

常见问题:esp信号弱怎么办

应该是开发板自带的母胎bug,外网上论坛大量用户吐槽信号弱,尤其是esp32cam,有视频流的时候网络卡是一个很糟糕的事情。但是,也不是不能解决的:

板子上如图红色箭头指着的0k电阻挑掉,然后把红色区域的三个点焊在一起, 然后就可以外接天线了,信号突增变得极好。测试信号强弱的代码见《ESP32cam测试网速的代码》,这个代码网上应该也比较好找。

硬件测试时常见问题:使用esp32cam时用舵机会直接歇菜

cam占用了timer0 和 timer1,给servo timer 赋 timer 2或者timer 3就行了

servo用函数库 ESP32Servo,在arduino的libray库下载的, 赋予servotimer的语法为:

ESP32PWM::allocateTimer(3);


什么是app inventor:

   App inventor 是麻省理工大学(MIT)开发的一种快速让没有编程基础的人搞定安卓开发的一个工具,而且这个不同于设计行业中的XD或者Axure,它做出来的安卓是真实的安卓程序,能够在手机上运行,绝非做做样子。网站上有好多8岁左右小孩子做的安卓程序,真的挺强的。

    新建一个项目文件后就能看到下图的操作界面,界面上需要什么就把左栏的相应部件模块拖进去,比如要一个mp3就拖进去一个音频。

    设计模式和代码模式在右上角可以切换。如下图为代码block模式。有了模块还不够,还得加上代码才能有操作逻辑,才能驱动app的动作执行。

这个就是所谓的代码部分,拖一拖积木就能编程。这个操作逻辑和rhino的grasshopper、乐高积木等等都是类似的,都是可视化编程。

这个做app的工具真的特别强大,基本上该有的功能它都可以实现,一些比较复杂的功能可以去论坛上搜索相关的插件,有的免费有的付费,大多是高级玩家的热心封装起来方便初级玩家直接拿来用。


esp32cam实现拍照+智能配网的代码已公开,见《esp32cam项目源码》,需根据实际情况进行修改!若没有函数库可在GitHub上下载。

本项目核心代码和函数库来源于下面连接提供的代码的修改:

https://github.com/yoursunny/esp32cam/blob/main/examples/WifiCam/WifiCam.ino

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
45元的WIFI摄像头模块,能玩出什么花样?
细说App Inventor【6】代码整理与调试
项目(二) esp32-cam 网页图像人脸
app inventor跨界面连接蓝牙(二)
ESPcopter无人机初探(UWB定位+ESP8266MCU)
AppInventor
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服