基于STM32的无线公交自动报站系统

2022-10-19 04:51肖湘江钟清梅周玲游珍珍
电子制作 2022年19期
关键词:高电平串口编码

肖湘江,钟清梅,周玲,游珍珍

(湖南科技学院 智能制造学院,湖南永州, 425199)

0 引言

近些年来,越来越完善的公交系统,对公交车内的环境改变也提出了要求,将传统的人工售票改为无人售票,传统的人工报站逐渐转为报站器报站。因此,公交车语音自动报站的发展趋势越来越明显。传统的汽车报站器都是采用专用语音合成芯片制成的,语音合成芯片受信息容量、语音音质的限制,且更换信息需专业设备及人士[1],显得非常的麻烦。手动电子报站系统给行驶中的车辆带来一定的安全隐患[2],GPS卫星定位报站系统投资昂贵,且在接收信号时容易受干扰[3],利用车辆行驶轨迹设计的一种报站系统:该报站方法根据公交车起步后的行驶距离、开关门信号和进站打转向灯的方式综合判断车辆是否到站[4],这种方式虽然在一定程度上是做到了自动报站,但是它要求驾驶员要有很好的驾驶技术,严格按照驾驶规范操作,稍有错误就有可能导致公交车报站错误,且技术安装也比较复杂。因此,本次提出的是一款使用STM32F103RCT6芯片作为主控制器,外加433M无线模块、语音播报模块以及OLED显示模块设计的公交车语音自动报站系统,它不仅可以让公交车公司节省人工开支费用,也可以用更为标准的普通话播报站点信息,使乘客有更好更舒适的体验。

1 系统总体设计

本次设计所研究的系统是以STM32F103RCT6单片机芯片为核心,总体可以划分为MP3语音播报模块,433M无线模块和OLED屏模块。系统设计框图如图1所示,MP3语音播报模块顾名思义就是用来语音报站的;433M无线模块分为两部分,一部分是发射模块,放在公交站点,一部分是解码接收模块,放在公交车上,用来自动识别公交站点;OLED屏用来实时显示当前时间和当前公交车所在站点,以方便乘客随时了解时间和当前站点,避免出现坐过站的尴尬。

图1 系统设计框图

2 硬件设计

■2.1 STM32介绍

STM32F103RCT6使用的是ARM Cortex-M3内核,工作频率最高可以设置成72MHz;支持睡眠、待机、停机三种低功耗模式,开发者完全可以根据实际项目要求选择合适的模式;有两个DMA,能够在有效的管理MCU在工作时产生的数据传输,减少CPU功耗;有多个定时器,可以应用在普通定时、PWM控制、看门狗定时等,能够满足用户的实际需求。其控制系统电路图如图2所示。

图2 STM32最小控制系统电路图

■2.2 433M无线模块

PT2262/2272是一对带地址、数据编码功能的红外遥控发射/接收芯片[5]。发射模块使用的是PT2262-IR芯片,该芯片集成了编码器、载波振荡器以及发射芯片,从而在一定程度上简化了发射电路。PT2262发射电路如图3 所示。

图3 PT2262发射电路

PT2262发射的载波信号为433MHz,PT2262-IR芯片产生的载波信号是自带原始信号的,相对于没有IR标识的PT2262非红外芯片,电路要简单得多,因为PT2262非红外芯片需要提供一个载波信号发射电路。

PT2262中A0~A5这六根线为地址线,若解码器没有数据线,则A6~A11作为地址线使用,这种情况下,A0~A11共12根地址线,每线都可以设置成“1”、“O”、“开路”三种状态之一,因此共有编码数312 =531441种[6];此次设计使用的是PT2272解码芯片,其有数据线,所以PT2262编码芯片的A6~A11只能用作数据线,并且只有“1”和“0”两种状态,因此PT2262编码芯片地址线只有六根,只能组合成36 = 729种编码。PT2272接收电路如图4所示。

图4 PT2272接收电路

接收芯片PT2272根据其芯片的命名方式的不同,决定了该芯片的存储方式和有几个数据输出位,该命名后缀有“M”和“L”两种,分别为“暂存型”和“锁存型”,后面接的数值则表示数据输出为几位。在这里,使用的是PT2272-M4,则表示数据输出为4位的暂存型红外遥控接收芯片[7]。

■2.3 JQ8900-16P语音播报模块

JQB8900-16P语音播报模块选用的是SOC方案,集成了一个16位的MCU以及一个专门针对音频解码的ADSP,采用硬解码的方式,更加保证了系统的稳定性和音质[8]。传统的语音芯片想要更换语音,需要开发者通过上位机来操作,但此芯片使用SPI-FLASH直接模拟成U盘,更改

语音就跟直接拷贝U盘文件一样方便,更有优势。JQB8900-16P语音播报模块原理图如图5 所示。

图5 JQB8900-16P语音播报模块原理图

■2.4 OLED屏

本次设计使用的是中景园电子的0.96寸OLED屏显示车站等信息。OLED屏显示技术与常见的LCD屏显示方式有所差异,最大的特点就是其不需要使用背光灯,因其使用特殊的有机材料,所以只要上电工作,使用命令就可以驱动OLED屏发光。LCD屏因为需要背光源才可以发光,所以无法将屏幕做得很轻薄,这一点,OLED屏就有很大的发展空间。因为只需要低电压就可以驱动,所以低功耗也是它的一个优点。

OLED屏电路图电路如图6所示。

图6 OLED屏电路图

3 软件设计

■3.1 软件设计流程图

整个系统软件主要通过GPIO口、SPI通信、Systick滴答定时器、USART串口、定时器、中断实现无线接收模块等待发射模块发送的数据,当433M无线接收模块接收到来自站点信的发射模块发出的有效信号时,通过输出高电平告诉MCU,MCU检测到高电平,驱动语音播报模块播放语音信息,同时驱动OLED屏显示到达站点信息,LED灯一秒闪烁一次提示乘客。本次设计软件设计流程图如图7所示。

图7 软件设计流程图

■3.2 JQB8900-16P语音播报模块程序设计

JQB8900-16P语音播报模块有多种控制方式,一线串口控制方式、两线串口控制方式和按键方式等。本次设计只需要控制语音播报,因此,使用一线串口控制方式,就可以满足设计要求了。

(1)一线串口通信协议

通信协议是指通信各方在通信前先定好的规则,可以简单理解为各个通信模块之间进行通信时所用到的共同的语言。MCU想要控制JQB8900-16P语音播报模块,也需要有一个通信协议。

由时序图可知,发送数据之前要把SDA拉高,稳定之后发送一个低电平引导码,引导码要求至少延迟2ms,之后才开始发送数据,每个数据位用两个脉冲表示,根据脉冲的比例来判断该位是高电平还是低电平。

(2)控制说明

0x00~0x09:用来表示数字0到9的数值。

0x0a:控制指令,用来将前一次接收到的数据清零。

0x0b~0x10:控制指令,与第一条数据指令一起使用。

0x11~0x1c:控制相关操作的指令。

(3)一线串口语音文件名命名方式

文件名由5位数字组成,有且仅有5位,这5位数字不仅作为文件名。播放指令0x0b还需要通过这个5位数的数值来判断播放哪一个语音文件。所以在使用过程中如果没有按照这个格式命名,就无法播放语音文件。

■3.3 433M无线模块程序设计

(1)编解码芯片工作原理

PT2262发射芯片产生的编码信号是由地址码、数据码、同步码组成。PT2272接收芯片在接收到PT2262发出来的信号后,将对地址码进行两次核查,VT脚在两次比较都相同的时候会输出高电平,接收芯片上对应的数据脚也是输出高电平。PT2262每次发射时至少发射4组码字,因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以PT2272在有在连续两次检测到相同的地址码加数据码中的“1”驱动相应的数据输出端为高电平和驱动VT端同步为高电平[16]。

(2)编码芯片的编码格式

PT2262/PT2272的编码格式为:

0:用高电平宽度:总宽度(2周期)为1:3的波形表示;

1:用高电平宽度:总宽度(2周期)为2:3的波形表示;

