智能巡防小车做到第四篇的程度基本把需要的功能都完成了,还可以另外扩展一个控制小车的APP出来,小车与APP交互的数据包括小车当前行走状态、火源勘测状态,舵机角度(小车转向角和风扇转向角)、风扇开关状态等,同时通过APP可以控制小车的运动状态。


APP交互

  • 5.1 通讯模块
  • 5.2 APP功能简介
    • 5.2.1 功能界面
    • 5.2.2 自动模式
    • 5.2.3 手动模式
  • 5.3 APP交互协议
  • 5.4 部分代码
  • 5.5 结语

5.1 通讯模块

小车与APP之间采用ESP8266模块进行数据透传,透传模式设置较为简单,这里不做阐述

5.2 APP功能简介

5.2.1 功能界面

app图标是一个卡通的消防车图案,对于小车的功能而言这个图案很形象了hahaha

APP主界面极狐包揽了所有功能,状态显示包括火焰警报显示,风扇状态显示,巡防车当前运行模式;控制方面的包括小车运行模式控制(自动、手动),小车前进、后退、停止及小车转向控制,风扇的打开、关闭及风扇转动角度,还有巡防车状态复位等,如图

复位选项中,可选择小车某个部位单独复位或者全复位操作,风扇复位及车轮复位都是将风扇、车轮的朝向设置为正前方,全复位除了包含风扇复位和车轮复位外,还会将在运行中的小车停止下来

在切换巡防车运行模式时会进行切换提示,自动模式为巡防小车依靠自身传感器进行巡线和火源检测操作,切换手动模式后会先向小车发送一次全复位的指令,然后小车完全由APP接管

当手机连接上小车WiFi时,会先进行一次交互,小车将当前运行模式发送给APP(自动或手动模式),APP收到数据后在界面上显示

5.2.2 自动模式

(WiFi连接后)自动模式下,小车实时将数据发送到APP上, 可在APP界面居中位置中看到

风扇的开关状态,小车运行模式,在没检测到小车附近存在火源时,APP显示无火源警报,右侧用一棵绿色的树表示当前无险情
小车检测到附近火源时,向APP发送火焰警报,APP界面提示火焰警报,绿树图案也会变成有险情的灭火图案,小车则在发现火源时自动执行风扇灭火

5.2.3 手动模式

(WiFi连接后)在APP界面切换手动模式,除了上面说到的可以设置小车复位之外,模拟的摇杆界面可以控制小车转向和前后行进,右侧控制风扇的开关及舵机的转向

5.3 APP交互协议

小车与APP交互时自定义一套的指令协议还是比较方便的,主要以字符串指令进行数据交互,下面分享部分协议内容

APP指令 数据范围 数据反馈格式 数据反馈指令 指令备注
CONTROL_CarRun*** 0 - 150 RECEIVE_*** 小车前进
CONTROL_CarRun*** -150 - 0 RECEIVE_*** 小车后退
CONTROL_ServoC*** 45 - 135 RECEIVE_*** 车头转向(角度方向为小车朝向)
CONTROL_ServoF*** 160 - 20 RECEIVE_*** 风扇舵机转向(角度方向为小车朝向)
CONTROL_FANOpen RECEIVE_*** RECEIVE_OpenRuning 风扇打开
CONTROL_***Mode CONTROL_ManualMode RECEIVE_*** RECEIVE_ManualModeReady 切换运行模式为手动模式(APP控制)

5.4 部分代码

代码展示主要处理部分,loop函数中,使用硬件串口(WiFi)进行字符串接收

//app指令接收,while+延时保证字符串完整接收if(Serial.available()){while(Serial.available()){AppOrder += (char)Serial.read();delay(2);}//判断字符串开头部分if(AppOrder.startsWith("CONTROL_")){if(AppOrder.indexOf("GetCarState") == 8){CarStateSend();AppOrder = "";}// 判断是否为手动模式指令if(AppOrder.indexOf("ManualMode") == 8){digitalWrite(BuzzerPin, LOW);delay(500);digitalWrite(BuzzerPin, HIGH);State_Reset(0);RunMode = ManualMode;AppReady = true;Serial.println("RECEIVE_ManualModeReady");AppOrder = "";//判断是否为自动模式指令}else if(AppOrder.indexOf("AutoMode") == 8){RunMode = AutoMode;AppReady = false;Serial.println("RECEIVE_AutoModeReady");AppOrder = "";}if(AppReady != true)   AppOrder = "";}else  AppOrder = "";}

手动模式控制

 //手动模式控制if((RunMode == ManualMode) && (AppReady == true)){//火焰检测状态发送if((FireStateGet() == true) && (FireFlag == false)){...}else if((FireStateGet() == false) && (FireFlag == true)){...}//处理app的复位指令if(AppOrder.startsWith("CONTROL_Reset")){String ResetState = "";...AppOrder = "";}//处理app的舵机控制指令if(AppOrder.startsWith("CONTROL_Servo")){if(AppOrder.charAt(13) == 'C'){...AppOrder = "";}elseif(AppOrder.charAt(13) == 'F'){String Servo_Angle = "";...AppOrder = "";}}//小车前进指令if(AppOrder.startsWith("CONTROL_CarRun")){String CarSpeed = "";...AppOrder = "";}//小车停止指令if(AppOrder.startsWith("CONTROL_CarStop")){CarStop();AppOrder = "";}//风扇状态控制if(AppOrder.startsWith("CONTROL_FAN")){String FANState = "";...AppOrder = "";}}

