基于Wi-Fi技术的双模式手机遥控救生圈
2022-11-19郭勋文冯燕
郭勋文,冯燕
(浙江水利水电学院 机械与汽车工程学院,浙江 杭州 310018)
0 引 言
溺水事件时有发生,根据世界卫生组织统计,全球每年约有37.2 万人死于溺水[1],根据中国卫计委发表的数据显示,我国每年有57 000 余人死于溺水,也就是说平均每天有150多人溺水而亡[2]。据调查,溺水事件的发生并不都是因为没有救援人员施救,有的是因为救援人员施救方法不正确,有的是因为没有安全可靠的救援设备[3]。救生圈作为一种广泛使用的传统救生设备,对于施救者和被施救者都有很高的要求,并且只适用于近距离的抛投,无法保证救生圈 抛投的准确位置和足够距离[4],且不能自主把溺水者带回到岸边,还需要救援人员将溺水者和救生圈拉回岸边,使得救援工作不能快速高效完成。在如今智能手机日趋普及的大背景下,针对宽水面和复杂水域施救效率不高这一难题,本文设计了一种新型手机遥控救生圈,施救者可通过手机APP 控制救生圈的行进,使得施救者无须亲自下水救援,保证了施救者的安全。该救生系统适用于多种救援场景,操作简单,安全可靠,可有效提高救援效率,有望成为未来水上救援的一个重要保障。
1 系统总体设计
为提高救生系统的智能性和功能多样性,本文设计的智能救生圈有2 种控制模式,即自动模式和手动模式。当选择自动模式时,主控芯片会根据获取的施救目标位置信息,对救生装置位置信息与施救目标位置信息进行处理,规划路径,进而通过动力转向模块驱动救生装置自动前往目标。当选择手动模式时,救生装置根据手机APP 发出的命令前往施救目标位置。整个系统包括:主控模块、手机APP 遥控模块、Wi-Fi 模块、动力模块、转向模块、红外感应模块避障模块和电源模块。系统原理如图1 所示。
图1 系统原理图
2 系统硬件设计
主控模块用于实现对救生圈的控制和数据的处理,基于51 单片机的遥控控制电路应用广泛,且AT89C51 单片机的控制系统具有良好的时效性和稳定性,可有效控制水上中小型救援装置。本系统选择AT89C51 单片机作为主控芯片进行整个系统的信息处理和电机控制,单片机时钟电路如图2所示。Wi-Fi 模块主要实现对控制系统的遥控通信,系统选用的是安信可ESP8266 Wi-Fi 模块作为传输通信装置,使上位机与下位机进行连接和通信。动力模块为救生圈提供动力输出,本系统选用的电机是LBP5692/4D,采用的是继电器电路控制无刷直流电机,无刷直流电机执行电路如图3 所示。转向模块用来实现救生圈的转向和倒车,由步进电机及其附属部件构成,选用的步进电机类型是28BYJ-48,选用的是永磁式减速型步进电机,采用的是四相八拍工作模式。导航模块选用GPS 定位,主要为使用者提供救生圈的位置信息,并通过手机APP 提供的目标信息在主控芯片上进行计算,规划路线。人体红外感应模块主要用于目标位置的确定,由于人体的温度一般高于水面温度,依靠红外感应装置识别人体位置,并确保不会撞上溺水者。避障模块用于实现救生圈在行进过程中避开障碍物。电源模块用于实现对救生装置主要部件的供电,针对Wi-Fi 模块耗电量较大的问题,本系统采用太阳能电池与可充电锂电池结合对设备供电的方法。
图2 时钟电路
图3 无刷直流电机执行电路
3 软件系统设计
3.1 软件运行流程设计
本文主要对主控模块和手机APP模块进行了软件设计。针对主控模块采用keilC51 程序进行C 语言编程。针对手机APP 采用的是在APP Inventor 2 网页在线平台开发。整个软件系统的运行流程图如图4 所示。
图4 显示的是操控者进入APP 界面后的运行流程,操控者打开救生圈开关,将救生圈放置在水面上,通过手机进入APP,再与救生圈网络进行配对连接,连接成功后,系统开始初始化,操控者根据具体情况选择操控模式,对救生圈实现相应的控制方式,达成目标后结束软件运行。
图4 系统运行流程图
自动模式工作过程:操控者进入自动模式后,操控者根据目测,选取地图等方式获取被施救目标位置信息,通过手机APP 上位机将被施救目标位置信息传递给主控芯片,同时主控芯片自动获取系统的位置信息,主控芯片通过卡尔曼滤波算法实现全球定位系统(GPS)和捷联惯导系统(Strapdown inertial navigation system, SINS)对救生圈位置信息和被施救目标位置信息进行数据处理[4],规划出路径后运行主控电路,主控电路连接动力转向模块开始运行。救生圈行进过程中,主控芯片控制电机和步进电机的运转,通过控制电机的转速控制救生圈的行进速度,通过电机的正反转实现救生圈的前进与后退,通过控制步进电机及其附属部件实现救生圈的转向。通过避障模块与转向模块相结合避开行进过程中遇到的障碍物,救生圈行进过程中通过导航模块不断修正目标位置信息与救生圈位置信息。救生圈进入目标范围内,由红外感应装置确定目标具体位置,接近目标后救生圈缓慢停止,进入待机模式。操控者通过观察确定被施救目标搭载上救生圈后,通过一键返航键运作救生圈原路返回,将被施救目标带回岸边,救生圈运行过程结束。
手动模式工作过程:操控者进入手动模式后,操控者进入APP 操控界面,通过手机APP 上位机对下位机救生圈下达加速、减速、左转、右转、直行、停车等命令。操控者通过手机APP 上的功能键,将控制信号通过手机APP 传输给救生圈主控芯片,主控芯片对传输的信号进行识别、分析,将数字信号转换为电信号传递给动力转向模块,通过控制救生圈的动力转向模块控制救生圈的行进过程。控制过程中,上位机通过识别功能键的长按与短按,将控制信号传递主控芯片,主控芯片控制救生圈电机转速的快慢实现救生圈的速度的调节,通过控制左右步进电机的速度差控制救生圈的转向幅度,通过控制电机的空转实现救生圈的停止。在行进过程中,避障模块和红外感应模块自主运行,实现救生圈的避障,当救生圈靠近被施救目标后救生圈自动减速接近目标。操控者再通过遥控救生圈将被施救目标带回岸边。
3.2 救生圈动作软件程序设计
软件是单片机控制系统的核心,在单片机的软件编程中,基本都是通过C 语言或者汇编语言编程,本文是用keilC51程序进行C 语言编程。
直流电机的转向程序:
1.#include <reg51.h> //51 单片机头文件
2.#def ine uchar unsigned char
3.#def ine uint unsigned int
4.#def ine out P2 //定义out 接至P2
5.sbit lef= =P0^1; //将P0^1 定义为lef(左转)
6.sbit rig=P0^2; //将P0^2 定义为rig(右转)
7.void delayms(uint); //定义延时函数ms 毫秒
8.uchar code tum[]= {0x02,0x06,0x04,0x0c,0x08,0x09,0x01 ,0x03}; //步进脉冲数组
9.void main( void) //定义主函数
10.{uchar i; //定义变量i
11.out=0x03; //给out 赋值为0x03
12.while(1)
13.{f(!lef) //如果左转按钮按下
14.{i=i<8?i+1:0; //如果i<8,则i=i+1;否则i=0
15.out=tum[i]; //out 口显示
16.delayms(50);} //延时50 亳秒
17.else if(!rig) //如果按下右转按钮
18.{i=i>0?i-1:7; //如果i>0,则i-1,否则i=7
19.out=turn[i];
20.delayms(50);}}}
直流电机的调速程序:
1.sbit up=P0^6; //定义加速引脚
2.bit down=P0^7; //定义减速引脚
3.sbit zz =P0^0;
4.sbit PWM=P0^1; //定义PWM 引脚
5.void main() //主函数声明
6.zz=1;
7.while(1)
8.{
9.if(!up) //判断是否按下加速键
10.PWM=PWM>0? PWM - 1:0;//若PWM>0,PWM=PWM-1,否则PWM=0
11.if(!down) //判断减速键是否按下
12.PWM=PWM<1000?PWM+1:1000; // 若PWM<1000,PWM=PWM+1,否则PWM=1000
13.PWM=1; //PWM 产生高电平信号
14.delay (PWM); //延时
15.PWM=0; //PWM 产生高电平信号
16.delay(1000-PWM); //延时
17.}}
3.3 控制端手机App 设计与开发
本救生圈的控制端手机APP 是在APP Inventor 2 网页平台开发的。APP Inventor 2 是一个完全在线开发的Android编程环境,不需要掌握专业的程序编制知识,只需要根据自己的需求进行简单的代码拼接。本文根据现有的APP 操作页面设计满足需求的操作页面,在点击APP 图标后,进入初始化界面,选择救生圈设备服务器进行连接,界面显示连接成功的同时显示服务器的IP 和端口号,连接失误可进行断开连接操作重新连接。进入初始化界面后,根据现场情况选择救生圈操作方式,再分别进入相应操作界面。根据以上需求设计的APP 初始化界面如图5 所示。图5 中展示的是当连接服务器按键被点击后执行逻辑判断,显示服务器连接状态,当断开连接按键被点击进行逻辑判断显示服务器连接状态。当自动模式,手动模式按键被点击后分别进入相应界面。
图5 APP 初始化界面
3.3.1 自动模式设计
在选择自动模式后,操控者通过手动输入目标位置,设置救生圈速度,救生圈通过主控芯片和导航模块计算救生圈与目标位置信息进行路线规划,控制救生圈自动前往目标位置。到达目标后通过一键返航键将溺水者送回岸边。设计APP 界面如图6 所示。图6 展示的是操纵者输入施救目标位置信息后,上位机APP 开始规划路径,点击开始导航按键,APP 向救生圈发送自主导航命令。
图6 APP 自动模式操作界面
3.3.2 手动模式设计
在选择手动操作模式后可以通过操控面板上按键控制救生圈的前进、后退、转弯、停止、一键返航等。通过点击加速、减速按键控制救生圈的速度,APP 中可通过速度调节滑块调节救生圈的速度,通过报警电量调节按键调节报警电量。同时救生圈的速度,电量等信息也会通过Wi-Fi 传递显示在APP 界面上。当电量低于一定值时,APP 电量显示为红色的报警信号。若选择操控模式失误可通过返回按键返回初始界面重新选择操控方式。根据以上需求设计的APP 操作界面如图7 所示。根据需要实现的功能,通过此软件开发平台进行APP 逻辑运算设计,如图8 所示。图中代码展示的是APP 将救生圈设备传递的数据进行分析,提取分解数据中速度与电量的信息显示在界面中。设置电量和报警电量的全局变量,将电量和报警电量文本信息转变为数字信息进行比较,判断是否需要报警。当点击返回按键执行返回初始界面任务,当点击前进、左转、加速、急停等按键,APP 向救生圈发送信号执行相应命令。
图7 APP 手动模式操作界面
图8 APP 手动模式逻辑功能界面
4 结 论
本文设计了一种双模式手机遥控智能救生圈,可登录手机APP 后对救生圈进行远程遥控,操控者可以根据实际情况选择控制方式确保救援任务快速有效进行。该救生圈系统主要以AT89C51 单片机为控制核心,通过单片机连接ESP8266 串口的Wi-Fi 模块,再由自主研发的手机APP 实现对救生圈的远程遥控。在现实生活中,双模式手机遥控智能救生圈将具有更好的实用性,采用的双模式控制可适用于不同的水域环境。自主设计的手机APP 操作简便,控制界面简单易懂,顺应大多数操控者的操作习惯,易于操控者实现对救生圈的操控。Wi-Fi 无线通信技术作为手机APP 与救生圈之间的信息传递媒介,相比传统手柄遥控方式更加方便,相比蓝牙遥控又具有遥控距离远、传输速度快等优点。由于Wi-Fi 遥控方式耗电量大,后续将对电源模块进行优化。为了使操作方式更简便,救生圈系统功能更完善,后续将对自主研制的手机APP 进行优化,使该救生圈能够实现在未知环境自主定位,自主建立地图导航。