?

基于Linux的物聯網網關及智能終端節點設計與實現

2024-04-06 13:05楊丹肖娟
電腦知識與技術 2024年3期
關鍵詞:低功耗智能家居

楊丹 肖娟

關鍵詞:智能家居;Linux網關;BLE Mesh;低功耗

中圖分類號:TP393 文獻標識碼:A

文章編號:1009-3044(2024)03-0094-03

0 引言

在智能家居系統中,通常需要實現將一個家庭內的各房間、各位置的傳感器和執行器連接上云平臺。如果單個設備都直接與互聯網連接,將會增大硬件成本、功耗和配置難度[1]。因此家庭內一般需要一個智能家居網關,將所有的傳感器匯聚到網關上統一上報云平臺,云平臺對執行器的操作也通過網關分發到家庭中。

本文研究設計了一套智能家居網關系統,包括一個Linux智能網關,支持BLE組網功能,再配合具有BLE功能的終端節點,實現應用到家庭中的整套智能方案。

1 設計方案

智能家居平臺硬件包括智能家居網關和終端節點。它們組成BLE Mesh網絡,系統拓撲結構圖如圖1 所示。

2 網關的設計

網關采用基于Linux的嵌入式操作系統,CPU使用NXP i.MX 6ULL應用處理器,NXP i.MX 6ULL應用處理器是一款高性能、超高效器件,采用單個ARM Cortex?-A7內核,運行速度高達528MHz。網關硬件上主要包括有線網絡、無線網絡和BLE模組,軟件主要包括系統配置軟件、傳感器和執行器通信軟件和與云平臺通信的軟件。

2.1 網關硬件設計

網關的硬件采用I.MX6U-MINI開發板加上若干個外接子模塊構成。本文網關采用開發板通過串口模塊接口與BLE 5.0模組相連接,通過SDIO WiFi接口與RTL8189網卡相連接,網關搭配了512MB DDR3L內存和8GB EMMC,可以輕松應付智能家居場景下的BLE Mesh數據采集和分發,云平臺的實時訪問等功能。

2.2 網關軟件設計

網關軟件基于Linux嵌入式C語言開發,采用多進程、多線程的開發模式,共開發了網關主軟件和網關與云平臺網絡通信軟件兩個進程。進程間使用消息隊列進行通信,消息隊列本質上是位于內核空間的鏈表,鏈表的每個節點都是一條消息。每一條消息都有自己的消息類型,消息類型用整數來表示,其中數字 1 表示類型為 1 的消息,數字2、3、4 類似。讀取消息類型為 0 消息代表按順序讀取隊列類所有消息[2]。

1) 網關主軟件

網關主軟件包括網關配置程序和與BLE組網通信程序,使用多線程的方式實現,流程圖如圖2所示。程序啟動后判斷是否進入配置模式,如果網關從未配置過,將自動進入配置模式,如果網關已配置過,則在開機過程中通過長按按鍵進入配置模式,否則將自動進入運行模式運行。

配置模式下分別啟動一個TCP服務器和UDP服務器,PC端網關配置軟件將通過搜索的方式搜索該網關,然后通過TCP協議連接網關。主要功能是利用PC端網關配置軟件給網關綁定傳感器等終端節點,并且與云平臺上的項目信息和終端節點實現同步。

正常運行模式下,需要啟動BLE網絡通信,并開啟與云平臺網絡通信程序。網關一方面實時讀取BLE網絡上的傳感器數據,通過消息隊列的方法轉發給網絡通信程序,進而上報給云平臺。另一方面從消息隊列中接收云平臺通過網絡通信程序下發的控制指令,再通過BLE網絡專用指令直接控制相應終端節點。

網關主軟件主要涉及使用Linux實現TCP、UDP 的服務器軟件,按鍵解析,Json通信格式解析,UART 串口通信,文件操作,多線程程序設計以及進程間消息隊列通信等技術。

2) 網關與云平臺網絡通信軟件

網關與云平臺網絡通信軟件主要目的是創建一個TCP客戶端,實現網關訪問云平臺。該軟件包含上報數據和接收數據兩個線程,分別處理傳感器數據的實時轉發上報和云平臺的控制指令接收。流程圖如圖3所示。