自动模式运行

//自动模式下巡线/火焰检测else if((RunMode == AutoMode)&&(AppReady == false)){if(FireStateGet() == false)          OpenMV_LinePatrol();else if(FireStateGet() == true)   FireFighting();}

5.5 结语

智能巡防小车案例到这里就结束了,APP部分不开源,所分享的案例内容只作为案例记录和案例分享,希望这能为读者提供帮助或参考,做出更好的电子产品 ~~~溜了溜了

Arduino案例实操 -- 智能巡防小车(五)小车APP功能扩展相关推荐

  1. Arduino案例实操 -- 智能巡防小车(三)图形化巡线小车编程

    巡防小车的巡线功能同时可以用图形化编程软件来实现.博主这里用的图形化编程软件是KRobot. 三.图形化巡线小车编程 3.1 编程环境配置 3.1.1 下载编程软件 3.1.2 安装编程软件 3.2 ...

  2. Arduino案例实操 -- 智能巡防小车(四)火焰检测功能扩展

    当小车可以自行完成巡线功能后,在有剩余空闲I/O口的情况下,还可以为巡线小车添加火焰检测功能,让它成为名副其实的 "巡防小车" ! 添加火焰检测功能 4.1 添加器件 4.2 火焰 ...

  3. Arduino案例实操 -- 智能巡防小车(三)Arduino IDE巡线小车编程

    三.Arduino IDE巡线小车编程 3.1 Arduino开发环境 下载免安装ZIP包 下载IDE安装包 3.2 Arduino IDE 3.3 Blink项目实例 打开内置案例 进行程序上传 3 ...

  4. Arduino案例实操 -- 语音播放模块(DY-SV5W)

    案例主控板如不做特殊说明的话,均默认是Arduino UNO控制板. 本次实验以UNO发送串口协议控制语音播放器播放歌曲,语音播放模块选型DY-SV5W. 文章标题导航 一.硬件选择 1. Ardui ...

  5. Arduino案例实操 -- AS608光学指纹模块

    指纹,也叫手印,即是表皮上突起的纹线.由于人的指纹是遗传与环境共同作用产生的,因而指纹人人皆有,却各不相同.由于指纹重复率极小,大约150亿分之一,故其称为"人体身份证". 目录指 ...

  6. Arduino案例实操 -- 磁悬浮套件(上推式)

    磁悬浮装置,是由转子.传感器.控制器和执行器4部分组成,其中执行器包括电磁铁和功率放大器两部分.假设在参考位置上,转子受到一个向下的扰动,就会偏离其参考位置,这时传感器检测出转子偏离参考点的位移,作为 ...

  7. PaddleDetection行人分析工具PP-Human案例实操

    PaddleDetection行人分析工具-PP-Human案例实操 本项目将带大家快速上手PP-Human,实操行人跟踪.属性分析和行为识别等行人高频场景应用,以及PP-Human多种使用方式. 光 ...

  8. 新硬盘挂载-fdisk+mount案例实操

    新硬盘挂载-fdisk+mount案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 现在很多服务器都支持热插拔了,当有新的硬盘插入到服务器上我们需要将其分区,格式化,然后挂载 ...

  9. 数据模型同学看过来|代码案例实操来袭

    去年年底,央行开出反洗钱罚单,多家银行合计被罚1040万元. 当时,中国人民银行石家庄中心支行披露的反洗钱行政处罚信息公示表显示,因涉及未按照规定履行客户身份识别义务等,中行.邮储.浦发三家银行以及阳 ...

最新文章

  1. 多个class相同的input标签 获取当前值!方法!
  2. Linux RPM 初步学习
  3. jquery 数组indexof_如何实现一个简化版的 jQuery
  4. 资金流学习 - 选股逻辑
  5. Jmeter在chrome浏览器中录制脚本
  6. 深入理解计算机系统(2.7)------二进制小数和IEEE浮点标准
  7. Android之复合按钮CompoundButton
  8. windows下面NTP服务器配置,局域网
  9. 【读书笔记】金字塔原理-演绎推理和归纳推理
  10. 深度学习平台demo(一)- C#如何调用python文件
  11. 如何将平板电脑/手机作为电脑的扩展屏(附带软件下载)
  12. 【卷积神经网络】卷积神经网络(Convolutional Neural Networks, CNN)基础
  13. 淘宝直播医美,颜值经济崛起,如何抢占流量风口
  14. picpick截图工具截取滚动窗口只滚动一次就结束了解决办法
  15. Win7安装Docker 1
  16. 为什么现在我们很难打造一支跟中供铁军一样的销售队伍?
  17. 如何画架构图之C4方法
  18. 【虚幻引擎】UE4/UE5 后期处理盒子(PostProcessVolume)
  19. 信息学奥赛一本通-1047
  20. 微信公众号服务器配置token验证失败

热门文章

  1. UWB技术免布线方案
  2. 获取3个月前的日期(年月日)
  3. 操作系统第一章操作系统引论作业
  4. 强大的终端模拟器:Termux
  5. 傅小森的游戏制作之路-别踩白块儿
  6. HTML + css实现图片勾选功能
  7. 数字CMOS集成电路——电阻负载反向器设计
  8. 【22/03】为什么要学git分布式版本控制软件及基本操作
  9. R语言学习笔记(十四):聚类分析
  10. Attention 注意力机制浅学