开路:用高电平:总宽度(1周期)为1:3的波形紧随着高电平:总宽度(1周期)为2:3的波形表示。

地址码和数据码与的信号有所不同,是采用宽度不同的脉冲表示,“0”用两个窄脉冲来表示,“1”则用两个宽脉冲来表示;地址码的悬空,也就是“F”,是用一个窄脉冲和一个宽脉冲来表示。

(3)PT2272接收模块的程序代码

在本次设计中,为了方便调试,采用的是学习型PT2262遥控器发射编码信号,PT2272接收模块通过IO口

与主控芯片连接,当接收到发射模块的信号时,进行两次检测后数据正确才将对应的数据引脚输出高电平,主控芯片接收到信息之后驱动语音模块播报和显示模块显示。

■3.4 OLED显示模块程序设计

OLED屏是通过4线串行(SPI)方式与STM32F103RCT6主控制器进行通信的。在4线串行模式下,模块与主控制器只有一根数据线,且只能是主控制器往模块里写数据,不能向模块获取数据,因为OLED屏只用作显示,所以足以满足本次设计的需求。

在4线SPI模式下,每一个数据的长度总共有8位,在时钟(D0)的上升沿到来时,数据从D1一位一位移入SSD1306,而且是高位优先。SSD1306将显存分成8页,总共有128×64bit大小。

第一个命令共有两个字节,用来设置显示屏的对比度,先发送控制命令0x81,紧接着发送一个不超过0xFF的值,这个值越大,屏幕就越亮。

第二个命令是控制显示屏的开关,点亮显示屏则发送0xAF控制命令,否则发送0xAE。

第三个命令共有两个字节,用来控制电荷泵的开关,先发送控制命令0x8D,在发送一个数值,这个数值只需要设置第2位,开启电荷泵将该位置1,否则清零。在对模块进行初始化时,一定要发送这个命令将电荷泵开启,不然屏幕就无法显示。

第四个命令用来设置页地址,设置GRAM的某一页地址只需要使用该命令对低三位赋对应的值。

第五个命令和第六个命令分别用来设置显示时起始地址的低四位和高四位。

PCtoLCD2002取模软件:要将汉字等字符显示在OLED屏上,还有一个关键的步骤,即通过取模软件把字符转化成点阵集。PCtoLCD2002取模软件可以提供各种字符,包括汉字、图片提取。点击设置按钮,就可以在设置界面里选择自己喜欢的取模方式。设置完取模方式,回到主界面,输入我们要生成字模的汉字或者符号,点击生成字模,就可以得到想要的点阵集,把点阵集移植到代码中,通过相关的显示函数调用,就可以在OLED屏上显示出来了。

OLED程序流程如下:

①设置OLED模块与主控制器连接的引脚。

D0(SCLK):PA5

D1(SDIN):PA7

RES:PD2

DC:PB5

CS:PA4

②对显示模块进行引脚等初始化。

③编写相应的函数驱动显示模块显示。

4 系统测试

代码整合编译无误后,将生成的.hex文件通过串口调试助手下载到主控制器中,使用PT2262红外遥控器模拟公交站点发送信号,该红外遥控器有四个按键,每个按键代表一个车站,按下某一个按键时,连接在单片机上的PT2272解码模块接收到信号后,对应的数据输出引脚输出高电平告知单片机,OLED屏成功显示对应的站点名称,且JQB8900语音播报模块开始自动播报“xxx站到了,下车的乘客请从后门下车”。测试结果如图8所示。

图8 测试结果

5 结束语

本次设计的基于STM32开发的一款无线公交自动报站系统是一款比较经济实用且安全的智能交通辅助设备。经测试,无线公交自动报站系统能实现语音智能公交报站,达到设计需求,具有一定的使用价值。

猜你喜欢
高电平串口编码
生活中的编码
长链非编码RNA APTR、HEIH、FAS-ASA1、FAM83H-AS1、DICER1-AS1、PR-lncRNA在肺癌中的表达
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
Genome and healthcare
数字电子技术的应用
MCS—51单片机中的多串口通讯技术的应用
浅谈物理电路与数字电路
关于Multisim10.0的高电平调幅电路仿真研究