,,
(電子科技大學 電子工程學院,成都 611731)
基于STM32的iBeacon集中器設計
師敬旭,張紅雨,何超
(電子科技大學 電子工程學院,成都 611731)
針對iBeacon設備的管理問題,本文設計了一個基于STM32的iBeacon集中器。集中器可以采集周圍的iBeacon數據包,并可通過串口、以太網或WiFi將數據包實時地轉發至用戶計算機,實現管理iBeacon設備的功能。集中器硬件設計上選用了內存大且通信接口豐富的STM32F407作為MCU,使集中器能讀取大量的iBeacon設備并通過多種方式轉發iBeacon數據包。軟件設計上應用了循環FIFO隊列,實現iBeacon數據包的緩存。測試結果表明,集中器無丟包現象,穩定可靠。
iBeacon;STM32;集中器;以太網;WiFi
iBeacon是蘋果公司于2013年發布的一項基于低功耗藍牙的無線數據傳輸技術,本文把任何支持iBeacon技術的設備統稱為iBeacon設備。iBeacon設備利用低功耗藍牙的廣播信道周期地發送自己特有的ID,接收到此ID的智能手機會喚醒相應的應用軟件執行特定操作。目前,iBeacon設備的功能主要是室內導航、信息推送和環境監測。一個iBeacon系統部署后,緊跟著的就是維護問題。在iBeacon系統運行期間,iBeacon設備丟失、人為損壞和沒電的情況經常發生,因此需要維護人員定期地到現場檢查每一個設備的運行情況。但這樣做不僅提高了系統成本,而且也不能及時地發現設備丟失或故障。為了解決iBeacon的分布應用、多種網絡接口和管理等問題,本文基于STM32微控制器設計了一種iBeacon集中器。
iBeacon系統主要由iBeacon設備、iBeacon集中器和用戶計算機三部分組成。集中器通過低功耗藍牙與iBeacon設備通信,通過串口或路由器與用戶計算機通信。若局域網外的計算機需要連接iBeacon集中器,只需在路由器上設置端口映射即可。系統中,各iBeacon設備負責周期地發送帶有自己ID的iBeacon藍牙廣播包;iBeacon集中器負責掃描iBeacon設備和執行用戶指令,實現低功耗藍牙、串口、以太網和WiFi協議的相互轉換;用戶計算機負責接收數據包并將其中的內容解析后顯示。系統結構如圖1所示。

圖1 iBeacon系統結構
iBeacon集中器硬件系統主要由MCU、藍牙模塊、串口通信模塊、以太網模塊和WiFi模塊組成。硬件系統框架如圖2所示。
2.1 藍牙模塊
藍牙模塊負責掃描iBeacon設備,是集中器與iBeacon設備通信的接口。本文中的藍牙模塊是以低功耗藍牙芯片CC2540為核心設計的。CC2540內置了增強型8051內核,8 KB RAM,256 KB FLASH,擁有2個USART接口和一個USB接口。藍牙模塊使用串口與MCU連接,通過串口接收指令和轉發iBeacon數據包。
2.2 MCU
iBeacon集中器硬件系統框架如圖2所示,MCU需要擁有三個串口和一個RMII接口,同時,MCU還需要擁有大的內存來緩存iBeacon數據包。

圖2 iBeacon集中器硬件系統框架
基于以上兩點要求,本文選取了STM32F407作為集中器的MCU。STM32F407主頻可達168 MHz,SRAM容量為128 KB,支持外擴SRAM。此外,STM32F407有豐富的通信接口,包括4個USART通信接口、2個UART通信接口和一個10M/100M以太網接口等。綜上所述,無論是在內存方面,還是在通信接口方面,STM32F407都完全滿足要求。
2.3 串口通信模塊
串口通信模塊負責與本地計算機通信,主要用于接收配置指令。當集中器不能連接WiFi和以太網時,iBeacon數據包也可通過此模塊轉發至用戶計算機。由于現在大多數筆記本電腦沒有串口,因此本文采用USB轉串口芯片CH340實現計算機與集中器的串口通信。
2.4 以太網模塊
以太網模塊負責連接路由器,需要將iBeacon數據包通過路由器轉發至用戶計算機,同時還需要接收用戶的控制指令。本文選用了低功耗的10 M/100 M以太網PHY層芯片LAN8720A實現以太網通信功能。此芯片通過RMII接口與MCU通信,可以通過自協商的方式確定與目的主機的連接速度和雙工模式;同時,此芯片支持HP Auto-MDIX自動翻轉功能,無需更換網線即可將連接改為直接連接或交叉連接。
2.5 WiFi模塊
WiFi模塊負責連接附近的無線路由器,功能與以太網模塊相同。本文選用了低功耗WiFi模塊ATK-ESP8266實現WiFi通信功能,此模塊內置了CPU內核和TCP/IP協議棧,能夠獨立運行也能夠作為適配器搭配其他MCU使用。作為WiFi適配器時,外部MCU可通過串口發送AT指令控制此模塊并傳輸數據。本文中將此模塊作為WiFi適配器使用,并使用AT指令與此模塊通信。
iBeacon集中器軟件系統主要由各芯片驅動程序、協議棧和頂層控制程序組成,軟件系統結構如圖3所示。

