徐世緣,耿麗清,徐子涵,李俊杰
(天津職業技術師范大學 自動化與電氣工程學院,天津 300222)
現代日趨復雜多變的生活環境,給老年人及行動不便者的出行帶來了更多的障礙,拐杖就成了大多數老年人的出行必備之物,一根安全便捷的拐杖可以為老人的出行保駕護航。但目前市場上常見的老年人拐杖只有支撐的作用,并沒有其他特殊功能,功能比較單一,對老人的安全保障也比較低[1]。不僅需要拐杖提供基本的支撐作用,還需要應急照明、自動報警等功能[2]。因此,本文就基于STM32 芯片與ESP8266 等模塊設計了一款功能更加豐富的智能拐杖系統,其功能包含GPS 實時定位、撥打電話、發送短信、跌倒報警、自動照明以及通過指定云服務器查看老人實時狀態。
本文設計的智能拐杖系統結構框圖如圖1 所示,包括拐杖終端系統和ONE NET 云端服務器兩部分。拐杖終端系統由STM32 單片機核心模塊、陀螺儀模塊、移動通信模塊、GPS 模塊、光照傳感模塊、按鍵模塊、燈光模塊、報警模塊和ESP8266 模塊等組成,主要負責信息的采集、處理和數據傳輸。云端服務器主要負責遠程信息的監測。

圖1 系統總體框架Fig.1 General framework of system
本設計使用STM32F103C8T6 型單片機,該型號有著Cortex-M3 內核的32 位微控制器,7 通道DMA 控制器,支持定時器,ADC,SPI,I2C 和USART等多個外設。其儲存器有64 K 或128 K 字節的閃存程序儲存器和高達20 K 字節的SRAM。并且它有2個12 位模數轉換器,多達80 個快速I/O 端口和9個通信接口。
ATGM336H 是中科微電子的一款射頻基帶一體化導航芯片,體積小、功耗低,定位模塊標稱定位精度為2.5 mCEP,即有50%的概率能定在半徑為2.5 m 的圓內,可以滿足現場需求[3]。且此模塊支持多種衛星導航系統,它包含32 個跟蹤通道,可以同時接收6 個衛星導航系統的GNSS 信號,并且實現聯合定位,導航與授時,定位更加準確。
ATGM336H 模塊與單片機利用串口進行通信,將獲取的經緯度數據上傳,并在單片機外接OLDE屏實時顯示。
采用MPU6050 模塊,利用先進數字濾波技術,可以有效降低測量噪聲,提高測量精度。模塊內部集成了運動引擎DMP,獲取四元數得到當前姿態。姿態測量精度0.01°,穩定性極高。
通過該模塊檢測老人當前的姿態角數據,由程序判斷x 軸和y 軸姿態角的范圍,從而判斷蜂鳴器是否報警。MPU6050 模塊接口電路如圖2 所示。

圖2 MPU6050 模塊接口電路Fig.2 MPU6050 module interface circuit
SIM900A 是一個雙頻的GSM/GPRS 模塊,含有TLL 電平串口和RS-232 電平串口,兼容3.3 V 與5 V可以直連單片機。SIM900A 內置TCP/IP 協議棧,通過AT 指令進行激活并且通過HTTP 服務使應用程序與因特網建立連接,可以提供包括語音、短信和GPRS 數據傳輸在內的一些功能[4]。
ESP8266 模塊由樂鑫信息科技公司出品,它有超低功耗32 位微型MCU,帶有16 位精簡模式,主頻支持80 MHz 和160 MHz,具有GPIO、PWM、12C、ADC 等功能,使用串口作為下載接口,當然也可以進行接入云端的服務,向云端服務器進行上傳、下載數據[5]。接口電路如圖3 所示。

圖3 ESP8266 模塊接口電路Fig.3 ESP8266 module interface circuit
采用光敏電阻傳感器,它可根據光的照射強度改變其自身的阻值。將光信號變成電信號,一般可用來檢測探頭周圍光線的強度,可以通過DO 輸出數字信號1 和0,也可以通過AO 口輸出模擬信號。將其AO 口與單片機的I/O 相連接,檢測外界光照強度,當光照強度低于特定值時,將自動開啟照明燈光。
系統搭建的智能拐杖系統軟件框架如圖4 所示。單片機軟件采用C 語言編程,主要實現GPS 實時定位、撥打電話、發送短信、跌倒報警等功能。數據實時上傳云平臺,用戶可在平臺查詢數據信息。