首先通信軟件需要利用云平臺上的設備信息和密鑰進行鑒權,鑒權成功后才可以上報數據和接收數據,并且要不斷地發送心跳包維持連接。如果程序從消息隊列中獲取到了BLE網絡請求上報數據的消息,則將該消息打包成Json格式上報給云平臺,如果上報數據因網絡原因失敗,則需要嘗試重新連接云平臺并進行鑒權。

在接收線程中,需要不斷地讀取云平臺下發的信息,并判斷信息屬性是心跳消息、連接響應、上報數據響應還是命令請求,做出不同的策略。如果是命令請求,則將命令解析后發送到消息隊列,經過網關主軟件解析后轉發到BLE網絡控制相應設備。

網絡通信軟件主要涉及使用Linux實現TCP的客戶端軟件、Json通信格式解析、文件操作、多線程程序設計以及進程間消息隊列通信等技術。在TCP通信中,要注意保持連接的靈活性和確保網絡中斷后的TCP通信重新連接。

3 終端節點的設計

終端節點的功能是采集各類傳感器的信息上報和接收網關的控制命令操作執行器,每個終端節點都需要搭載BLE模組。終端節點采用自制PCB板的方案,考慮到成本及通用性,將傳感器和執行器做成一塊通用PCB,根據不同的焊接方案選擇不同的功能。終端節點主要采用STM32+JDY-24M BLE模組方案,STM32負責采集傳感器數據和配置BLE模組,BLE模組主要負責與網關和其他終端節點BLE組網通信。STM32F030微控制器集成了以48 MHz頻率工作的高性能Arm Cortex-M0內核及多種外設。STM32F030微控制器適合設計低功耗應用。JDY-24M 超級藍牙支持主從透傳、iBeacon、BLE 探針、iBeacon 探測、MESH 組網,組網數量最大支持65 280個設備,組網通信速度支持50ms發16字節數據,單模塊支持路由節點與終端節點,JDY-24M 組網只需要配置好組網 NETID、短路地址后即可自動組網[3-4]。

3.1 終端節點硬件設計

終端節點的硬件設計以主控MCU STM32和BLE 模組為主,外接電源模塊、傳感器模塊、繼電器模塊組成一個終端節點。

1) 主控模塊設計

主控模塊采用STM32F030F4P6最小系統板,引出了5.0V/3.3V的供電引腳、編程下載用的SWD串行調試接口、ADC功能采集引腳、USARTs通信接口以及普通IO口[5]。終端節點需要有模擬傳感器數據采集、數字式傳感器采集、開關式傳感器采集的功能和串口通信的功能,故這些引腳的引出滿足設計需要。

2) BLE模塊設計

JDY-24M BLE模組與主控MCU之間采用UART 接口連接,通過標準AT指令通信。BLE模組具備無線控制輸出IO功能,可直接經過驅動電路對繼電器施加控制,進而控制電燈、電風扇等執行設備的開啟和關閉。

3) 電源模塊設計

為方便終端節點的電源接入,共設計了三路電源,分別是兩節干電池3.0V供電、220V交流電供電以及5V適配器供電,便于終端節點的各種場景下使用。

220交流電采用整流模塊輸出5.0V和3.3V兩路電源,干電池通過PW5100-5.0V芯片實現升壓輸出5.0V,此外STM32最小系統板具備5.0V轉3.3V供電功能。

4) 傳感器模塊設計

傳感器模塊是各種傳感器的統一接口,此接口支持5V/3.3V兩路電源、多路ADC采樣、I2C通信、SPI通信和普通IO接口等多種通信方式,能夠實現一個接口可以支持溫濕度、光照強度、可燃氣體、人體紅外、火焰等多種傳感器的數據采集,傳感器子采集設備采用江西信息應用職業技術學院已經具備的北京新大陸教育公司提供的各種子設備。

5) 繼電器模塊設計

繼電器模塊是將弱電控制信號控制大電流通斷的自動開關裝置。本項目中是用來控制電燈、電風扇以及插座等執行設備的打開和關閉,所以繼電器選用220V的交流繼電器。因繼電器的控制端需要使用5V 電壓驅動,但是BLE模組或STM32芯片的IO輸出為3.3V,所以需要用三極管放大電路增大驅動能力再連接到繼電器。

3.2 終端節點軟件設計

