如果自己折腾开源智能家居的话,其实对ESP系列芯片不会陌生,使用基于ESP8266芯片的nodemcu以及D1 MINI模块制作自己的物联网设备,或者像小米飞利浦的智能灯,YEELIGHT智能浴霸都使用ESP32芯片来进行物联网链接。而根据安可信的介绍:
大概意思就是这玩意能做出一个WIFI智能摄像头或者是扫码收钱终端?这个我们暂且不管,还是来看看实物和之前教程的应用。
一、开箱
模块包含一块ESP32-CAM的MCU和一个OV2640的200W像素摄像头,ESP32-CAM除了支持OV2640外还支持OV7670摄像头,不过7670只有30W像素,想来也没人愿意用。
大家可以看到,模块配置还是挺全的,TF卡插槽,闪光灯,外置天线接口啥的应有尽有。
而标配的OV2640用的是一个标准视角的镜头,单独售价大约是10元一个。而带120°-150°广角镜头的OV2640售价一般都要20-30元,如果自己折腾的满意也可以单独购买广角镜头版的OV2640进行替换。
组合起来大概是这么个效果,如果觉得排线较短的话,马家也有延长线出售。
二、烧录固件
在进行烧录前,我们先要看下ESP32-CAM的各个GPIO定义,这里我们需要用到的是左下角的5V/GND以及右上角的GPIO1和GPIO3,这四根线分别接USB-TTL的5V,GND,GPIO1接RX,GPIO3接TX。并且,需要将GPIO0和边上的GND短接进入烧录模式:
这张照片GPIO0和GND还没接,大家一定记得接上。
烧录工具我们用的是ARDUINO IDE,可以从ARDUINO官网下载:
首先我们要添加ESP32的芯片支持,先打开首选项:
在附加开发板管理器网址里填上:https://dl.espressif.com/dl/package_esp32_index.json 然后单击好。
然后在工具里打开开发板管理器:
等待索引做完之后找到ESP32并安装,下载安装需要点时间,等安装的时候,我们可以前往github下载本次示例使用的文件代码https://github.com/RuiSantosdotme/arduino-esp32-CameraWebServer
然后打开CameraWebServer.ino文件,我们要对代码进行一些设置:
首先是相机的选择,我买的是AI THINKER的版本,所以注释掉其他两个设备,仅保留AI THINKER的,然后就是要链接的WIFI网络的SSID和密码,切记,ARDUINO不支持中文,所以只能链接英文SSID的2.4GWIFI网络。
在开发板里面选对我们需要的开发板和相关设置,然后点击上传就好。
三、使用
使用上我们只要通过浏览器,无论是手机还是电脑,输入ESP32-CAM的IP地址,就能看到设置页面了:
点击Start Stream就能看到实时影像了:
大家可以看到我给这个摄像头打印了个外壳和支架后安放在了厨房,因为我之后想配合Tensor Flow来做一个检测碗有没有洗掉的应用,要是碗没洗掉,就不能看电视……,为了强迫自己洗碗也真是煞费苦心啊。至于在题图里面说的人脸检测,是在左边的设置项Face Detection和Recognition的功能:
不过测试下来这个功能并不完善,首先是芯片的处理能力有限,所以只能针对最大CIF分辨率(400X296)像素进行识别,并且识别率并不高。其次,人物识别Enroll Face记录的脸断电后不能保存。所以这个示例实验的意义大于应用的意义,也就是告诉你我能做,但事实是做的并不好。
除此以外,随着输出分辨率的提升,帧率会大幅下降,在UXGA分辨率输出下,帧率只有3-6fps。要保持流畅的话,最大分辨率也就VGA尺寸能用,所以远程监控的话,只适合要求不高的视频流。当然,这个示例没有保存视频的功能,所以不知道如果本地保存的话质量如何,大家要是有兴趣可以自己实验。除了直接输IP进入设置页面查看串流之外,代码还提供了两个接口可以查看静态图像和视频流,分别是http://192.168.XXX.XXX/capture和http://192.168.XXX.XXX:81/stream
所以目前我的打算是使用树莓派去抓取静态图像,然后使用其他工具进行分析来做应用。例如厨房碗洗了没。或者配合红外传感器来更准确的判断有人无人。或者做成智能猫眼也是不错的选择。这个要大家各自发挥想象力了,这里只是抛个砖。
总体上说,45块比米家人体传感器还便宜的价格是买不了吃亏,买不了上当的。关键是之后你准备怎么折腾,怎么用。或许也不排除有其他代码运行的更好,这个也要进一步发掘。最后祝大家玩的开心。