鄧 凱,曾文軍
(1.常州紡織服裝職業(yè)技術(shù)學(xué)院 創(chuàng)業(yè)學(xué)院,江蘇 常州 213164;2.江蘇省常州市武進(jìn)區(qū)信息中心,江蘇 常州 213159)
近年來,隨著邊緣計(jì)算、5G、區(qū)塊鏈、人工智能、無人駕駛、物聯(lián)網(wǎng)等技術(shù)與應(yīng)用的不斷發(fā)展,新技術(shù)、新應(yīng)用的引入對(duì)工農(nóng)業(yè)生產(chǎn)、商業(yè)、家庭日常生活方式都產(chǎn)生了積極的影響。在此背景下,各種各樣的智能產(chǎn)品層出不窮,不斷滿足了人們?nèi)找嬖鲩L(zhǎng)的生產(chǎn)生活需求。自新冠疫情爆發(fā)以來,洗手液、消毒液成了醫(yī)院、機(jī)場(chǎng)、商場(chǎng)、學(xué)校等公共場(chǎng)所出入口的必備防疫物資。洗手液載具通常由瓶體和泵頭組成,通過擠壓泵頭,從泵頭噴嘴出液。按照新冠疫情的防控指南要求,應(yīng)盡可能避免接觸公共部位。但由于人們頻繁使用公共場(chǎng)所的洗手液,傳統(tǒng)的按壓方式增加了病毒傳播的機(jī)會(huì)。因此迫切需要設(shè)計(jì)一款可以自動(dòng)出液的洗手液裝置,對(duì)于新冠疫情防控有積極的意義。本文設(shè)計(jì)了一種基于NB-IoT的洗手液智能出液裝置;同時(shí)結(jié)合云端技術(shù),使傳統(tǒng)的洗手液真正實(shí)現(xiàn)智能化,對(duì)于提升人們?nèi)粘<揖由钏揭灿兄匾饬x。
通過分析傳統(tǒng)洗手液的使用特點(diǎn),總結(jié)出將其改造成智能化裝置的主要需求如下:
(1)感應(yīng)自動(dòng)出液,即手靠近洗手液噴嘴時(shí)能自動(dòng)出液;
(2)自動(dòng)報(bào)告洗手液余量,以便及時(shí)更換,并記錄噴液次數(shù),作為數(shù)據(jù)參考;
(3)洗手液大多數(shù)時(shí)候應(yīng)用于車站、商場(chǎng)、學(xué)校等人員密集場(chǎng)所,使用過程中一旦發(fā)生掉落、側(cè)翻等情形,須及時(shí)告知物業(yè)管理部門處理;
(4)采集洗手液裝置附近的溫濕度、氣壓等環(huán)境參數(shù);
(5)計(jì)時(shí):一方面用于顯示年月日等時(shí)間信息,另一方面顯示洗手倒計(jì)時(shí),提醒用戶養(yǎng)成良好的洗手習(xí)慣;
(6)設(shè)置本地顯示屏,用來顯示相關(guān)信息;
(7)從物業(yè)管理的集中性角度出發(fā),需要方便監(jiān)測(cè)到某幢大樓所有的洗手液裝置的實(shí)時(shí)使用情況,因此需要設(shè)計(jì)一個(gè)數(shù)據(jù)集中監(jiān)控平臺(tái);
(8)從管理人員工作便利性的角度出發(fā),需要提供手機(jī)端APP,方便其在手機(jī)上查看所管理樓層洗手液的實(shí)時(shí)使用情況。
其中需求(1)是洗手液智能出液裝置的最基本功能,也是一款智能產(chǎn)品的初階需求;需求(2)~(6)體現(xiàn)了一款智能產(chǎn)品的附加值;需求(7)和(8)是把智能產(chǎn)品作為萬物互聯(lián)的一個(gè)節(jié)點(diǎn),體現(xiàn)了智能產(chǎn)品的發(fā)展趨勢(shì)。
基于以上分析,本文設(shè)計(jì)了如圖1所示的總體框架。
圖1 總體設(shè)計(jì)框架
微控制器是整個(gè)裝置的控制核心,在微控制器的操作下超聲波測(cè)距模塊和接近監(jiān)測(cè)傳感器作為感應(yīng)單元負(fù)責(zé)感知人手的靠近,稱重單元負(fù)責(zé)測(cè)量洗手液的余重,加速度傳感器負(fù)責(zé)監(jiān)測(cè)裝置的翻轉(zhuǎn)狀態(tài),環(huán)境參數(shù)傳感器報(bào)告溫度、濕度和氣壓數(shù)據(jù),計(jì)時(shí)單元顯示當(dāng)前的時(shí)間信息和洗手倒計(jì)時(shí),顯示屏負(fù)責(zé)呈現(xiàn)當(dāng)前的裝置狀態(tài)信息,裝置的相關(guān)狀態(tài)數(shù)據(jù)通過NB-IoT周期性上傳至阿里云物聯(lián)網(wǎng)平臺(tái)。
從顯示倒計(jì)時(shí)到上傳數(shù)據(jù)至物聯(lián)網(wǎng)云端均需要有一個(gè)微控制器的參與,因此裝置的硬件系統(tǒng)中最重要的是控制板硬件設(shè)計(jì)。為了便于實(shí)驗(yàn)和擴(kuò)展功能,本文基于總體設(shè)計(jì)方案,從控制舵機(jī)轉(zhuǎn)角、自動(dòng)感應(yīng)入手,硬件采用分立模塊的設(shè)計(jì)思路,即微控制器最小系統(tǒng)外加各個(gè)功能模塊。整個(gè)裝置總控制板硬件原理如圖2所示。
圖2 裝置總控制板原理
2.1.1 微控制最小系統(tǒng)設(shè)計(jì)
微控制器選擇使用意法半導(dǎo)體公司生產(chǎn)的32位高性能STM32F407ZET6芯片(以下簡(jiǎn)稱STM32),該微控制器以ARM公司的Cortex-M4為內(nèi)核,主頻達(dá)168 MHz,自帶浮點(diǎn)運(yùn)算單元FPU(Floating Point Unit),支持DSP指令集,擁有1 MB的FLASH存儲(chǔ)器、192 KB的SRAM存儲(chǔ)器;提供了豐富的外設(shè)接口,包括多路ADC轉(zhuǎn)換以及帶PWM輸出的12個(gè)16位定時(shí)器、2個(gè)32位定時(shí)器、6個(gè)USART/UART接口等。
2.1.2 各個(gè)功能模塊接口設(shè)計(jì)
STM32的UART1(PA9、PA10)用于打印系統(tǒng)運(yùn)行信息,便于系統(tǒng)調(diào)試;UART3(PB9、PB10)連接NB-IoT模塊的AT命令接口,PF8作為通用輸出功能引腳連接NB-IoT的復(fù)位引腳;PA0、PA1連接超聲波測(cè)距模塊,其中PA0作為超聲波返回輸入捕獲引腳功能使用,PA1作用通用輸出引腳功能使用。PF9作為定時(shí)器14的PWM輸出1通道連接舵機(jī)提供PWM信號(hào)。PA5、PA6、PA7作為SPI功能引腳連接BME280溫度、濕度、氣壓傳感器,PB6作為通用輸出引腳功能連接BME280的片選信號(hào)腳。PA13、PA14、PA15、PB3、PB4作為程序固件下載接口。PB0、PB1作為通用輸出輸入引腳連接稱重傳感器HX711,PE4作為外部中斷引腳上拉使能實(shí)現(xiàn)HX711的去皮功能。PB8、PB9作為IC功能引腳連接APDS9930接近傳感器,PE2作為外部中斷引腳功能連接APDS9930的接近中斷觸發(fā)引腳。PB13、PB14、PB15作為SPI功能引腳連接DS3234實(shí)時(shí)時(shí)鐘芯片引腳,PD8作為通用輸出引腳功能連接DS3234的片選引腳。PD9、PD10作為IC功能引腳連接第一個(gè)OLED顯示屏的數(shù)據(jù)引腳,PD11作為通用輸出引腳連接OLED的復(fù)位引腳,PD12作為通用輸出引腳連接OLED的數(shù)據(jù)命令引腳DC,PD13作為通用輸出引腳連接OLED的片選引腳。PE3、PE5作為IC引腳功能連接加速計(jì)傳感器MMA8452,PC1和PC3作為外部中斷引腳連接MMA8452Q翻轉(zhuǎn)監(jiān)測(cè)觸發(fā)引腳。PE7、PE8作為通用輸出輸入功能引腳連接倒計(jì)時(shí)顯示模塊TM1637。PD5、PG12作為IC功能引腳連接第二個(gè)OLED顯示屏的數(shù)據(jù)引腳,PG15作為通用輸出引腳連接OLED的復(fù)位引腳,PG15作為通用輸出引腳連接OLED的數(shù)據(jù)命令引腳DC,PG13作為通用輸出引腳連接OLED的片選引腳。
在完成系統(tǒng)硬件物理層設(shè)計(jì)的基礎(chǔ)上,根據(jù)系統(tǒng)需求,本文設(shè)計(jì)了系統(tǒng)整體軟件框架結(jié)構(gòu),編程具體實(shí)現(xiàn)各個(gè)功能模塊代碼。
軟件系統(tǒng)設(shè)計(jì)主要在兩個(gè)應(yīng)用層面進(jìn)行:一是STM32端,作為一個(gè)物聯(lián)網(wǎng)節(jié)點(diǎn)的應(yīng)用層軟件設(shè)計(jì),主要是驅(qū)動(dòng)各個(gè)硬件模塊,采集相關(guān)傳感器數(shù)據(jù),發(fā)送NB-IoT命令等;二是阿里云物聯(lián)網(wǎng)平臺(tái)端應(yīng)用層軟件設(shè)計(jì),主要包括云端設(shè)備、產(chǎn)品、功能等定義以及IoT Studio的開發(fā)與設(shè)計(jì)等。兩個(gè)應(yīng)用層之間通過MQTT協(xié)議通信。軟件整體結(jié)構(gòu)如圖3所示。
圖3 軟件系統(tǒng)整體結(jié)構(gòu)
STM32端軟件設(shè)計(jì)主要分為兩部分:主程序和中斷程序。借助STM32的卓越性能和豐富外設(shè),主程序首先對(duì)各個(gè)功能模塊初始化,設(shè)定相關(guān)參數(shù),確保其能夠按照要求正常工作,然后進(jìn)入實(shí)時(shí)監(jiān)測(cè)階段。各個(gè)模塊的中斷程序配合主程序完成監(jiān)測(cè)觸發(fā)、數(shù)據(jù)上報(bào)等工作。STM32端程序設(shè)計(jì)流程如圖4所示。
圖4 STM32端程序流程
STM32通過串口2與NB-IoT模組BC20收發(fā)數(shù)據(jù),通過發(fā)送AT指令操作BC20模塊。AT指令的語法結(jié)構(gòu)是:任何一條指令都以“AT”或“at”開頭,以
表1 AT指令發(fā)出和響應(yīng)類型
NB-IoT程序流程如下:
(1)NB-IoT模組的RST腳置高后拉低實(shí)現(xiàn)硬件復(fù)位。
(2)發(fā)送“AT+QRST=1”指令實(shí)現(xiàn)NB-IoT模組軟件復(fù)位。
(3)發(fā)送“AT+QMTDISC=0”指令斷開裝置節(jié)點(diǎn)端與阿里云物聯(lián)網(wǎng)平臺(tái)服務(wù)端的連接。加入該指令主要是為了在裝置運(yùn)行一段時(shí)間后,如果由于某些原因自己重啟,并且Keeplive時(shí)間未到,阿里云物聯(lián)網(wǎng)平臺(tái)端認(rèn)為裝置節(jié)點(diǎn)端仍舊在線,則執(zhí)行該指令,節(jié)點(diǎn)端先主動(dòng)斷開連接。
(4)發(fā)送“AT+QMTCLOSE=0”指令關(guān)閉裝置節(jié)點(diǎn)端的MQTT網(wǎng)絡(luò)。加入該指令的原因同第3步。
(5)發(fā)送“AT”指令,返回OK,表示節(jié)點(diǎn)BC20模塊工作正常,返回ERROR則重啟系統(tǒng)。
(6)發(fā)送“AT+CFUN=1”指令,設(shè)置BC20為全功能模式運(yùn)行。
(7)發(fā)送“AT+CIMI”指令,獲取SIM卡的唯一國(guó)際移動(dòng)用戶識(shí)別碼,該識(shí)別碼作為后面通過MQTT登錄阿里云物聯(lián)網(wǎng)平臺(tái)的登錄名稱,保證節(jié)點(diǎn)登錄標(biāo)識(shí)的唯一性。
(8)發(fā)送“AT+CGATT=1”指令,附著PS(Packet Switch)域分組交換網(wǎng)絡(luò),激活所有PDP(Packet Data Protocol)分組報(bào)文協(xié)議上下文。
(9)發(fā)送“AT+CGATT?”指令查詢當(dāng)前PS域服務(wù)狀態(tài),返回“+CGATT:1”表示成功附著網(wǎng)絡(luò)。
(10)發(fā)送“AT+CESQ”指令查詢網(wǎng)絡(luò)信號(hào)質(zhì)量,信號(hào)質(zhì)量過低時(shí)輸出相關(guān)提示信息并重啟系統(tǒng)。
阿里云物聯(lián)網(wǎng)平臺(tái)提供安全可靠的設(shè)備連接通信能力,支持設(shè)備數(shù)據(jù)采集上云、規(guī)則引擎流轉(zhuǎn)數(shù)據(jù)和云端數(shù)據(jù)下發(fā)設(shè)備端。此外,還提供方便快捷的設(shè)備管理能力,支持物模型定義、數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)以及遠(yuǎn)程調(diào)試、監(jiān)控、運(yùn)維。節(jié)點(diǎn)端(阿里云端稱為設(shè)備,為方便描述,以下統(tǒng)稱為設(shè)備)可通過MQTT協(xié)議與物聯(lián)網(wǎng)平臺(tái)建立長(zhǎng)連接,上報(bào)數(shù)據(jù)(通過Publish發(fā)布Topic和Payload)到阿里云物聯(lián)網(wǎng)平臺(tái),稱之為上行數(shù)據(jù)鏈路。阿里云與物聯(lián)網(wǎng)通過MQTT協(xié)議,使用Publish發(fā)送數(shù)據(jù)(指定Topic和Payload)到設(shè)備端,稱之為下行指令鏈路。
3.3.1 阿里云端建立實(shí)例
設(shè)備要上阿里云物聯(lián)網(wǎng)平臺(tái),首先需要建立實(shí)例,主要操作步驟如下:(1)登錄阿里云物聯(lián)網(wǎng)平臺(tái),進(jìn)入控制臺(tái)(https://iot.console.aliyun.com/),首次進(jìn)入須注冊(cè)賬號(hào)后登錄控制臺(tái)。(2)創(chuàng)建產(chǎn)品。阿里云物聯(lián)網(wǎng)平臺(tái)的產(chǎn)品與現(xiàn)實(shí)生活中產(chǎn)品的概念有差別,表示相同一類設(shè)備的集合,同一個(gè)產(chǎn)品下的設(shè)備具有相同的功能。(3)添加設(shè)備。創(chuàng)建產(chǎn)品后,可以直接添加設(shè)備,輸入設(shè)備名稱autosanitiser,設(shè)備名稱不支持中文,且在同一類設(shè)備名稱中需要唯一標(biāo)識(shí)。(4)為產(chǎn)品定義物模型。(5)物聯(lián)網(wǎng)平臺(tái)端訂閱設(shè)備消息。在設(shè)備端通過物模型通信topic實(shí)現(xiàn)屬性、事件等上報(bào)。
3.3.2 移動(dòng)端應(yīng)用開發(fā)
采用阿里云物聯(lián)網(wǎng)平臺(tái)提供的IoT Studio可以快速、方便地實(shí)現(xiàn)移動(dòng)端應(yīng)用開發(fā),進(jìn)入“https://studio.iot.aliyun.com/”,把洗手液智能出液裝置下的設(shè)備autosanitiser與移動(dòng)應(yīng)用結(jié)合起來。發(fā)布到手機(jī)移動(dòng)端,效果如圖5所示。
圖5 手機(jī)端顯示效果
伴隨著華為鴻蒙操作系統(tǒng)的發(fā)布,萬物互聯(lián)開始從理想逐漸走向現(xiàn)實(shí),越來越多的智能單品走入現(xiàn)實(shí)生活,并成為萬物互聯(lián)的節(jié)點(diǎn)。本文在新冠疫情的背景下,以大量使用的傳統(tǒng)洗手液為研究對(duì)象,從降低傳統(tǒng)洗手液使用方式下病毒傳播可能性的實(shí)際需求出發(fā),通過對(duì)洗手液裝置進(jìn)行改造,以伺服電機(jī)作為實(shí)現(xiàn)其自動(dòng)化的驅(qū)動(dòng)裝置,簡(jiǎn)單易用、成本可控。結(jié)合物聯(lián)網(wǎng)的發(fā)展趨勢(shì),對(duì)比了目前主流的無線通信技術(shù),選取NB-IoT技術(shù)上傳裝置的各項(xiàng)系統(tǒng)狀態(tài)參數(shù)至阿里云物聯(lián)網(wǎng)平臺(tái),使其完全成為一款自動(dòng)化、智能化、網(wǎng)絡(luò)化裝置。硬件實(shí)物如圖6所示。
圖6 硬件實(shí)物