一、设计概念

1、主要技术特点

基于嵌入式AI的智能防疫机器人以CH32V307为主控负责各个模块的通信控制,人员测温方面采用的是GY614红外测温模块,主控通过IIC通信协议控制红外测温模块实现人员测温功能,配置模块相关寄存器数据,控制数据帧,起始寄存器07即从发射率寄存器开始,寄存器数量7即07 08 09 0A 0B 0C 0D这7个寄存器的数据依次输出。团队成员自己设计体温优化算法,将测得体温大量计算处理,计算出最优温度。破坏报警方面,实现原理首先是采集IMU六轴数据,三轴分量计算去算他的总加速度与总角速度,然后再根据总加速度去判断是否触发报警。受到破坏,屏幕会出现报警动画。同时本项目测温过程中视觉模块会对人员进行人脸拍照,实现人脸与体温一一对应。本项目使用物联网模块,进行蜂窝网络组网或者连接云端,通过MQTT协议(消息队列遥测传输)以数据包形式实时上传机器人测得的人体体温、人脸信息以及破坏报警信息至局域网终端或者IOT物联网平台,云端实时记录上传的数据信息绘制测温曲线,并且可通过上位机进行异常报警。本项目移植了lvglv8系统,应用强大的构建块,例如按钮、图表、列表、滑块、图像等,并且带有动画、抗锯齿、不透明度、平滑滚动的高级图形。

2、关键性能指标

本项目测温过程中,每个数据帧能测的十个体温数据,并且会根据发射率、环境温度、目标温度计算值,共同得出人体真实温度。体温准确率达到90%以上。同时通过MQTT协议,以十秒的频率依次上传数据。视觉模块测得人脸图像帧率平均情况是30帧。

二、系统组成及功能说明

1、整体介绍

本项目由CH32V307单片机作为主控核心,物联网模块、视觉模块、语音播报模块通过串口与主控芯片通信,地磁陀螺仪与红外测温模块通过IIC通信协议由主控控制。物联网模块连接局域网通过MQTT协议将数据上传云端,然后工作人员可以在云端数据下发。LVGL嵌入式图形系统进行图形界面设置起到防疫宣传的作用。本项目采用了多种通信方式,旨在充分利用CH32V307单片机的各种资源,达到降低成本的目的。本项目所有的功能都旨在实现智能化、无人化、高效的防疫,减轻人力资源。

系统结构图

2、测温模块

红外测温模块采用非接触式检测测温物体表面红外能量进行测温,分辨率可达±0.02℃,最大检测距离约1米,采用IIC协议进行通信,低功耗、低成本。

测温计算中的重要公式

3、口罩佩戴检测功能的设计

采用嵌入式设备与深度学习技术检测摄像头视频流的方式实现其口罩佩戴检测功能,使用Keras深度学习框架复现更适合嵌入式移动设备的轻量化目标检测网络YoloV4-tiny,以实现实时高准确率地识别出未佩戴口罩的人脸,通过树莓派的WiFi模块即可将人脸图像传至云端。

4.数据可视化与云端报警功能的设计

使用物联网模块,进行蜂窝网络组网或者连接云端,通过MQTT协议(消息队列遥测传输)以数据包形式实时上传机器人测得的人体体温以及人员身份卡卡号至局域网终端或者IOT物联网平台,通过云端后台或上位机实现数据可视化,云端实时记录上传的数据信息绘制测温曲线,并且可通过上位机进行异常报警。

三、代码展示

1、测温系统

