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