充电器绿灯检测
充电器红灯指示灯,表示充电中,绿灯表示已充满,没亮代表已断电
电动自行车绿灯充满后,建议不要一直持续充电,长时间的满电充电,会导致电池鼓包,或者电池电量总量衰减之类的副作用,所以需要在绿灯的时候,把充电器给拔掉,保持电池的良好状态,也能第一时间了解电量是否已充满
市场上的方案是买带有电流检测或者电动车专用的充电器,自动识别是否已充满,具体原理这里就不展开
它的好处是自动充满断电,不需要人工查看,不好的地方是贵,比普通的充电器贵很多,并且如果有多个充电器,比如一个60v,一个48v,还要单独买其他型号的,不能通用,比如接口也不同,一个就很贵,2个更贵,因为我通常家里放一个,车上放一个,充电器备用
所以我尝试其他方案,比如机器视觉,让esp32cam拍照,让后交给home assistant来分析图片红色和绿色和发送ntfy通知到手机
目前在ai的开发下,已经完成esp32cam刷入esphome拍照,并接入到home assistant,也同时设置了ha分析图片并发送通知,在充电器的实际测试下,功能正常
但是由于esp32cam没有外壳和固定支架,所以我买了一个万向双头夹,这样就可以固定esp32cam,让它离指示灯近一点的地方悬空,并且摄像头正对着指示灯,既能提高识别率,也能减少硬件位置拜访带来的安全隐患
颜色识别传感器
首先想到的是TCS230 TCS3200 颜色识别传感器模块,专业的事交给专业的做
但是后来发现,这个颜色传感器,有效距离1cm左右,这不符合我的要求,我的需求是即便相隔很远,比如1米,也能正常识别充电器的指示灯颜色
其次这个颜色传感器模块很贵,大概需要8美元左右,它本身的价格都相当于一个esp32cam的价格,凡是超过1到2美元的模块,都要好好考虑一下
esp32cam
在esp32中有一个特别的型号,带有相机的esp32cam,可以拍照录像,不用自己单独在esp32上接入摄像头
esp32cam的优势是体积较小,迷你的摄像头直接集成在esp32排线上,并且有专门的固件,和开源的项目,直接刷入就可以使用,不需要自己编写复杂的代码,比如结合esphome和home assistant
只要esp32cam拍到图片,就可以对图片进行分析,比如常见的使用场景,电表,水表,天然气表拍照,分析,上传数据,把仪表盘的指针转为数字化,同样的人脸分析,智能安防,火灾分析等,都可以机器视觉实现
同样的,我的这个电动自行车充电器红绿指示灯检测,也可以通过图片分析
比如分析图片中间的色彩,以及其他色彩分析,来完成指示灯的颜色分析,比起颜色识别模块,它的距离可以很远,可以有不同的算法和项目来完成同样的结果
我以前买了一些esp32cam,所以正常拿来使用
这个项目成功后,后面可以继续来检测水表,电表,天然气表,人脸检测,火灾检测以及盆栽定时拍照等使用场景
Tips
顺带提一下,esp32cam是很老的硬件,现在有更新的esp32s3cam,比之前的性能更好,同样的迷你体积
就像esp32 cyd (Cheap Yellow Display),在使用时,如果只使用屏幕lvgl展示,性能勉强够用,但是如果同时使用wifi,蓝牙,音频,图片,存储,之类的其他某个功能,就会出现性能不足,运行不起来的场景,比如播放视频,不支持,比如解码mp3,基本不支持,就算支持,也时卡顿和效果差
又比如wifi时钟,屏幕连接wifi后展示时钟,代码如果不进行优化,很容易出现使用wifi后,屏幕无法点亮或者其他错误的场景
但是目前如果把esp32cam的图片交给home assistant,那么是没有问题的,也更加方便
等到后续需要更好的图片清晰度,或者其他需要在esp32s3上自己处理,不依赖home assistant的情况下,再来考虑买esp32s3cam
毕竟,如果没有多余的迷你主机安装home assistant,没有ai辅助开发代码的情况下,想要自己的实现esp32cam相关的内容,是很难的,放在单一的esp32s3cam更为方便