基于STM32 单片机的自助旅游车控制系统设计

2023-11-19 09:20李海军王军敏王艳辉
电子制作 2023年21期
关键词:循迹站台小车

李海军,王军敏,王艳辉

(平顶山学院 信息工程学院,河南平顶山,467000)

0 引言

提高旅游车的智能化水平对提升游客的安全性和自主性,并缓解景区的游客接待压力具有重要的意义。目前,景区内使用的观光车通常需要专业司机驾驶,按照规定时间发车,到站下车,游客自主性较差,等车时间不固定,游玩体验不够好,而且观光车行驶过程中的安全性受驾驶员技术水平影响较大,安全保障一般[1]。随着传感器技术与物联网技术的快速发展,智能化的观光车有着极大的市场需求。因此,本文设计一种能够自动驾驶、检测精度高、传输稳定的自助旅游车控制系统。

1 系统总体设计

基于STM32 单片机的自助旅游车控制系统主要包含硬件电路模块和软件控制系统,并采用WiFi 通信完成远程传输。该系统由采集与控制端,数据传输端以及远程监控信息端三部分组成,分别对应于物联网三层体系架构的感知层、网络传输层以及应用管理层[2]。传感器将采集到的信息显示在OLED 屏幕上并且将信息实时推送到ONENET 云服务器,当检测到障碍物距离低于阈值则紧急制动,接收到站台信息后,自动更新OLED 显示屏以及客户端的显示信息;另一方面用户需要先注册账号,再登录系统扫描设备二维码,手机端便会将设备添加到自己的管理设备中,从而实时更新页面上显示的信息,达到远程实时获取小车位置以及预约小车的功能。

本文设计的自助旅游车控制系统主要实现循迹避障、站台检测和到站播报的功能。该系统将各传感器采集到的数据上传到STM32 主控单元,当读取到障碍物距离低于阈值时,小车会自动停车,当读取到站台信息时,自动更新OLED屏以及云平台的当前所在站的信息。此外,主控模块将数据读取后,可以通过ESP-8266 WiFi 模块利用EDP 协议上传到ONENET 云服务器,在此过程中ESP-8266 WiFi 模块联网,本设计中采用EDP 协议接入,是OneNET 平台特有的传输协议。该协议基于TCP 进行传输,可以实现数据的上传、下发及转发功能,接收数据时支持7 种格式,具有功能强大和实现简单的特点。

图1 展示了该自助旅游车控制系统的原理图,可以完成各项参数的采集,实现自动化控制、数据的远距离无线传输以及用户实时的控制操作。

图1 基于STM32 单片机的自助旅游车控制系统原理图

2 硬件系统设计

■2.1 循迹避障电路设计

本系统采用HC-SR04 超声波传感器实现在小车行驶过程中对障碍物距离的检测和避障,该传感器具有频率高、波长短、绕射现象小、方向性好以及性能稳定等优点,测距精度也可以满足本系统的设计需求。HC-SR04 超声波模块具有两个压电陶瓷超声传感器,其中一个用于发射超声波脉冲信号,另一个用于接收信号,由于发射和接收的信号都比较微弱,外围信号放大电路可以放大该模块发射和接收的信号,从而能将信号更稳定地传给单片机。该模块的子程序设计首先进行HC-SR04 的初始化,然后在触发信号输入管脚Trig 中,输入长为20μs 的高电平正方形波,在该正方形波被输入后,该模块将自动发出8 个40 kHz 的声波,其中,该回声信号输出管脚echo 的电平会由低电平变为高电平,该回声引脚末端的电平会由高电平变为低电平。计时器上记录着从发出超声波到返回的全过程。根据每秒344 m 的音速值,就能计算出这辆车和障碍物的距离。本系统设置超声波测距范围0~15cm 为危险距离,在这个范围内,小车自动刹车。图2 为HC-SR04 超声波测距模块电路。

图2 HC-SR04 超声波避障模块电路

本系统采用TCRT5000 红外循迹传感器实现小车的循迹功能,该模块具有实现简单,响应速度快,便于对近程道路状况进行检测,并具有较强的抗干扰能力。该模块的工作原理为在组件工作时,它的红外发光二极管持续地发出红外线,如果发出的红外线未被反射,或是反射的讯号不足够强烈,则红外线接收器将永远关闭,以至于模组的输出端为高电平,表示二极管是关着的,而这时汽车是正常运行的。在汽车脱离轨道的时候,红外线会被反射回去,然后红外线接收管就会达到饱和,这个模块的输出端电平就会变得很低,这就表示二极管是工作在常亮的情况下,此时小车进行自动循迹。本设计将两个红外循迹模块分别放置在小车前方底盘两侧,当小车左前方红外循迹模块检测到黑色轨迹时,将检测到的信息上传到控制单元,单片机控制小车左边的马达反向转动,右边的马达正向转动,从而使小车向左边跟踪;当小车右前方红外循迹模块检测到黑色轨迹时,小车控制单元接收到信息后同样控制小车左侧电机正转,右侧电机反转,实现小车向右循迹。图3为TCRT5000 红外循迹模块电路。

图3 TCRT5000 红外循迹模块电路

■2.2 站点信息采集电路设计

