物联网操作系统AliOS Things 3.3 |
ucloud_ai_demo是基于云端AI能力实现的AI识别案例,主要有三个部分组成:
该案例中支持了15种AI能力,通过在aiconfig.h中配置AI_MODEL选择对应的AI模型。所有的AI模型类型在aiagent_common.h中定义。
整个方案由HaaS100、WiFi摄像头、LCD组成。LCD与HaaS100通过SPI连接,HaaS100通过Http请求获取到JPEG数据最终显示到LCD上。
市面上的WiFi摄像头比较多,在本例中WiFi摄像头采用ESP官方的ESP32-EYE进行适配,ESP32-CAM是ESP32第三方厂商开发的一款低成本方案,应用也比较广泛,开发者也可以选择它作为方案之一,万能的淘宝上有很多卖家,商家也会提供相应的资料,开发者可以根据自己需要进行调试,购买链接如下: ESP32-EYE: https://detail.tmall.com/item.htm?spm=a230r.1.14.1.150d6a6ftZ6h4K&id=611790371635&ns=1&abbucket=3
ESP32-CAM: https://detail.tmall.com/item.htm?spm=a230r.1.14.1.3f543b21XaGDay&id=581256720864&ns=1&abbucket=3
这一个步骤不是必须的,不过如果你有多个python环境的需求,也安装过conda可以使用该步骤为esp32的开发创建一个独立的python开发环境,避免不同开发环境的相互影响,这里也可以参考[《**VSCode中搭建Python虚拟环境SOP**》]https://blog.csdn.net/HaaSTech/article/details/113512377)。
不同的操作系统安装的步骤也有所差异,请参考官网文档进行安装: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html#get-started-set-up-env
这里以Macbook为例进行环境变量设置:
注意: 每次重启终端后都需要执行该步骤,否则找不到idf.py命令,或者可以加入到根目录.bashrc中不用每次再输入该命令。
SoftAP模式
默认启动后ESP32 EYE已经开启了SSID为ESP32-Camera的AP,可以使用电脑连接该AP。
也可以通过修改sdkconfig来改变ssid/password、station连接数量、AP信道、服务器IP等,然后重新进行编译:
Station模式
ESP32也支持station与SoftAP模式共存,比如想让ESP32 EYE接入到SSID为haas_test的局域网中,修改sdkconfig中的ssid/password即可。
因为本案例中使用的LCD是320x240的,摄像头采集的画面也相应的设置为QVGA(320x240)减少传输带宽占用,esp-who/examples/single_chip/camera_web_server/main/app_httpd.c中添加代码:
ESP32-EYE的代码中提供了多个Demo,使用camera_web_server来建立一个web服务器,该Demo中摄像头采集的数据以jpeg格式提供,并且提供了以http请求的方式获取jpeg图像数据。编译需要进入到Demo的目录中:
例如: idf.py -p /dev/cu.SLAB_USBtoUART flash
查看串口log,进入到camera_web_server所在目录执行。
例如: idf.py -p /dev/cu.SLAB_USBtoUART monitor
所以camera wifi的IP就是192.168.3.135。
为了确认ESP32-EYE摄像头是否正常,电脑连接ESP32-EYE的WiFi网络ESP32-Camera,先通过电脑方式查看web界面http://192.168.4.1:80/capture: 抓取当前画面http://192.168.4.1:80/capture:
LCD购买链接https://item.taobao.com/item.htm?spm=a1z09.2.0.0.768d2e8d9D3S7s&id=38842179442&_u=m1tg6s6048c2
请选择购买2.4寸屏。
HaaS100扩展口:
LCD与HaaS100接线对应pin脚:
登陆https://vision.aliyun.com免费开通如下功能:
登陆oss.console.aliyun.com创建bucket,注意:
在solutions/ucloud_ai_demo/package.yaml中配置:
在components/ai_agent/include/aiconfig.h中配置:
默认是人脸比对。
登陆http://oss.console.aliyun.com 上传你的人脸到4.1中创建的bucket中,并复制路径到:
wifi camera的http访问地址,用户根据自己摄像头的IP地址进行替换: 在components/ucamera/package.yaml中配置:
192.168.43.166替换为3.2.1.7中从log获取的WiFi摄像头IP。
开发环境的搭建请参考 HaaS100快速开始 (搭建开发环境章节),其中详细的介绍了AliOS Things 3.3的IDE集成开发环境的搭建流程。
云端AI识别的代码下载请参考 HaaS100快速开始 (创建工程章节),其中:
选择解决方案: “云端AI案例”或者“ucloud_ai_demo” 选择开发板: HaaS100
参考 HaaS100快速开始 (3.1 编译工程章节),点击 ✅ 即可完成编译固件。
本组件例子中使用到到图片及字体分别存放在代码中hardware/chip/haas1000/prebuild/data/目录下ai_demo_image及font目录,除烧录ucloud_ai_demo image外,需烧录littlefs文件系统,请将hardware/chip/haas1000/package.yaml文件中以下代码段的注释打开:
参考 HaaS100快速开始 (3.2 烧录镜像章节),点击 "⚡️" 即可完成烧录固件。
因为HaaS100开发板需要连接到云端,因此需要连接到一个可以上外网的路由器,WiFi摄像头(ESP32-EYE)也只能使用Station模式连接到同一台路由器。
请将ssid修改为您路由器的WiFi名称,paasword填入路由器的WiFi密码。
识别到后输出置信度的值,人脸位置以及“boss is coming”字样:
在HaaS 100的扩展屏上显示: