
【摘要】近年來隨著信息數據產業的迅速發展,使得數字經濟掀起了很高的的浪潮。人工智能,虛擬現實,物聯網,車聯網等技術也相繼行駛在了信息高速路上。能源的消耗也越來越備受人們的關注,因此節能減排勢在必行,本文介紹一種使用IBM公司的MQTT協議制作的遠程路燈控制系統并進行設計,經過初步實驗與設計能夠實現手機對路燈進行實現遠程開關控制,從而達到節能的目的。
1.系統設計
整個系統設計構想如圖一所示,遠程路燈控制系統主要由MQTT協議手機客戶端,WiFi無線收發路由器,Mosquitto MQTT服務器,安信可推出的ESP8266-12F WiFi模組,繼電器控制模組以及路燈組成。當手機客戶端向服務器發布主題為/mqtt/led,消息為LED=1并且ESP8266組成的MQTT客戶端訂閱主題為/mqtt/led的時候,服務器通過無線路由器向ESP8266模組推送LED=1的消息,ESP8266模組發出指令使繼電器吸合從而打開路燈,當手機客戶端發布主題為/mqtt/led消息內容為LED=0的時候,ESP8266模組接受到消息后經過處理發出指令使繼電器釋放從而關閉路燈,以這樣的方式實現對路燈高效方便的控制管理。
2.MQTT協議及MQTT服務器搭建
MQTT協議是IBM公司推出的一種可以以TCP/IP為基礎的輕量級,低速率的傳輸協議,此協議可以在現有的網絡協議上運行起來,不用再部署新的網絡就能使用,在物聯網中大多數需要傳輸的數據都非常小,而且大多數的終端嵌入式設備的運算處理能力非常有限網絡吞吐量等性能都不是很可靠,低速率的MQTT協議很適合來做數據傳送,MQTT協議實現流量開最小化,最小只有兩個字節,降低了流量的消耗。MQTT協議具有三種質量的消息發布標準即:只有一次,至少一次,至多一次的QOS質量標準適合在不同的場合下使用。關于MQTT服務器的種類也有許多例如EMQ百萬級的開源服務器,apache-apollo MQTT服務器以及mosquitto服務器等,為了簡便實用本實驗采用mosquitto輕量級MQTT服務器。首先在Eclipse官方網站上下載moquitto安裝包,下載完畢后雙擊mosquitto的exe可執行文件根據提示點擊下一步直到安裝完成,然后將安裝包里面的pthreadVC2.dll文件復制粘貼到mosquitto的安裝目錄下面,最后將安裝的SSL下的兩個文件libeay32.dll與ssleay32.dll復制下來粘貼到mosquitto 安裝目錄下,這樣就完成了MQTT服務器的安裝。
3.ESP8266WiFi模組及MQTT客戶端的搭建
ESP8266是一款物美價廉的Wi-Fi芯片,集成Tensilica L106 鉆石系列的32 位處理器和片上SRAM,多達17 個GPIO口,并擁有IIC、IIS、UART、PWM、IR遙控等片上資源。還有一個重要的宏定義——CFG_HOLDER,因為這個MQTT示例在ESP8266運行過一次后會把這些信息保存到FLASH中,如果要繼續修改這些信息,記得要修改CFG_HOLDER這個宏定義,改成另一個數值即可。不修改CFG_HOLDER的話可能會發覺明明用戶名和密碼都正確但是就是連接不上去。根據上面分析,下面我們就可以修改示例代碼:1.把STA_SSID和STA_PASS修改為自己的WiFI名和密碼;2.修改MQTT_USER和MQTT_PASS為對應的MQTT服務器的用戶名和密碼,3.修改MQTT_HOST和MQTT_PORT為MQTT服務器IP和PORT,目前是使用本地的MQTT服務器,所以是修改為自己電腦的IP和1883端口,PORT是整型值;4.根據MQTT服務器的協議不同,可能需要使用MQTT v3.1.1版本,所以把PROTOCOL_NAMEv31注釋掉,使用PROTOCOL_NAMEv311。源碼的PROTOCOL_NAMEv311前面沒有#define,自己加上就行。5.修改CFG_HOLDER,以讓這些配置生效,直接給原來CFG_HOLDER定義的數值加1即可。6.修改訂閱主題為/mqtt/led,將函數回調部分程序修改成當接收到消息內容為LED=1時GPIO4輸出低電平,當接收到消息內容為LED=0時GPIO4輸出高電平。最后進行編譯下載:編譯,查看Console窗口,如果沒有報錯并且生成了bin文件,說明代碼已經編譯成功。另外要注意,ESP8266 SDK v2.0版本生成的eagle.irom0text.bin燒寫起始地址是0x10000,而之前的版本燒寫地址是0x40000;eagle.flash.bin還是0x00000。由于本實驗使用的是4MB Flash的ESP8266,所以也建議確定手頭的ESP8266是不是4MB Flash(即32Mbit Flash,注意單位!4MB=32Mbit,Flash一般是以bit計算!)。
4.系統整體測試
完成了MQTT服務器安裝以及搭建好ESP8266客戶端后,將服務器開啟運行,ESP8266WiFi模組與繼電器模組連接起來,再將繼電器模組與燈具連接上,打開ESP8266的電源開關,開啟無線路由器,這時候ESP8266會通過無線路由器連接上MQTT服務器,打開手機上的MQTT Client軟件,輸入無線路由器的密碼,以及MQTT服務器的ip地址端口號點擊連接,這樣手機端就與MQTT服務器建立了連接。在手機端的主題欄目輸入/mqtt/led,消息欄目輸入LED=1,點擊發送這時候繼電器吸和燈亮,反之在消息欄目輸入LED=0,點擊發送這時候繼電器釋放燈滅,系統測試完成。
結束語
手機移動終端對路燈設備的控制非常方便只要有網絡的地方就可以實現遠程控制,能提高對路燈的管理效率,也有實現節約電能的目的,具有廣泛的應用前景。
參考文獻:
[1]王浩,浦靈敏,物聯網技術應用開發(M).北京.中國水利水電出版社.2014
[2]劉火良,楊森,STM32庫開發實戰指南(M).北京.機械工業出版社.2013
作者簡介:謝祥兵,1991年2月,男,漢,籍貫:重慶市江津區,職稱:助理實驗師,學歷:本科單位:重慶師范大學涉外商貿學院教務處實踐教學管理科,研究方向為電子科學與技術,物聯網,單片機應用與開發。