基于STM32 的定位导航装置

2023-02-10 04:28辛云旭文丰张凯华
电子设计工程 2023年3期
关键词:定位导航原理图串口

辛云旭,文丰,张凯华

(中北大学电子测试技术国家重点实验室,山西太原 030051)

共享单车是当前十分普遍的出行交通工具,不仅给人们的生活带来了便利并且对于环境保护也做出了一定贡献[1],但是用户在使用共享单车的过程中常常因为无法及时获取附近车辆的位置信息而带来不便[2]。在这种情况下,需要设计一种可以安装在车身上的定位导航装置使用户可以快速找到附近车辆,增加用户的满意度,从而使更多人选择这种低碳的出行方式[3]。

该定位导航装置需要获取车辆的实时位置,将位置信息通过4G 网络上传到服务器中并与用户的实时位置信息进行对比,判断距离用户最近的车辆[4]。当用户接近该车辆时,定位导航装置自动播报提示语音,并通过屏幕显示车辆各配件信息[5]。

1 总体设计

定位导航装置总体设计采用模块化思想,在顶层设计中根据模块功能不同把装置划分为五个模块,分别是主控模块、定位模块、4G 模块、语音播报模块和显示模块。

主控模块的主要功能是装置加电正常工作后先通过串口接收定位模块输出的车辆位置信息和4G模块输出的用户位置信息并进行解析和对比,判断这两个位置信息的经纬度是否接近,如果接近,则将对应的控制信息输出至语音播报模块和显示模块,同时将车辆位置信息通过串口输出至4G 模块,然后通过服务器发送到用户端;定位模块负责获取共享车辆的位置信息,并在接收到主控模块输出的获取车辆位置指令时将共享车辆的位置信息输出至主控模块;4G 模块负责接收主控模块输出的共享车辆位置信息,并通过MQTT 协议[6]上报到服务器中,使用基站辅助定位模块进行定位,同时负责把用户上传到服务器中的位置信息发送到主控模块;语音播报模块通过串口接收主控模块的控制信息,根据控制信息从SD 卡中读取预先保存的语音信息并通过喇叭播报[7];显示模块接收主控模块的控制信息,通过I2C 协议控制屏幕显示当前车辆位置信息和各配件是否正常的信息[8]。装置总体设计框图如图1 所示。

图1 装置总体设计框图

2 硬件电路设计

2.1 主控模块硬件电路设计

主控模块一共用到了三个串口,一个I2C 接口和五个GPIO 接口。STM32F103C8T6 芯片是基于Cortex-M3 内核的32 位微控制器,硬件采用LQFP48封装,接口资源包括三个串口、两个I2C 接口,GPIO接口多于五个,最高工作频率为72 MHz,具有高性能、低功耗、价格便宜的特点[9],所以选用STM32F 103C8T6 芯片作为系统的主控制器。主控模块的时钟输入采用25 MHz 晶振,并对3.3 V 电源输入引脚并联0.1 μF 电容进行退耦处理。主控模块的电路原理图如图2 所示。

图2 主控模块电路原理图

2.2 定位模块硬件设计

由于卫星导航模块ATGM336H 支持北斗、GPS和GLONASS 系统的单系统或多系统联合定位,定位精度为2.5 m,功耗低,双模运行时功耗小于83 mW,且内置天线短路保护功能,满足系统设计要求,所以选用ATGM336H 导航模块进行共享车辆定位[10]。在该装置中,定位导航模块的定位准确性起关键作用。因此在进行PCB 设计时,要避免定位导航模块受到其他器件的干扰,模块下面覆铜并连接GND,且尽量远离高频信号线。天线应尽量靠近模块的RF引脚,同时进行50 Ω的阻抗匹配[11]。定位模块的电路原理图如图3 所示。

图3 定位模块电路原理图

2.3 语音播报模块硬件电路设计

由于MP3 解码芯片N9100 具有MP3 解码功能,可以从外部SD 卡中读取语音信息,可以通过串口控制播放指定语音,采样率最高可达48 kHz,动态输出范围大,信噪比高,所以选用N9100 芯片作为解码芯片[12]。解码后的信息通过喇叭播放,需要使用功放芯片驱动。功放芯片8002 可以提供3 W 的输出功率,且待机电流小,为0.6 μA,最大失真度小,为0.5%,所需外部元件少,电路设计简单,所以选用8002 为语音播报模块提供大功率输出[13]。语音播报模块电路原理图如图4 所示。

图4 语音播报模块电路原理图

