辛云旭,文豐,張凱華
(中北大學(xué)電子測試技術(shù)國家重點實驗室,山西太原 030051)
共享單車是當(dāng)前十分普遍的出行交通工具,不僅給人們的生活帶來了便利并且對于環(huán)境保護也做出了一定貢獻[1],但是用戶在使用共享單車的過程中常常因為無法及時獲取附近車輛的位置信息而帶來不便[2]。在這種情況下,需要設(shè)計一種可以安裝在車身上的定位導(dǎo)航裝置使用戶可以快速找到附近車輛,增加用戶的滿意度,從而使更多人選擇這種低碳的出行方式[3]。
該定位導(dǎo)航裝置需要獲取車輛的實時位置,將位置信息通過4G 網(wǎng)絡(luò)上傳到服務(wù)器中并與用戶的實時位置信息進行對比,判斷距離用戶最近的車輛[4]。當(dāng)用戶接近該車輛時,定位導(dǎo)航裝置自動播報提示語音,并通過屏幕顯示車輛各配件信息[5]。
定位導(dǎo)航裝置總體設(shè)計采用模塊化思想,在頂層設(shè)計中根據(jù)模塊功能不同把裝置劃分為五個模塊,分別是主控模塊、定位模塊、4G 模塊、語音播報模塊和顯示模塊。
主控模塊的主要功能是裝置加電正常工作后先通過串口接收定位模塊輸出的車輛位置信息和4G模塊輸出的用戶位置信息并進行解析和對比,判斷這兩個位置信息的經(jīng)緯度是否接近,如果接近,則將對應(yīng)的控制信息輸出至語音播報模塊和顯示模塊,同時將車輛位置信息通過串口輸出至4G 模塊,然后通過服務(wù)器發(fā)送到用戶端;定位模塊負責(zé)獲取共享車輛的位置信息,并在接收到主控模塊輸出的獲取車輛位置指令時將共享車輛的位置信息輸出至主控模塊;4G 模塊負責(zé)接收主控模塊輸出的共享車輛位置信息,并通過MQTT 協(xié)議[6]上報到服務(wù)器中,使用基站輔助定位模塊進行定位,同時負責(zé)把用戶上傳到服務(wù)器中的位置信息發(fā)送到主控模塊;語音播報模塊通過串口接收主控模塊的控制信息,根據(jù)控制信息從SD 卡中讀取預(yù)先保存的語音信息并通過喇叭播報[7];顯示模塊接收主控模塊的控制信息,通過I2C 協(xié)議控制屏幕顯示當(dāng)前車輛位置信息和各配件是否正常的信息[8]。裝置總體設(shè)計框圖如圖1 所示。
圖1 裝置總體設(shè)計框圖
主控模塊一共用到了三個串口,一個I2C 接口和五個GPIO 接口。STM32F103C8T6 芯片是基于Cortex-M3 內(nèi)核的32 位微控制器,硬件采用LQFP48封裝,接口資源包括三個串口、兩個I2C 接口,GPIO接口多于五個,最高工作頻率為72 MHz,具有高性能、低功耗、價格便宜的特點[9],所以選用STM32F 103C8T6 芯片作為系統(tǒng)的主控制器。主控模塊的時鐘輸入采用25 MHz 晶振,并對3.3 V 電源輸入引腳并聯(lián)0.1 μF 電容進行退耦處理。主控模塊的電路原理圖如圖2 所示。
圖2 主控模塊電路原理圖
由于衛(wèi)星導(dǎo)航模塊ATGM336H 支持北斗、GPS和GLONASS 系統(tǒng)的單系統(tǒng)或多系統(tǒng)聯(lián)合定位,定位精度為2.5 m,功耗低,雙模運行時功耗小于83 mW,且內(nèi)置天線短路保護功能,滿足系統(tǒng)設(shè)計要求,所以選用ATGM336H 導(dǎo)航模塊進行共享車輛定位[10]。在該裝置中,定位導(dǎo)航模塊的定位準確性起關(guān)鍵作用。因此在進行PCB 設(shè)計時,要避免定位導(dǎo)航模塊受到其他器件的干擾,模塊下面覆銅并連接GND,且盡量遠離高頻信號線。天線應(yīng)盡量靠近模塊的RF引腳,同時進行50 Ω的阻抗匹配[11]。定位模塊的電路原理圖如圖3 所示。
圖3 定位模塊電路原理圖
由于MP3 解碼芯片N9100 具有MP3 解碼功能,可以從外部SD 卡中讀取語音信息,可以通過串口控制播放指定語音,采樣率最高可達48 kHz,動態(tài)輸出范圍大,信噪比高,所以選用N9100 芯片作為解碼芯片[12]。解碼后的信息通過喇叭播放,需要使用功放芯片驅(qū)動。功放芯片8002 可以提供3 W 的輸出功率,且待機電流小,為0.6 μA,最大失真度小,為0.5%,所需外部元件少,電路設(shè)計簡單,所以選用8002 為語音播報模塊提供大功率輸出[13]。語音播報模塊電路原理圖如圖4 所示。
圖4 語音播報模塊電路原理圖
共享車輛提供24 V 的直流電源[14],而定位導(dǎo)航裝置所用芯片供電為5 V 和3.3 V,所以需要使用電源轉(zhuǎn)換芯片先將24 V 轉(zhuǎn)為5 V,再將5 V 轉(zhuǎn)為3.3 V 供各芯片及其穩(wěn)壓芯片使用。由于電源芯片LM2596支持9~36 V 輸入、5 V 和3.3 V 輸出,輸出電流可達3 A,滿足系統(tǒng)運行的電壓和電流要求,且內(nèi)部集成了1.235 V 的參考電壓Vref、部分驅(qū)動電路以簡化外部電路,同時具有過熱保護,所以使用LM2596進行電壓轉(zhuǎn)換[15]。輸出電壓Vout根據(jù)式(1)進行計算,R1設(shè)置為1 kΩ,R2設(shè)置為3.09 kΩ。供電電路的原理圖如圖5所示。
圖5 供電電路原理圖
ATGM336H 通過串口發(fā)送位置數(shù)據(jù)、衛(wèi)星信息等,系統(tǒng)只需要解析以GPRMC 協(xié)議發(fā)送的位置數(shù)據(jù)即可。
GPRMC 協(xié)議由信息ID、UTC 時間、數(shù)據(jù)有效位、精度、南北緯、東西經(jīng)、速度等信息組成,用逗號分隔,以換行符結(jié)尾。數(shù)據(jù)為字符串形式,通過串口以9 600 bps 輸出。協(xié)議中,緯度信息為度分單位,即ddmm.mmmm,需要根據(jù)公式dd+(mm.mmmm/60)計算得到度單位。經(jīng)度信息格式為dddmm.mmmm,根據(jù)公式ddd+(mm.mmmm/60)計算得到度單位。
單片機首先判斷是否接收到$GPRMC 字符串,如果接收到,則繼續(xù)接收后面的數(shù)據(jù)直至接收到換行符。此時一幀數(shù)據(jù)接收完成,進行異或校驗位判斷,如果校驗位不一致,則數(shù)據(jù)無效,舍棄。如果校驗位有效,則對數(shù)據(jù)進行解析。
由于各信息由逗號分隔,所以可以使用strstr 函數(shù)獲取緯度信息在數(shù)據(jù)幀的位置,將前兩位即度數(shù)提取出來,再對分數(shù)進行運算。由于單片機沒有集成浮點運算單元,不適合直接進行浮點數(shù)運算,所以先將分數(shù)中的小數(shù)點去除,轉(zhuǎn)為長整型,為保證運算結(jié)果是六位小數(shù),在除法運算前先乘10。
函數(shù)snprintf 可以將參數(shù)以指定格式格式化為字符串[16],使用snprintf 函數(shù)將運算結(jié)果進行整合,得到度格式的緯度信息。經(jīng)度信息的運算與緯度信息的運算一致,這里不再贅述。定位模塊的程序流程圖如圖6 所示。
圖6 定位模塊的程序流程圖
主控芯片通過串口控制N9100 進行語音數(shù)據(jù)的解碼和播報。通信數(shù)據(jù)由命令碼、命令碼校驗碼、數(shù)據(jù)長度、數(shù)據(jù)以及校驗位組成,數(shù)據(jù)可以有多個。04為播報命令碼。數(shù)據(jù)中,06 表示指定曲目,06 后的數(shù)據(jù)表示語音文件在當(dāng)前盤存放的位置。當(dāng)用戶接近車輛,首先對比用戶的位置和車輛的位置,判斷距離信息。根據(jù)距離信息找到對應(yīng)的語音文件的位置后,通過串口向N9100 發(fā)送播放控制命令,從SD 卡中讀取并播放對應(yīng)的語音文件。
將系統(tǒng)置于室外,上電后定位模塊開始定位并輸出定位信息。由于只接收解析GPRMC 格式的數(shù)據(jù),通過IO 模擬串口打印數(shù)據(jù)到計算機的結(jié)果如圖7 所示。由打印結(jié)果可知,定位模塊正常工作。
圖7 定位模塊的定位結(jié)果
將設(shè)備移動到離模擬用戶1 m 左右的位置,此時主控模塊接收到定位模塊輸出的位置信息并與站點經(jīng)緯度對比,向語音播報模塊輸出控制信息,此時語音播報模塊播報“距離目標車輛1 m”的語音。更換模擬用戶的位置,語音播報模塊仍能播報對應(yīng)的語音信息,所以語音播報模塊工作正常。
該設(shè)計實現(xiàn)的定位導(dǎo)航裝置,采用了高性能的STM32F103C8T6 作為主控制器進行控制和數(shù)據(jù)解析操作,使用定位速度快、精度高的ATGM336H 采集位置信息,利用ISD1700 語音芯片讀取SD 卡里的語音文件,實現(xiàn)語音播報功能,通過I2C 協(xié)議控制屏幕進行顯示,使用4G 模塊通過MQTT 協(xié)議上報車輛位置信息和下傳用戶位置信息,滿足了用戶迅速尋找到共享車輛的需求。