圖4 系統程序設計框圖Fig.4 Block diagram of system programming
智能拐杖系統上電后完成初始化,主程序的運行結果為陀螺儀獲取姿態角,定位模塊獲取經緯度,ESP8266 模塊聯網與云平臺建立連接。主程序流程如圖5 所示。

圖5 主程序流程Fig.5 Main program flow chart
ONE NET 云平臺的連接需要提前創建產品與設備,并在設備內創建所需要的數據流,數據名要與單片機中上傳的數據名稱相同。同時要記錄云平臺內自己的產品ID,設備ID 以及密碼,在編寫ESP8266 模塊子程序時需要這3 項使該模塊與ONE NET 云平臺建立TCP 連接,實現后續數據的上傳。
程序算法的運行過程為當整個系統通電以后,系統會先進行初始化以及各個外設模塊的初始化。初始化完成以后,各個模塊開始工作,并將采集的數據進行上傳。獲取的經緯度和UTC 時間可以在顯示模塊上顯示,同時也可以同姿態角一同發送至云服務器。若要查看這些數據只需登錄ONE NET 云平臺中所創建的設備,即可實時獲得所有的數據。
MQTT 是一個基于客戶端與服務器的消息發布/訂閱傳輸協議,它可以用極少的代碼和有限的帶寬為連接到的遠程設備提供實時可靠的消息服務[6]。MQTT 協議是輕量簡單、開放和易于實現的,作為一種低開銷、低帶寬占用的即時通信協議,MQTT在物聯網、小型設備,移動應用等方面得到了廣泛應用。
服務器使用的是ONE NET 云平臺,由中國移動打造的物聯網開放平臺。ESP8266 工作時采用STA模式接收到路由器信號后連接網絡。之后通過MQTT協議與ONE NET 云平臺建立TCP 連接,數據包通過循環結構發送到云平臺,從而實現將經緯度、姿態角等數據的上傳,方便數據的可視化顯示與操作。云平臺連接流程如圖6 所示。

圖6 云平臺連接流程Fig.6 Cloud platform connectivity flow chart
在完成系統的硬件設計、軟件設計和云服務器的連接后,對系統的功能進行測試。
ATGM336H 模塊采集到的經緯度坐標和UTC時間在OLED 屏上顯示如圖7 所示。

圖7 OLED 顯示經緯度Fig.7 OLED display for latitude and longitude
MPU6050 模塊采集到的姿態角會經過報警模塊判斷,若姿態角范圍超出預定值蜂鳴器就會報警。同時經緯度坐標、姿態角都會上傳至云服務器,這些數據都可以在云服務器內創建的設備中查看。這樣就可以得到老人的位置信息和判斷老人是否跌倒的狀態信息,如圖8 所示。

圖8 云平臺數據流界面Fig.8 Cloud platform data flow interface
SIM900A 模塊在插入SIM 卡初始化完成后,通過按下發短信鍵可以實現一鍵將經緯度坐標發送到指定的聯系人。按下撥號鍵可以實現一鍵撥打電話到指定的聯系人,如圖9 和圖10 所示。

圖9 發送經緯度短信Fig.9 Sending latitude and longitude SMS

圖10 撥打電話界面Fig.10 Calling interface
本文設計了基于STM32 與ESP8266 的智能拐杖系統,該系統包括硬件系統和軟件系統。硬件系統通過陀螺儀獲取老人的姿態信息;通過GPS 獲取老人的位置信息;通過GSM 模塊將異常信息通過短信或電話通知聯系人;通過無線ESP8266 模塊將相關信息發送到云平臺。從而幫助家人及時了解老人狀況。系統經多次實驗調試表明,該系統可以實現GPS 定位、跌倒報警、一鍵撥打電話、一鍵發送短信和自動照明這些功能。并且也實現了在PC 端ONE NET 云平臺中查看上傳的姿態角、經緯度。該款智能拐杖系統功能豐富、實用性強,對于未來老人的出行具有比較重要的意義。
本系統雖然完成了上述功能,但仍有需要改進和完善的地方,比如增加語音識別、語音喚醒、整點報時等功能。使作品更加人性化、智能化地為老年人提供服務。