


摘? 要:文章設計了一種基于北斗導航的具有智能化語音播報和顯示功能的公交車智能語音報站系統,該系統以STM32F103CBT6單片機作為主控芯片,包括:北斗定位模塊、語音播報模塊、顯示模塊。其中,北斗定位模塊采用UM220芯片,語音播報模塊采用ISD4004語音芯片和LM386音頻功率放大器,顯示模塊采用0.96寸的OLED液晶顯示屏。最后,通過對公交車智能語音報站系統的測試仿真和結果分析,實現了本系統的語音播報和顯示功能。
關鍵詞:STM32;語音播報;OLED顯示;北斗定位技術
中圖分類號:TP368? 文獻標識碼:A 文章編號:2096-4706(2021)17-0047-04
Abstract: This paper designs an intelligent bus-stop voice announcing system with intelligent voice announcement and display functions based on Beidou navigation. The system uses STM32F103CBT6 single-chip microcomputer as the main control chip, including: Beidou positioning module, voice announcement module, and display module. Among them, the Beidou positioning module uses a UM220 chip, the voice announcement module uses an ISD4004 voice chip and an LM386 audio power amplifier, and the display module uses a 0.96 inch OLED liquid crystal display. Finally, through the test simulation and result analysis of the intelligent bus-stop voice announcing system, the voice announcement and display function of the system is realized.
Keywords: STM32; voice announcement; OLED display; Beidou positioning technology
0? 引? 言
隨著中國經濟的迅速發展和城鎮化水平的不斷提高,人們對美好生活的向往不斷變為現實。然而,經濟的發展也帶來了一些問題。就交通這一方面來說,經濟發展提高了居民收入和人均可支配收入,增加了私家車的購買量。但是,卻導致了嚴重的交通問題,城市交通面臨的壓力不斷增加。在這一背景下,國家提出綠色發展、綠色出行的理念,大力發展公共交通。公共交通也憑借其載客量大、成本低的優點,成為人們出行的主要工具之一。因此,本文在響應國家號召和緩解交通擁堵的前提下,進行公交車智能語音報站系統的設計。
1? 系統總體設計方案
本設計以STM32F103CBT6單片機為核心,接收BDS(北斗導航系統)數據并進行解析、控制語音播放和液晶顯示。主要分為BDS北斗定位模塊、語音模塊、OLED顯示模塊、按鍵模塊和電源模塊。系統設計框圖如圖1所示。
各模塊的功能為:
北斗定位模塊:接收衛星的定位數據,并通過USART串口將處理好的數據發送到STM32F10CBT6芯片。
STM32F10CBT6芯片:處理BDS傳送的信息并與本身存儲的信息進行比較、控制語音播放和液晶顯示。
OLED顯示模塊:接收主控芯片的指令并實時顯示站點信息、提示語及廣告語等。
語音播報模塊:執行單片機發送過來的指令,結合公交車狀態進行語音提示。
按鍵模塊:音量控制。
電源模塊:轉換電壓進行供電。
本設計主要實現的功能是公交站點信息的存儲,公交車實時定位、進出站檢測,公交車與站點之間距離的檢測。首先,以每一個公交車站點為圓心,劃定一個半徑為20 m的圓,其次,由BDS定位系統實時確定車輛所處位置,并經過程序對比車輛的實時位置,判斷車輛狀態。最后,檢測公交車是否進入到最近站點的半徑范圍,如果車輛進入半徑范圍,則進行站點的播報和顯示。當車輛離開該站點的半徑范圍時,播報并顯示下一站點的信息。其判斷說明如表1所示,示意圖如圖2所示。
2? 系統方案選擇
2.1? 主控芯片的選擇
方案一:STC12C5A60S2單片機雖然內部結構簡單、價格低廉,便于操作控制,但是該芯片沒有SPI串行通信接口,雖然能夠通過I/O接口進行模擬,但是也在一定程度上增加了設計的難度,而且如果所設計的系統中需要兩個SPI的串行通信接口以及其他外設時,該芯片的接口就不能滿足系統設計需求。由此可知,該芯片并不能夠滿足本設計需要連接北斗芯片、語音芯片、OLED顯示屏的外設接口需求,故不予采用。
方案二:STM32F103CBT6芯片具有三個SPI串行通信接口、七個定時器、三十七個能夠兼容CMOS和TTL的I/O端口,豐富的外設接口能夠滿足本文所設計的公交報站系統的需要,故選擇STM32F103CBT6單片機作為本設計的主控芯片。
2.2? 北斗導航芯片的選擇
方案一:NEO-6M芯片是一種能夠實現高精度定位的定位模塊,能夠通過USART串口連接外設,支持多種速率進行工作,但是只能支持GPS(全球定位系統)的信號和頻點,不能夠接收BDS信號和頻點,不能夠滿足本設計的需求。
方案二:UM220芯片是和芯星通公司生產的定位芯片,能夠兼容BDS和GPS兩個系統,并且具有定位精度高、速度精度高、尺寸小、功耗低的優點,能夠很好地滿足公交車智能語音報站系統的設計需求。
綜合考慮,UM220芯片能夠進行BDS和GPS雙系統的定位導航,更能夠適合本設計的需要,故選擇此芯片作為定位芯片。
2.3? 語音播報芯片的選擇
方案一:ISD4004語音芯片內部具有音頻功率放大器、濾波器和振蕩器,能夠減少噪聲等干擾因素,使傳播的語音信號更加準確。通過該芯片的工作時序可以看出數據的傳送從下降沿開始,操作指令的執行從上升沿開始。
方案二:ISD2560語音芯片同ISD4004芯片一樣,具有音質好、抗干擾能力強、尋址能力高的優點,但是該芯片沒有SPI串行接口只能夠采用并行通信的方式,不滿足本設計采用串行通信方式的需要。
綜上所述,本設計擬采用SPI串行通信實現STM32單片機對語音芯片的控制,所以選用ISD4004語音芯片而非ISD2560芯片。
2.4? 顯示模塊的選擇
方案一:LCD顯示屏不能夠依靠自身實現發光,必須有背光模塊才可以。而且,由于LCD顯示屏內置液晶層,所以其厚度要大于OLED液晶屏,并且,LCD顯示屏的可視角度小、響應時間長、亮度的均勻性差,對比度較差,影像清晰度低。
方案二:與LCD 顯示屏相比較,OLED顯示屏具有較高的亮度、豐富的色彩,輕薄的厚度、快捷的反應速度。并且OLED顯示屏的構造簡單、對比度大,能夠實現自發光,所需要的工作電壓更低,更加節能。再者,OLED具有廣闊的視角能夠在極大的范圍內觀看,且畫面不失真。
方案確立:綜合考慮,OLED顯示屏具有較高的性價比,其內部的各個像素點都是獨立工作的,功耗小、響應時間短,快速滑動畫面時不會產生畫面殘留和拖影,具有良好的視覺觀感。而且本設計主要是用于公交車內顯示。采用OLED顯示屏可視角度大,響應時間短,能夠使乘客清晰地看見顯示屏上顯示的信息。
3? 硬件電路與軟件設計
3.1? 硬件電路設計
本語音控制系統核心控制器采用STM32F103CBT6單片機,該單片機運算力強,能夠在71 MHZ的頻率下進行工作,而且該芯片具有豐富的外設接口,兩個I2C、三個SPI以及五個USART串口,能夠滿足本系統設計中語音模塊、顯示模塊以及北斗定位模塊的接口需要。并且STM32F103CBT6內部的SPI串行通信模塊,可以進行三線全雙工同步傳輸、兩線半雙工同步傳輸或兩線簡單同步傳輸,傳輸的數據長度可以配置為4或16位。另外,SPI模塊還具有可編程的極性、相位及高低位可控,可以滿足多種通信需求。并且還支持I2S通信協議,可以用于音頻設備之間的數據傳輸。
根據設計要求,本系統中通過USART接口實現北斗定位模塊與STM32單片機的通信,將UM220的TXD2和RXD2引腳與STM32F103CBT6的USART2_TX和USART2_RX端(PA2和PA3)相連接即可。當公交車智能語音報站系統處于工作狀態時,UM220芯片與主控芯片STM32進行通信交流,STM32單片機通過TXD引腳向BDS模塊發送指令,BDS模塊通過RXD引腳,將自己采集到的位置數據等信息發送給STM32F103CBT6單片機,單片機通過串口中斷的方式連接,實時輸出定位數據,然后再由主控芯片對接收到的信息進行加工處理,提取有用信息,從而實現對車輛的實時定位。
此外,STM32F103CBT6內置128 kB的flash閃存,掉電后仍能夠實現信息的存儲,而且,公交車的行駛線路是固定的,因此我們可以用內置的flash閃存模擬EEPROM,將固定的站點信息(緯度、經度等)存儲在里面。由于BDS接收信息的最低位具有不穩定的特點,因此BDS接收的經緯度數據只需要達到1/1 000即可。根據經緯度與距離之間的關系,我們設A、B兩點的位置為(LonA,LatA)、(LonB,LatB)以0°經線為基準,東經取經度的正值,北緯取90°減去緯度值。則處理后A、B兩點的坐標分別為(MLonA,MLatA)、(MLonB,MLatB)。此時可以根據公式C=sin(MLatA)*sin(MLatB)和D=R×Across(C)*Pi/80即可實現經緯度與距離的換算。經過地圖查找發現,我國陸地經緯度的最大值分別為東經136度和北緯60度,根據BDS接收信息的最低位允許達到1/1 000的誤差以及經緯度的單位換算規律計算可知,我國經度和緯度的最大值分別為:136×60×1 000=8 160 000和60×60×1 000=3 600 000。將經度和緯度信息轉化為二進制進行存儲,分別只需要4個和3個字節。由此可知,預存一幀BDS數據只需要7個字節就能夠滿足需要,故內部存儲Flash能夠滿足本設計的存儲需求。
3.2? 軟件設計
系統軟件整體流程圖如圖3所示。系統開啟后,先設置站點與路線,然后讀取BDS信息,對信息進行解讀,然后單片機會對信息進行檢測,判斷是否到站,是的話對比BDS數據,然后進行語音播報及站點顯示;否則的話繼續進行數據更新再次進行檢測。
其中,功能函數:定位模塊的軟件部分程序設計為:
void Auto_Play()
{
unsigned int a,b; uchar i;
if(Flag_BDS_OK == 1 && RX_Buffer[4] == 'L' && RX_Buffer[6] == ',' && RX_Buffer[11] == '.')//確定是否收到"GNRMC或者GNGGA"的幀數據
{ES=0;//關串口中斷
for(i=0; i < 28; i++){
RX_Buffer_D[i] = RX_Buffer[i+6]; get_real_station();
if((a <= 1000) && (b <= 1000))//經驗測試,同一調試地點,多次測得最大誤差n:3064 e:3640{
onemore_flag++;
if(onemore_flag == 2){
onemore_flag = 0;
if(Up_Down_Flag == 0){
switch(station_num){
case 0:
if(!station_1_flag){
station_1_flag = 1;
dispString(2,0,1," 一號站");
dispString(3,0,1,"=>二號站");
dispString(4,0,1,"=>三號站");
Flash_Lcd();
ISDPlay(0x45);
}
4? 實驗測試與分析
4.1? 定位仿真及分析
本模塊的作用是將接收到的定位信息經過處理發送到主控芯片,但是為了能直觀地看到定位信息處理后的結果,將本模塊單獨進行了一次仿真。
在仿真過程中,選取三個模擬站點,各進行三次測試,其結果如表1、表2、表3所示,其中:N表示緯度,E表示經度。本次測試通過實際值和設定數值之間的計算得出,本次定位功能的緯度誤差在0到0.04之間,經度誤差在0到0.05之間,在誤差允許的精度范圍內,并且在測試過程中經過不斷地調整,誤差逐漸減小,符合要求。
4.2? OLED顯示仿真
本模塊在進行仿真時主要操作為:
(1)通過程序的實現對OLED顯示屏的清屏和初始化。
(2)運行程序接收主控芯片發送的信息實現站點的滾動顯示、公交車名稱、時間閃爍,其結果如圖4所示。
從以上測試數據可以看出,本系統能夠實現設計要求,實現自動報站、OLED顯示等功能。此外,除定位和顯示功能外,本系統能夠通過蜂鳴器等代替仿真語音播報,通過連接虛擬示波器可以看到其語音提示的結果。并且通過對ASM1117穩壓模塊的仿真分析得出:本系統能夠實現5 V和3.3 V電壓的供電需求。
5? 結? 論
本設計通過對硬件和軟件兩部分進行設計,運用北斗定位、語音播報和OLED顯示技術完成了基于北斗定位的STM32的公交車智能語音報站系統的設計,介紹了本設計中用到的主要硬件的原理、功能,分析了北斗模塊、語音模塊、顯示模塊的軟件設計流程,基本上實現了公交車智能語音報站系統的自動定位、語音播報和OLED顯示的功能,完成了設計的任務要求。本文采用我國自主研發的北斗導航系統進行設計,且通過創新類的網站及電視節目中了解到該定位系統目前只是在軍事方面進行應用,在民用方面尚未普及,只是應用在無人駕駛汽車技術的研發上,所以本文設計的公交報站系統具有良好的創新性,在未來具有良好的發展前景。
參考文獻:
[1] 陸俊驊.公交自動報站系統的設計與實現 [D].蘇州:蘇州大學,2018.
[2] 方杰,胡春雷.基于51單片機的可視可聽公交車自動報站系統的設計與實現 [J].電腦知識與技術,2019,15(2):221-223.
[3] 方超.基于北斗的無人船艇的數據傳輸系統研究 [D].廈門:集美大學,2017.
[4] 魏芬.基于北斗定位的智能公交車載系統的設計 [J].信息通信,2014(6):81-82.
[5] 陳政,虞麗娟,陳成明.基于北斗衛星導航系統的物流動態追溯系統設計與應用 [J].全球定位系統,2017,42(3):82-86.
[6] 胡小敏.基于RFID技術的智能公交站牌設計 [J].自動化技術與應用,2021,40(5):79-82.
[7] 魏芬,戴麗佼,李紅霞.基于proteus的單片機實驗與課程設計 [M].北京:清華大學出版社,2018:109-120.
[8] 雷永鋒,孫莉莉,劉偉.基于GPS的公交車智能報站系統設計 [J].機械與電子,2020,38(3):19-22+26.
[9] 戈皓月,張梁山,姜文虎,等.基于單片機的公交車智能報站系統設計 [J].電子制作,2019(13):12-14.
作者簡介:趙興娜(1983—),女,漢族,山東德州人,副教授,碩士,研究方向:電子與通信技術、智能控制。