劉力維
摘? 要:文章介紹了一種采用單片機(jī)和安卓移動(dòng)設(shè)備構(gòu)建移動(dòng)物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)實(shí)訓(xùn)系統(tǒng)的方法。并基于該系統(tǒng)完成了實(shí)訓(xùn)的項(xiàng)目設(shè)計(jì),實(shí)現(xiàn)了通過(guò)手機(jī)遠(yuǎn)程獲取單片機(jī)上的傳感器數(shù)據(jù)以及遠(yuǎn)程控制單片機(jī)上的開(kāi)關(guān)設(shè)備等典型的物聯(lián)網(wǎng)應(yīng)用。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);傳感器;安卓應(yīng)用開(kāi)發(fā)
中圖分類號(hào):N945.23 文獻(xiàn)標(biāo)志碼:A? ? ? ? ?文章編號(hào):2095-2945(2020)30-0039-02
Abstract: This paper introduces a method of building a mobile IoT application development training system by using MCU (micro-chip computer) and Android mobile devices. Based on the system, the project design of practical training is completed, and the typical application of IoT is realized such as remote acquisition of sensor data and remote control of switch equipment on MCU board.
Keywords: MCU(micro-chip computer); sensor; Android application development
1 物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)實(shí)訓(xùn)系統(tǒng)的設(shè)計(jì)背景及目標(biāo)
隨著網(wǎng)絡(luò)技術(shù)和移動(dòng)應(yīng)用的快速發(fā)展,基于移動(dòng)設(shè)備的物聯(lián)網(wǎng)應(yīng)用得以普及。對(duì)相關(guān)技術(shù)的學(xué)習(xí)掌握成為智能制造、嵌入式技術(shù)與應(yīng)用、移動(dòng)應(yīng)用開(kāi)發(fā)等專業(yè)學(xué)生的必備技能。目前市面上有很多集成化的物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)平臺(tái)。此類平臺(tái)大多封裝為智能農(nóng)業(yè)、智能交通、智能家居等應(yīng)用場(chǎng)景,集成度較高,但擴(kuò)展性較差,無(wú)法針對(duì)底層硬件進(jìn)行編程擴(kuò)展。本系統(tǒng)構(gòu)建了一個(gè)通用且可擴(kuò)展的物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)實(shí)訓(xùn)平臺(tái),使學(xué)生完成從底層單片機(jī)及傳感器應(yīng)用技術(shù)到上層移動(dòng)應(yīng)用開(kāi)發(fā)各環(huán)節(jié)的設(shè)計(jì)開(kāi)發(fā),形成對(duì)物聯(lián)網(wǎng)應(yīng)用系統(tǒng)的整體認(rèn)識(shí)。
2 物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)實(shí)訓(xùn)系統(tǒng)的架構(gòu)設(shè)計(jì)
本系統(tǒng)利用通用單片機(jī)開(kāi)發(fā)平臺(tái)、個(gè)人電腦和安卓移動(dòng)設(shè)備構(gòu)建一個(gè)移動(dòng)物聯(lián)網(wǎng)應(yīng)用系統(tǒng)。利用單片機(jī)開(kāi)發(fā)平臺(tái)的硬件可擴(kuò)展性和安卓開(kāi)發(fā)平臺(tái)豐富的軟件功能實(shí)現(xiàn)系統(tǒng)的通用性和擴(kuò)展性。系統(tǒng)框圖如圖1所示。
圖1 物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)實(shí)訓(xùn)系統(tǒng)功能框圖
單片機(jī)通過(guò)可編程IO連接數(shù)據(jù)傳感器和開(kāi)關(guān)設(shè)備,實(shí)現(xiàn)物聯(lián)網(wǎng)應(yīng)用模擬沙盤(pán)。個(gè)人電腦作為數(shù)據(jù)網(wǎng)關(guān),通過(guò)串口與單片機(jī)相連,實(shí)現(xiàn)沙盤(pán)上傳感器數(shù)據(jù)的采集和開(kāi)關(guān)設(shè)備的控制。安卓手機(jī)作為遠(yuǎn)程控制終端,通過(guò)無(wú)線網(wǎng)絡(luò)連接與數(shù)據(jù)網(wǎng)關(guān)通信,實(shí)現(xiàn)沙盤(pán)上傳感器數(shù)據(jù)的遠(yuǎn)程監(jiān)控和智能開(kāi)關(guān)的遠(yuǎn)程控制。
3 移動(dòng)物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)實(shí)訓(xùn)項(xiàng)目設(shè)計(jì)
實(shí)訓(xùn)內(nèi)容主要包括三部分:?jiǎn)纹瑱C(jī)應(yīng)用開(kāi)發(fā)部分實(shí)現(xiàn)通過(guò)串口與數(shù)據(jù)網(wǎng)關(guān)通信;數(shù)據(jù)網(wǎng)關(guān)部分實(shí)現(xiàn)HTTP服務(wù)器功能,同時(shí)實(shí)現(xiàn)與單片機(jī)之間串口通信數(shù)據(jù)的處理;移動(dòng)終端部分主要實(shí)現(xiàn)用戶界面設(shè)計(jì)以及傳感器數(shù)據(jù)的遠(yuǎn)程獲取和智能開(kāi)關(guān)的遠(yuǎn)程控制功能。
3.1 單片機(jī)串口通信的實(shí)現(xiàn)
以單片機(jī)連接溫度傳感器、照明、風(fēng)扇為例,定義了私有的串口通信數(shù)據(jù)格式,如表1所示。
單片機(jī)串口的命令解析可以通過(guò)狀態(tài)機(jī)來(lái)實(shí)現(xiàn)。設(shè)計(jì)單片機(jī)上串口接收狀態(tài)如下:
空閑狀態(tài):?jiǎn)纹瑱C(jī)已經(jīng)處理完成上一條指令,等待新指令的到來(lái)。
溫度告警上限設(shè)置:?jiǎn)纹瑱C(jī)收到了字符h,等待溫度告警上限的兩位數(shù)字。
溫度告警下限設(shè)置:?jiǎn)纹瑱C(jī)收到了字符l,等待溫度告警下限的兩位數(shù)字。
操作數(shù)1:?jiǎn)纹瑱C(jī)收到了第一個(gè)操作數(shù),等待第二個(gè)操作數(shù)。
操作數(shù)2:?jiǎn)纹瑱C(jī)收到了第二個(gè)操作數(shù),需要馬上進(jìn)行整條命令的處理。
開(kāi)設(shè)備:?jiǎn)纹瑱C(jī)收到了字符k,等待具體操作的設(shè)備字符。
關(guān)設(shè)備:?jiǎn)纹瑱C(jī)收到了字符g,等待具體操作的設(shè)備字符。
單片機(jī)串口接收數(shù)據(jù)進(jìn)行命令解析的狀態(tài)遷移過(guò)程如圖2所示。
3.2 數(shù)據(jù)網(wǎng)關(guān)開(kāi)發(fā)部分主要功能
數(shù)據(jù)網(wǎng)關(guān)主要功能分為兩部分:一是通過(guò)串口與沙盤(pán)通信;二是實(shí)現(xiàn)一個(gè)小型的HTTP服務(wù)器,負(fù)責(zé)處理來(lái)自遠(yuǎn)程移動(dòng)設(shè)備的網(wǎng)絡(luò)數(shù)據(jù)傳輸請(qǐng)求。
谷歌提供了一個(gè)開(kāi)源項(xiàng)目android-serialport-api,通過(guò)JNI技術(shù)實(shí)現(xiàn)了動(dòng)態(tài)鏈接庫(kù)。使用者通過(guò)調(diào)用該庫(kù)中提供的函數(shù),可以實(shí)現(xiàn)串口的開(kāi)關(guān)和串口數(shù)據(jù)的收發(fā)[1]。
數(shù)據(jù)網(wǎng)關(guān)通過(guò)一個(gè)開(kāi)源、輕量級(jí)的HTTP服務(wù)器NanoHTTPD實(shí)現(xiàn)[2]。在本系統(tǒng)中,HTTP服務(wù)器負(fù)責(zé)接收來(lái)自客戶端的請(qǐng)求,根據(jù)請(qǐng)求的參數(shù)區(qū)分進(jìn)行后續(xù)的業(yè)務(wù)邏輯處理,處理完畢后構(gòu)造響應(yīng)消息應(yīng)答客戶端設(shè)備。
3.3 安卓移動(dòng)終端開(kāi)發(fā)部分主要功能
移動(dòng)終端開(kāi)發(fā)的主要工作包括風(fēng)扇、照明等開(kāi)關(guān)設(shè)備的遠(yuǎn)程控制;傳感器數(shù)據(jù)的遠(yuǎn)程獲取和顯示;與數(shù)據(jù)網(wǎng)關(guān)之間的HTTP通信功能;移動(dòng)物聯(lián)網(wǎng)應(yīng)用的用戶界面;注冊(cè)及登錄等用戶身份認(rèn)證功能等。
4 移動(dòng)物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)實(shí)訓(xùn)項(xiàng)目的改進(jìn)建議
目前各大公司紛紛推出了基于云技術(shù)的物聯(lián)網(wǎng)開(kāi)放平臺(tái)[3]。學(xué)生在系統(tǒng)掌握物聯(lián)網(wǎng)應(yīng)用系統(tǒng)基本原理的基礎(chǔ)上,進(jìn)一步將數(shù)據(jù)網(wǎng)關(guān)云端化,利用物聯(lián)網(wǎng)開(kāi)放平臺(tái)向開(kāi)發(fā)者提供的標(biāo)準(zhǔn)接口進(jìn)行應(yīng)用開(kāi)發(fā),成為快速構(gòu)建物聯(lián)網(wǎng)應(yīng)用的大勢(shì)所趨。
參考文獻(xiàn):
[1]馮衛(wèi),張昱,何小煒.基于Android平臺(tái)的串口通信實(shí)現(xiàn)的分析[J].數(shù)字通信世界,2016,000(007):112-112.
[2]牛艷霞,馬秉斌.嵌入式Web服務(wù)器的Android空間數(shù)據(jù)離線解決方法[J].測(cè)繪科學(xué),2017,42(07):178-182+187.
[3]黃海峰.解讀華為IoT平臺(tái)以開(kāi)放構(gòu)建生態(tài)使能行業(yè)革新[J].通信世界,2017(21):39.