本项目主要以启明6M5开发板作为主控,通过AMG8833模块获取手部的温度,然后通过BP神经网络解析温度数据,来识别手部动作。当手部动作和预定控制指令激活动作相匹配时,向外部设备发送控制指令,当外部设备接收到对应指令执行对应的操作。
因为该设备是通过手部温度作为控制变量,所以项目运行的温度在28℃摄氏度下(设备静态是经过传感器测量得到的数据)。手部温度为33℃左右,手部距离传感器大概在5cm左右,并且处于传感器芯片正前方。说明:环境温度会影响传感器的识别。
硬件部分
①设备型号
野火RA6M5开发
②外围设备
GY- AMG8833 IR 8x8 红外热像
1.44寸彩色TFT显示屏高清IPS LCD液晶屏模块128*128
③其他配件
面包板 x 1杜邦线若干
④设备引脚配置
⑤引脚连接
以及串口:
TX : P512
RX: P511
软件部分
项目完成使用到的软件有:
e2 studio
vs code
字模软件 PCtoLCD2013
野火串口调试助手
软件部分代码说明:
1、GY- AMG8833 IR 8x8 红外热像仪 驱动部分代码说明:
AMG8833模块使用I2C 通讯协议:(使用硬件I2C)
下面是模块是主要的各个功能驱动函数
根据数据手册说明:只要主机向从机发送0x80指令,从机设备 会直接 一次性按顺序发送完 温度栅格点 1-64 的温度数据
其他指令:按照I2C 通讯协议读取
I2C 驱动 .C 文件部分函数
2、1.44寸彩色TFT显示屏高清IPS LCD液晶屏模块128*128 部分代码说明
该LCD 液晶屏使用SPI 通讯协议:(使用模拟SPI)
驱动芯片为ST7735SPI
驱动 .C 文件部分函数
3、BP 神经网络:
代码说明:
三层网络结构:
第一层是输入层,第二层是隐藏层,第三层是输出层
神经网络预测代码说明:
神经网络预测的原理是,将目标数据输入到神经网络中,经过神经网络中参数的迭代,使之得到符合要求的数据数据,然后保存神经网络中的参数(各个节点的权重参数)。使用该网络预测时,将训练好的参数,导入到神经网络中,该神经网络就预测和神经网络中相符合的数据。
该神经网络的相关信息如下:
三层BP神经网络:
输入层有64个元素 , 隐藏层有34个元素, 输出层有10个元素
训练次数为:10000次,最终的错误率为:0.00658,学习率为:0.1 ,动量因子:0.1 训练数据总共160组 (160组中 ,分成三份)总共训练了三个手势
训练数据示例:
输出数据说明:
该网络有10个数据输出 ,(如:[0,0,0,1,0,0,0,0,0,0] (从左往右)依次是 0 - 9 手势 ,但本次训练 仅仅训练了3个手势, 结果如上。
其他信息说明:
本次的隐藏层的数目依次经历了 12->24->128->34 的变化 ,具体的数目和输入输出的元素个数,没有实际的关联(网上虽然有建议) ,具体看情况而论,因为是三层网络,隐藏层的数量不可以太少,也不可以太多,太少,说简单的,输出的数据不在[0,1]的区间,太多,输出的都是0.9左右的数据
输出的数据不在[0,1]的区间
可以调整 学习率 或者 训练次数(增加),或者是动量因子(修改该参数时,学习率不变)
调整隐藏层的节点数目(往大了调)
输出的都是0.9左右的数据(过拟合)
调整隐藏层的节点数目(往小了调)(按实际情况调节)
输出数据的设定,按照激活函数的取值选择
输入数据的选择,[0-1]之间 ,为了提供训练的成功率,在输入数据中做了一些处理
训练的前提是保证网络正常(代码没有写错)
优化训练的操作说明:
左上角
手势1 白色
手势2 浅绿色
手势3 浅紫色
视频演示
本项目还有需要优化的地方,也有着许多不足。作者水平有限,希望广大网友批评指正。
更多内容您可识别二维码或点击文末阅读原文访问查看:
更多内容,您可复制下方网址到浏览器中打开进入瑞萨中文论坛查看:
https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/
1
END
1
推荐阅读
【瑞萨RA MCU创意氛围赛作品赏析】项目11——基于瑞萨RA6M5的信号处理工具集(上)
【瑞萨RA MCU创意氛围赛作品赏析】项目12——智能烟雾感应吸除系统
【瑞萨RA MCU创意氛围赛作品赏析】项目13——基于瑞萨启明6M5智能环境检测小车