基于单片机的公交车语音报站系统设计

2021-04-05 04:11赵兴娜
现代信息科技 2021年17期

摘  要:文章设计了一种基于北斗导航的具有智能化语音播报和显示功能的公交车智能语音报站系统,该系统以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—),女,汉族,山东德州人,副教授,硕士,研究方向:电子与通信技术、智能控制。