2.4 供电电路硬件设计

共享车辆提供24 V 的直流电源[14],而定位导航装置所用芯片供电为5 V 和3.3 V,所以需要使用电源转换芯片先将24 V 转为5 V,再将5 V 转为3.3 V 供各芯片及其稳压芯片使用。由于电源芯片LM2596支持9~36 V 输入、5 V 和3.3 V 输出,输出电流可达3 A,满足系统运行的电压和电流要求,且内部集成了1.235 V 的参考电压Vref、部分驱动电路以简化外部电路,同时具有过热保护,所以使用LM2596进行电压转换[15]。输出电压Vout根据式(1)进行计算,R1设置为1 kΩ,R2设置为3.09 kΩ。供电电路的原理图如图5所示。

图5 供电电路原理图

3 系统软件设计

3.1 定位信息解码

ATGM336H 通过串口发送位置数据、卫星信息等,系统只需要解析以GPRMC 协议发送的位置数据即可。

GPRMC 协议由信息ID、UTC 时间、数据有效位、精度、南北纬、东西经、速度等信息组成,用逗号分隔,以换行符结尾。数据为字符串形式,通过串口以9 600 bps 输出。协议中,纬度信息为度分单位,即ddmm.mmmm,需要根据公式dd+(mm.mmmm/60)计算得到度单位。经度信息格式为dddmm.mmmm,根据公式ddd+(mm.mmmm/60)计算得到度单位。

单片机首先判断是否接收到$GPRMC 字符串,如果接收到,则继续接收后面的数据直至接收到换行符。此时一帧数据接收完成,进行异或校验位判断,如果校验位不一致,则数据无效,舍弃。如果校验位有效,则对数据进行解析。

由于各信息由逗号分隔,所以可以使用strstr 函数获取纬度信息在数据帧的位置,将前两位即度数提取出来,再对分数进行运算。由于单片机没有集成浮点运算单元,不适合直接进行浮点数运算,所以先将分数中的小数点去除,转为长整型,为保证运算结果是六位小数,在除法运算前先乘10。

函数snprintf 可以将参数以指定格式格式化为字符串[16],使用snprintf 函数将运算结果进行整合,得到度格式的纬度信息。经度信息的运算与纬度信息的运算一致,这里不再赘述。定位模块的程序流程图如图6 所示。

图6 定位模块的程序流程图

3.2 语音播报程序设计

主控芯片通过串口控制N9100 进行语音数据的解码和播报。通信数据由命令码、命令码校验码、数据长度、数据以及校验位组成,数据可以有多个。04为播报命令码。数据中,06 表示指定曲目,06 后的数据表示语音文件在当前盘存放的位置。当用户接近车辆,首先对比用户的位置和车辆的位置,判断距离信息。根据距离信息找到对应的语音文件的位置后,通过串口向N9100 发送播放控制命令,从SD 卡中读取并播放对应的语音文件。

4 测试与分析

4.1 定位测试

将系统置于室外,上电后定位模块开始定位并输出定位信息。由于只接收解析GPRMC 格式的数据,通过IO 模拟串口打印数据到计算机的结果如图7 所示。由打印结果可知,定位模块正常工作。

图7 定位模块的定位结果

4.2 语音播报测试

将设备移动到离模拟用户1 m 左右的位置,此时主控模块接收到定位模块输出的位置信息并与站点经纬度对比,向语音播报模块输出控制信息,此时语音播报模块播报“距离目标车辆1 m”的语音。更换模拟用户的位置,语音播报模块仍能播报对应的语音信息,所以语音播报模块工作正常。

5 结论

该设计实现的定位导航装置,采用了高性能的STM32F103C8T6 作为主控制器进行控制和数据解析操作,使用定位速度快、精度高的ATGM336H 采集位置信息,利用ISD1700 语音芯片读取SD 卡里的语音文件,实现语音播报功能,通过I2C 协议控制屏幕进行显示,使用4G 模块通过MQTT 协议上报车辆位置信息和下传用户位置信息,满足了用户迅速寻找到共享车辆的需求。

猜你喜欢
定位导航原理图串口
校园智能车定位导航系统设计与实现
浅谈AB PLC串口跟RFID传感器的通讯应用
浅谈STM32核心板原理图设计
电路原理图自动布图系统的设计与实现
基于Protel DXP 2004层次原理图的设计
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
维修电工线路板的接线技巧分析
串口技术的实物调试和虚拟仿真联合教学模式
北斗系统全面应用为“一带一路”定位导航(3)