RISC-V MCU 智能防疫协测机器人

摘要

        由于疫情的反反复复,核酸检测已然成为了生活的常态,但是现核酸检测工作中存在一些弊端需要我们去解决。通过CH32V307VCT6作为核心板,利用PID算法,小程序设计,酒精喷雾系统,L610模块等设计智能协测机器人帮助完成核酸检测中部分功能。并通过搭建实物模型验证了协测机器人能够完成如下功能:当机器人载物台承载设定核酸试管数量后语言播报提醒,机器人按规定路线向目的地出发,达到目的地开始消毒,达到设定浓度后取消消毒,取下全部试管后按规定路线返回至起点后再次消毒,前置摄像头实时监测路况,小程序显示机器人状况。 

 第一部分  设计概述

1、设计目的

        核酸检测已然成为了生活的常态,但是现核酸检测工作存在一些弊端:

        1、由于需要核酸次数的频率相对频繁,对医护人员工作量过于巨大;

        2、市场上核酸协助机器人体积较大,难以携带和拆卸或添加功能;

        3、对有疫情地区需要多次人工消毒;

        为解决此类问题,设计和制作一款智能防疫协测机器人,设置消毒系统,设置载物台进行核酸样品物料运输,各外设易拆卸,结合移动设备小程序显示核酸试管信息等提高核酸检测在全国各地的检测效率。

2、技术特点

        智能防疫协测机器人利用CHV307VCT6核心板作为主控,可以实现语音播报,循迹,消毒,实时监控路况,小程序显示数据等功能,不仅可以运用于日常核酸检测工作并且智能车带有载物台对短距离运输物资也有巨大用处,外设模块简易拆卸,可利用率高。车身整体见图1.1。

        1.智能车配置载物台。采用红外对射管,当核酸试管数量达到一定规模时发送信息至小程序软件询问是否进行运输,当确认后进行运输到指定地点。

        2、搭建项目有关上位机。利用L610广和通与上位机联系,并且通过软件设计程序达到利用程序控制小车的运行操作。

        3、路径规划。其对指定运输路径进行规划,利用灰度传感器进行路劲规划,利用PID算法稳定智能车运行速率和方向。   

 图1.1 作品整体 

第二部分  系统组成 

     车装配多类传感器模块,整体设计图,如图2.1所示其中主要模块利用CH32V307VCT6核心板作为整个小车控制的核心部分,通过ESP32监视外界情况,众多传感器接受外界变化后将数据传输至单片机。利用单片机通过一系列计算反馈至电机从而控制智能车一系列运动及实现相关功能。并通过L610广和通模块将数据传输到搭建的移动设备显示——手机上位机显示相关数据。

图2.1  整体设计

         软件设计:首先将各个模块所需要实验的IO口进行分配以及初始化,对于每个模块的情况通过串口进行监控,将L610作为智能车运行的首要入口,通过红外射管检测核酸试管的数量,当要预期的数量则利用PID控制智能车按规定路线运行,当达到目的地进行消毒处理,在智能车运行的过程中,使用ESP摄像头和小程序监控状态,具体流程见图2.2所示:

图2.2 软件流程

         由于是第一次参加大型比赛,为了能够锻炼自己的能力,各个模块为独立购买并进行调试与拼接,对于部分模块通过自行设计达到团队的要求,例如灰度传感器模块,酒精喷雾模块等。四路灰度传感器见图2.3所示,目的为智能车可以沿着规定的路线行驶。

图2.3   四路灰度传感器

        为了能够达到我们预定的要求,在智能车的俩边添置俩个灰度传感器来作为判断的条件,具体核心代码见下。 

#define Read_P1_left     gpio_get_level(E1)
#define Read_p2_break    gpio_get_level(E2)
#define Read_p3_front    gpio_get_level(E3)
#define Read_p4_right    gpio_get_level(E4)
#define right               gpio_get_level(D2)
#define left             gpio_get_level(E5)
void xunji_go(void)
{
if((Read_P1_left==1&&Read_p2_break==1)&&two==2)
{
 MOVE_Kinematics(00, 50, 00);
}
if(Read_P1_left==0||two==0)
{
    two=0;
 MOVE_Kinematics(20, 00, 00);
 if(left==1)
 {
 MOVE_Kinematics(00, 00, 00);
     two=1;
     go_flag=0;
     xiaodu_flag=1;
     L610_to_server(beep_flag,go_flag, xiaodu_flag, test_tube_nume, ethyl_numb);
 }}}
void xunji_go_back(void)
{
if(one==2)
{
    MOVE_Kinematics(00, 50, 00);
}
if((Read_p2_break==0||one==0)&&(one!=1)&&(one!=3))
{
    one=0;
 MOVE_Kinematics(00, 00, -20);
}
if((Read_p3_front==0&&Read_p4_right==0&&Read_P1_left)||one==3)
{
    one=3;
    MOVE_Kinematics(00, 50, 00);
}
 if(left==1&&one==3&&right==1)
 {
 MOVE_Kinematics(00, 00, 00);
   one=1;
   go_flag=0;
   xiaodu_flag=1;
   L610_to_server(beep_flag,go_flag, xiaodu_flag, test_tube_nume, ethyl_numb);
   gpio_set_level(C12, 1);

        本次队伍所使用车轮为麦克纳姆轮,拥有灵活移动的特点,但是为了智能车能够平稳的行驶,则调试PID是非常重要,使用PID算法在生活中非常常见,本次队伍也是使用PID来稳定智能车的行驶速率,利用相关软件来测试调试程度。蓝色是预期的速率,红色是当前智能车的运行速率,可以看到,俩者之间相差极小,达到我们调试PID的效果见图2.4所示。

 图2.4 调试PID效果

 short MID_MotorVelocityPidCtl_A(short spd_target, short spd_current)
{	static short motor_pwm_out;
	static int bias,bias_last,bias_integral = 0;
	bias = spd_target - spd_current;
	bias_integral += bias;
	if(bias_integral>PID_INTEGRAL_UP)bias_integral = PID_INTEGRAL_UP;
	if(bias_integral<-PID_INTEGRAL_UP)bias_integral =-PID_INTEGRAL_UP;
	
	motor_pwm_out += ax_motor_kp_a*bias*PID_SCALE + ax_motor_kd_a*(bias-bias_last)*PID_SCALE + ax_motor_ki_a*bias_integral*PID_SCALE;
	bias_last = bias;
	return motor_pwm_out;	
}  

         为了能够使用小程序端实时得到智能车的状态,搭建小程序端和利用L610模块(L610模块使用WIFI的类似功能),使用腾讯云服务器,将智能车的状态传输到小程序端,L610各个部分分布见图2.5所示。

 图2.5  L610分布

void set_l610_Init(void)
{
  do{ clear_buff();
  printf("AT+MIPCALL=1\r\n");
  delay_ms(1000);
} while(strstr((const char *)L610_buf, "+MIPCALL: ") == NULL);
do{clear_buff();
printf(L610_TXYUN_INFO);
delay_ms(2000);
}
while(strstr((const char *)L610_buf, "OK") == NULL);
do{clear_buff();
printf(L610_ONENET_INFO);
delay_ms(2000);
}
while(strstr((const char *)L610_buf, "OK") == NULL);
do{
    clear_buff();
printf(L610_topic_INFO);
delay_ms(2000);
}
while(strstr((const char *)L610_buf, "OK") == NULL);
}

         自行设计手机上位机见图2.6所示;

图2.6  手机上位机 

 第三部分   心得体会 

        1、本次嵌入式比赛对整个队伍是有极大的锻炼能力的,队伍软硬件相配合,从最初的材料购买,结构搭建到各传感器模块的使用和联合其中很好的体现了团队配合的能力。

        2、从本次嵌入式比赛也让更多的人了解国产芯片,国产的芯片也能实现很多的功能,更多功能还需要更多的人一起来探索。

        3、由于智能车需要实现功能较多,整个智能车接线较错综复杂,为了更好的达到创新的效果和锻炼自身能力,队伍选择购买单独的模块而不是整个成品,通过我们队伍的努力,智能车能达到我们预想的功能实现。

        4、在整个备赛期间,非常感谢指导老师的支持,学长学姐的解答。当遇到困难无法解决时,他们会耐心询问队伍的问题并给出建议。

        5、 在本次比赛中,团队为了拍摄出更好的功能展示效果,对路线的规划和拍摄熬夜进行,只为得到最好的效果。

第四部分  参考文献

[1]杨朋帅,王琪,王维西,周靖喻,高进可.基于麦克纳姆轮的智能车寻迹控制策略研究[J].工业控制计算机,2022,35(02):112-115.

[2]郭荣毓,任姝静,陈宇航,王天阳,赵永亮.医疗辅助智能车的研究与设计[J].电子世界,2021(11):156-157.DOI:10.19353/j.cnki.dzsj.2021.11.063.

[3]李海珍,王德军,赵现省.AGV智能消毒降尘喷洒车设计[J].机电产品开发与创新,2021,34(01):49-52.

[4]Nagaraj S, Srividya K, Puviyarasi B, et al. Smart Elevator Cabin Sanitization and Disinfection for COVID[C]//2022 International Conference on Communication, Computing and Internet of Things (IC3IoT). IEEE, 2022: 1-6.

[5]Zhao M, Liu P, Chen Y. Design of the Designated Disinfection Patrol Vehicle in Residential Area Based on STM32[C]//2021 3rd International Conference on Artificial Intelligence and Advanced Manufacture. 2021: 208-211.

[6]袁振洋,孔放,刘峻宇.基于PID算法的智能小车电磁循迹方法研究[J].电子制作,2022,30(01):27-30.DOI:10.16589/j.cnki.cn11-3571/tn.2022.01.008.

[7]杨志强,张春红,孟悦,山雨晨,沈闻一.一种基于OpenMV的智能医疗跟随载物车设计[J].中国科技信息,2022(06):81-83.

[8]李野,张晶.智能小车在医疗垃圾搬运系统中的应用[J].电子测试,2021(21):125-127.DOI:10.16520/j.cnki.1000-8519.2021.21.044.

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Esaki diode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值