基于Ar dui no的多传感器洗手液系统设计

2023-11-09 09:09
机电信息 2023年21期
关键词:主控板洗手液状态机

高 扬 苏 丹 袁 源

(1.武汉东湖学院机电工程学院,湖北 武汉 430200;2.武汉联影医疗科技有限公司,湖北 武汉 430074)

0 引言

目前市场上多数洗手液均为按压式,使用时需用手按压瓶盖[1]。在公共场合,这种多人接触的方式很容易导致病毒和细菌的传播,造成交叉感染。电子式的单传感器洗手液系统,虽然可以做到非接触,但其传感器数量单一,很容易反应迟钝甚至失效,且其内部装配的洗手液为固定模具下的产品,与市场上的多数洗手液瓶体不兼容。

基于此,本文设计了一款多传感器[2]交互式洗手液系统,其拥有超声传感器[3]、触摸传感器、声音传感器,能满足各种场景下取洗手液的需求;同时,显示模块能发挥良好的人机交互效果;而电机模块能自动升降常规洗手液瓶体,在做到兼容市场上所有洗手液的同时,使瓶体能正常喷出洗手液,实现核心功能。此设计能广泛应用于医院、车站、商场、学校等多种场所。

1 系统设计

多传感器洗手液系统包含硬件电路、软件、结构部分。硬件电路包括超声、显示、主控、电机、音频部分。软件烧录在主控芯片中,使用状态机[4]实现工作流。结构将硬件电路板、电池、洗手液瓶体封装,外观简约大方。图1(a)为多传感洗手液系统外观壳体,中间凹陷区域为获取洗手液区,右上方为显示屏区域(图中未标出);图1(b)为内部结构,左上为洗手液瓶,左下为电机与固定装置,右上为超声模块与语音模块,右中为主控电路,右下为电池仓。

图1 多传感器洗手液系统外观壳体与内部结构

系统工作时,超声传感器会将距离信息传递到主控模块,当满足阈值时,说明有人手靠近,主控模块驱动电机运动,向上推动瓶体,挤压出洗手液。语音传感器低功耗等待音频输入,当识别到声音时,也会将信息传递到主控模块,从而驱动电机运动。前面板的触摸传感器识别到触摸信号时,同样会通过主控模块驱动电机。多传感器系统在任意传感器识别到动作时,均能做出反应,能有效防止单一传感器失效的问题。

2 硬件设计

多传感器洗手液系统硬件结构如图2所示,包括Arduino MEGA2560主控板[5-6]、HC-SR04超声模块、触摸传感器、高感度声音传感器、SG90电机模块、OLED显示模块、电池模块等部分。

图2 系统硬件框图

电源模块将电池电压由LDO芯片转至5 V给主控板供电。其余模块的供电均由主控板提供。

ArduinoMEGA2560主控板的MCU为ATmega2560,其产商为Atmel,为美国的一家半导体公司,在2016年被美国微芯(Microchip)收购。ATmega2560仍然是8位的AVR单片机,但其SRAM和FLASH均有较大的提升,因此能运行更大代码量的程序。其主频上升到16 MHz,运行一般的裸机程序毫无问题。

HC-SR04模块通过Trig与Echo引脚的配合使用,可以做到实时获取障碍物距离。在精确要求不高的场合完全够用。主控板周期性给Trig引脚10 μs以上的脉冲,然后周期性获取Echo的高电平的时间长度,从而计算出距离。

高感度声音传感器通过识别声音的强度,输出模拟信号或数字信号。将其输出端接入到主控板的GPIO引脚上,通过中断来触发。

触摸传感器原理跟物理按键类似,当人手指接触到此传感器时,传感器会输出脉冲电平信号,由此来判断人手指是否按下。同样将其接入到主控板的GPIO上,通过中断触发。

SG90电机模块,通过主控板的PWM输出进行控制,可控制其在0°~90°范围内进行旋转。

OLED模块通过I2C接口接入到主控板上,与主控板进行I2C通信。其拥有蓝色、白色等字体颜色。

3 软件设计

多传感器洗手液系统的软件设计基于事件驱动模型,核心使用状态机来实现。相较于多传感融合和有限状态机[7-8],本设计的状态机有明显区别。本文的多传感具有互斥性,即任意传感器输出信号给主控芯片后,主控芯片均屏蔽其他传感器,然后做出下一步动作。

本文状态机如图3所示,分为等待、执行、错误三个状态。

图3 多传感器洗手液系统状态机

转换过程如表1所示。在等待状态下,主控芯片会等待各个传感器信号的输入。如果无信号输入(E1事件),则不进行任何动作,下一状态仍为等待状态。在识别到任意传感器的输出时(E2事件),状态机会做出A1动作,即立即屏蔽所有传感器输入,然后驱动电机运动;此时状态会由等待状态跳转至执行状态。在执行状态下,如果判断电机运动完成(E3事件),则将状态转移至等待状态,以便下一次触发;此时不需要任何动作。在执行状态下,如果判断电机异常或电池电量低或存在其他异常情况(E4事件),则将状态转移至错误状态,系统会在OLED显示屏上显示错误内容,同时屏蔽所有传感器输入(A2动作)。同样,在等待状态下,如果判断电机有异常或电池电量低或存在其他异常情况(E4事件),则也将状态跳转到错误状态。在错误状态期间系统会持续监控错误情况,如果错误清除,比如已更换电池等(E5事件),则在OLED显示屏上关闭错误内容,同时打开传感器输入(A3动作),系统状态跳转至等待状态;表明系统可正常运行使用。

表1 状态机二维转换表

二维状态表能够很轻易地转化为代码,在软件开发前期首先会制定此表,后续开发将事半功倍。

软件上除了运行主状态机之外,还有OLED进行实时显示,而OLED的显示控制与主状态机关系不大。在有操作系统的场合,可以使用多线程的方式将主状态机与显示控制放在不同的线程下;然而对于本系统的8 bit单片机,没必要使用复杂的程序控制方式,通过简单的定时器,将主状态与显示控制分成两个模块来控制即可,如图4所示。虚拟定时器会在200 ms与400 ms时给出触发信号,驱动两个模块运行。主状态机模块的刷新周期为200 ms,显示模块的刷新周期为400 ms。

图4 主状态机模块与显示模块刷新周期

OLED界面上可显示电池电量状态、各传感器在位状态、电机运动状态、告警信息、问候语等内容,起到良好的人机交互效果。

4 结论

本文通过系统设计、硬件设计、软件设计等方面介绍了多传感器洗手液系统,从理论上支撑了系统的可行性。硬件上,当前阶段采用各个模块搭建系统,便于加快原型机的开发,同时节约成本和硬件设计时间。待原型机验证通过,后续可通过画PCB板的形式来进行迭代开发。软件上使用Arduino IDE进行设计,C语言开发,虽然此种方式属于低代码开发方式,但对原型机的验证来说已足够。多传感器洗手液系统在输入端使用多种传感器,每种传感器的失效均不会影响到整体系统功能,提高了系统的健壮性和容错率。核心使用状态机,属于经典的控制方式,此种方式状态明确、稳定,不易出问题。显示屏能显示各种信息,满足了人机交互的需要,增加了客户产品喜爱度。另外,本产品的物料成本较低,供应链稳定,为实现量产提供了保证。

猜你喜欢
主控板洗手液状态机
一种快速可靠的主控冗余及切换机制的设计与实现
基于有限状态机的交会对接飞行任务规划方法
升级双主控板交换机ISO
一种新型环保洗手液的制备
变频器检测台的设计、制作及主控板的维修
当心公共场所洗手液越洗越脏
洗手液是否含致癌物质
基于看门狗原理的冗余保护机制
FPGA设计中状态机安全性研究
基于反熔丝FPGA的有限状态机加固设计