圖3 iBeacon集中器軟件系統結構

圖4 循環FIFO隊列
圖中的箭頭表示調用關系,上層軟件調用下層軟件完成相應的功能。本文中藍牙協議棧使用TI公司針對CC2540/CC2541開發的BLE-Stack 軟件開發套件 BLE-CC254x-1.4.2.2實現,其中不僅包含藍牙芯片的驅動程序,還包含低功耗藍牙應用快速開發所需的所有軟件、示例應用和文檔。由于WiFi芯片內置了TCP/IP協議棧,所以圖3中的TCP/IP協議棧實際上代表了兩個TCP/IP協議棧,這兩個協議棧分別運行在WiFi芯片和外部MCU上。本文中運行在外部MCU上的TCP/IP協議棧使用LWIP實現,LwIP是一個小型開源的TCP/IP協議棧,有無操作系統的支持都可以運行;重點是它對內存的要求非常小,只需十幾KB的RAM就可以運行,因此LwIP非常適合在無操作系統的嵌入式系統中使用。
本文中軟件設計的關鍵技術是設置一個循環FIFO隊列實現iBeacon數據包的緩存,隊列結構如圖4所示。

圖5 數據包入隊流程圖
集中器每掃描到一個新的設備,就將該設備的數據包存放到隊尾后的空緩沖區中,直到隊滿為止。數據包的入隊操作是在串口中斷服務程序中完成的,程序中設置了一個接收緩存來暫存iBeacon數據包,當一個數據包接收完畢后就執行入隊操作。程序工作流程圖如圖5所示。
集中器的頂層控制程序會定時地檢查FIFO隊列的狀態,如果隊列非空,則將隊首的數據包通過串口、以太網或WiFi轉發到用戶計算機,直到隊列變空為止。程序流程圖如圖6所示。

圖6 數據包出隊流程
程序運行中,用戶可以發送指令動態地開啟或關閉串口、以太網和WiFi轉發功能。串口轉發可以在任意時刻開啟或關閉,但是以太網和WiFi轉發不能同時開啟,只能通過發送指令在這兩種模式下切換。
本次測試是使用開發板來對集中器功能進行驗證的,測試中使用的硬件電路如圖7所示。

圖7 測試硬件電路
本文使用了一款專門管理iBeacon設備的上位機軟件,對集中器的串口轉發、以太網轉發和WiFi轉發功能分別進行了測試,在測試以太網和WiFi轉發功能時,集中器作為TCP服務器。測試結果表明,集中器可以通過串口、以太網或WiFi將數據實時轉發至上位機軟件并能正確解析。上位機軟件中Sensor Data用于顯示數據包中的傳感器數據,本次測試并未使用傳感器,所以這部分區域顯示一個無效的字符。

[1] 歐陽駿,陳子龍,黃寧淋.藍牙4.0 BLE開發完全手冊[M].北京:化學工業出版社,2013.
[2] 朱升林.嵌入式網絡那些事:LwIP協議深度剖析與實戰演練[M].北京:中國水利水電出版社,2012.
[3] 朱廣,黎海濤,馬銀童,等.低功耗物聯網網關設計與實現[J].國外電子測量技術,2016,35(6):31-36.
[4] 廖鵬飛,陳慶奎.基于藍牙4.0與3G的無線傳感器網關設計與實現[J].計算機工程,2015,41(9):13-18,24.
[5] 胡銀剛,孟憲磊,趙燦,等.基于藍牙和GPRS的無線傳感器網絡設計[J].自動化與儀器儀表,2015 (6):14-15.
[6] 鄒曉康,劉帥,張浩然.基于STM32嵌入式多協議網關設計[J].微型機與應用,2016,35(16):38-40,43.
師敬旭(碩士研究生),主要研究方向為嵌入式技術和物聯網;張紅雨(高級工程師),主要研究方向為射頻自動識別、物聯網和嵌入式技術。
DesignofiBeaconConcentratorBasedonSTM32
ShiJingxu,ZhangHongyu,HeChao
(School of Electronic Engineering,University of Electronic Science and Technology of China,Chengdu 611731,China)
Aiming at the problem of management of iBeacon devices,a iBeacon concentrator based on STM32 is designed in this paper.The concentrator can receive many iBeacon data packets and send it to user computer by the serial port,Ethernet and WiFi in real time.It can be used to manage lots of iBeacon devices.The concentrator uses STM32F407 as the core control chip which provides large memory and multiform communication interfaces.It can receive plenty of iBeacon data packets and send it to user computer in a variety of ways.On the software,the circular queue has been used to store iBeacon data packets temporarily.The test results show that there is no packet loss and the concentrator is stable and reliable.
iBeacon;STM32;concentrator;Ethernet;WiFi
TN923
A
2017-06-30)