高 揚(yáng) 蘇 丹 袁 源
(1.武漢東湖學(xué)院機(jī)電工程學(xué)院,湖北 武漢 430200;2.武漢聯(lián)影醫(yī)療科技有限公司,湖北 武漢 430074)
目前市場(chǎng)上多數(shù)洗手液均為按壓式,使用時(shí)需用手按壓瓶蓋[1]。在公共場(chǎng)合,這種多人接觸的方式很容易導(dǎo)致病毒和細(xì)菌的傳播,造成交叉感染。電子式的單傳感器洗手液系統(tǒng),雖然可以做到非接觸,但其傳感器數(shù)量單一,很容易反應(yīng)遲鈍甚至失效,且其內(nèi)部裝配的洗手液為固定模具下的產(chǎn)品,與市場(chǎng)上的多數(shù)洗手液瓶體不兼容。
基于此,本文設(shè)計(jì)了一款多傳感器[2]交互式洗手液系統(tǒng),其擁有超聲傳感器[3]、觸摸傳感器、聲音傳感器,能滿足各種場(chǎng)景下取洗手液的需求;同時(shí),顯示模塊能發(fā)揮良好的人機(jī)交互效果;而電機(jī)模塊能自動(dòng)升降常規(guī)洗手液瓶體,在做到兼容市場(chǎng)上所有洗手液的同時(shí),使瓶體能正常噴出洗手液,實(shí)現(xiàn)核心功能。此設(shè)計(jì)能廣泛應(yīng)用于醫(yī)院、車(chē)站、商場(chǎng)、學(xué)校等多種場(chǎng)所。
多傳感器洗手液系統(tǒng)包含硬件電路、軟件、結(jié)構(gòu)部分。硬件電路包括超聲、顯示、主控、電機(jī)、音頻部分。軟件燒錄在主控芯片中,使用狀態(tài)機(jī)[4]實(shí)現(xiàn)工作流。結(jié)構(gòu)將硬件電路板、電池、洗手液瓶體封裝,外觀簡(jiǎn)約大方。圖1(a)為多傳感洗手液系統(tǒng)外觀殼體,中間凹陷區(qū)域?yàn)楂@取洗手液區(qū),右上方為顯示屏區(qū)域(圖中未標(biāo)出);圖1(b)為內(nèi)部結(jié)構(gòu),左上為洗手液瓶,左下為電機(jī)與固定裝置,右上為超聲模塊與語(yǔ)音模塊,右中為主控電路,右下為電池倉(cāng)。
圖1 多傳感器洗手液系統(tǒng)外觀殼體與內(nèi)部結(jié)構(gòu)
系統(tǒng)工作時(shí),超聲傳感器會(huì)將距離信息傳遞到主控模塊,當(dāng)滿足閾值時(shí),說(shuō)明有人手靠近,主控模塊驅(qū)動(dòng)電機(jī)運(yùn)動(dòng),向上推動(dòng)瓶體,擠壓出洗手液。語(yǔ)音傳感器低功耗等待音頻輸入,當(dāng)識(shí)別到聲音時(shí),也會(huì)將信息傳遞到主控模塊,從而驅(qū)動(dòng)電機(jī)運(yùn)動(dòng)。前面板的觸摸傳感器識(shí)別到觸摸信號(hào)時(shí),同樣會(huì)通過(guò)主控模塊驅(qū)動(dòng)電機(jī)。多傳感器系統(tǒng)在任意傳感器識(shí)別到動(dòng)作時(shí),均能做出反應(yīng),能有效防止單一傳感器失效的問(wèn)題。
多傳感器洗手液系統(tǒng)硬件結(jié)構(gòu)如圖2所示,包括Arduino MEGA2560主控板[5-6]、HC-SR04超聲模塊、觸摸傳感器、高感度聲音傳感器、SG90電機(jī)模塊、OLED顯示模塊、電池模塊等部分。
圖2 系統(tǒng)硬件框圖
電源模塊將電池電壓由LDO芯片轉(zhuǎn)至5 V給主控板供電。其余模塊的供電均由主控板提供。
ArduinoMEGA2560主控板的MCU為ATmega2560,其產(chǎn)商為Atmel,為美國(guó)的一家半導(dǎo)體公司,在2016年被美國(guó)微芯(Microchip)收購(gòu)。ATmega2560仍然是8位的AVR單片機(jī),但其SRAM和FLASH均有較大的提升,因此能運(yùn)行更大代碼量的程序。其主頻上升到16 MHz,運(yùn)行一般的裸機(jī)程序毫無(wú)問(wèn)題。
HC-SR04模塊通過(guò)Trig與Echo引腳的配合使用,可以做到實(shí)時(shí)獲取障礙物距離。在精確要求不高的場(chǎng)合完全夠用。主控板周期性給Trig引腳10 μs以上的脈沖,然后周期性獲取Echo的高電平的時(shí)間長(zhǎng)度,從而計(jì)算出距離。
高感度聲音傳感器通過(guò)識(shí)別聲音的強(qiáng)度,輸出模擬信號(hào)或數(shù)字信號(hào)。將其輸出端接入到主控板的GPIO引腳上,通過(guò)中斷來(lái)觸發(fā)。
觸摸傳感器原理跟物理按鍵類似,當(dāng)人手指接觸到此傳感器時(shí),傳感器會(huì)輸出脈沖電平信號(hào),由此來(lái)判斷人手指是否按下。同樣將其接入到主控板的GPIO上,通過(guò)中斷觸發(fā)。
SG90電機(jī)模塊,通過(guò)主控板的PWM輸出進(jìn)行控制,可控制其在0°~90°范圍內(nèi)進(jìn)行旋轉(zhuǎn)。
OLED模塊通過(guò)I2C接口接入到主控板上,與主控板進(jìn)行I2C通信。其擁有藍(lán)色、白色等字體顏色。
多傳感器洗手液系統(tǒng)的軟件設(shè)計(jì)基于事件驅(qū)動(dòng)模型,核心使用狀態(tài)機(jī)來(lái)實(shí)現(xiàn)。相較于多傳感融合和有限狀態(tài)機(jī)[7-8],本設(shè)計(jì)的狀態(tài)機(jī)有明顯區(qū)別。本文的多傳感具有互斥性,即任意傳感器輸出信號(hào)給主控芯片后,主控芯片均屏蔽其他傳感器,然后做出下一步動(dòng)作。
本文狀態(tài)機(jī)如圖3所示,分為等待、執(zhí)行、錯(cuò)誤三個(gè)狀態(tài)。
圖3 多傳感器洗手液系統(tǒng)狀態(tài)機(jī)
轉(zhuǎn)換過(guò)程如表1所示。在等待狀態(tài)下,主控芯片會(huì)等待各個(gè)傳感器信號(hào)的輸入。如果無(wú)信號(hào)輸入(E1事件),則不進(jìn)行任何動(dòng)作,下一狀態(tài)仍為等待狀態(tài)。在識(shí)別到任意傳感器的輸出時(shí)(E2事件),狀態(tài)機(jī)會(huì)做出A1動(dòng)作,即立即屏蔽所有傳感器輸入,然后驅(qū)動(dòng)電機(jī)運(yùn)動(dòng);此時(shí)狀態(tài)會(huì)由等待狀態(tài)跳轉(zhuǎn)至執(zhí)行狀態(tài)。在執(zhí)行狀態(tài)下,如果判斷電機(jī)運(yùn)動(dòng)完成(E3事件),則將狀態(tài)轉(zhuǎn)移至等待狀態(tài),以便下一次觸發(fā);此時(shí)不需要任何動(dòng)作。在執(zhí)行狀態(tài)下,如果判斷電機(jī)異?;螂姵仉娏康突虼嬖谄渌惓G闆r(E4事件),則將狀態(tài)轉(zhuǎn)移至錯(cuò)誤狀態(tài),系統(tǒng)會(huì)在OLED顯示屏上顯示錯(cuò)誤內(nèi)容,同時(shí)屏蔽所有傳感器輸入(A2動(dòng)作)。同樣,在等待狀態(tài)下,如果判斷電機(jī)有異?;螂姵仉娏康突虼嬖谄渌惓G闆r(E4事件),則也將狀態(tài)跳轉(zhuǎn)到錯(cuò)誤狀態(tài)。在錯(cuò)誤狀態(tài)期間系統(tǒng)會(huì)持續(xù)監(jiān)控錯(cuò)誤情況,如果錯(cuò)誤清除,比如已更換電池等(E5事件),則在OLED顯示屏上關(guān)閉錯(cuò)誤內(nèi)容,同時(shí)打開(kāi)傳感器輸入(A3動(dòng)作),系統(tǒng)狀態(tài)跳轉(zhuǎn)至等待狀態(tài);表明系統(tǒng)可正常運(yùn)行使用。
表1 狀態(tài)機(jī)二維轉(zhuǎn)換表
二維狀態(tài)表能夠很輕易地轉(zhuǎn)化為代碼,在軟件開(kāi)發(fā)前期首先會(huì)制定此表,后續(xù)開(kāi)發(fā)將事半功倍。
軟件上除了運(yùn)行主狀態(tài)機(jī)之外,還有OLED進(jìn)行實(shí)時(shí)顯示,而OLED的顯示控制與主狀態(tài)機(jī)關(guān)系不大。在有操作系統(tǒng)的場(chǎng)合,可以使用多線程的方式將主狀態(tài)機(jī)與顯示控制放在不同的線程下;然而對(duì)于本系統(tǒng)的8 bit單片機(jī),沒(méi)必要使用復(fù)雜的程序控制方式,通過(guò)簡(jiǎn)單的定時(shí)器,將主狀態(tài)與顯示控制分成兩個(gè)模塊來(lái)控制即可,如圖4所示。虛擬定時(shí)器會(huì)在200 ms與400 ms時(shí)給出觸發(fā)信號(hào),驅(qū)動(dòng)兩個(gè)模塊運(yùn)行。主狀態(tài)機(jī)模塊的刷新周期為200 ms,顯示模塊的刷新周期為400 ms。
圖4 主狀態(tài)機(jī)模塊與顯示模塊刷新周期
OLED界面上可顯示電池電量狀態(tài)、各傳感器在位狀態(tài)、電機(jī)運(yùn)動(dòng)狀態(tài)、告警信息、問(wèn)候語(yǔ)等內(nèi)容,起到良好的人機(jī)交互效果。
本文通過(guò)系統(tǒng)設(shè)計(jì)、硬件設(shè)計(jì)、軟件設(shè)計(jì)等方面介紹了多傳感器洗手液系統(tǒng),從理論上支撐了系統(tǒng)的可行性。硬件上,當(dāng)前階段采用各個(gè)模塊搭建系統(tǒng),便于加快原型機(jī)的開(kāi)發(fā),同時(shí)節(jié)約成本和硬件設(shè)計(jì)時(shí)間。待原型機(jī)驗(yàn)證通過(guò),后續(xù)可通過(guò)畫(huà)PCB板的形式來(lái)進(jìn)行迭代開(kāi)發(fā)。軟件上使用Arduino IDE進(jìn)行設(shè)計(jì),C語(yǔ)言開(kāi)發(fā),雖然此種方式屬于低代碼開(kāi)發(fā)方式,但對(duì)原型機(jī)的驗(yàn)證來(lái)說(shuō)已足夠。多傳感器洗手液系統(tǒng)在輸入端使用多種傳感器,每種傳感器的失效均不會(huì)影響到整體系統(tǒng)功能,提高了系統(tǒng)的健壯性和容錯(cuò)率。核心使用狀態(tài)機(jī),屬于經(jīng)典的控制方式,此種方式狀態(tài)明確、穩(wěn)定,不易出問(wèn)題。顯示屏能顯示各種信息,滿足了人機(jī)交互的需要,增加了客戶產(chǎn)品喜愛(ài)度。另外,本產(chǎn)品的物料成本較低,供應(yīng)鏈穩(wěn)定,為實(shí)現(xiàn)量產(chǎn)提供了保證。