基于STM32 公交车语音报站系统的设计
2022-01-25胡秋霞
田 杰,胡秋霞,赵 镇
(西安航空学院计算机学院,陕西西安 710077)
随着嵌入式系统和通信技术的不断发展,公交车智能语音报站系统技术逐渐趋于完善。公交车语音报站系统不仅加快了智能交通系统的整体规划建设程度,而且将乘客和驾驶员的安全保障提高了一个层次,使运行效率提高、出行时间减少[1-3]。一个优秀的报站系统,可以在提高公交车调度效率的同时尽可能地方便人们出行。
该设计提出了一种以STM32F103C8T6 微处理器为核心主板,以NY3P065BP8 语音芯片为控制语音模块,以BS-280 GPS 一体模块接收经纬度信息的公交车语音报站方案。该方案主要包括主体框架设计、硬件设计、软件设计和测试4 个方面。其中硬件部分采用STM32F103 系列单片机作为核心主控制器,使用BS-280 GPS一体模块获取当前位置信息,使用NY3P065BP8 语音芯片播放到站信息,在LCD 屏幕上显示站点名称;软件部分利用keil 软件程序进行C 语言相关软件部分编程,用串口烧录工具把hex程序烧入单片机。
1 系统整体设计
公交车语音报站系统主要模块框架如图1 所示。在公交车行驶过程中,GPS 模块不断采集公交车所处经纬度信息,并且反馈给STM32F103C8T6 微控制器核心系统,搜索当前到站经纬度和寄存器地址中的阈值范围[1,4-7],人工确认无误后,可手动按键播报当前到站语音。在车辆行驶过程中,匹配数据库中电子地图与当前位置信息,在不同公交车位置显示不同站点信息,在离站、到站等范围内提示语音,也可设置不同播报音量。硬件设计中,主要模块可分为微处理控制器、LCD 显示模块、GPS 经纬度接收模块、音频处理模块、按键和最小系统电源电路模块[8-12]。系统运行途中可以最大限度减少人工的参与度,自动化程度较高。
图1 公交车语音报站系统框架图
2 系统硬件设计
基于STM32 的公交车语音报站系统硬件设计主要包括最小系统电源电路模块、音频处理模块、GPS经纬度接收模块、液晶显示模块。
2.1 最小系统电源电路模块
微控制器能够运行的最小系统电源电路包括时钟电路、复位电路和电源电路,这是微控制器能够维持运行的基础,即为微控制器最小系统[13-14]。基于最小系统,可以更改并变换模块来实现所需的功能。
图2 为微控制器的最小系统电路图。
图2 最小系统电路图
时钟电路是最小系统的一部分,STM32 微控制器如要读取命令则必须要有时钟电路,通过复杂的时钟电路可以完成处理器的不同指令。STM32微控制器中的时钟电路分为外部时钟电路和内部时钟电路。内部时钟由简单的RC 振荡电路产生,分为8 MHz 的高频时钟和32.768 kHz 的低频时钟,由于系统本身设定及内部时钟的精度阈值限度较低,这时需要启用外部时钟以便降低系统的波动性和数据错误率。
2.2 音频处理模块
选用常用的语音合成传输芯片NY3P065BP8 和扬声器模块,能够对音频音量、音频长度、播放音频的段码、声音清晰度等进行处理。
微控制器以脉冲的方式向NY3P065BP8 语音模块发送命令,NY3P065BP8 根据脉冲时长的命令帧进行相应操作,并向微控制器实时反馈操作语音芯片状态。接收到回传脉冲信号后,STM32 微控制器会判断NY3P065BP8 芯片的BUSY 引脚是否是高电平以及当前芯片的工作状态,同时接收微控制器的回传信号并进行判断,然后进入下一步操作。
STM32 微控制器控制语音芯片过程和语音芯片电路图分别如图3 和图4 所示。
图3 语音芯片播放过程
图4 NY3P065BP8芯片电路图
语音芯片引脚说明如表1 所示。
表1 NY3P065BP8芯片引脚说明
以播放第五段音频为例说明功能实现过程:微控制器首先判断当前语音模块的BUSY 引脚是否为高电平,如果当前是高电平,则RST 引脚会接收到一个复位脉冲,接着发送5 个200 μs/s 的脉冲信号到DATA 引脚,芯片即刻工作并开始播放第五段地址内所存储的内容。如果还需播放其他音频内容,则发送一个脉冲信号到RST 将芯片复位,状态回到初始态,传输当前需要播放音频的相同数量脉冲即可。
控制原理说明:在脉冲时长大于50 μs 时,通常将200 μs 的脉冲信号发送给芯片,在使用模拟串行接口传输的方式下,可以将128 段地址进行任意组合控制,播放的地址内容和发送的脉冲时长有关。
2.3 GPS经纬度接收模块
为了满足个人设计需要,可选用户外求生专业定位需求的BS-280 GPS 一体模块,该模块的特点是功耗低且性能可达到较高标准要求,可在露天全方位定位接收,采用UBLOXG7020-KT 芯片设计的同时也保障了专业性能的优异。
GPS 的各类数据根据帧的不同,帧头也并不相同,通常由逗号分开数据,各类数据帧包含着互不相同的信息。帧主要由帧头、帧尾和帧内数据组成[15]。一般的GPS 协议包格式有$ GPGGA、$ GPGSA、$GPGSV 以及$GPRMC 等。
当信号传输到数据存储器时,由于逗号分隔了不同的GPS 协议描述,在处理当前高速存储中的数据段帧时,首先在帧头检索ASCII 字符码“$”,判断是否为当前数据首部,然后判断运用了哪种协议,随后对数据进行转换并返回存储中,接着将转换成功的数据传输到LCD 显示屏上。
图5 为系统采用的BS-280 GPS 定位模块定位原理图。
图5 GPS定位模块定位原理图
表2 为BS-280 的GPS 模块引脚说明。
表2 GPS模块引脚说明
样 例数据包括$GPRMC、174223.48、A、34154 7257、N、10853.15167、W、0.13、309.62、120598、*10,表3 为GPS 模块RMC 协议数据样例描述。
表3 GPS—RMC协议样例
2.4 液晶显示模块
该系统所使用的点阵式液晶屏不仅能满足曲线图形、字符和文字的显示要求,还能够在4行×8列的屏幕上实现文字滚动、反转、字符的闪烁、窗口分区显示和小微动画的播放。其主要组成部分为液晶点阵和控制驱动,可以和串行接口集成,通过引脚连接在微处理器接口使用,操作简易、价格适中,对完成设计有很大帮助。图6为LCD显示模块电路图。
图6 显示模块电路原理图
3 系统软件设计
软件设计主要包括主程序和子程序设计。子程序主要包括语音功放模块程序设计和LCD 液晶显示程序设计。
3.1 主程序设计
主程序控制的功能主要包括LED 文字显示模块、语音芯片播报站点模块、GPS 经纬度接收模块、按键模块和拨动开关。系统有两个控制模式:按键控制模式和GPS 接收控制模式。程序上电启动,显示“欢迎乘车”,LED 液晶显示屏显示第一站和下一站的站名[16]。当公交车到站时,司机按下按键播报当前到站信息,并语音提示“注意安全”、“请下车”等信息,提醒乘客下车。当到站后,语音播报完这一站信息后乘客下车则停车,不下车则播报下一站,系统继续运行。该系统主程序流程图如图7 所示。
图7 主程序流程图
3.2 语音功放模块设计
NY3P065BP8 语音芯片的功能是在脉冲作用下,通过脉冲信号控制存储在芯片里的语音片段的播放,经由功放模块在扬声器中向外播放,其关键在于对文本信息的转换。该系统语音报站的芯片模块采用的控制方式为模拟串行的数据发送,通过脉冲信号播放语音片段,在微处理器接收第几个脉冲信号后就播放第几段音频,并且通过按键模块的按键信号来判断车辆的上行或者下行对应的语音信息,在每一次语音播报后继续等待外部中断的传输,如果有新的信号,则播放对应音频,若无新的信号,则一直等待。图8 为语音模块流程图。
图8 语音合成模块程序流程图
3.3 LCD液晶显示设计
图9为液晶显示模块流程图。系统采用液晶显示屏LCD12864 作为显示模块,这是嵌入式设计中常用的一种显示屏,功耗需求低,额定电压需求也并不需要电压转换,能够正常显示汉字、英文、数字等字符。该模块的功能是将文字信息显示在公交车内的站点牌上,使乘客直观地看见到站信息,方便了信息的获取,也避免了公交车人员过多后车厢内过于吵闹而导致部分乘客无法听清当前到站或者下一站的语音提示问题,提高了人们的乘车体验。在系统上电后,显示屏打开,显示欢迎初始化信息“欢迎乘车”字样,当按动按键后,引脚传输信号到显示屏上更改到站显示,如果没有接收到信号,则屏幕不发生变化,系统继续进行等待。
图9 液晶显示模型程序流程图
4 基于STM32的公交车语音报站系统功能测试
功能测试主要包括显示功能测试、音频播放功能测试和系统集成测试。
4.1 显示功能测试
经过硬件上电测试,系统能够正常运行,显示屏以及GPS 初始化成功,外部按键可以控制显示屏显示当前站点信息和下一站站点信息,并带有“注意安全”提示语。
使用按键模块的拨动开关后,GPS 开始接收卫星信号传输的经纬度信息,实际测试接收时间为40~70 s 之间,TX 指示蓝灯持续闪烁表示在不断接收信号,1PPS 指示红灯亮起10 s 之后,显示屏开始实时传输经纬度数据。GPS 模块必须在无遮挡、空旷的地方进行测试,否则无法接收到卫星信号,并且从GPS 所接收到的经纬度数据都会实时传送并显示在屏幕上。
4.2 音频播放功能测试
在报站按键按下后,语音播报当前站到了,如“一号站到了”。再次按下,播报下一站。下车按键按下,语音播报“请下车”,安全按键按下,语音播报“请注意安全”。经测试,模块能够正确播报当前到站和下一站站点信息;同时,液晶屏能够正确显示当前站和下一站的信息。
4.3 系统集成测试
完成单板测试后,进行公交车语音报站系统整体测试,由JTAG 仿真器模拟经纬度信号向系统主控制器发送报站指令,验证系统主控制器收到报站指令,站点经纬度阈值范围是否正确,显示屏显示站点,语音芯片进行语音播报等功能是否正确运行。通过不断测试,这些功能都能正常运行。
5 结论
该系统的主控芯片采用STM32F103C8T6,经纬度接收模块采用BS-280 GPS 一体模块,音频解码芯片采用NY3P065BP8 模块,所有功能都完成了预定目标。在软件设计之后,调试数据格式时,需注意音频模块和GPS 模块的参数范围设定,如果设置参数不匹配会导致解析错误致使模块无法正常使用。下一步要解决的问题是在音频解码传输功放过程中,对算法进行优化以减少音频解码过程中临时占用的内存空间,提高运算速度。另外,该系统未在实际的公交车运营环境中测试,考虑到现实运营环境存在的复杂多样和可能会出现未知干扰因素,因此需要不断调试改善相关功能,使之更适合实际车辆运营环境。