# 22.7 esp32cam多功能摄像机 **Repository Path**: lsy_zhiyu/esp32cam-camera ## Basic Information - **Project Name**: 22.7 esp32cam多功能摄像机 - **Description**: 22.7构思功能;硬件上有wifi,蓝牙,sd卡,摄像头,adc,tft屏,大led照明灯等,注定它拥有超多拓展性。 从单独模块测试,到绘制原理图pcb,打板焊接制作,结合3D设计,三维猴下单,组装,项目断断续续忙了很久 构思功能有tft摄像机,可存sd卡,以及延时摄影。还有局域网摄像头,物联网远程摄像头,桌面天气显示,蓝牙键盘,蓝牙鼠标等很多功能,后续一步一步来实现它们~ - **Primary Language**: C++ - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 5 - **Created**: 2023-10-28 - **Last Updated**: 2025-08-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 22.7 esp32cam多功能摄像机 #### *本仓库使用AGPL开源协议,请按照协议使用* ## 简介 - 本项目是2022年7月,根据我自己的兴趣自行研究,从硬件、3d外壳、软件、小程序、物联网等多方面技术发展的。 - 构思功能;**tft摄像机**、**局域网摄像头**、**物联网远程摄像头**、**桌面天气显示**、**蓝牙键盘**、**蓝牙鼠标**等 - 当时接触了挺久的esp32及esp32cam,感受到它的性价比之高,于是想结合tft显示屏做一个mini多功能摄像机。 - 若视频链接失效,可前往我b站主页找{名:志宇益生菌}:https://m.bilibili.com/space/474679839 #### **视频展示链接 一系列:** - 从0到1设计过程:https://www.bilibili.com/video/BV1Qk4y1A7ty/ - TFT摄像机:https://www.bilibili.com/video/BV1rp4y1c7sv/ - 局域网图传:https://www.bilibili.com/video/BV14C4y1n7Sv/ - 复刻硬件教程:https://www.bilibili.com/video/BV1GC4y1N7nM/ - 物联网图传:https://www.bilibili.com/video/BV1Xe411C7Tr/ - 蓝牙控制:https://www.bilibili.com/video/BV1dC4y1M7qz/ - 桌面时钟天气:https://www.bilibili.com/video/BV1N94y1u7jp - 电子木鱼:https://www.bilibili.com/video/BV14w4m1Y7xf - 。。。。。。 #### **整体实物图:** ![输入图片说明](%E5%AE%9E%E7%89%A9%E5%9B%BE.jpg) ### 硬件外壳 - 当时的构思有很多功能,硬件上它有wifi,蓝牙,sd卡,摄像头,adc,tft屏,大led照明灯等,注定它拥有超多拓展性。 - 一开始是单独模块的测试,连接杜邦线等,感觉各功能没有太大的干涉后,就绘制原理图pcb,打板焊接制作,结合自己忽然感兴趣的3D外壳设计,加之tinkercad免安装软件易操作,以及三维猴的优惠券的诱惑下,盘它,就制作出来了,虽然有点小曲折,但最后还是不错的,整体组装起来完美了。 - 这个自己感兴趣的项目默默执行了很久,进度也比较慢,且中途忙于其他事而暂停。最近终于有时间搞它,那就挖掘它吧。 #### 该功能视频链接:https://b23.tv/f3D5Wb4 #### 最新原理图: - ![原理图](%E5%8E%9F%E7%90%86%E5%9B%BEpcb/%E5%8E%9F%E7%90%86%E5%9B%BE5.1.png) #### 最新PCB图: - ![输入图片说明](%E5%8E%9F%E7%90%86%E5%9B%BEpcb/pcb5.1%E6%88%AA%E5%9B%BE.JPG) #### 最新板子渲染图: - ![输入图片说明](%E5%8E%9F%E7%90%86%E5%9B%BEpcb/pcb%E6%B8%B2%E6%9F%93%E5%9B%BE.JPG) #### 最新3D外壳设计: - ![输入图片说明](%E5%A4%96%E5%A3%B3%E6%A8%A1%E5%9E%8B24.5/3d%E5%BB%BA%E6%A8%A1%E6%88%AA%E5%9B%BE.JPG) ### 功能1;TFT摄像机 - 在上次esp32cam多功能摄像机的硬件,3D外壳及组装完成后,进行最基本的摄像机功能的开发。 - 主界面是摄像头画面实时显示在tft上,使用了双核解码传输处理逻辑,加之spi的dma传输数据,还有更优的解码库,让帧数达到最大。 - 电池电压的读取,与4个adc按键的读取,共用一个adc引脚,巧妙电路和代码逻辑来区分,极大节省引脚。 - tft屏与sd卡引脚重合(引脚实在不够用),导致拍照写入sd卡后,得重启才能正常使用,否则tft异常。 - 还有本机wifi未启用,本机时间不可靠,写了逻辑让记录存图的文件夹序号,需要存图才+1存,一次开机存到同一个文件夹,以当前时间命名,防止数据践踏,方便整理,方便延时摄影。 - 设置界面可修改摄像大小质量,延时摄影及保存参数。 延时摄影可批量存sd卡,后续处理即可得到视频。 #### 该功能视频链接:https://b23.tv/wRjVSeI - ![实物图](%E6%95%B4%E4%BD%93%E5%AE%9E%E7%89%A9%E5%9B%BE.jpg) ### 功能2;局域网图传 - 因为esp32cam自带wifi,于是,就利用它完成本次的局域网图传功能。 - 最开始呢,是官方例程里有局域网图传简单例程,于是拿过来改造,81接口传图片流,自行编写80接口进行http的服务端,响应网页的访问请求,以及解析自学的网页表单提交,完成自行设计的参数交互。 - 然而,发现只有电脑版网页访问才能正常显示图片流,手机和小程序的不行。这不行哇,于是,搞它。 - 详细研究,是esp32的81接口解析image自动请求包,发现手机和小程序发的太大,超过缓冲区无法解析,抛出403状态码警告。百度了,改个参数,依旧无效,尝试找底层代码,是加密的,没法改。。。 - 最后尝试了解服务器的数据流主动传输,终于搞懂了image组件与服务器在说什么话,于是编写代码模拟服务器的功能,完美与各个平台的image组件交互对接上,就不必被缓冲区限制了。实现了手机、电脑网页控制和图片流显示后,开始搞微信小程序。 - 微信小程序最近的基础库都把图片数组自动转base64显示等功能去掉了,尝试用网上代码进行base64转码显示,不行。用另一种画布显示的方式,函数也是被废弃了。好在有个以前工程是用了很早的基础库,在它上面改动,终于能使用了。(后续 替换为自写函数,不受基础库版本号限制了) - 编写了图片流接收显示,下边多个按钮控制、滑块控制led亮度,顶上ip修改等,像样了。 - 最后再写了一个横向显示图片流的控制界面,这个为以后的局域网小车做准备的。 - 后续小程序改版升级,可在‘局域网CAM’页面使用横向或纵向控制,端口号默认1025(官方限制范围),最新固件也是1025端口。 - 可微信搜索小程序 **“智能家居 益生君”** 来免费使用。 #### 该功能视频链接:https://b23.tv/9M3WEDg #### 局域网图传-实拍: - ![输入图片说明](%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-pic/%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-%E5%AE%9E%E6%8B%8D.jpg) #### 局域网图传-电脑网页: - ![输入图片说明](%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-pic/%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-%E7%94%B5%E8%84%91%E7%BD%91%E9%A1%B5.jpg) #### 局域网图传-手机网页: - ![输入图片说明](%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-pic/%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-%E6%89%8B%E6%9C%BA%E7%BD%91%E9%A1%B5.jpg) #### 局域网图传-小程序1: - ![输入图片说明](%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-pic/%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-%E5%B0%8F%E7%A8%8B%E5%BA%8F1.jpg) #### 局域网图传-小程序2: - ![输入图片说明](%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-pic/%E5%B1%80%E5%9F%9F%E7%BD%91%E5%9B%BE%E4%BC%A0-%E5%B0%8F%E7%A8%8B%E5%BA%8F2.jpg) ### 功能3:物联网图传 - 之前在22年就实现了esp32cam小车的物联网控制,以及远程图传功能,远程控制之后,由微信小程序控制,小车就一直没怎么继续开发了。 - 而esp32cam多功能摄像机的功能构思,也在慢慢计划着,移植了小车物联网的功能代码,优化后得到当前的效果。 - 摄像机每分钟醒来一次,连接wifi列表中信号强的,之后访问onenet获取数据,得到消息不用工作,则又继续睡眠,周而复始。 - 在小程序上点唤醒,其改变onenet变量的值,而esp32cam醒来后获取是需要工作的标志,则初始化进入工作准备,拍摄图片然后数据流传上onenet。 - 而微信小程序通过http周期访问获取最新的图片信息并实时展示在页面中,就这样完成物联网图传。 - 小程序也可以通过onenet的下发指令接口,下发更改设备里一些参数,如摄像头图片质量分辨率大小,板载led亮度数值,拍摄上传的间隔时间s等。 - 该微信小程序12改版初次提交,经历过官方通知的30元认证,终于能公之于众,大家可使用了,但那时的版本发现有些问题。 - 后来排查后逐一解决,并且规范好小程序代码,将之前很多个功能页面整合到一起,在其他手机测试正常后,跨年夜发布。 - 关于权限,我在控制台设置好隐私权限审核通过后,终于也能使用蓝牙和语音助手的功能了。 - 可微信搜索小程序 **“智能家居 益生君”** 来免费使用。 #### 物联网图传-小程序1: - ![输入图片说明](%E7%89%A9%E8%81%94%E7%BD%91%E5%9B%BE%E4%BC%A0-%E5%B0%8F%E7%A8%8B%E5%BA%8F1.jpg) #### 物联网图传-小程序2: ![输入图片说明](%E7%89%A9%E8%81%94%E7%BD%91%E5%9B%BE%E4%BC%A0-%E5%B0%8F%E7%A8%8B%E5%BA%8F2.jpg) #### 该功能视频链接:https://b23.tv/MdLFwfM ### 功能4:蓝牙键盘遥控 - 原理是修改蓝牙的广播内容,开启广播后,让其他设备读取到认为是蓝牙键盘,建立连接后,发送对应的多字节键码,实现普通按键、媒体按键、组合按键的控制。 - 在以前了解esp32时就知道了有自带低功耗蓝牙功能,所以就以此来开发下它能实现什么高科技玩意。 - 后续单独调试开源的蓝牙键盘库之后,开始研究其具体的功能,逐步移植过来使用。 - 了解蓝牙键码,以及媒体按键码等,陆续实现将esp32cam模拟成蓝牙键盘,接入到电脑或手机上进行控制。 - 构思完善好各个功能键码的作用以及tft界面排布,一次性完成这个功能,还在好友电脑前炫了一波魔法,嘿嘿。 - 设计了基本的网页刷抖音、听歌、看小说、看电影的功能,手机基本也可以用。 - 深入测试发现BleKeyboard库,得改用nimble各功能才完全正常,否则一些手机连接异常或者无法控制。 #### 蓝牙键盘遥控图: ![输入图片说明](%E8%93%9D%E7%89%99%E9%94%AE%E7%9B%98%E9%81%A5%E6%8E%A7.jpg) #### 该功能视频链接:https://b23.tv/ZyqGcE3 ### 功能5:桌面时钟天气 - 原理:通过wifi联网,访问心知天气、b站接口、时间接口等,获取指定城市的实时天气、3天预报天气、b站参数、同步时间等,进而将数据通过tft屏显示出来。 - 一直以来都有看到网友做的桌面天气小屏幕、小助手等,精致小巧,都觉得很好玩,这次就将其都纳入我的esp32cam多功能摄像机的一个子功能。 - 了解了需要访问的天气接口,时间接口,b站接口,各自单独调试代码,逐步实现之后,再慢慢设计完善展示的页面,以及闻名的太空人动画,一个页面不够放,那就整几个页面轮播吧。 - 有今日的实时时间,今天天气、最近3天天气预报、有b站关注数,粉丝数、自定义图片页。 - b站参数一开始访问了http接口,发现不对,在浏览器会自动重定向跳转到https,但esp32不会自动跳转就出问题,了解后改代码实现https的访问,成功得到参数。 - 后续有时间的话,我再改为蓝牙修改天气城市,b站id等,实现随时修改适配信息。 #### 实时时钟天气界面: ![输入图片说明](%E6%A1%8C%E9%9D%A2%E6%97%B6%E9%92%9F%E5%A4%A9%E6%B0%941.jpg) #### 3天天气预报界面: ![输入图片说明](%E6%A1%8C%E9%9D%A2%E6%97%B6%E9%92%9F%E5%A4%A9%E6%B0%942.jpg) #### b站关注、粉丝数界面: ![输入图片说明](%E6%A1%8C%E9%9D%A2%E6%97%B6%E9%92%9F%E5%A4%A9%E6%B0%943.jpg) #### 自定义显示的图片 ![输入图片说明](%E6%A1%8C%E9%9D%A2%E6%97%B6%E9%92%9F%E5%A4%A9%E6%B0%944.jpg) #### 该功能视频连接:https://b23.tv/K0gWPGu ### 功能6:电子木鱼——iphone弹窗 - 原理:使用蓝牙广播功能,每秒切换蓝牙的mac地址以及发送特定的广播帧组合,从而欺骗水果手机附近有各种可连接的耳机、电视、投影仪等仪器弹窗。 - 在之前刷b站视频,就有看到类似的作品,把esp32天线外置,能辐射更大的范围,从而让更多的水果手机弹窗。 - 偶然间在github上看到开源代码,于是构思移植进来,顺便做了个敲木鱼的界面和动态效果,伴随着敲电子木鱼,它同时发射广播信号,完美~ - 代码开发过程中,它使用标准ble,与蓝牙键盘的nimble库冲突,导致二个功能只能一个能用。还有我的库相对旧了点,效果就没那么明显了。 - 一段比较忙没更新,不过呢,好多网友来沟通学习,复刻。看着他们复刻成功,我也很开心,过程中也发现了一些问题,加之我在使用也遇到的问题,就一并解决: 新版esp32cam的摄像头是竖立方向的,与之前源码不匹配,忍了很久写代码适配它了,也优化了jpg解码缩放与图片大小参数的关系调整,大图也有好的视野了。加电子木鱼动画做一起实现随时能“功德+1”. - 实物上,二极管电压不稳定,改用ldo+mos控制,不管esp32耗电多大波动,供电就是稳;电池保护板问题,也串了个0.5欧电阻缓冲解决,防止偶尔电池保护开不了机。 - 以上改动至最新版本,从原理图、pcb,到源码、固件,再到3d外壳,都全部更新开源了,快来试试吧 #### 电子木鱼界面: ![输入图片说明](%E7%94%B5%E5%AD%90%E6%9C%A8%E9%B1%BC-%E7%95%8C%E9%9D%A21.jpg) #### 新款多功能摄像机: ![输入图片说明](%E7%94%B5%E5%AD%90%E6%9C%A8%E9%B1%BC-%E7%95%8C%E9%9D%A22.jpg) #### 电子木鱼弹窗效果: ![输入图片说明](%E7%94%B5%E5%AD%90%E6%9C%A8%E9%B1%BC-%E6%95%88%E6%9E%9C.jpg) #### 该功能视频连接:https://b23.tv/TQQmuyO ### 功能7:蓝牙鼠标遥控 ### 功能x: #### 接下来还有很多功能在开发,敬请期待。。。。 ### 开发环境/涉及知识 - 使用arduinoIDE进行c语言代码的开发,ino为源码文件 - 对摄像头图片的获取及双核解码并dma显示到tft屏 - 使用微信开发者工具 开发 配套的微信小程序 - 编写html页面的内容,嵌入到esp32中 - 使用中移onenet物联网平台对接物联网功能 - 使用MQTT协议连上物联网,数据交互 - 使用TCP socket建立服务器处理连接后交互 - 使用心知天气api接口获取天气情况 - 使用时间接口同步设备内部时间 - 使用b站参数api接口,获取关注粉丝等参数 - 使用ble模拟蓝牙键盘,模拟键码发送 - 使用ble广播特定内容模拟苹果设备发送连接弹窗 - 使用ble模拟蓝牙鼠标,模拟操作 #### 注意 1. 该项目涉及到多个平台,其中的账号、产品id、wifi等信息,需要根据使用而更改。 2. 不得用于任何违法途径的使用 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)