本项目是使用RA6M5开发板搭载RTThread系统+LVGL图形库实现的一个简易热成像仪。其中传感器使用的是mlx90640,屏幕是320*240的电容触摸屏,整个交互由触摸完成。
01功能介绍
本项目使用野火的RA6M5开发板作为主控板,外扩了一个转接板,将开发板上面的排针转换成Arduino UNO接口,最后是一块Arduino的屏幕扩展板,通过SPI和I2C进行屏幕控制和触摸控制。
功能上目前支持最多5点测温,其中1个点是最大值跟踪点,剩余4个是手动测量点,手动测量点可以通过触摸拖动对应的测量点进行测量点位的选择,并且实现了拍照功能和图片浏览器功能,图片浏览功能可以浏览拍摄的测温图片。
02经验分享
在开发过程中遇到的最大问题就是RAM不足。
本来计划是使用全屏(即320*240)来做整体功能,但是由于RAM空间不足(图形相关的基本空间是320*240*2*3=460KBytes,所以基本没有系统任务等其他的空间了),所以整体尺寸只能往下调,使用的是280*210。
libbmp库按320*240来算所需的缓存需要320*240*4=300KB,这又更进一步增加了内存的压力,所以使用了分步处理图片数据,是的内存占用降低到w*4,w是宽度,如果w=320,则需要1280Bytes内存。
03照片分享
320*240时的实际图片
五点测温图
调整为280*210后
04软件实现
软件设计分2步,第一步是通过GUI Guider设计想要的界面,相关教程可以去NXP论坛找,第二步是封装GUI相关的接口及实现对应的业务逻辑。
其中UI相关的切换、控件隐藏和显示等都是通过GUI Guider进行设计的,添加少量代码就可以了,然后导出之后就改吧改吧,这部分最大的工作量是总结了一个测温光标的控件,此控件通过线和标签控件组合而成。
业务逻辑上面就是主界面的时候读取传感器的数据并做相关的处理,然后调用GUI的API进行显示,如果到了文件浏览界面,就会读取SD卡的文件,生成bmp的列表,点击相应的项就会加载对应的图片,如果是设置界面,就会读取参数,配置更新的换就会更新参数,当前就一个参数,就是测温点的个数。
05小结
通过本次活动,学习了M33单片机,相对M4还是要复杂一些,需要多学习学习。然后是学习了GUI Guider的使用,相对LVGL官方的推荐的设计工具,这个是免费的,基本功能还是可以的,就是有一些小问题,期待以后能改进。下一步是想通过并口屏去实现显示,可以得到更高的性能,然后是进一步的完善更多的功能,比如录制视频,检测到报表导出等等,这些需要进一步去优化内存资源,还需要耐心的打磨。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !