基于mspm0g3507的智能送药小车(21年电赛f题,openmv寻迹,k210数字识别,并行pid调制)项目实验报告

news2024/9/22 1:14:56

2024年全国大学生电子设计竞赛(TI杯)

2024717

摘要:本项目由微处理器MSPM0G3507,编码器电机驱动,OPENMV、K210视觉处理单元,红外药品检测单元,ZIGBEE无限透传单元,OLED显示,红绿黄三色LED构成。系统运行由两部分组成:智能送药小车的单车控制部分和双车联动部分,小车的单车控制部分由K210识别目标病房,OPENMV识别指引线,通过红外传识别药品,通过串口收发送数据到MSPM0,由MSPM0控制电机的转动以此达到小车进入目标病房和取药回到起始点的目的,双车联动通过OPENMV记录路口数目,ZIGBEE互传,实时共享双车的实际位置达到主车控制从车到达目标病房的双车协调送取药目标任务。

关键词: MSPM0G3507;K210视觉处理;智能送药小车。

目  录

一、系统方案设计与论证

1. 电机选取

2. 字模识别

3. 指示线识别

4. 药品识别

5. 双车通信

6. 小车结构

二、总体方案描述

三、 理论分析与计算

1.单车指定病房送药

2. 双车联动送药取药

3. PID巡线求解

四、 系统各模块电路设计

1. 稳压电路模块

五、软件设计流程

1.单车送药

2.双车送取药联动

六、测试方案与测试结果

1.测试所用仪器

2.测试方案

3.误差分析

、参考文献

一、系统方案设计与论证

1. 电机选取

   方案一:利用步进电机能够精准的控制小车的前进、后退、转向和自转,不需要过多的PID调制就可以达到所预期的目标速度和小车的运动轨迹,但对于本项目单个步进电机的体积过大,加上其他基本部件会超过项目要求的最大高度。

   方案二:利用霍尔编码器电机,通过编码器返还的实时脉冲数,通过PID的实时计算修正,达到小车的预期运动轨迹,体积适中,PID调节难度适中,能够满足本项目对电机控制的全部需求。

综上所述故选方案二。

2. 字模识别

方案一:利用K210进行对应的模型训练,识别字模的准确率可达75%,价格较低,操作难易度适中,满足本项目字模识别所需的精度要求。

方案二:利用V831进行模型训练,识别字模的准确率可达89%,价格较高,操作难易程度较高,远远满足本项目字模识别所需的精度要求。

综上所述故选方案一。

  1. 指示线识别

方案一:利用OPENMV视觉传感器对指示线识别,通过串口收发数据给MSPM0,达到实时PID调节控制小车的姿态和预期运动轨迹。指示线识别的准确率可达85%,满足本项目的各种标志位的识别,以及本项目所需的各种标志位之间互相协调。

方案二:利用灰度对指示线识别,通过软件I2C给MSPM0发送数据,达到实时控制小车的运行轨迹。指示线识别的准确率可达95%,软件I2C的操作难度较大。

综上所述故选方案一。

  1. 药品识别

方案一:利用HX771重力传感器识别药品,达到检测药品是否获取的目的。价格较低,精确度较低。

方案二:利用红外传感器检测药品。价格较低,精准度较高,环境要求较低。

综上所述故选方案二。

  1. 双车通信

方案一:利用ZIGBEE无限透传,进行双车数据互传,达到双车联动、实时数据共享的目的。传输速率有250Kbps范围较大、AES加密安全级别高。

方案二:利用蓝牙5.0达到双车通信的目的。传输速率2Mbps范围较小、通信安全级别较低。

综上所述故选方案一。

  1. 小车结构

方案一:利用前轮舵机舵机转向,后轮双电机提供动力,在小车的长方形底板上构建所需的模块,达到小车的总体稳定的目的。体积较大,在出库入库易出界,灵活性较低。

方案二:利用双电机差速转向和同速直行,两个辅助轮增加小车的稳定性,在圆形底板上构建模块,达到小车的总体稳定的目的。体积较小,小车灵活,易操作,体积在项目的要求之内。

综上所述故选方案二。

二、总体方案描述

图1 系统整体框图

本系统以超低功耗单片机MSPM0G3507为控制核心,小车采用OPENMV视觉识别,K210模型识别,红外传感器,霍尔编码器电机驱动,ZIGBEE无线透传构成。单片机输出PWM波经过直流电机驱动控制两个霍尔编码器,使小车获得运动动力。K210识别目标病房,得到小车的预期运动轨迹,通过霍尔编码器和OPENMV判断指引线坐标得到小车的实时运动情况,利用PID计算实时调整,形成信号反馈回路。组成闭环控制系统。

1.单车指定病房送药

本项目将八个病房分为近、中、远端三类病房,而实际操作中将其分为中端和远端两类病房,中端病房部分包括项目中的近端和中端病房。对中端病房送药,首先通过K210识别目标病房,OPENMV记录小车通过的路口数小于3判断小车需要送药的病房为中端病房,识别进目标病房并进入目标病房的目的,取药后通过进入目标病房记录的数据进行回到起点的目的。对远端病房送药,通过K210识别目标病房,OPENMV记录小车通过路口数大于2判断小车所需要送药的病房为远端病房,在最后第3个路口进行左转到达远端左方病房,如果目标病房在其中则进入,不在则自转到达右方远端进行最后的识别进入目标送药病房的目的,取药后通过进入目标病房记录的数据进行回到起点的目的。单车远端送药逻辑图如图2所示

2 远端送药逻辑图

  1. 双车联动送药取药

一车中端病房送药,一车K210识别目标病房,到达目标病房后通过ZIGBEE命令二车开始运动到达目标病房的对立病房,当一车取药通过路口后,命令二车开始运动到达目标病房,取药后回到起点。

一车远端病房送药,一车K210识别目标病房,一车通过第三个路口后左转判断目标病房是否在左边,在左边直接到达目标病房并停车,不在左边病房则自转向右边巡逻,进入目标病房。一车停在目标药房,取药后命令二车快速启动运动到第三个路口,一车从第三路口出来,命令二车则向第三路一车的对立面避让,一车回到起点,二车继续向前运动识别目标病房并运动到目标病房进行取药。

双车联动远端送取药逻辑图如图3所示。

3 双车远端送取药逻辑图

  1. PID巡线求解

公式1  增量式PID公式

一车二车均利用增量式和位置式并行PID控制,通过OPENMV发送给MSPM0G3507的指示线中心点X坐标与预期目标值进行差分、微分、积分计算得到预期控制PWM控制,加上编码器返还的实时电机转动实况,进行差分、积分、微分计算预期控制PWM,形成闭环实时控制。实时增量式PID公式如公式1所示。实时位置式PID公式如公式2所示。

公式2 

通过OPENMV得到指示线的实际CX坐标与小车运动的目标CX做差得到位置式的Err,编码器得到小车实时运动速度与预取运动速度做差得到增量式的Err,通过本次和上次的误差得到增量式和位置式的微分差值,最后经过Kp、Kd系数来调节差分和微分的比例,将最后的PID_out和Increment_val进行求和最终达到实时调节小车运行轨迹和速度的目的。

1. 稳压电路模块

由于直流电机做执行机构,所以需要有给直流电机供电的电源,并且为了防止电机转动带来的电流对单片机的影响,单片机供电和电机供电要分开。所以选用7805稳压芯片输出5V稳定电压给单片机供电。稳压电路模块原理图如图4所示。

4  稳压电路模块原理图

五、软件设计流程

1.单车送药

为了保证整个程序的联会性,以及各功能之间不相互影响单车送药软件设计主要划分为中端和远端送药,主要通过OPENMV识别小车经过的路口数判断目标病房为远端还是近端病房,为了使小车的每一个运动动作前后之间不互相影响采用了开关定时器的方式,最终达到能够准确的控制小车完成目标要求的运动。

单车送药程序流程图如图5所示。

2.双车送取药联动

中端病房送程序采用一车到达目标病房后,命令二车到达对向病房进行避让,当一车出病房到达指示线十字路口,命令二车开始向目标病房运动,二车到达目标病房取药后,通过进行与记录相反的转向后快速回到起点。远端病房程序采用一车判断,命令二车对向避让的方式进行错车避让,二车避让后进行目标病房取药程序。

双车送取药联动程序流程图如图6所示。

               

5  单车送药程序流程图               6  双车送取药联动程序流程图

六、测试方案与测试结果

1.测试所用仪器

序号

仪器名称

1

秒表

2

卷尺

2.测试方案

(1)单车目标近端病房送药,单车进行病房1,病房2反复切换目标送药。小车开始启动时即开始计时,观察小车是否超越界线,小车返还起点并停止运动时停止计时。

测量次数

目标病房

实际到达病房

花费时间

1

1

1

12.67

2

2

2

13.98

3

2

2

12.70

4

1

1

13

5

1

1

10.55

6

1

1

11.90

7

2

2

12

(2)单车目标中端病房送药,单车进行中端病房送药并不断随机变换中端病房房号。小车开始启动时即开始计时,小车返还起点并停止计时。

测试次数

目标病房

实际到达病房

花费时间

1

3

3

16.89

2

6

6

17.98

3

7

7

17.77

4

8

8

15.99

5

4

4

18.32

6

5

5

14.99

7

7

7

18.90

(3)单车目标远端病房送药,单车进行远端病房送药并不断随机变换远端病房房号。小车开始启动时即开始计时,小车返还起点并停止计时。

测试次数

目标病房

实际到达病房

花费时间

1

6

6

32

2

8

8

31.89

3

7

7

29.88

4

4

4

36.66

5

3

3

31.11

6

6

6

30.88

7

5

5

38.51

(4)双车中端送药,二车运动后开始计时,一车到达起点二车到达病房停止计时。

测试次数

目标病房

实际到达病房

花费时间

1

3

3

20

2

6

6

28.01

3

7

7

21.22

4

5

5

26.66

5

4

4

21.11

6

8

8

20.18

7

3

3

18.51

  1. 双车远端送取药,一车返还时开始计时,二车到达目标病房取药后开始停止计时。

测试次数

目标病房

实际到达病房

花费时间

1

6

6

30

2

8

8

32.01

3

6

6

31.92

4

7

7

36.36

5

5

5

31.31

6

4

4

30.68

7

3

3

38.09

3.误差分析

小车在运行过程中返还的中心点的坐标会受到光照强弱的影响,会导致小车的运行轨迹受到影响,导致时间上下有所起伏。

、参考文献

  1. 张立婷钟杨福黄辉等.基于物联网的无人智慧药房系统[J], 机电信息, 2023.10.23:10.19541.
  2. 徐贤,高小慧,李羽婷等.基于STM32单片机的智能送药小车设计[J],信息科技,2024.6.27:10.16589.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker数据卷和Dockerfile

1、什么是Docker数据卷 前言: 在下载的镜像中,我们不能够去改变它内部的一些配置,因为docker的镜像文件是已经配置好的,无法改变,我们只能改变镜像启动后的容器里面的内容,但是又因为,容器本来…

Java框架第四课(对Spring的补充Spring web)

目录 一.Spring web的认识 (1)Spring Web概念 (2)Spring web的特点 (3)Springweb运行的流程 (4)Springweb运行的流程图 二.搭建Spring web 三.自定义处理器类搭建 (1)处理器类配置 (2)处理器类接受请求 (3)获得请求数据 四.拦截器 (1)关于拦截器: (2)拦截器的…

【VMware】麒麟系统网络连接配置

在VMware配置页面点击编辑,进入虚拟网络编辑器将默认的 VMnet0删除,新建网络,设置桥接模式为Intel 打开主机cmd,查看主机IP地址,获取子网掩码,默认网关及DNS服务器 4.在主机寻找可用IP地址,ping不通的为未…

探秘发酵过程:酵母菌如何为白酒赋予不同风味?

在白酒酿造的神秘世界里,发酵过程如同一位隐形的艺术家,用其不同的笔触为白酒勾勒出千变万化的风味。而在这背后,酵母菌作为发酵的主角,发挥着至关重要的作用。今天,就让我们一起探秘发酵过程,了解酵母菌如…

shell 学习笔记:变量、字符串、注释

目录 1. 变量 1.1 定义使用变量 1.2 变量命名规则 1.3 只读变量 1.4 删除变量 1.5 变量类型 1.5.1 字符串变量 1.5.2 整数变量 1.5.3 数组变量 1.5.3.1 整数索引数组 1.5.3.2 关联数组 1.4 环境变量 1.5 特殊变量 2. 字符串 2.1 单引号字符串 2.2 双引…

erlang学习:用OTP构建系统23.12练习题

练习要求 制作一个名为prime_tester_server的gen_server,让它测试给定的数字是否是质数。 你可以使用lib_primes.erl里的is_prime/2函数来处理(或者自己实现一个更好的质数测试函 数)。把它添加到sellaprime_supervisor.erl的监控树里。 质…

图论(2)

一、度 度统计的是一个节点上又多少条边 度出度入度 出度:统计以该节点为起始点箭头指向外面的边的条数 入度:统计箭头指向该节点的边数 度为1的节点为悬挂节点,边为悬挂边 用矩阵计算节点的度 二、握手定理 比如这里第一个集合里面有三…

ARP协议(原理,特点,报文格式,具体过程),ARP缓存(有效时间,为什么),ARP欺骗(定向断网,成为中间人),RARP简单介绍

目录 ARP协议 引入 介绍 原理 arp请求/响应 特点 报文格式 硬件类型 协议类型 硬件/协议地址长度 op(操作码) 过程 发送请求并处理 返回响应并处理 总结 arp缓存 介绍 arp表项的有效时间 解释 arp欺骗 介绍 定向断网 基于arp的成为中间人的方式 多向…

跟李沐学AI:序列模型

目录 序列数据 自回归模型 马尔可夫假设 潜变量模型 序列模型总结 序列数据 实际中很多数据是时序结构的,如:电影的评价随时间的变化而变化:拿奖后评分上升、电影整体质量提升,人们要求变高。。。等等 除此之外,音…

比特币网络和支付

1. 比特币网络 比特币网络是一个去中心化的点对点网络,节点之间可以直接进行交易。网络上有不同类型的节点。 1.1 比特币网络的节点 比特币网络的节点有两种主要类型:全节点也称为完整节点和简单支付验证(Simple Payment Verification,SPV)节…

档案|基于SprinBoot+vue的档案管理系统(源码+数据库+文档)

档案管理系统 基于SprinBootvue的档案管理系统 一、前言 二、系统设计 三、系统功能设计 管理员功能模块实现 学生功能模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农…

【数据库|第11期】深入掌握 SQL Server、Access 与 SQLite 中的 `UNION` 与 `UNION ALL`:从理论到实践

日期:2024年9月3日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xff…

EMC整改问题

定位问题: 1.控制变量比较法:连和不连,接和不接来判断 2.频率判断法:低频一般是电源,高频一般是信号或者无线通信问题,还有倍频问题 3.解决方法: a.加器件,滤波,EMI共模电感,磁环 b.电源,高速信…

App推广新篇章:Xinstall带你走出数据迷雾,实现高效推广!

在如今的移动互联网时代,App推广已成为每个应用开发者必须面对的重要课题。然而,推广过程中往往伴随着诸多痛点,如数据混乱、投放盲目、决策滞后以及作弊困扰等。这些问题不仅影响了推广效果,还可能导致资源的浪费和投入产出不均衡…

Java版本的扫雷游戏程序

一、开发环境 开发工具:eclipse2021-12 JDK版本:JDK15.0.1 二、运行效果展示 这张图是游戏刚开始的画面,重置以后也是这个画面 此图是写代码的过程调试用的画面,方便查找问题。 此图是运行过程中的图片

实习的一点回顾Webhook的执行

1.Webhook流程 1.Bass外的部分 比如我通过控制台或者js脚本去调用curl命令call指定的webhook的地址的功能脚本 命令发送到网关,网关通过注册中心之类的发送到服务实体上。 这些是微服务的东西 2.OpenAPI到Controller阶段 先看之前openAPI的那篇前置 请求进来之…

Anaconda的环境管理操作命令详解-学习篇

一、通过命令方式管理环境 1. 查看环境 使用以下命令查看当前所有环境的命令conda env list可以看到目前电脑的base环境情况,我的本机只有一个base环境。是anaconda3在安装的时候所选的根目录信息。命令前的(base) 代表目前执行处于base环境,* 代表目前…

高德地图-小米14 Pro 定制版 v12.10.61.3021 简洁版

高德地图小米14 Pro 定制版是一款专门为小米14 Pro 设计的简洁版高德地图。相较于普通版本,该版本体积更小,运行速度更快,并且没有广告。支持驾车、骑行、公交地铁、步行等多种导航模式,使用北斗卫星导航系统,精准度非…

从零开始使用 LangGraph、LLaMA3 和 Elasticsearch 向量存储构建本地代理的教程

作者:来自 Elastic Pratik Rana 在本教程中,我们将了解如何使用 LangGraph、LLaMA3 和 Elasticsearch Vector Store 从头开始​​创建可靠的代理。我们将结合 3 篇高级 RAG 论文中的想法: 用于路由的自适应 RAG:根据内容将问题引…

Redis List 应用指南:命令、编码与阻塞操作全解析

list 类型 一 . 常见命令1.1 lpush、lrange1.2 lpushx1.3 rpush1.4 rpushx1.5 lpop、rpop1.6 lindex1.7 linsert1.8 llen1.9 lrem1.10 ltrim1.11 lset1.12 blpop 和 brpop原理使用 小结 二 . 内部编码5.3 应用场景5.3.1 作为 "数组" 这样的结构来存储多个元素5.3.2 消…