ESP32CAM物联网教学06

news2025/1/26 15:51:27

ESP32CAM物联网教学06

拍照上传互联网

在上节课中,小智的物联网视频小车,在与家用的云台监控摄像头的PK中,各具优势,难分高下,这让小智下定决心,再次增强物联网小车的功能,提升小车的智能水平。

  • 视频上传互联网的必备条件

ESP32Cam使用的视频传输程序是CameraWebServer(在第一课和第五课中用的都是这个乐鑫公司提供的官方程序),从程序的命名理解,这应该是一个专门针对照相机的网页服务。也就是说ESP32Cam在本地的局域网内部,充当一个网页服务器的功能,只要在这个网络桥段内(同一个路由器之内)的所有联网设备,都能利用浏览器访问这个网页服务器ESP32Cam,都能查看到摄像头的视频(经过试验,可以两个以上的设备(电脑或手机)同时访问到http://192.168.1.184这个网页。但是只有一个设备能查看到摄像头的视频流,只有等到第一个设备断开摄像头的视频流,第二个设备才能连接“StartStream”并接收摄像头的视频流)。

那么这个ESP32Cam的网页服务能不能发布到互联网,让我们随时随地都能联网接收并查看视频流呢?这个以我们个人的能力是很困难的,这个技术较内网穿透,或者叫路由器的端口映射(有兴趣的可以自己去网上查阅教程),同时还需要网络运营商的技术支持。所以我们把这个CameraWebServer推到公网上面,这个是很不现实的。

  • 巴法云的图片上传服务

我们既然做不到把ESP32Cam摄像头的视频流推送到互联网上面,那就取一个折中的办法,把拍到的照片上传到互联网。这样我们至少能利用互联网,也能查看到摄像头拍摄到的图片!

巴法云物联网就为我们提供了照片上传的服务。

我们通过百度“巴法云”,可以访问到巴法云的官网。使用之前,先用邮箱注册一个用户。然后就可以用用户名(邮箱)和密码登录巴法云官网了。

这个是户登录后的巴法云使用操作台。我们点击私钥后面的眼睛,可以查看私钥,这个后面编程的时候会用到。巴法云为用户提供了“TCP创客云”“图存储”和“MQTT设备云”三个服务,我们可以用鼠标点击这三个按钮,在这三个服务之间进行切换。当然巴法云还提供了一个“博客教程”,可以帮助用户解决巴法云使用过程中的一些困难。

如图所示是TCP创客云的使用界面(用鼠标点击TCP创客云,会切换到这个界面),我们可以点击新建主题,创建一个新的“话题”,新建的话题会显示在3话题列表中(从话题列表中可以看出,我已经新建了一个名为ceshi的话题)。

这样我们就可以往这个ceshi的话题中输入一些内容,让后往这个话题推送消息了。如果有其他的联网设备订阅了这个话题,其他设备就能接收到你在这里发送的消息了。相反,如果其他联网设备往这个话题发送消息,发送的消息也会在这里显示的。这里就是巴法云的物联网服务器。

几乎所有的物联网都是用这种“话题”的方式,进行消息的接收和转发的。这个是不是和我们的微信聊天有点相似,所有订阅了这个“话题”联网设备,就像是加入了一个群的好友,群内的好友,谁都可以往群里发消息;不管是谁在群里发了消息,其他的好友都能第一时间收到(只要你是在线的)。

    我们点击图存储按钮,就能切换到如图界面,如图所示,我已经建立了一个名为tupian的图存储话题,并且向这个话题上传过图片了。

  • Cap拍照上传

要想让ESP32Cam开发板使用巴法云,就必须给米思齐安装巴法云的驱动库文件,安装如图所示(在第二课后详细介绍从云端下载驱动库的介绍)

编写拍照上传程序。从左侧的积木仓库底部,找到巴法云的积木块,编辑如图的程序,程序的算法是:在初始化是,让ESP32Cam连接家里的WiFi,并利用私钥连接到巴法云服务器;程序订阅了一个名为ceshi的话题,如果从这个话题接收到了消息,且消息的内容为cap的话,就调用摄像头拍照上传功能(拍完照片就上传到名为tupian的图存储话题中)。程序中的这两个话题,在前面都已经在巴法云服务器中创建完成了。

这个程序还是有一个BUG,不能这样就上传烧写到ESP32Cam开发板中。在图中的米思齐窗口上端的菜单栏中,一个</>的按钮,这个是积木编程和代码编程的切换状态。点击这个按钮,可以切换到代码编程状态。

我们从积木编程切换到代码编程时,积木程序会自动编译成C语言的程序代码。我们找到程序初始化部分setup(),找到其中的那句代码,并修改为:

config.frame_size = FRAMESIZE_QVGA;

为什么要这样呢?这个是因为原来的图片默认大小为FRAMESIZE_UXGA(1600 X1200),图片太大了,加上网络上传的速度跟不上,所以使用这个程序很难把图片上传成功。而我们这里把图片缩小一些,改为FRAMESIZE_QVGA(320*240),不到原来的5%,这样的照片上传起来就轻松多了,也非常容易上传成功了。

  • Cap拍照上传测试

我们把上面的程序烧写到ESP32Cam开发板中,我们拔出开发板,稍等5秒后重新插入电脑(让ESP32Cam重新接通电源重启程序,以后每一次通电重启都是这种情况的),在米思齐的串口监视器中,可以看到ESP32Cam通电后,首先连接WiFi,接着连接到巴法云服务器,并订阅了一个ceshi话题。然后就是等待,每个一段时间,开发板会重新检测与巴法云的连接状态。

    接着,我们在电脑的浏览器中,访问巴法云服务器,并在ceshi话题中输入cap,并把这个消息推送出去。在回过头看米思齐的串口监视器,ESP32Cam接收到了cap拍照的指令,就拍照屏发送照片,紧接着下一行返回一个照片的网址,表示这张照片已经发送成功了。我们可以利用这个网址查看照片,当然也可以在巴法云的“云存储”中查看到这张照片了。

  • 物联网门锁的升级版

这个cap拍照上传程序的成功实现,让我们想起了第二课的“物联网门锁”应用案例,如果我们给物联网门锁增加这个拍照上传的功能,那情况就会变得大不一样了:当小智在按门铃时,姑姑在电脑中,就可以发送cap的拍照指令,ESP32Cam就能把按门铃的小智的照片拍下来,并上传到巴法云物联网服务器,这样姑姑就能看到是谁在按门铃了,也可以放心的打开家里的大门啦!

当然,我们也可以设置程序,让ESP32Cam定时地拍照片上传保存,这样的应用场景应该还有很多,你还能想到哪些呢?

  • 避坑经历的笔记

在这个米思齐的cap拍照上传程序中,有一个非常大、非常恶心的坑,必须要郑重的记录一下的。

我们才编译这个程序时,有时候会很顺利,有时候则会编译到一半就卡死掉出现了这样的错误。

开始碰到这样的错误时,我最先怀疑的难道是程序错了吗?于是我就开始了拍错的过程:

首先,我们查阅了巴法云的官方文档,并下载了官方的程序。在本课开始的时候就提到了,用户登录巴法云后,在巴法云操作界面中有“博客教程”,这个是巴法云提供的官方教程,我们可以查阅到巴法云的使用方法,还提供了示例程序的下载。

我们在巴法云的官方教程中找到这篇,并从文章中间的连接中下载到了这个cap的示例程序代码,程序是Arduino IDE中的C语言代码。我们用Arduino IDE打开这个程序,并编译烧写到ESP32Cam开发板中,发现这个程序运行起来没有问题。当接收到cap拍照命令后,开发板能拍照、并把图片上传到巴法云。

接来了第二步,就是对比分析米思齐的代码和这个官方的Arduino IDE代码,看看这两个程序是否有什么不同。经过认真地对比,发现这两个程序中的功能块代码都相同,就是排列的前后顺序不一样而已。

难道是代码功能块的顺序也会造成程序的编译的错误?

第三步,我调整了米思齐中的程序功能块的排列顺序,让他尽可能地和Arduino IDE中的顺序一致,结果编译成功了。,所以确定了我之前的判断。

最后,经过不断的尝试,突然发现了造成这个编译错误的原因,也找到了解决问题的方法了:在积木块编程中,这个程序分成了“初始化”和“接收执行拍照指令”这两块,

这两个积木块的位置,决定了编译代码的顺序  !!!

当初始化的积木块“低于”接收拍照指令的时候,编译是成功的;相反,当初始化积木块“高于”接收拍照指令的时候,编译是失败的。

至于为什么是这样的结果,我们至今不得而知。但是我们确实非常幸运地,发现了这个问题,并找到了这个问题的解决办法。有时候真的是这样,闽南有句俗语叫“天公惜憨孩”,机会是留给有准备的人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1894042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lumion专业3D渲染三维场景设计软件下载,Lumion强大的三维渲染软件

Lumion&#xff0c;这款软件具备令人瞩目的渲染速度&#xff0c;能够以闪电般的速度生成令人叹为观止的图像、视频和360全景图&#xff0c;让设计师们能够在短时间内将创意转化为视觉盛宴。 Lumion软件内置了一系列可定制的预先配置的HDR天空环境&#xff0c;这些天空环境不仅丰…

Spring启动时,将SpringContext设置到Util中(SpringContextUtil)

场景 在Spring应用开发中&#xff0c;为简化代码或者在静态方法中获取Spring应用的上下文&#xff0c;需要把SpringContext设置到类属性上。经过对源码的分析和实践&#xff0c;使用Spring的事件监听器监听ApplicationPreparedEvent事件是最佳的方式。 通过ApplicationPrepar…

STM32工业自动化控制系统教程

目录 引言环境准备工业自动化控制系统基础代码实现&#xff1a;实现工业自动化控制系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 控制系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;工业自动化与优化问题解决方案与优化收尾与总结 1. 引言 工业自动化控制系统利用…

mac 11 变编译安装nginx

mac 11 变编译安装nginx 记录一次安装过程 所需要的包 pcre: https://sourceforge.net/projects/pcre/files/pcre/OpenSSL: https://www.openssl.org/source/Nginx: https://nginx.org/en/download.html如果没有pcre 和Openssl,报错如下 把pcre和Openssl 解压到nginx 目录下…

通过9大步骤,帮助企业在数字化转型中搭建数据分析的报表体系!

引言&#xff1a;在数字化转型中&#xff0c;企业搭建数据分析的报表体系是一个系统性的过程&#xff0c;需要综合考虑业务需求、数据来源、技术平台等多个方面。此外从报表生命周期的角度来说&#xff0c;从产生、使用以及最后消亡退出体系&#xff0c;都需要通盘考虑&#xf…

新手拍短视频的些许建议

1、尽早行动&#xff0c;拒绝完美主义&#xff0c;有手机就能上车&#xff0c;一开始别花太多时间在打磨细节上。总是要准备好了后再做&#xff0c;就总比别人慢一步&#xff0c;可能永远也追不上了&#xff1b; 2、坚持发&#xff0c;度过难熬的启动期就行&#xff0c;不要走…

6个步骤实现Postman接口压力测试(建议收藏)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 这里讲是postman做接口并发测试&#xff0c;基础用法不做赘述 1、第一步接口可以通的情况下点击…

Node.js下载及安装详细教程

目录 Node.js安装详细教程 下载安装环境变量配置文件结构配置npm在安装全局模块时的路径和缓存cache的路径测试常见命令 Node.js安装详细教程 &#x1f441;官网下载地址:Download | Node.js (nodejs.org) 下载速度慢的话 可以使用网盘下载&#xff1a; https://pan.quark.…

flask项目部署总结

这个部署的时候要用虚拟环境&#xff0c;cd进项目文件夹 python3 -m venv myenv source myenv/bin/activate激活 之后就安装一些库包之类的&#xff0c;&#xff08;flask&#xff0c;requests,bs4,等等&#xff09; 最重要的是要写.flaskenv文件并且pip install 一个能运行…

新手教学系列——【Ubuntu】SSH配置详解

在使用Ubuntu进行远程管理和开发时,SSH(Secure Shell)是必不可少的工具。SSH不仅提供安全的远程登录功能,还支持安全的文件传输和端口转发。然而,有时我们可能会遇到SSH连接中断的问题。本文将详细介绍如何配置SSH以提高其稳定性,并解释关键配置项。 为什么会出现SSH连接…

去中心化 RAG 先行者,KIP Protocol 如何保护数据所有权、激活 AI 资产

AI 时代&#xff0c;人人都应实现 KnowledgeFi 的梦想或许并不遥远&#xff0c;KIP Protocol 正在生动践行这一价值理念&#xff0c;带动去中心化数字产权的创建与盈利&#xff0c;面向 CryptoAI 的蓝海市场迈出创新探索的技术步伐&#xff0c;朝着 Web3 行业打造去中心化 AI 的…

Matlab/simulink三段式距离/低阻抗保护

距离1段仿真波形如下所示 距离2段仿真波形如下所示 距离3段仿真波形如下所示

STM32智能农业监控系统教程

目录 引言环境准备智能农业监控系统基础代码实现&#xff1a;实现智能农业监控系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 控制系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;农业监控与优化问题解决方案与优化收尾与总结 1. 引言 智能农业监控系统利用STM32嵌…

vienna整流器过零畸变原因分析

Vienna整流器是一种常见的三电平功率因数校正&#xff08;PFC&#xff09;整流器&#xff0c;广泛应用于电源和电能质量控制领域。由于其高效率、高功率密度和低谐波失真的特点&#xff0c;Vienna整流器在工业和电力电子应用中具有重要地位。然而&#xff0c;在实际应用中&…

亮相2024世界人工智能大会,扫描全能王AIGC“黑科技”助力敦煌遗书数字化修复

7月4日&#xff0c;2024年世界人工智能大会&#xff08;简称“大会”&#xff09;在上海举行。这次这场科技与创新的盛会上&#xff0c;一张古朴、典雅的卷轴吸引了众人的目光。这张被修复的卷轴脱胎于敦煌遗书系列古籍&#xff0c;在被机器拍摄扫描后&#xff0c;卷轴上脏污、…

java web 部分

jsp作用域由大到小 过滤器有哪些作用&#xff1f; 过滤器的用法&#xff1f;&#xff08;对客户端的请求统一编码和对客户端进行认证&#xff09; JSP和Servlet中的请求转发分别如何实现&#xff1f; JSP 和 Servlet 有哪些相同点和不同点&#xff0c;他们之间的联系是什么…

昇思25天学习打卡营第4天|yulang

今天主要了解了数据集 Dataset&#xff0c;主要包含了&#xff1a;数据集加载、数据集迭代、数据集常用操作、 可随机访问数据集、可迭代数据集、生成器。对于生成器很好理解&#xff0c;用代码来造数据&#xff0c;可以动态地生成数据。主要作用数据集通常被用于训练模型

亚马逊云服务器的价格真的那么贵吗?一年要花多少钱?

亚马逊Web服务&#xff08;AWS&#xff09;作为全球领先的云计算平台&#xff0c;其定价策略常常引起用户的关注。很多人可能会问&#xff1a;"AWS真的那么贵吗&#xff1f;"实际上&#xff0c;这个问题的答案并不是简单的"是"或"否"&#xff0c…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【通用密钥库基础概念】

通用密钥库基础概念 在使用通用密钥库完成应用开发前&#xff0c;开发者需要了解以下相关概念&#xff0c;以下概念将贯穿整个开发过程。 可信执行环境&#xff08;TEE&#xff09; 可信执行环境&#xff08;Trusted Execution Environment&#xff09;&#xff0c;简称TEE&…

单机安装基于LNMP结构的WordPress网站 web与数据库服务分离

网站的类型&#xff1a; Jave:LNMT PHP:LNMP Python: LNMU 项目部署&#xff1a; 1.项目的类型&#xff08;项目的开发语言&#xff09; 2.项目运营平台的技术选择 3.尽快让项目运行起来 all in one部署 4. 架构的优化 配置ansible管理环境 配置nginx 配置数据库服务…