終端節點軟件是基于C語言的STM32單片機開發,采用KEIL集成開發工具完成軟件開發。軟件基于STM32標準庫,采用模塊化設計,主要包括主程序、定時器程序、按鍵程序、傳感器采樣程序及BLE模組通信程序等。

1) 主程序

主程序主要完成基本外設的初始化,包括GPIO 口、UART、ADC模塊等。主程序還負責終端節點配置模式和正常模式的切換,在配置模式下,程序接收網關的配置指令,將終端節點加入網關組成的BLE網絡下;在正常模式下,程序不斷采集當前傳感器的數據,并通過BLE網絡發送給網關。

2) 定時器程序

MCU的硬件定時器定時范圍廣,定時精準,但是硬件定時器的數量往往滿足不了項目的定時需求。本項目中LED、按鍵檢測、數據采集都需要用到定時器,軟件定時器只需要利用一個硬件定時器就可以完成多個定時需求,并且將定時器新增、刪除和暫停做成統一接口,可以方便地管理多個任務的定時需求。

采用結構體數組來存儲每個軟件定時器的信息,包括句柄、時間、狀態、參數、重復類型、執行時效和回調函數。硬件定時器中斷函數負責對所有激活的定時器進行計時,根據執行時效判定是否需要到中斷函數內執行回調函數,對于時間要求精準并執行快速的回調函數可以設置在中斷函數中立即響應,而對于時間要求不是很嚴格或者執行實際較長的回調函數可以設置在主程序中響應。

3) 按鍵程序

按鍵程序用于處理按鍵長短按,實現終端節點的正常模式和配置模式切換。按鍵通過GPIO口實現,每100ms檢測一次按鍵狀態。為消除按鍵抖動,連續兩次檢測到按鍵按下才判定為有效按鍵,即按鍵持續時間大于100ms,如果持續時間小于1 000ms釋放,則觸發為短按;如果持續時間大于1 000ms,則在相應時間觸發長按,本設計按鍵達到2 000ms觸發長按。

4) 傳感器采樣程序

節點搭配的傳感器類型有很多種,程序要同時支持ADC采樣、數字采樣和開關量采樣。如果是光照、火焰、空氣質量及可燃氣體等模擬式傳感器,則調用ADC轉換函數讀取以10mV為單位的電壓值;如果是人體紅外等開關式傳感器,則讀取IO口狀態得到布爾值;如果數字式溫濕度傳感器,則調用SHT1x程序讀取當前溫濕度數據。最終再根據傳感器類型將數據打包發送給網關。

5) BLE模組通信程序

BLE模組使用UART接口和MCU連接,使用AT 指令進行通信,在設備上電后,需要根據正常模式或配置模式下對模組分別初始化。配置模式下,將BLE 網絡的NETID設置為配置網絡0001,正常模式下,將BLE網絡的NETID設置為網關BLE的地址后四位,此網絡號在第一次配置時保存在Flash中。

BLE 模組在每次采集完一次數據后都會調用BLE數據發送函數將數據發送給網關,通過MESH網絡發送數據指令格式為“AT+MESH”后接具體數據,UART數據打包形式如圖4所示,共15個字節。

4 智能家居平臺調試

根據上述網關和終端節點的設計方案,分別完成網關、終端傳感器、終端執行器三部分的制作,如圖5 所示,經過調試,通過Android App可以實現傳感器數據的采集和執行設備的控制。

5 結束語

本文主要設計了一套用于智能家居的智能網關和終端節點設備。智能網關主要功能是訪問云平臺以及與終端節點無線連接,是整個智能家居系統的中樞,終端節點主要負責采集傳感數據和控制電器開關。系統采用Linux操作系統實現網關的設計,可以快速地實現BLE和以太網之間通信協議轉換,同時終端節點采用BLE實現組網,其低功耗的特性可以實現系統低碳、環保的運行。

【通聯編輯:謝媛媛】

猜你喜歡
低功耗智能家居
一種高速低功耗比較器設計
基于PLC的智能家居控制系統研究
低功耗NB-IoT透傳模塊的設計
一種用于6LoWPAN的低功耗路由協議
智能家居發展或將實現彎道超車
關于智能家居真正需求的探討
智能家居的發展趨勢分析
智能家居更貼心
基于LD3320的智能家居控制
ADI推出三款超低功耗多通道ADC
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合