采用红外对管传感器采集站台信息,该模块具备反应速度快、高精度以及平稳运行的优点。红外对管的工作原理是基于热效应,它使用热效应将热转换为电信号。红外接收模块包括LM358、LM567 和红外线接收管,该运放装置对接收到的信号进行放大,向LM567 供给该放大信号。LM567 是一种单片音频解码器集成电路,其中包括了一个稳定的锁相环路和一个晶体管开关,通过外部元件的组合,它自身可产生非常稳定的音频振荡信号,并且其频率可由外接元件来控制,LM567的5、6 脚分别为外接定时电阻和定时电容端,构成 RC 定时电路。对此模块进行电信号的采集,并将 OUT 的输出管脚连接到单片机的PB13 管脚上。在旅游车经过或者到达站点时,旅游车携带的红外接收单元检测到站台的发射单元发出的光线,将其转化为电信号并传递给主控模块更新OLED显示屏以及手机端上的站点信息。图4 为站点信息采集模块电路。

图4 站台信息采集模块电路

■2.3 ESP-8266 WiFi 电路设计

无线通信模块在远程数据监控终端与数据传输端进行交互时有着极其重要的作用。本系统用ESP-8266WiFi 模块与OneNET 平台进行通信。且该模块价格低、稳定性高、串口速率可达4Mbps,可支持STA、AP 以及AP 和STA 共存的三种工作模式[3]。本次设计中,从以上的工作模式中选择STA 模式作为WiFi 模块的工作模式,完成客户端与设备之间的数据通信。WiFi 通讯模块和单片机之间是用串口进行通讯的,单片机可以把采集到的各种环境信息打包后,再用串口传输的方法上传到ESP-8266 WiFi 模块上。通过WiFi 模块,按照EDP 协议,将环境数据转换成合适的格式,并将其发送给云平台,消息类型选择Save Data 类型,消息子类型采用JSON 格式串,只需将该模块的RXD、TXD口分别接单片机的PA2(TXD)口和PA3(RXD)口。

3 软件系统设计

■3.1 采集端软件系统设计

首先进行程序端的初始化,然后各硬件电路根据程序预设的状态进行硬件初始化[4]。在OLED 屏幕上显示部分不需要改变的文字,如“目的站”“当前站”“距离”等文字。硬件初始化结束后进行系统状态的获取,获取设置的阈值以及获取AD 转换后的参数。判断双路电机驱动、红外对射模块等标志位,执行获取到的状态设置,并将部分参数及状态显示于屏幕的相应位置。完成以上操作后将对WiFi 模块IO进行初始化和复位,将ESP8266 模块的指令发送和接收方式设定为STA,通过STM32 进行相应的AT 指令的发送和接收,控制WiFi 通讯模块与路由器的连接,配置完成后连接到ONENET 云服务器,实现单片机主控模块与云平台进行数据交互,并在OLED 屏幕上更新获取到的信息。采集端将发布消息到服务器,微信小程序通过订阅此主题便可接收到消息,最后通过小程序的API 渲染到页面上,用户也可以通过小程序实现对小车的远程控制。图5 为采集端主程序的工作流程图。

图5 采集端主程序的工作流程图

■3.2 客户端软件系统设计

自助旅游车控制系统的移动终端可以利用阿里云开发的一款微信小程序,首先需要在阿里云平台上创建产品,通过平台中提供的模板对移动终端的功能与界面进行设计,然后为产品增加新功能,最后配置终端界面的页面,布局方案选择标准面板。终端页面内容主要展示实时检测到的小车所在站台信息,另外包含四个站台按钮,可以控制小车到达指定位置。所设计的客户端界面如图6 所示。

图6 移动终端主界面

本系统的移动终端也可以基于App Inventor2 Wx Bit汉化版进行APP 开发,这是一款开发简便、可以通过视觉进行传达APP 制作平台。只需要拖动一个部件和一个逻辑模块,就可以完成一个安卓系统的应用,抛弃了那些复杂的代码,采用了乐高积木的方式,就可以完成这个系统的设计和制造,这样就可以大大地减少系统的开发难度,提升系统的开发效率。

在主界面上,添加按钮、文本标签以及Web客户端控件。在选中控件之后,可以在右侧工作区的属性栏中对属性进行修改,比如文字、颜色、字体大小等,进而设计出应用界面。

对于程序逻辑的编写,重要的是为组件设计对应的事件逻辑。本设计需要设计按钮,用来远程控制小车。在模块中选择按钮控件,在该部分进行全局变量的定义。选中Web客户端,用来读取HTTP 的响应,有了响应之后,要把响应内容放到文本标签上显示出来,与上面的控制模块结合起来,然后将定义的全局变量对应到相应数据流在全部变量A2 列表的位置,随后将获取到的环境数据,以及设置的阈值放在APP 响应的文本标签显示出来。

开发过程中首先针对OneNET API 进行GET 的请求,然后定义一个全局变量URL,变量的值为“http://api.heclouds.com/devices”。在模块栏选择Web 客户端,选择组件,并与计时器控制组件结合到一起,再增加一个变量,取URL 的值。接着创建包含两个元素的列表(数组),放入api-key 以及它的值,如["api-key","xxxxxxxxxxxxxxxxxxxx xxxx"]。进而执行GET 请求,获取数据。通过类似操作与按钮的控制组件结合进行POST 文本请求。进行命令的下发,通过云平台转发,单片机接收后执行相应的切换操作。

4 结论

本文以STM32 单片机为控制核心,采用TCRT5000红外循迹传感器、HC-SR04 超声波传感器、红外对管传感器等实现小车的循迹避障以及站台信息采集,并利用无线WiFi 模块通过EDP 通信协议将数据传送至用户手机端,用户可通过微信小程序远程控制小车到达指定站台,具有重要的应用价值。

猜你喜欢
循迹站台小车
基于DFT算法的电力巡检无人机循迹检测系统设计
寻找93/4站台
大车拉小车
为黑恶势力站台撑腰的县委常委
自制小车来比赛
人生的站台
刘老师想开小车
基于单片机的智能循迹小车的设计
八号站台的那只狗
两轮自平衡小车的设计与实现