硬件介绍
这次参加M5Stack 的活动,这次活动是一款m5stack的开发板,久闻m5stack的大名,认识m5stack还是知道一款ESP32比较出名的。M5STACK的开发板特别小巧,而且耐用。这次的硬件是M5STACK UnitV2。
同时还送了一款超棒的纯棉T恤。这次的开发板主芯片是AI识别模块采用Sigmstar SSD202D
整个开发板的原理图没有找到,只有这一个框图,还是蛮详细的,这边采用USB的方式采集图像,USB的方式启动WIFI,mac的方式连接USB的网口
开发板特性:
-
RAM 128MB -DDR3
-
FLASH 512MB NAND
-
CPU: Dual Cortex-A7 1.2Ghz 双核
-
wifi
-
SD卡
-
mic
-
LED灯(红灯和蓝灯)
-
一个button
找了很久,看起来这次活动对硬件的开源程度有限,不过我觉得这次主要是在Linux完成,也不需要太关心硬件。
芯片介绍
Sigmstar SSD202D的框图如下所示
另外还有一块GC2145的摄像头,这款摄像头分辨率1616V X 1232H
实现功能
这次一共4个题目
-
捕捉常见小动物的活动习惯,上传到PC端,生成报表;
-
通过图像识别,来甄别流水线的异常品,发现异常品后记录;
-
对停车场、车牌和剩余车位检测,将数据上传到PC端,输出结果;
-
识别办公室/宿舍出入人员是否有正常佩戴口罩,发现异常立即报警,并将每日的数据上传到PC端,生成报表。
从内容上来看,基本都是图片识别类的。所以只要掌握图片识别即可。
这次我选择第4个题目。
这个题目我分为以下功能
-
使用AI训练模型,识别是否佩戴口罩,
-
实现自动报警功能,把报警功能发送给手机
-
把每日的报表定时的上传到云端。
其实主要还是日常互联网云端交互和AI智能边缘计算的结合,是一个比较典型的案例,由于之前没有太接触多少相关的项目,所以做起来感觉还是能学到很多东西的。
实现思路
实现思路分为两步走,第一步,要实现口罩佩戴的识别,这个需要选择没有戴口罩的时候的照片,和戴上口罩的照片,这边我拍了很多,这边由于没有更多的进行采样,只是对自己的图片进行一个多个角度的识别,这边想就简单做个示例demo,感觉采集数据这块也是一个比较大的考量标准,数据越多越准确,你训练出来的模型就越好,这边感觉采集数据也是一个比较耗时耗力的事情,这边由于工作比较繁忙,我就化繁为简,只要能实现简单口罩识别即可。
第二步,数据上传和报警。
数据上传和报警,主要是和云端交互,交互就必须上网,首先是要解决上网的问题,然后解决在网上如何用网络进行报警和上报报表。
基于上面的设计思路上,首先第一点,我对这块开发板不是很熟悉,所以要对老师的直播视频来回查看多次
下面的连接是老师的直播视频,我来回查看了多次,基本了解了如何进行AI模型的建立,
https://class.eetree.cn/detail/l_60d03048e4b0017651a6d85b/4?fromH5=true
通过文档,首先熟悉内部功能,就是离线识别功能,了解到object recognition是可以做口罩识别的。
https://docs.m5stack.com/zh_CN/unit/unitv2
通过平台V-TRAINING来训练模型
http://v-training.m5stack.com/build/index.html
如何上网是这次比较难过的坎,在群里请教了老师大概了解到wpa_cli可以连上WIFI,再在网上搜索相关的信息了解到如何保存WIFI的信息
这个在下面遇到的主要难题上面总结吧。
功能展示图
报警功能
如果有人没带口罩会实时上报到微信机器人小程序
口罩识别
日志上报
遇到的主要难题
-
网络如何保存
通过wpa_cli成功连上WIFI之后,输入
> save_config
FAIL
一直是FAIL, 所以在群里咨询老师之后,老师提供了一个链接
https://unix.stackexchange.com/questions/330982/how-to-export-the-current-wpa-cli-network-to-a-file
我再根据网上描述,需要修改/etc/wpa_supplicant.conf文件
参考如下:
unitv2# cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
ssid="Thomas"
#psk="*********"
psk=109954ae481fbcb153ca0ff96c2bb3b40ed23f84073a2583879476d3138d526f
}
还有个地方,我修改了一下
/etc/network/interfaces
unitv2# cat /etc/network/interfaces
# interface file auto-generated by buildroot
auto wlan0
iface wlan0 inet dhcp
pre-up ip link set wlan0 up
pre-up iwconfig wlan0 essid Thomas
wpa-ssid Thomas
wpa-psk ********
修改了这两处,默认上电就开始连上网络了。
-
如何报警
如何进行报警操作呢?这边我想到了微信机器人。可能由于微信机器人之前用的人太多,被很多不法分子乱利用,现在已经不让使用了。所以我找了个替代的微信企业机器人。效果还行
如果想要实践的话,只要新建一个企业微信机器人
然后拷贝对应的网址
wechaturl = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=6395cab0-53d3-41db-8dd7-4c7007987d21'
-
如何每天上传数据
本来以为判断每天时间,这个比较简单的,但是实际操作过程中发现,这个真的还不是那么容易的,最后找到一个方法安装了python的一个软件包schedule添加功能
未来的计划建议
这次第一次做AI识别相关的应用,并且应用到实际项目中去,可以看出本人的这个方面经验确实比较欠缺的,花了很多时间,结果做出来的东西还是相对来说比较入门的。而且平时都是习惯使用C语言,在STM32上面开发比较熟悉,结果在Python下面开发相对来说比较完成度不是很高。
-
后面想继续学习python,虽然python刚开始用起来比较难用,但是确实所需要的代码比C少很多,以后验证模块很方便
-
对于边缘计算,这方面的研究也不是很深入,可以继续学习AI相关的算法代码并且实践