一、项目介绍
远程AI手势识别,主要采用了TinyMaix神经网络进行的手势识别功能,TinyMaix是面向单片机超轻量级的神经网络推理库,即TinyML推理库,可以让你在任意单片机上运行轻量级深度学习模型。项目的主控采用的是RA4M2-100PIN开发板,周边的传感器有HS3003温湿度传感器,ISL29035光照传感器以及DA16200 WIFI模块,显示部分主要采用迪文屏和上位机。软件采用FreeRTOS操作系统,软件外设配置和代码编写均采用官方的IDE e2Studio。同时还具有USB升级功能,该部分需要搭配自己设计的USB升级上位机,以及自定义的通信协议。
二、硬件连接和介绍
下图1是硬件实物连接图:
系统的硬件连接方式为:IIC连接HS3003温湿度传感器,IIC连接ISL29035光照传感器,串口连接DA16200 WIFI模块,串口连接迪文屏。
整体硬件连接框架如下图2所示:
三、软件数据通信流程
FreeRTOS一共拥有三个进程,分别是获取温湿度和光照值进程,WIFI配置及通信进程,手势识别检测进程。
获取温湿度和光照值进程流程图如下图3所示:
手势识别检测进程流程图如下图4所示:
四、上位机设计
上位机采用C#进行设计,采用UDP与单片机进行通信,连接之后显示温湿度和光照值,同时接收手势识别检测结果。
效果图如下图5所示:
五、USB升级设计
USB升级主要采用USB PCDC连接通信,配置完USB PCDC后PC端就可以识别处一个串口,此时就可以与单片机通过USB进行通信。单片机上电后,首先进入BootLoader程序,当检测到USB连接则进入等待升级,此时上位机会检测到一个串口,这时通过定制的通信协议将升级包【xxx.srec】发送给单片机,单片机接收数据后会存到指定的Flash地址上,当接收完整后就完成了USB升级功能。
USB升级流程图如下图6所示:
USB上位机图如下图7所示:
六、总结
一开始测试U盘自动升级,发现一直识别不了,结合之前的串口波特率对应不上115200需要配置230400才能不乱码,从而发现RA-Eco-RA4M2-100PIN和EK-RA4M2的晶振不一样,而U盘自动升级例程采用的是EK-RA4M2开发板,那么USB肯定是没办法正常通信的,所以EK-RA4M2的USB例程不能正常通信也是正常的,之后修改了晶振频率一切都正常了。后面USB升级就是理解【xxx.srec】文件内容了,以前都是结果Hex文件,第一次接触【xxx.srec】文件,查找资料之后发现还是很容易理解的,直接移植U盘自动升级例程到USB就可以了,底层功能可以不用修改。这里要注意的一点是MDK生成【xxx.srec】文件是没办法在我提供的USB升级Demo中用的,因为MDK生成的地址有一些问题,所以是没法用的。
这次比赛调试也花了挺久时间的,一开始用的MDK开发,后面发现有不兼容的地方最后转到e2Studio开发。手势识别Demo移植没碰到太多问题,不管是MDK环境还是e2Studio环境,移植过程都挺顺利的。FSP配置工具也是挺好用的(虽然是第一次使用),一开始不太习惯多用几次就习惯了,这次也是第一次用瑞萨的单片机开发项目,整体下来还不错,没有遇到太难受的地方。瑞萨的周边模块其实匹配度还是挺好的,可以直接插到开发板上使用。就是网上的资料还是太少,希望官方能够多分享一些瑞萨方面的资料。
七、源码
*附件:001_RA4M2.zip
八、演示效果
远程AI手势识别
|