基于STM32的智能兒童防丟書包設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引 言
隨著社會(huì)復(fù)雜度及生活節(jié)奏的加快,兒童走失和被拐賣事件時(shí)有發(fā)生,這種現(xiàn)象刺痛了我們的心[1]。
目前,市面上兒童防丟書包稀少,常見的產(chǎn)品都是智能兒童防丟器,主要包括智能手環(huán)、電話手表等。前者價(jià)格便宜, 但功能簡單;后者只能稱為縮小版的電話,且價(jià)格高昂[2]。此外, 家長周末經(jīng)常帶著孩子外出玩耍,一不留神,小孩就有可能走丟[3]。本文針對(duì)市面上現(xiàn)有產(chǎn)品的缺陷,設(shè)計(jì)了一款兒童防丟書包。該設(shè)計(jì)主要包括終端和主控端兩部分。主控端即為家長的手機(jī),書包終端通過安裝STM32F103VET6,SIM808 模塊以及藍(lán)牙模塊實(shí)現(xiàn)相關(guān)功能。
本文設(shè)計(jì)的兒童防丟書包主要包含親子游玩模式與遠(yuǎn)程監(jiān)控模式。第一種模式由家長打開手機(jī)預(yù)先安裝好的App, 連接終端裝置上的藍(lán)牙,按下鍵 1選擇親子游玩模式。當(dāng)裝置(兒童位置)距離主控端手機(jī)(家長位置)小于10m(即一般藍(lán)牙的通信距離),裝置和手機(jī)端都不會(huì)報(bào)警提示。但若超出10m的范圍,則藍(lán)牙斷開,裝置上的蜂鳴器報(bào)警,并通過SIM808模塊以短信形式將經(jīng)緯度信息發(fā)送到家長手機(jī)上,且手機(jī) App也將會(huì)進(jìn)行聲音報(bào)警。第二種模式是家長在孩子出門前按下鍵 2,即可通過撥打電話獲悉裝置所在經(jīng)緯度,并通過地圖查詢孩子的具體位置。
1 系統(tǒng)硬件設(shè)計(jì)
1.1 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)基于STM32 平臺(tái)設(shè)計(jì),主要包括電源模塊、藍(lán)牙模塊、蜂鳴器模塊、SIM808 模塊、手機(jī)終端。系統(tǒng)結(jié)構(gòu)框圖如圖 1 所示。
STM32 模塊作為整個(gè)裝置的 心臟 ,用于控制系統(tǒng)的正常運(yùn)行;電源模塊用來給系統(tǒng)供電,是保障系統(tǒng)正常運(yùn)行的前提;蜂鳴器用來發(fā)聲報(bào)警,提醒家長 ;GPRS 模塊用來實(shí)現(xiàn)與主控制端之間的通信,其上設(shè)有GPS 模塊接口,用于連接GPS 模塊,能夠?qū)崟r(shí)定位系統(tǒng)位置。
1.2 藍(lán)牙模塊設(shè)計(jì)
藍(lán)牙模塊采用HC-06 模塊實(shí)現(xiàn)。該模塊是一塊從機(jī)模塊,在未建立藍(lán)牙連接時(shí)支持通過 AT 指令設(shè)置波特率、名稱、配對(duì)密碼等參數(shù),還具有掉電保存功能。藍(lán)牙連接后自動(dòng)切換到透傳模式。該模塊的理論通信距離為 10 m。使用前需要配置波特率、名稱、配對(duì)密碼等參數(shù)。
藍(lán)牙模塊的功能是判斷終端裝置(兒童位置)與主控端手機(jī)(家長位置)的距離是否小于 10 m。STM32 通過調(diào)用固件庫函數(shù)讀取藍(lán)牙狀態(tài)輸出腳 state 的輸出電平。高電平表示連接,低電平表示斷開。根據(jù) STM32 讀取該引腳的電平值并判斷藍(lán)牙是否連接,從而決定是否啟動(dòng)蜂鳴器報(bào)警提醒家長。
1.3 GPRS模塊設(shè)計(jì)
GPRS 模塊采用SIM808 模塊。該模塊是高性能工業(yè)級(jí)GSM/GPRS 四頻芯片,集成了 GPS 和藍(lán)牙功能。除了可以實(shí)現(xiàn)電話語音、SMS(短信、彩信)、GPRS 數(shù)據(jù)傳輸外,還具有GPS 定位等功能。使用該模塊之前在程序中通過編寫AT 指令對(duì)其進(jìn)行配置。
GPRS 模塊的功能是實(shí)現(xiàn)主控制端與終端之間的通信, 并通過GPS 模塊進(jìn)行實(shí)時(shí)定位。觸發(fā)報(bào)警時(shí),STM32 將采集的經(jīng)緯度信息通過GPRS 模塊以短信形式發(fā)送給主控制端。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 系統(tǒng)主程序設(shè)計(jì)
系統(tǒng)程序流程圖如圖2 所示。該系統(tǒng)主要采用C 語言編程, 在Keil5 平臺(tái)上實(shí)現(xiàn)。流程實(shí)現(xiàn)如下所示:
(1) 書包上的裝置啟動(dòng)后,其上的 STM32單片機(jī)開始進(jìn)行初始化;
(2) STM32掃描兩個(gè)按鍵 1、2的狀態(tài)來決定執(zhí)行哪種模式。當(dāng)執(zhí)行第一種模式時(shí),單片機(jī)開始檢測(cè)藍(lán)牙連接狀態(tài), 若連接則程序通過while函數(shù)停留在當(dāng)前指令上;若斷開,則開啟蜂鳴器報(bào)警提醒,并將SIM808 模塊傳來的經(jīng)緯度信息經(jīng)解析后,在中斷中通過 SIM808模塊以短信形式發(fā)送給主控制端,每 10s發(fā)送一次。當(dāng)執(zhí)行第二種模式時(shí),則家長通過打電話來觸發(fā)中斷程序,在中斷中發(fā)送經(jīng)緯度到主控制端,只發(fā)送一次。發(fā)送完畢后,回到模式二程序的初始位置,等待中斷指令被再次觸發(fā)。
2.2 主控制端App設(shè)計(jì)
主控制端 App 設(shè)計(jì)基于 Android 4.0 及以上的操作系統(tǒng), 所用開發(fā)工具是使用廣泛的、跨平臺(tái)的 Eclipse 集成開發(fā)環(huán)境。 軟件程序設(shè)計(jì)架構(gòu)流程如圖 3 所示。
2.2.1 主控制端App 程序設(shè)計(jì)
在Eclipse 集成開發(fā)環(huán)境下,設(shè)置手機(jī)界面時(shí)應(yīng)新建一個(gè)Android 項(xiàng)目工程。在創(chuàng)建時(shí)需要注意以下幾點(diǎn):
(1) 一個(gè) Activity就是一個(gè)類,且該類繼承 Activity;
(2)當(dāng)一個(gè)Activity首次運(yùn)行顯示在手機(jī)上時(shí)就會(huì)調(diào)用Oncreate 復(fù)寫方法;
(3) 任何一個(gè)Activity都需要在AndroidManifest.xml中配置。
(4) 操作藍(lán)牙時(shí)FF0C首先應(yīng)在AndroidManifest. xml 中 加 入 權(quán) 限;<uses-permissionandroid:name= android.permission.BLUETOOTH_ADMIN/><uses-permissionandroid :name =android.permission. BLUETOOTH/>
(5) 手機(jī)界面的 Textiew文本控件和Button按鈕等控件在Activity中添加。
2.2.2 App界面
App 界面如圖 4 所示。
圖 4 App 界 面
本軟件必須要運(yùn)行在Android 4.0 及以上操作系統(tǒng),打開App,點(diǎn)擊連接藍(lán)牙,App 會(huì)彈出啟動(dòng)藍(lán)牙的請(qǐng)求界面,點(diǎn)擊允許便可進(jìn)行藍(lán)牙連接。
3 系統(tǒng)測(cè)試結(jié)果
設(shè)計(jì)好系統(tǒng)軟硬件后,將終端裝置固定在書包內(nèi)進(jìn)行測(cè)試。打開手機(jī) App,連接藍(lán)牙,按下按鍵 1,裝置不報(bào)警。將手機(jī)端的藍(lán)牙斷開,裝置上的蜂鳴器響起,裝置報(bào)警。手機(jī)端開始接收來自裝置的經(jīng)緯度信息,每 10 s 接收一次。復(fù)位裝置,按下按鍵 2,撥打電話,手機(jī)收到來自GPRS 模塊發(fā)送的經(jīng)緯度信息,撥打一次便接收一次信息。
4 結(jié) 語
該防丟書包彌補(bǔ)了傳統(tǒng)書包使用功能單一的缺陷,在其基礎(chǔ)上融入了實(shí)時(shí)定位功能,不僅具有實(shí)用性和可靠性,更為現(xiàn)有兒童防丟裝置的產(chǎn)品設(shè)計(jì)提供了一定參考 [4]。