文昊翔 羅歡
摘要:該文設計了一款基于stm32的防長者走失追蹤報警系統。系統主要實現自動報警與長者定位功能,系統主要包含發射機和接收機兩部分并且以STM32F103ZET6為核心控制器。其中,發射機控制NEO-6M-0-001 GPS定位芯片和SIM900A芯片以獲取目標的位置信息,然后向指定號碼發送短信以實現報警功能作用,最后通過NRF24L01將定位數據發射到接收機。接收機接到定位信息后,通過串口將信息上傳至電腦以實現地圖上定位。經測試表明系統穩定性強,使用方便,具有較大的應用前景。
關鍵詞:stm32;防長者走失;GPS;自動報警
中圖分類號:TP273 文獻標識碼:A 文章編號:1009-3044(2018)04-0170-03
The Alarm System for Lost Elderly Based on STM32
WEN Hao-xiang, LUO Huan
(Institute of Physics and Mechanical & Electrical Engineering, Shaoguan University,Shaoguan 512005, China)
Abstract:An alarm system for lost elderly Based on STM32 is proposed in this paper. The system is used to locate the elderly and send a warning. The system mainly has two components, a transmitter and a receiver. The two components are controlled by a microcontroller STM32F103ZET6. The transmitter locates objections with a location module NEO-6M-0-001 and a GSM module SIM900A, and then sends this location information as well as a warning message to a certain mobile phone. At the same time, the transmitter also sends the location information to the receiver with NRF24L01. After the receiver receives the data from the transmitter by NRF24L01, it sends the location data to PC with the serial port and locates the target on the map in PC screen. The experimental results indicate that the proposed system has great prospects for its strong stability and easy controllability.
Key words:stm32; anti-elderly lost; GPS; H.264; automatic alarm
1 概述
目前,老人走失的事件常見諸報端,因此追蹤定位產品諸如防長者走失報警系統正為社會所需。但是如今市場上仍然缺乏一種成熟的相關產品。
本設計為一款防長者走失智能報警系統,系統分為發射機和接收機兩部分。發射機使用NEO-6M為主要定位芯片,并且使用SIM900A為核心的GSM模塊以實現發送報警短信的功能。發射機主要工作流程為:首先通過編寫程序讀取NEO-6M的定位信息并進行處理,在目標離開既定范圍(如老者離開了自家的房屋)后及時發送警告信號和實時位置信息到指定的手機號上,然后通過NRF24L01無線傳輸天線將NEO-6M的定位數據傳送到接收機[1]。接收機的主要作用是將數據接收并將其通過串口傳輸到PC機上,以實現將目標具體位置顯示在地圖上的功能,方便用戶對目標位置進行追蹤。
該系統對定位信息的準確度有較高的要求,在制作的過程中應注意對NEO-6M芯片的定位信息的檢測,保證正確檢測到目標移動情況;同時應注意確保NRF24L01在收發數據時沒有錯漏,并能完整無誤地將數據傳送給PC進行讀取。其對C語言的程序流程也有較嚴格的要求。由于數據處理較多,因此需要保證程序各方面流程準確無漏洞,如完善自動重啟功能,以保證系統在運作過程中無卡機現象出現。
2系統的硬件設計
2.1 STM32最小系統的設計
本設計的STM32最小系統主要包括以下幾個基本構成部分:MCU、LED部分、按鍵部分、時鐘電路以及其他必須的排針接口等[2]。電路如圖1所示。
STM32是ST公司推出的一種以Cortex-M3為核心處理器的高性能32位微控制器, STM32F103ZET6是一款增強型STM32,包含了由內核DCode、系統總線和兩個DMA通道組成的驅動單元以及由Flash閃存、FSMC、內部存儲器和AHB/APB橋組成的被動單元。
2.2 GPS衛星定位的設計
本文設計的GPS定位模塊采用NEO-6M內核,包含EEPROM、紐扣電池、UART調試接口和SMA接口等外部硬件設備[3]。NEO-6衛星定位芯片是U-Blox公司生產的一款能夠獨立工作檢測位置信息的高性能GPS信號接收器。NEO-6包含了兩個部分:射頻和基帶,它的系統框圖如圖2所示[4]。
EEPROM是指可擦可編程只讀存儲器,能夠保證模塊掉電后仍能夠記憶本次的波特率和幀數據,方便下次恢復供電時可以快速進入工作狀態;紐扣電池主要用于在短時間內記憶搜星數據,提高模塊的工作效率;UART調試接口為TTL電平,用于檢測完整的模塊功能;SMA接口用于連接天線[5]。GPS模塊的電路如圖3所示。
2.3 NRF24L01無線通信模塊
NRF24L01無線通信模塊采用NORDIC公司的NRF24L01芯片,內置2.4GHz天線,使用NORDIC公司的Enhanced Shock Burst協議進行通信,可實現點對點通信或一對多通信,但最多不能超過6點。NRF24L01芯片功能十分強大,具有多種工作模式,包括收發模式、配置模式、空閑模式和關機模式,以滿足不同的工作環境的需要[6]。其中,收發模式有三種,分別為直接收發模式、Enhanced ShockBurstTM收發模式和ShockBurstTM收發模式,可根據需要設置。
NRF24L01無線通信模塊的外形圖如圖4所示。可以看出NRF24L01模塊只引出了NRF24L01芯片的6個引腳,包括工作模式控制引腳CE、片選線CSN、始終控制線SCK、數據輸入輸出控制線MOSI和MISO以及中斷信號引腳IRQ、以及供電引腳VCC和GND[7]。
目前市場上的NRF24L01無線模塊均帶有內置天線,最大傳輸距離可為100米,且可與NRF2401A、NRF24L01+、NRF24LE1、NRF24LU1等無線模塊通用,是理想的實驗傳輸模塊。
3 系統軟件的設計
本系統的軟件部分有:發射機主程序和接收機程序。其中,發射機程序包括GPS控制處理程序、SIN900A控制處理程序、NRF24L01數據發送程序及其他完整實現整機系統所需的USART、SPI、定時器等STM32外圍電路程序;接收機程序則主要是NRF24L01的數據接收程序。本次程序設計采用模塊化的編程模式對各個部分的程序進行設計編寫。
本系統運用模塊化思想進行編程以實現整機功能。其中,發射端主程序的工作流程如圖5所示。
本系統的兩部分程序都是用C語言編寫實現的。首先是對MCU的各個外設,包括GPIO、SPI、定時器、內部FLASH、串口1、2、3等進行初始化設置,包括開啟時鐘等基本操作,保證MCU已經被正確設置,確保后續程序正常運行。
發射機程序包含了本系統的三個重要部分——GPS定位信息的讀取、GSM狀態的控制以及NRF24L01的數據發送,而接收機程序則主要是NRF24L01的數據接收。在對各模塊操作之前均要對模塊進行檢測,如果檢測不到模塊,說明模塊尚未初始化或是硬件連接出錯。如未提前檢測模塊是否正常接入就盲目進行下一步數據處理,將有可能出現亂碼問題,并導致后繼功能無法實現。為了避免這樣的情況出現,從嚴謹的設計態度出發,檢測程序必不可少。
對于發送機,在檢測到三部分模塊電路已經成功與MCU握手并完成初始化后,就可以執行數據處理的程序,讀取GPS接收到的位置信息,將其轉換成為正常的、可讀性強的數據進行保存,不斷更新,并將定位數據不斷地準確發送給接收機。當檢測到GPS的位置不在正常范圍內,即可判斷目標離開了規定地點,就可以將帶有目標位置信息的短信及時發送到指定的手機號碼上,實現報警功能[8]。
對于接收機,在各外設的初始化及模塊檢測完成后,程序將設置NRF24L01進入數據接收狀態,使其不斷地接收從發射端發送而來的數據,并將其傳輸到串口上,則通過串口連接到電腦可以將數據傳送到電腦上,并通過GPS模塊串口調試助手分析數據,將目標具體位置直接顯示在地圖上。
4 系統測試
4.1 GPS模塊的測試
對GPS定位功能的測試,可以通過多功能串口調試助手進行驗證。串口調試助手的軟件界面如圖6所示。
通過CH340 USB-TTL串口線即可實現PC與GPS模塊的連接,并將GPS的數據上傳給PC機,通過上述串口助手即可將定位信息顯示出來。由圖6可知,本次GPS模塊可以實現準確定位。
4.2 GSM模塊的測試
同GPS定位模塊一樣,GSM模塊也可以通過串口連接到PC端,通過串口調試助手給模塊發送AT指令,通過模塊的反應,驗證GSM模塊工作是否正常。檢測過程中串口調試助手的軟件界面如圖7所示。
由圖7可知,GSM模塊的工作狀態正常,且收發短信的功能經過串口調試助手的初步測試,可以成功向指定號碼發送短信。
4.3 NRF24L01模塊功能測試
不像GSM和GSP可以直接使用串口調試助手在PC端測試模塊的功能。NRF24L01模塊的數據需要通過SPI總線作為橋梁與MCU連接,再由MCU在獲取數據之后,將數據通過串口發送給PC機,此時便可在串口調試助手上觀測到相關的傳輸數據。
在本輪針對NRF24L01的測試中,主要測試電路能否正常連接及對程序進行初步測試,因此僅需發送一些簡單的字符數據。此外,發送端還接入TFT液晶顯示屏作為測試輔助工具,通過簡單的程序設計即可使液晶屏直接顯示當前傳輸數據的實際內容及傳輸狀態。當檢測到系統出現故障時,通過液晶屏顯示內容即可判斷故障是由發送端還是由接收端引起。
4.4 整體系統測試
經過前面測試后,即可將各模塊接入MCU,并將程序寫入MCU,進行整機測試。在這個過程中,存在著一些模塊程序運行沖突的問題,檢驗后發現是由于中斷優先級和串口的波特率沒有設置好。經過對程序的修改,已經解決了這個問題。
經調試后,整個系統功能已經完整的實現,既能根據當前位置判斷是否報警,也能在遠程PC端實時查看目標在地圖上的位置,實現報警追蹤的基本功能。目標定位效果如圖8所示,結果準確無誤。
通過測試,整個系統達到了預期設想的效果,使用方便,具有較大的應用前景。
參考文獻:
[1] 龔凌翔,葉芝慧,馮奇,方元.基于STM32的北斗/RFID組合定位系統設計[J].電子測量技術,2014,37(4):76-82.
[2] 丁力,宋志平,徐萌萌,陶燦輝.基于STM32的嵌入式測控系統設計[J].中南大學學報:自然科學版,2013,44(S1):260-265.
[5] 程銘. 基于GPS+GSM雙技術定位的車輛跟蹤系統的研究[D].天津大學,2010.
[8] 尹冬至. 基于GSM/GPS的汽車防盜系統的設計[D].武漢理工大學,2007.
[4] 朱斌.基于嵌入式微處理器的GPS跟蹤報警系統設計[J].電訊技術,2010,50(4):88-91.
[3] 邵帥. 基于nRF905的溫度數據采集及無線傳輸系統的設計[D].武漢科技大學,2010.
[7] 郝妍娜,洪志良.基于MCU和nRF905的低功耗遠距離無線傳輸系統[J].電子技術應用,2007(8):44-47.
[6] 龍光利.基于嵌入式微處理器的無線傳輸系統的設計[J].半導體技術,2009,34(1):21-23+75.