void USART1_IRQHandler(void)
{static uint8_t i=0,rebuf[30]= {0};if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//判断接收标志{rebuf[i++]=USART_ReceiveData(USART1);//读取串口数据,同时清接收标志if (rebuf[0]!=add)//帧头不对i=0;else if ((i==2)&&(rebuf[1]!=0x03))//帧头不对i=0;else if ((i==3)&&(rebuf[2]>16))//帧头不对i=0;else if ((i==4)&&(rebuf[3]>16))//帧头不对i=0;if(i>3)//i等于4时,已经接收到数据量字节rebuf[3]{if(i<21){if(i==(rebuf[3]+5))//判断是否接收一帧数据完毕{if(!Receive_ok)//当数据处理完成后才接收新的数据{memcpy(usart_rx_data,rebuf,i);//拷贝接收到的数据Receive_ok=1;//接收完成标志}i=0;//缓存清0}}elsei=0;}}}
void temp()
{if(Receive_ok)//串口接收完毕{
for(sum=0,i=0;i<(usart_rx_data[3]+4);i++)//rgb_data[3]=3
sum+=usart_rx_data[i];
if(sum==usart_rx_data[i])//校验和判断{my_ir.to=(usart_rx_data[5]<<8)|usart_rx_data[6];
my_ir.ta=(usart_rx_data[7]<<8)|usart_rx_data[8];
my_ir.bo=(usart_rx_data[9]<<8)|usart_rx_data[10];
my_ir.e=usart_rx_data[4]; /*串口通信,将数据传输到上位机实时显示*/
printf("E: %.2f,",(float)my_ir.e/100);         //发射率
printf("  to: %.2f,",(float)my_ir.to/100);     //目标温度
printf("  ta: %.2f,",(float)my_ir.ta/100);     //环境温度
printf(" bo %.2f\r\n ",(float)my_ir.bo/100);   //额头温度转换成体温
}

2、Lvgl设计

void lv_example_meter_2(void)
{lv_obj_t* obj=lv_obj_create(lv_scr_act());static lv_style_t style_obj;lv_style_init(&style_obj);lv_style_set_bg_color(&style_obj, lv_palette_main(LV_PALETTE_PINK));//lv_style_set_bg_opa(&style_obj, 80);lv_obj_add_style(obj, &style_obj, 0);lv_obj_align(obj, LV_ALIGN_CENTER, 0, 20);lv_obj_set_size(obj, 200,200);//进度条static lv_style_t style_indic;lv_style_init(&style_indic);lv_style_set_bg_opa(&style_indic, LV_OPA_COVER);lv_style_set_bg_color(&style_indic, lv_palette_main(LV_PALETTE_RED));lv_style_set_bg_grad_color(&style_indic, lv_palette_main(LV_PALETTE_BLUE));lv_style_set_bg_grad_dir(&style_indic, LV_GRAD_DIR_VER);lv_obj_t * bar = lv_bar_create(obj);lv_obj_add_style(bar, &style_indic, LV_PART_INDICATOR);lv_obj_set_size(bar, 50, 100);//lv_obj_center(bar);lv_bar_set_range(bar, -20, 40);lv_anim_t a;lv_anim_init(&a);lv_anim_set_exec_cb(&a, set_temp);lv_anim_set_time(&a, 3000);lv_anim_set_playback_time(&a, 3000);lv_anim_set_var(&a, bar);lv_anim_set_values(&a, -20, 40);lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);lv_anim_start(&a);lv_obj_align(bar, LV_ALIGN_OUT_LEFT_BOTTOM, 15, 70);//圆弧lv_obj_t * arc = lv_arc_create(obj);lv_arc_set_rotation(arc, 270);lv_arc_set_bg_angles(arc, 0, 360);lv_obj_remove_style(arc, NULL, LV_PART_KNOB);lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);lv_obj_set_size(arc, 85, 85);//lv_obj_center(arc);lv_anim_t b;lv_anim_init(&b);lv_anim_set_var(&b, arc);lv_anim_set_exec_cb(&b, set_angle);lv_anim_set_time(&b, 7000);lv_anim_set_repeat_count(&b, LV_ANIM_REPEAT_INFINITE);lv_anim_set_repeat_delay(&b, 500);lv_anim_set_values(&b, 0, 100);lv_anim_start(&b);lv_obj_align(arc, LV_ALIGN_CENTER, 40, 40);//音量图标lv_obj_t* label2=lv_label_create(bar);lv_label_set_text(label2, LV_SYMBOL_VOLUME_MAX);lv_obj_set_style_text_font(label2, &lv_font_montserrat_14, 0);lv_obj_set_style_text_color(label2, lv_color_hex(0x1e1e1e), 0);lv_obj_align(label2,LV_ALIGN_BOTTOM_MID,0,-20);//音乐图标lv_obj_t* label3=lv_label_create(arc);lv_label_set_text(label3, LV_SYMBOL_AUDIO);lv_obj_set_style_text_font(label3, &lv_font_montserrat_14, 0);lv_obj_set_style_text_color(label3, lv_color_hex(0x1e1e1e), 0);lv_obj_align(label3,LV_ALIGN_CENTER,0,0);//WIFI图标的父对象lv_obj_t* obj1=lv_obj_create(obj);static lv_style_t style_obj1;lv_style_init(&style_obj1);lv_style_set_bg_color(&style_obj1, lv_palette_main(LV_PALETTE_GREY));lv_style_set_border_color(&style_obj1, lv_palette_main(LV_PALETTE_GREY));lv_obj_add_style(obj1, &style_obj1, 0);//lv_obj_align(obj1, LV_ALIGN_CENTER, 0, -20);lv_style_set_radius(&style_obj1,360);lv_obj_set_size(obj1, 60,60);lv_obj_align(obj1,LV_ALIGN_TOP_LEFT,10,0);//音乐图标的父对象lv_obj_t* obj2=lv_obj_create(obj);static lv_style_t style_obj2;lv_style_init(&style_obj2);lv_style_set_bg_color(&style_obj2, lv_palette_main(LV_PALETTE_GREEN));lv_style_set_border_color(&style_obj2, lv_palette_main(LV_PALETTE_GREEN));lv_obj_add_style(obj2, &style_obj2, 0);lv_style_set_radius(&style_obj2,360);lv_obj_set_size(obj2, 60,60);lv_obj_align(obj2,LV_ALIGN_TOP_LEFT,90,0);//WIFI图标lv_obj_t* label4=lv_label_create(obj1);lv_label_set_text(label4, LV_SYMBOL_WIFI);lv_obj_set_style_text_font(label4, &lv_font_montserrat_14, 0);lv_obj_set_style_text_color(label4, lv_color_hex(0x1e1e1e), 0);lv_obj_align(label4,LV_ALIGN_CENTER,0,0);//蓝牙图标lv_obj_t* label5=lv_label_create(obj2);lv_label_set_text(label5, LV_SYMBOL_SETTINGS);lv_obj_set_style_text_font(label5, &lv_font_montserrat_14, 0);lv_obj_set_style_text_color(label5, lv_color_hex(0x1e1e1e), 0);lv_obj_align(label5,LV_ALIGN_CENTER,0,0);//字体lv_obj_t* text=lv_label_create(lv_scr_act());lv_obj_set_size(text, 200, 200);lv_label_set_text(text, "hello lvgl !");lv_obj_set_style_text_font(text, &lv_font_montserrat_14, 0);lv_obj_set_style_text_color(text, lv_palette_main(LV_PALETTE_LIGHT_BLUE), 0);//lv_obj_set_style_text_font(obj, 20, 0);lv_obj_align(text,LV_ALIGN_TOP_MID,60,20);}

RISC-V MCU--基于嵌入式AI的智能防疫机器人相关推荐

  1. 计算机视觉 马尔_基于视觉AI的智能车牌识别相机,识别更精准功能更强大

    原标题:基于视觉AI的智能车牌识别相机,识别更精准功能更强大 通常来说,车牌识别相机是通过对图像的识别判断从而完成车辆信息采集的,市面上常见的车牌识别相机大部分采用的是OCR识别和视觉AI智能识别. ...

  2. AI中台——智能聊天机器人平台

    [宜信技术沙龙]是由宜信技术学院主办的系列技术分享活动,活动包括线上和线下两种形式,每期技术沙龙都将邀请宜信及其他互联网公司的技术专家分享来自一线的实践经验,分享内容覆盖金融科技及软件研发等主要技术领 ...

  3. RISC-V MCU 基于嵌入式的歌曲识别

    目录 前言 一.主要技术算法 二.硬件部分 1.ES8388 2.LCD 3.FLASH 4.按键 三.软件部分 四.实现过程 训练模板 识别歌曲 全国嵌入式芯片与系统设计比赛 题目:基于嵌入式的歌曲 ...

  4. 基于 i.MX8MP的智能巡检机器人应用方案

    今天小编就为大家介绍一种用于替代人工对设备进行检查和维护的特种机器人--智能巡检机器人. ​01智能巡检机器人 在城市快速发展的过程中,越来越多的管道被铺设在地下,如此大面积的地下管廊该如何快速而精准 ...

  5. 基于5G技术的智能导航机器人及AR巡逻应用开发项目实施方案(上)

    目录 1 项目总体概述 1.1 项目背景 1.2 建设内容 1.3 建设目标 2 项目需求理解 2.1 业务需求 2.2 功能需求 3 项目技术方案 3.1 建设方案 3.1.1 设计思路 3.1.2 ...

  6. JAVASCRIPT实现基于文本的自动智能聊天机器人

    原创作者:一粒马豆&冰豆小李 首先让我们来看看这样一种语言现象: 研表究明,汉字序顺并不定一影阅响读. Aoccdrnig to a rscheearch at an Elingsh uine ...

  7. 基于STM32简易DIY智能聊天机器人

    前言 大二忙里偷闲,花了一个月左右自己利用了Python+ESP8266 DIY 了一个智能聊天机器人,调用的是图灵机器人的体验API,现在把DIY过程记录下来,希望能分享给别的对这方面有兴趣的人. ...

  8. 基于Transformer的NLP智能对话机器人实战课程培训

    NLP on Transformers 101 One Architecture, One Course,One Universe 本课程以Transformer架构为基石.萃取NLP中最具有使用价值 ...

  9. 基于TCP协议实现智能聊天机器人

    文章目录 前言 一.socket是什么? 二.使用步骤 1.服务端 2.客户端 总结 前言 编写聊天程序的服务端代码和客户端代码.完成后,先启动服务端代码,然后启动客户端代码,服务端可以根据客户端发生 ...

最新文章

  1. jquery $.proxy使用 Jquery实现ready()的源码
  2. pandas使用query函数删除dataframe中某一列数值小于某一特定值的行(remove dataframe rows baed on column value)
  3. CNDO-INTGRL-SS-BINTGS-斯莱特轨道指数---递推方法
  4. 15.枚举enum.rs
  5. 踩坑rosbag --clock
  6. 用STS创建Maven的Web项目转
  7. 解说redis中如何实现高可用
  8. Logistic regression Newton’s method
  9. PHP消息通信机制测试代码
  10. 二维傅里叶变换的意义
  11. ftp 命令访问 ftp服务器
  12. 阿里云mysql勒索病毒处理_勒索病毒数据库恢复
  13. IDEA Auto build completed with errors解决办法
  14. Appium 自动化测试 滑动 Swipe 详解
  15. Go语言判断接口的具体类型并进行类型转换
  16. 【报告分享】2021中国医生洞察报告-丁香园(附下载)
  17. 给你的网页加个二次元老婆吧
  18. Android Studio中通过SQLiteDatabase类操作数据库
  19. 量子计算 19 量子算法4 (Shor Part I)
  20. 6.S081-7中断(键盘输入+屏幕输出) - Interrupts

热门文章

  1. orbslam2(1)-初始化
  2. coding回退克隆到某个历史版本
  3. Matrix Chain Multiplication UVA - 442
  4. “旧爱”难断,雀巢能否借区块链一斩红尘?
  5. Microsoft Visio Premium 2010安装过程中遇到错误1402所需修改的注册表项
  6. matlab计算复活节概率,复活节的算法_复活节日期怎么算?
  7. RHEL 6.4(i386)安装基于fcitx的搜狗拼音输入法
  8. 【5GC】开源5G核心网(Open5GS)架构详解
  9. ASC认证|水产ASC标签正逐步进入国人视野
  10. C# DirectInput游戏手柄开发心得