物联网不求人-人工智能So easy
随着近几年人工智能的兴起,让我们的生活发生了翻天覆地的改变,任何普通的东西经过AI的加持都变得更加智能和实用,其工作的效率与传统方式相比更有着质的提升。随着人工智能这股春风的到来不少大厂纷纷嗅到商机推出自己的人工智能产品。不管是何厂家推出的产品主要分为两大类分别是图像处理与自然语音处理,其中自然语音处理又可分为语音合成与语音识别,它们的共同特点都是上传一张图片或者一段音频一段文字经过处理从而得到我们想要的结果。然而不同厂家,他们有着各自的接入协议,还有着复杂的API文档,非专业人士很难看懂。创客教育作为一门综合性极强的学科而言,需要不同学科知识相互融合才能够迸发出不一样的火花。任何单一的学科知识都不能使其发扬光大,然而想要同时涉猎多个学科取得一定成绩这相当不易,那么有没有办法将上面的各大平台进行统一接入统一协议,简化人工智能的接入方式,使其专注于创意的实现无需理会复杂的接入协议,API接口文档以及技术细节问题,将人工智能抽象封装为一个“特殊类型传感器或者执行器”来用,答案是肯定的,齐护机器人的AIcam Pro就这样一个人工智能学习的产品,它帮我们为上面的各大人工智能平台提供了统一格式API接口,我们可以很方便的使用AI,以低代码方式让任何我们熟悉的Arduino UNO,Nano,掌控板等ESP系列开发板进行接入。
视频演示
下面让我们来看看AIcam Pro的演示视频,该视频当中演示了AIcam Pro的人工智能平台使用方法如车牌识别,人体识别,人流量统计等应用,同时演示了AIcam Pro的播放TF卡MP3,拍照保存等离线功能。
物联网不求人-人工智能So easy
所用硬件
AIcam Pro是齐护机器人推出的一款人工智能学习的开发板,内置了摄像头,板载按钮,TFT等模块。将常见的百度,旷视以及腾讯等人工智能平台进行了整合提供了统一的接入方式,简化了人工智能的使用方法,为广大师生与爱好者提供了一种人工智能学习的简单方法。
硬件特点
- 基于 ESP32 开发,支持 WiFi,蓝牙
- WIFI图像传输
- TF卡拓展
- 状态指示灯
- 摄像头
- 240x240 TFT
- 两路拓展接口
- 外部供电与电源管理
- 音频放大电路
本教程所需准备
软硬件准备
- 一块齐护AIcam Pro开发板;
- 一张SD卡(不超过32GB且为高速卡);
- 齐护固件上传工具
在线人工智能是什么
人工智能是让计算机像人一样思考和学习的技术。就像人类可以通过学习和经验来做出决策一样,计算机也可以通过学习和处理大量数据来做出类似的决策。比如,你可以让计算机通过学习识别图片中的物体,或者让它通过学习自然语言处理来理解人类的语言。这些技术可以应用于各种领域,例如医疗、金融、交通等,帮助人们更好地解决问题和做出决策。而在线人工智能则是各大云平台为人工智能提供的一个API接口,我们将原始素材通过这个API接口提交到服务器,服务器经过处理便可得到我们想要的处理结果从而实现机器辅助人类协同工作的作用。
API接口如何使用
API接口是一种让不同的软件系统之间进行交流和数据传输的方式。就像人们通过电话进行交流一样,不同的软件系统可以通过API接口进行数据传输和交流。API接口可以让不同的软件系统之间进行数据共享,从而实现更高效的数据处理和应用开发。例如我们这里人工智能的应用,我们不关心它的处理过程,只需要得到最终的处理结果因此我们通过API接口提交这个图片音频或者文字,服务器经过处理后给我们返回想要的结果。想要使用API接口我们需要懂一点编程语言、网络协议、数据格式等知识。
串口通讯交互
串口通讯是一种通过串行接口进行数据传输的通讯方式。串口通讯是计算机和外部设备(如传感器、控制器等)之间进行数据交换的一种常见方式。串口通讯具有传输距离远、传输稳定可靠、支持多种数据类型、硬件成本低、易于实现等优点。AIcam Pro利用串口通讯进行数据交互,其他开发板通过串口发送特定指令给AIcam Pro从而控制AIcam Pro进行拍照上传云处理或者拍照保存等功能并将结果返回其他开发板从而实现让 任意开发板接入人工智能。
齐护AIcam Pro功能思维导图
上面思维导图中阐述了Aicam Pro的硬件资源与基本功能结构,下面将围绕该思维导图进行讲解,带大家了解并使用Aicam Pro。
齐护AIcam在线功能
固件烧录
使用Type c数据线连接电脑与AIcam Pro选择所需功能的固件(固件见附录文件)按下图方式使用齐护固件上传工具将固件写入AIcam Pro。
TF卡配置
在使用在线AI的时候我们需要配置AIcam Pro连接的网络,同时不同AI功能对应的平台网址也不同,某些情况下我们还需设置摄像头的水平镜像与垂直镜像以符合当前的需求,那么如何简单便利的对其进行配置呢?对此AIcam Pro采用了TF卡配置的方法,新建一个命名为admin.txt的文本文件,写入如下的json字符串进行配置
{
"ssid": "WiFi名称",
"pass": "WiFi密码",
"url": "AI网址",
"hmirror": "水平镜像",
"vflip": "垂直镜像"
}
json格式的字符串具备简洁与可读性高的特点,可以很方便的看出各个参数与其值的关系,现在对该json字符串的各个参数进行简要说明,其中ssid为连接的WiFi名称注意不要使用中文,中文可能存在无法连接网络的情况,pass为WiFi密码(WiFi需为2.4G频段WiFi),url为图片上传的网址(参数拼接到链接整体作为上传网址),hmirror为水平镜像设置(值范围0-1),vflip为垂直镜像设置(值范围0-1)
腾讯车牌识别
腾讯人工智能部分以腾讯云车牌识别为例(腾讯大部分接口只要注册并实名都提供了每月一定额度的免费调用次数,这对于我们的学习足够,一般用途,无需开通付费服务),查阅齐护AIcam Pro开放API附录可知其API接口格式为http://<齐护机器人网址>/qdpai/tenxun/V1.php?secretId=&secretKey=其中<齐护机器人网址>为齐护AI官网ai.qdprobot.com,与是腾讯云开通人工智能相关接口的账号授权信息,齐护机器人仅作为硬件与腾讯云之间连接的桥梁,对于其他平台仍是如此。所有的接口账号均来自于各大平台需要自行申请开通对应权限使用,现在以腾讯车牌识别为例演示如何识别车牌,下面重复的内容不再进行赘述。
欲使用腾讯云相关的接口需要访问腾讯云官网在线体验其功能并开通相关服务,最后创建应用获取授权信息(此处请根据平台提示一步步操作获取账号授权信息)
按照上面的AIcam Pro配置文件要求查询AIcam Pro开放API附录并获取腾讯云授权信息回可得到如下配置文件(后置镜像为例)
{
"ssid": "Netcore-xxx",
"pass": "1234567xxx",
"url": "http://ai.qdprobot.com/qdpai/tenxun/V1.php?secretId=AKIDve7i8ML5ZnlTv73kBMHvKTLwGLBl6xxx&secretKey=SebIjvrYy94j8HAnAH8j49zav0qPixxx",
"hmirror": "1",
"vflip": "0"
}
TF卡插入电脑打开TF卡文件夹并新建一个admin.txt文件将上面的配置字符串复制到该文件并保存(注意此处根据自己的实际情况修改不要照抄),现在弹出TF卡并插入到AIcam Pro重启开发板,AIcam显示画面如下
- 重启开发板出现开机画面,单击Key下一步
- 出现配置文件,检查无误后单击Key下一步
- 开始联网,联网成功后显示IP地址与固件功能提示,确认后单击Key下一步
- 显示AIcam ProAPI接口信息与动态修改功能URL提示,确认后单击Key下一步
- 显示设备ID与设备AP热点名称与密码(其他设备可直连AIcam Pro使用本地API接口),确认后单击Key开始使用AIcam Pro
- 出现摄像头实时画面
对准想要识别的车牌单击Key拍照将识别出车牌号与车牌颜色如上图所示,其中标号3为软串口连接,分别打开串口监视器进行查看,效果如下(注意硬串口与软串口的波特率不同)
从上面串口监视器中我们可以发现两者皆可以显示AI图片处理的结果,但硬件串口会显示一些调试信息与结果,而软串口只会输出得到的最终结果,因此我们不需要使用任何第三方硬件仅通过AIcam Pro就可以体验所有AIcam Pro的人工智能相关的接口功能,而第三方硬件则可以通过串口通讯的方式发送拍照识别指令upload进行AI拍照并获得处理结果。
对于局域网情况下还可以通过AIcam Pro的本地接口使用AIcam Pro,本地接口格式为/mode格式,其中为局域网内路由器分配给AIcam Pro的IP地址(前面联网成功后屏幕提示的IP地址)或者AP模式AIcam Pro的IP地址(192.168.4.1),mode为功能模式(mode有两种模式,分别为photo与upload)。效果如下所示
图中可以看到AIcam Pro接口均为GET请求模式,其中photo模式获取当前实时画面(请求用时192毫秒),upload模式将拍照上传AI平台并获取结果(请求用时1.99秒。),如果你有其他可联网 设备想要接入AIcam Pro那么AIcam Pro接口是一个不错的选择,这能与其他项目进行有机结合。
旷视手势识别
由于齐护机器人为接入第三方人工智能平台提供了统一的接入接口,在摄像头设置与网络连接均正常的情况下我们仅需要通过设置admin.txt配置文件中的url参数便可使用支持的第三方平台AI接口。下面以旷视的手势识别接口为例进行说明。第一步前去旷视官网注册账号并进行实名认证,旷视为广大的开发者提供了友好的政策支持,一旦注册并实名成功创建相关应用该账号授权信息可使用旗下几乎所有接口并不需要单独开通某一项服务,均提供了一定额度的免费调用次数学习足矣。通过查阅齐护AIcam Pro开放API附录可知旷视手势识别API接口格式为http://<齐护机器人网址>/qdpai/faceplusplus/V3.php?api_key=<api_key>&api_secret=<api_secret>。注册旷视账号并创建相关应用后得到授权api_key与api_secret替换对应参数后,可得到完整接口地址如下
http://ai.qdprobot.com/qdpai/faceplusplus/V3.php?api_key=ZPWFSdxUpbtuAMOZjmYA3CHT0JuYxxxx&api_secret=5lmcqRE1YU4jJeJ9A9-p845ApRAIxxxx
在这里我们可以选择取出TF卡重新修改配置文件url参数(永久修改),也可以通过串口指令修改本次接口地址(暂时覆盖url参数,重启后将恢复原来的url参数),这里我们通过串口监视器输入指令url_aiurl暂时修改人工智能接口地址(aiurl为占位符需替换成真实的AI地址),其指令如下
url_http://ai.qdprobot.com/qdpai/faceplusplus/V3.php?api_key=ZPWFSdxUpbtuAMOZjmYA3CHT0JuYxxxx&api_secret=5lmcqRE1YU4jJeJ9A9-p845ApRAIxxxx
硬件串口输入后反馈如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9uu3TabF-1685974861805)(img\8.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pBdJAzPo-1685974861805)(img\9.png)]
注意发送不需要末尾添加换行符与结束符,软串口设置并不会有该调试信息,无返回值,仅对外输出结果。
手势识别效果如下
百度人流量统计
与上面类似通过查阅齐护AIcam Pro开放API附录可知百度人流量统计API接口格式为http://<齐护机器人网址>/qdpai/baidu/V2.php?access_token=<access_token>,同样的我们要先注册百度的账号并开通对应服务创建应用后先获取百度的client_id与client_secret访问齐护百度秘钥生成网页填写client_id与client_secret点击提交获取access_token参数(所有百度相关的都需要获取access_token而不是直接使用client_id与client_secret)如下图所示
同样构造串口指令更改配置文件url参数并单击Key识别,其效果如下
齐护图床
在某些时候我们可能会需要用到可以远程访问的图片,因此齐护机器人官方提供了两个图床接口,接口分别为http://<齐护机器人网址>/qdpai/uploadimg.php(上传图片并生成外链短期内可访问,一张图片对应一个外链,存储一天,一天后自动清理)与http://<齐护机器人网址>/qdpai/qdprobot/upload_image.php(上传图片并生成外链长期有效且外链地址唯一不会改变)使用齐护图床效果如下
齐护通知服务
使用AIcam Pro可以很方便的发送邮件通知,邮件通知接口如下
http://<齐护机器人网址>/qdpai/email/?Host=<Host>&Username=<Username>&Password=<Password>&Port=<Port>&AddAddress=<AddAddress>&Subject=<Subject>&Body=<Body>&Name=<Name>
邮件通知各参数含义如下
邮件smtp服务器地址
邮箱账号
邮箱smtp密码(非邮箱密码)
smtp端口号
需发送的邮件地址
邮件主题
想要使用邮件通知服务你需要准备一个支持smtp服务的邮箱,常见的qq邮箱,163邮箱,阿里邮箱等均可,这里并不讨论如何开通smtp服务,感兴趣的同学可以自行搜索自己邮箱如何开通smtp服务并获得上述参数,下方演示了齐护邮件通知功能。
自定义图像识别接口
AIcam Pro提供了一个统一的图片上传接口,拍摄的图片将以二进制文件的格式上传到通过POST请求的方式提交到给定的admin.txt配置文件的url参数的服务器地址(若存在其他参数需将参数进行拼接),任何遵循此规范的接口都可以直接使用AIcam Pro通用AI固件,例如下方的图片演示中就为一个自定义图像分类接口的使用例子,该接口区分灰色马里奥与绿色马里奥,返回json格式数据,数据中描述了识别的图像标签与置信度。
语音识别
这里语音识别采用百度的语音识别接口,因此需要先获取百度的access_token,想要使用语音识别功能需要烧录AIcam Pro百度语音识别固件(固件见附录文件),同时将配置文件修改为下面的格式
{
"ssid": "WiFi名称",
"pass": "WiFi密码",
"access_token": "百度access_token"
}
正确填写上述信息并保存后,将TF卡插入AIcam Pro,最后按下图操作
- 将齐护数字拾音器使用连接线连接到左侧BAT(电池接口)上方拓展接口,重启开发板
- 单击Key下一步观察语音识别固件的使用提示,认真查看后单击Key下一步
- 检查配置文件,确认无误后单击Key下一步
- 开始联网,联网成功后显示准备就绪字样与绿色联网成功图标
- 按住Key(显示绿色麦克风图标)开始录音(左上方会显示时间单位毫秒,最长时间不超过8000,即最多识别8秒音频),松开Key(显示红色麦克风图标)结束录音
- 录音结束后将音频提交到百度服务器获取结果(json格式数据)并显示到屏幕上(硬串口会有调试信息),同时软串口发送识别到的文字(说什么,就返回什么,直接输出结果,非json数据),其他开发板或者设备通过串口通讯便可实现语音识别功能将任意音频识别为文字(默认中文)。
语音合成或网络MP3播放
想要使用语音合成功能需要烧录AIcam Pro百度语音合成固件(固件见附录文件),语音合成采用百度语音合成接口,admin.txt配置文件格式如下
{
"ssid": "WiFi名称",
"pass": "WiFi密码",
"url": "http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=PEIEN&tok=百度access_token&vol=9&per=5118&spd=5&pit=5&aue=3&tex="
}
使用时需开通百度语音合成服务并创建相关应用,获取百度access_token,cuid参数必须唯一建议为设备MAC地址即AIcam Pro的设备ID,以上为默认语音合成设置,若你有其他个性化设置如发言人,音调等要求请查询百度语音合成接口文档修改相关参数,使用步骤如下
- 将配置文件写入TF卡并插入AIcam Pro,重启开发板
- 单击Key进入语音合成固件说明页,认真查看后单击Key下一步
- 检查配置文件,确认无误后点击Key下一步
- 开始联网,联网成功后显示准备就绪字样与绿色联网成功图标
- 串口发送短句开始语音合成(发送的文字将拼接到百度语音合成链接作为请求地址,发送文字不能包含http字样,若含有该字样将视为网络MP3链接播放网络MP3)
- 开始语音合成或者播放网络MP3显示绿色音乐图标(串口将发送Play starts),播放完成将显示红色音乐图标(串口将发送Play finished)。第三方设备可通过串口通讯判断接收到的字符串从而获取当前语音合成或者网络MP3播放状态
齐护AIcam离线功能
当某些情况,没有网络连接的时候我们可以使用AIcam Pro的离线功能,对于图像相关功能仅需在配置AIcam Pro通用AI固件配置文件时将ssid参数与pass参数填写为空字符串即可,同时无需url参数(有没有都一样),配置如下所示
{"ssid":"","pass":"","hmirror":"1","vflip":"0"}
使用如下,开始使用设置与在线情况一致此处不再赘述
画面检测
我们知道相同硬件条件下拍摄的图片大小(这里的图片大小指的是占内存的多少)只与环境有关环境的复杂度与光照条件均会影响图片大小,在环境缓慢变化的过程当中相邻两张图片的大小是相近的其绝对值差异较小。相反,在环境变化激烈的场合,如突然有某个物体闯入或者光线剧烈变化都将明显影响图片的大小,利用这个特点我们便可以粗略的实现人体检测,运动检测,颜色检测等功能(此处需要开动大脑思考为啥可以这样),当长按Key的时候会切换画面检测模式或者实时视频流模式,其中画面检测模式与实时视频流模式相比多了图片大小显示与串口打印图片大小,该模式会定时检测并发送图片大小,其他设备或者单片机可以使用该值进行判断,从而使用以上目标。下图中演示了画面检测模式并串口打印该值。
离线MP3播放
在存在网络连接的时候我们可以使用在线语音合成或者播放网络MP3,那么在离线情况下我们能不能将AIcam Pro当作一个离线MP3模块播放TF卡内的MP3呢?答案是肯定的,考虑到某些情况下离线的语音交互使用较广,因此AIcam Pro准备了一个播放TF卡MP3文件的实用固件,通过串口发送指定文件名进行MP3播放,想要使用离线MP3播放功能需要烧录AIcam Pro离线MP3播放固件(固件见附录文件),使用步骤如下
- 将配置文件写入TF卡并插入AIcam Pro,重启开发板
- 单击Key进入离线MP3播放固件说明页,认真查看后单击Key下一步
- 初始化成功显示绿色成功图标同时提示初始化成功
- 串口发送音频路径如/test.mp3(不要有中文目录或文件名,播放MP3文件需指定完整路径)
- 开始播放MP3显示绿色音乐图标与播放路径(串口将发送Play starts),播放完成将显示红色音乐图标与播放路径(串口将发送Play finished)。第三方设备可通过串口通讯判断接收到的字符串从而获取当前MP3播放状态,再播放MP3的过程当中可以打断当前播放的MP3,只需要串口发送重新指定播放一段简短无声的MP3文件即可。
开始播放串口返回Play starts,播放结束返回Play finished
拍照保存TF卡
离线模式下有两种方式进行拍照保存到TF卡,分别是单击Key或者通过串口指令控制拍照保存,单击Key的时候拍照的图片将从序号0开始保存,同时序号将递增,通过串口指令控制的时候可以指定拍照保存的文件名,指令格式为save_path,其中path为保存的文件路径(固件帮你添加了图片后缀名.jpg,如需要保存的文件名为test只需串口发送save_test),通过板载按钮Key拍照保存效果如下
无线图传
当搭配齐护物联网手柄时,可以将AIcam Pro视频流发送到手柄进行显示,同时AIcam Pro串口将定时发送手柄的按键状态,此处篇幅有限详情请查看齐护官网物联网手柄使用教程
AIcam Pro固件介绍
AIcam Pro固件涵盖的人工智能当中的图像识别与自然语音处理,分别以不同的固件形式通过串口通讯的方法,第三方设备或单片机可以通过滴代码的方式进行交互,固件主要分为四大类分别是图像相关,语音合成,语音识别还有离线应用(拍照保存到TF卡或者播放TF卡MP3等)事实上除了上述介绍到的固件之外,还有无需TF卡的SPIFFS配置版通用AI固件与MQTT交互固件(直接通过MQTT交互无需串口,对于可以使用MQTT的设备而言,交互更加方便且控制指令与通用AI固件一致)此处由于篇幅有限,其他固件使用后续将在默言博客中进行演示说明。
AIcam Pro交互方式
为了能够让所有设备获得单片机都能够使用到AIcam Pro,因此齐护设计了简洁的串口通讯协议,只需要使用串口通讯发送简单的字符串就可以随时修改AI功能(任意图片相关AI与语音合成)或者其他如播放MP3等离线功能,对于可联网的设备则可以通过MQTT或者AIcam Pro接口形式交互,本文中提到的所有固件均在文末附录中,此处由于篇幅有限,其他交互方式与固件使用后续将在默言博客中进行演示说明。
总结
AIcam Pro是一款初学者友好的低代码AI模块,它功能上等于万能的视觉传感器(各种AI加持可识别与检测万物)+语音合成模块+语音识别模块+MP3模块+远程拍照模块+远程通知模块+无线图传模块,使用它我们无需理会复杂的各大AI平台接人方式与繁琐枯燥的API文档,任何人都能够使用简单的串口通讯从而使用原来需要各种技术背景以及复杂知识才能实现的功能,它为我们传统的创客作品带来了来自物联网与AI的无数可能,让传统项目达到更深的高度。上述功能均可使用硬件串口进行调试,在没有其他模块的情况下可以快速验证AIcam Pro的功能(硬件串口波特率为115200或9600),值得注意的是,某些TF卡可能会导致TFT卡显示异常的问题,若使用时出现这种情况仅需在程序初始化成功后,取出TF卡即可正常使用。更多关于AIcam Pro的实用教程请关注默言博客,后续更精彩。