(廣東工貿(mào)職業(yè)技術(shù)學(xué)院 計算機工程系,廣州 510510)
基于ESP8266和OneNET云平臺的遠程報警系統(tǒng)
張萍
(廣東工貿(mào)職業(yè)技術(shù)學(xué)院 計算機工程系,廣州 510510)
基于ESP8266無線上網(wǎng)模塊和中移動打造的OneNET開放物聯(lián)網(wǎng)云平臺,設(shè)計了一種遠程報警系統(tǒng),給出了硬件設(shè)計原理圖和軟件設(shè)計流程圖,并對ESP8266和OneNET云平臺的使用進行了介紹。利用ESP8266的GPIO口、OneNET云平臺的存儲、觸發(fā)器功能和具有公網(wǎng)IP的上位機,為物聯(lián)網(wǎng)數(shù)據(jù)采集、數(shù)據(jù)存儲、控制指令下發(fā)提供了一種新的解決方案。
物聯(lián)網(wǎng);ESP8266;OneNET云平臺
ESP8266是樂鑫公司專門為物聯(lián)網(wǎng)研發(fā)的低價、低功耗WiFi芯片,具備無線上網(wǎng)功能,有強大的處理能力。OneNET是中國移動通信集團推出的專業(yè)的物聯(lián)網(wǎng)開放云平臺,其提供可靠的服務(wù),幫助各類終端設(shè)備迅速接入網(wǎng)絡(luò),可實現(xiàn)數(shù)據(jù)傳輸、數(shù)據(jù)存儲、數(shù)據(jù)管理等完整的交互流程。
本文基于ESP8266和OneNET,采用HC-SR501人體紅外感應(yīng)模塊檢測是否有人入侵,若發(fā)現(xiàn)有人入侵,則提供郵件通知和喇叭示警兩種告警方式,實現(xiàn)了一種物聯(lián)網(wǎng)遠程報警系統(tǒng)。
ESP8266作為主MCU,無需和其他單片機配合使用,可利用ESP8266 GPIO口功能進行數(shù)據(jù)采集并發(fā)出控制信號。采集端ESP8266利用無線上網(wǎng)功能和OneNET平臺建立網(wǎng)絡(luò)連接,上傳數(shù)據(jù)到OneNET。OneNET平臺具備觸發(fā)功能,設(shè)置好接收郵箱和公網(wǎng)服務(wù)器,當(dāng)采集到的數(shù)據(jù)滿足觸發(fā)條件時,既可以郵件的形式發(fā)送到設(shè)置好的郵箱,進行主動提醒;也可以http post消息的形式發(fā)給設(shè)置好的公網(wǎng)服務(wù)器,由服務(wù)器進行中轉(zhuǎn)。本文以一臺具備公網(wǎng)IP的服務(wù)器作為上位機,接收從OneNET主動推送過來的告警消息,控制端ESP8266不斷查詢上位機,發(fā)現(xiàn)有告警信息則控制告警模塊進行告警。選用高分貝報警器(有源SHD4216蜂鳴器)作為告警模塊,正常狀態(tài)蜂鳴器不響,當(dāng)有人入侵時,蜂鳴器發(fā)出聲音并持續(xù)10s告警。遠程報警系統(tǒng)框圖如圖1所示。
圖1 遠程報警系統(tǒng)結(jié)構(gòu)框圖
HC-SR501是基于紅外線技術(shù)的自動控制模塊,廣泛應(yīng)用于各類自動感應(yīng)電器設(shè)備外部接口領(lǐng)域中??晒ぷ髟谥貜?fù)觸發(fā)方式,平時保持低電平狀態(tài),當(dāng)感應(yīng)到有人活動時輸出高電平。在延時時間段內(nèi),如果有人在其感應(yīng)范圍活動,則輸出將一直保持高電平,直到人離開后才延時將高電平變?yōu)榈碗娖?。采集端硬件設(shè)計如圖2所示。
圖2 采集端硬件設(shè)計
樂鑫公司的ESP8266系列有ESP8266-01至ESP8266-12多款芯片,某些引腳在內(nèi)部已拉高或拉低,且不能通過外部電路更改其狀態(tài),否則硬件啟動不成功。通過對比,選用ESP8266-12,可用GPIO口較多。ESP8266-12初始化GPIO4為輸入狀態(tài),采集HC-SR501的DATA引腳數(shù)據(jù)。
控制端仍采用ESP8266-12芯片,初始化GPIO4為輸出狀態(tài),默認輸出低電平,蜂鳴器不響;當(dāng)從上位機獲取到有人入侵的消息時,輸出高電平,蜂鳴器發(fā)出聲音告警??刂贫擞布O(shè)計如圖3所示。
圖3 控制端硬件設(shè)計
ESP8266支持多種編程方式,如AT、Non-OS SDK、RTOS SDK。選用了Non-OS SDK的編程方式,圖2中采集端ESP8266利用Non-OS SDK提供的定時器周期性查詢GPIO口的輸入信息,HC-SR501人體紅外感應(yīng)模塊檢測到有人活動時GPIO口輸入高電平,人離開后GPIO口輸入低電平。ESP8266工作在STATION模式,設(shè)置SSID、PASSWORD,接入本地局域網(wǎng)。當(dāng)發(fā)現(xiàn)GPIO口電平狀態(tài)有變化時,發(fā)起TCP連接OneNET云平臺,將最新數(shù)據(jù)上傳到云平臺。采集端ESP8266流程圖如圖4所示。
圖4 采集端ESP8266流程圖
OneNET是中國移動打造的物聯(lián)網(wǎng)開放平臺,開發(fā)文檔完善,開發(fā)者只需按照OneNET平臺的規(guī)范接入平臺,上傳設(shè)備數(shù)據(jù)。數(shù)據(jù)存儲在云端,需要時可以從云平臺下載到本地進行分析處理,平臺還提供觸發(fā)器功能,可以將滿足條件的數(shù)據(jù)主動推送給第三方,本文就是利用了平臺的觸發(fā)器功能。下面以本文實現(xiàn)的遠程報警系統(tǒng)為例,對OneNET平臺接入、觸發(fā)器功能、數(shù)據(jù)協(xié)議進行說明。
3.2.1 OneNET平臺接入
OneNET平臺接入流程如圖5所示。
圖5 OneNET接入流程
用戶在接入OneNET之前,先要在OneNET注冊用戶賬戶,在用戶賬戶下創(chuàng)建產(chǎn)品,在產(chǎn)品中創(chuàng)建設(shè)備,為設(shè)備新增數(shù)據(jù)流。為實現(xiàn)紅外報警功能,在OneNET平臺進行操作。
3.2.2 觸發(fā)器設(shè)置
觸發(fā)器設(shè)置如圖6所示。
圖6 OneNET云平臺上的觸發(fā)器設(shè)置
3.2.3 數(shù)據(jù)協(xié)議
OneNET云平臺提供公開協(xié)議產(chǎn)品和私有協(xié)議產(chǎn)品兩種產(chǎn)品類型,其中公開協(xié)議產(chǎn)品又有HTTP、EDP、MQTT、MODBUS等多種協(xié)議可供選擇。本文中使用的是HTTP協(xié)議。
(1)采集端上傳數(shù)據(jù)范例
POST /devices/10985117/datapoints HTTP/1.1
api-key: PKWOSxDHbMakYx5=aSxUOuBDpnQ=
Host:api.heclouds.com
Content-Length:61
{"datastreams":[{"datapoints":[{"value":1}],"id":"hcsr501"}]}
注意采集端在構(gòu)造上傳數(shù)據(jù)時要符合OneNET平臺的規(guī)范,本文使用http post方式上傳,符合http協(xié)議規(guī)范。第一行斜體的10985117來自于設(shè)備ID,datapoints表示數(shù)據(jù)內(nèi)容部分采用JSON格式,第二行api-key來自APIKey,數(shù)據(jù)內(nèi)容部分“id”:“hcsr501”來自于OneNET平臺上建立的數(shù)據(jù)流名稱,“value”:1 表示數(shù)據(jù)流的內(nèi)容是1。
OneNET平臺在接收到上傳數(shù)據(jù)后,會回消息給采集端,表示數(shù)據(jù)上傳正確,成功接收。內(nèi)容如下:
HTTP/1.1 200 OK
Date: Sun, 06 Aug 2017 07:34:59 GMT
Content-Type: application/json
Content-Length: 26
Connection: keep-alive
Server: Apache-Coyote/1.1
Pragma: no-cache
{"errno":0,"error":"succ"}
根據(jù)觸發(fā)器的設(shè)置,當(dāng)采集端上傳的數(shù)據(jù)內(nèi)容為{"datastreams":[{"datapoints":[{"value":1}],"id":"hcsr501"}]},表示數(shù)據(jù)流hcsr501的值為1,符合觸發(fā)條件。
(2)OneNET云平臺觸發(fā)器發(fā)出的郵件通知范例
標(biāo)題:
【OneNET】您的HC-SR501設(shè)備的紅外報警-郵件通知觸發(fā)器在2017-08-06 15:34:59被觸發(fā)。詳情:hcsr501數(shù)據(jù)流、==類型、觸發(fā)值1
發(fā)件人:OneNET
時間:2017年8月6日(星期天)下午3:35
郵件內(nèi)容:
觸發(fā)器信息
觸發(fā)器id: 52239
觸發(fā)器名: 紅外報警-郵件通知
類型: ==
閾值: 1
觸發(fā)數(shù)據(jù)
設(shè)備id: 10985117
設(shè)備名: HC-SR501
數(shù)據(jù)流: hcsr501
觸發(fā)時間: 2017-08-06T15:34:59.824
觸發(fā)值: 1
(3)OneNET云平臺觸發(fā)器推送到第三方服務(wù)器的消息范例
上位機打開監(jiān)聽程序,監(jiān)聽端口2323,接收來自O(shè)neNET云平臺的推送消息,消息采用http post方式傳遞,符合http協(xié)議,實際傳送內(nèi)容采用JSON格式。
POST / HTTP/1.1
Content-Type: application/json;charset=utf-8
Content-Length: 197
Host:45.32.80.133:2323
Connection:Keep-Alive
Accetp-Encoding: gzip
User-Agent: okhttp/3.4.1
{"trigger":{"id":52240,"threshold":1,"type":"=="},"current_data":[{"user_id": 93432,"dev_id":"10985117","ds_id":"hcsr501","at":"2017-08-06 16:55:38.346", "value": 1}]}
因為OneNET位于公網(wǎng),接收推送消息的第三方服務(wù)器也需要具備公網(wǎng)IP。從www.vultr.com申請一臺服務(wù)器作為上位機,服務(wù)器采用Debian操作系統(tǒng)。流程圖如圖7所示。
控制端ESP8266初始化 GPIO4口為輸出狀態(tài),默認輸出低電平,蜂鳴器不響,仍采用Non-OS SDK的編程方式,利用定時器周期性查詢上位機數(shù)據(jù),若發(fā)現(xiàn)有人入侵,則GPIO4口輸出高電平,蜂鳴器發(fā)出聲音報警,并持續(xù)一段時間,流程圖如圖8所示。
圖7 上位機流程圖
圖8 控制端ESP8266流程圖
遠程報警系統(tǒng)如圖9所示。
圖9 遠程報警系統(tǒng)實物圖
[1] 胡慶,周志強,吉彬,等.基于AT89C51單片機的智能灌溉系統(tǒng)[J].成都大學(xué)學(xué)報,2016,(354):383-386.
[2] 范興隆.ESP8266在智能家居監(jiān)控系統(tǒng)中的應(yīng)用.[J].單片機與嵌入式系統(tǒng)應(yīng)用,2016,16(9):52-56.
[3] 邱宏斌.一種基于ESP8266模塊的物聯(lián)網(wǎng)設(shè)計思路[J].電子世界,2017(4):157.
[4] 劉曉劍.基于OneNET的物聯(lián)網(wǎng)監(jiān)控系統(tǒng)[D].鄭州:鄭州大學(xué),2016.
張萍(教師),主要研究方向為物聯(lián)網(wǎng)應(yīng)用。
RemoteAlarmSystemBasedonESP8266andOneNETCloudPlatform
ZhangPing
(School of Computer Engineering,Guangdong Polytechnic of Industry and Commerce,Guangzhou 510510,China)
In the paper,a kind of remote alarm system is proposed and realized based on ESP8266 wireless internet module and OneNET open internet cloud platform.The schematic diagram of hardware design and software flow pattern are given out,and the use of ESP8266 and OneNET cloud platform are introduced.Based on the character of ESP8266 GPIO,the storage and trigger function of clound platform and host computer with public network IP,the system provide a new solution for data collection,data storage and control instruction of internet of things.
internet of things;ESP8266;OneNET cloud platform
TP273
A
楊迪娜
2017-08-18)