首页 > 其他分享 >转载WIFI小车APP远程控制,无线智能小车之ESP8266例程

转载WIFI小车APP远程控制,无线智能小车之ESP8266例程

时间:2023-10-15 17:12:13浏览次数:47  
标签:ESP8266 例程 小车 配网 msg 前进 define

WIFI小车APP远程控制,无线智能小车之ESP8266例程

 

 

第一、原理讲解

原理简述:利用发布订阅模式,即:利用ESP8266 订阅了一个主题,再利用app inventor 编写的app 往这个主题发布消息,由于ESP8266 订阅了这个消息,所以就可以收到app发布得消息,从而执行相应得动作,比如前进\后退\左转\右转。

第二、小车改装

如果有小车的话可以进行改装,改装成WIFI小车,如果没有小车的话,可以现行组装。

STM32改装方案: 建议采用串口通信的方式,ESP8266可以收到手机app发来的控制指令,如果ESP8266收到指令,可通过串口给stm32发送信息,stm32收到指令后,对小车执行相关动作即可。

arduino uno 改装方案方案一,这个可以采用和stm32一样的原理,利用串口通信,esp8266收到云端指令,通过串口给arduino 发信息,arduino收到串口信息,对小车执行相关动作即可。方案二,更换NodeMCU开发板,把arduino uno 更换为NodeMCU开发板,直接用NodeMCU当作小车的动作控制器,这种方式比较推荐,较为简单,nodeMCU收到云端指令,直接执行小车动作函数即可。NodeMCU编程完全兼容arduino开发,更换的时候,把控制引脚对应好就行。

树莓派小车改装方案: 写个python脚本,脚本为TCP客户端,通过TCP客户端连接到服务器,当app通过云端发送控制指令时,树莓派就会收到命令,就可以执行相关小车动作即可。

其他开发板: 参考arduino uno 改装方案即可。

第三、 ESP8266 例程代码

建议先使用不联网版本,调试好小车的前进、后退、左转、右转等操作后,再使用联网版本。

单机不配网版本:程序下载

联网版本一:微信配网版本 代码下载

联网版本二: 不需要配网 程序下载

代码修改:

//用户私钥,可在控制台获取,修改为自己的UID
#define UID  "4d9ec352e0376f2110a0c601a2857225"
//主题名字,可在控制台新建
#define TOPIC  "mycar"

巴法创客云控制台 新建一个主题,主题名字随意,例如mycar,本实例用用mycar,使用示例代码时应修改为自己的主题名字,字母或数字或字母加数字组合。UID为用户私钥,在 巴法创客云控制台 注册登陆后可获得。

小车控制引脚:
本例程中是四驱小车

//**************************************************//
#define DIRA D0
#define PWMA D1
#define DIRB D2
#define PWMB D3
#define DIRC D5
#define PWMC D4
#define DIRD D6
#define PWMD D7

//**************************************************//

控制函数:

void forward();
void back();
void turnLeft();
void turnRight();
void Stop();

void forward(){//小车前进
   Serial.println("forward");
   digitalWrite(DIRA,HIGH);
   digitalWrite(DIRB,HIGH);
   digitalWrite(DIRC,LOW);
   digitalWrite(DIRD,LOW);
   
   analogWrite(PWMA,500);
   analogWrite(PWMB,500);
   analogWrite(PWMC,500);
   analogWrite(PWMD,500);
}

 void back(){//小车后退
   Serial.println("back");
   digitalWrite(DIRA,LOW);
   digitalWrite(DIRB,LOW);
   digitalWrite(DIRC,HIGH);
   digitalWrite(DIRD,HIGH);
   
   analogWrite(PWMA,500);
   analogWrite(PWMB,500);
   analogWrite(PWMC,500);
   analogWrite(PWMD,500);
 }

ESP8266消息检测:

  if((TcpClient_Buff.indexOf("&msg=1") > 0)) {
      forward();
      oldtime = millis();
      t_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=2") > 0)) {
      back();
      oldtime = millis();
      t_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=3") > 0)) {
      turnLeft();
      oldtime = millis();
      t_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=4") > 0)) {
      turnRight();
      oldtime = millis();
      t_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=0") > 0)) {
      Stop();
    }else if((TcpClient_Buff.indexOf("&msg=on") > 0)) {
      up_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=off") > 0)) {
      up_flag = false;
    }

程序说明: 如上所示,通过字符串匹配,
检测到字符串 &msg=1 执行前进动作,
检测到字符串 &msg=2 执行后退动作,
检测到字符串 &msg=3 执行左转动作,
检测到字符串 &msg=4 执行右转动作,
检测到字符串 &msg=0 执行停止动作,
检测到字符串 &msg=on 打开一直运动开关,
检测到字符串 &msg=off 关闭一直运动开关。
(默认情况下,如果收到前进等指令,小车只会前进1.5s,如果发送on指令后,再收到前进等指令,就会一直前进。off指令是关闭)。
如果是采用串口通信的同学,当收到相关指令,通过发送串口发送相关指令控制小车即可。

第四、WIFI配网

如果第三步中使用了一键配网的程序,需要进行微信配网操作,如果第三步使用不需要配网的程序,可跳过此步骤。

开发板配网,首先关注公众号“巴法云”,或扫码
在这里插入图片描述
手机需要先连接到路由器,在“配网”中点击“一键配网”即可,配网成功后设备会重启,稍等几秒即可,只需配网一次即可,如需再次重新配网,需要连续重启5次开发板,每次间隔2s内,开发者也可接串口开输出的调试信息。

程序测试

巴法创客云控制台 此主题处(本例程demo中为mycar) 推送消息 1 ,开小车是否正常前进。

指令定义 前进是推送1,后退是推送2,左转是3,右转是4,停止是0,如需更多动作,可在单片机中自定义即可,简单说就是检测到某个字符串就执行相关动作,这个应该还是很好理解的。例如检测到msg=1,单片机就会认为是前进指令,会执行前进。在本例程中小车不会一直前进,如果收到前进指令,只会前进1.5s,如需一直前进,推送on,即可,关闭一直前进,推送off。

如果测试程序都正常运行,可以通过生成自己的安卓手机app进行控制。

第五、安卓app制作

安卓app 采用App Inventor开发。拖拽编程,大家不用担心不会玩。

Google App Inventor是一个完全在线开发的Android编程环境,抛弃复杂的程式代码而使用积木式的堆叠法来完成您的Android程序。而且这款编程软件不一定非要是专业的研发人员,甚至根本不需要掌握任何的程序编制知识。因为这款软件已经事先将软件的代码全部编写完毕,用户只需要根据自己的需求向其中添加服务选项即可。也就是我们所要做的只是写简单的代码拼装程序。

安装appInventor 点击安装

demo程序: 程序下载

需要修改为自己的UID和topic主题,需要和单片机里的保持一致,不然单片机会接收不到消息。

在这里插入图片描述

标签:ESP8266,例程,小车,配网,msg,前进,define
From: https://www.cnblogs.com/tanhongbk/p/17765825.html

相关文章

  • 下载的PC游戏启动后报错:无法加载 DLL“steam_api64”: 动态链接库(DLL)初始化例程失败
    无法加载DLL“steam_api64”:动态链接库(DLL)初始化例程失败。(异常来自HRESU解决方式:将文件夹拷贝到Steam-->steamapps文件夹下面还好是忍者神龟抛了个异常,才找到了问题所在,论抛异常的重要性!!!忍者神龟如龙......
  • BLE_HID例程增加报表描述符使用
    我们一般hid类设备都是键鼠设备居多,在此还是以CH582的Hid_keyboard程序为例,修改其中的hidkeyboardservice.c文件,增加了:16bit全键盘、多媒体键(如音量+,音量-,静音等)、系统控制键(电脑休眠、电脑关机),由于蓝牙在部分电脑中休眠期间蓝牙驱动是关闭的,因此无法通过蓝牙唤醒电脑,鼠标数......
  • 2023-10-4 使用Arduino为esp8266烧录ps4 5.05适合的固件
    2023-10-4使用Arduino为esp8266烧录ps45.05适合的固件其实这是个伪需求,但都在我琢磨所有之后才发现,goldhen2.1之后的大版本对于505来说都是没什么实质意义,反而会引起死机等情况。想玩的游戏等降级补丁即可。当然本文记录如何通过arduino烧录你想要的插件1.解决:1-1.A......
  • STM32之WIFI通信(ESP8266 ESP-01S)
    STM32之WIFI通信(ESP8266ESP-01S)前言本文:使用的是STM32F103C8T6+ESP-01S模块通过采用串口的通信方式来实现WIFI功能ESP8266的介绍ESP8266指的是乐鑫推出的ESP8266EX芯片,用ESP8266EX芯片和FLASH芯片等封装在PCB上、金属屏蔽罩下便得到ESP8266模块。ESP8266EX由乐鑫......
  • DMA是什么?结构和例程详解?
    DMA(DirectMemoryAccess)是一种技术,它的主要功能是允许数据直接在内存和外部设备之间传输,而不需要通过CPU或其它芯片外设的干预。这使得CPU可以继续处理其它任务,而不需要等待数据传输完成。DMA控制器通常由硬件实现,它包括多个通道,每个通道都可以被配置为从不同的源地址传输到不同的......
  • Lempel-Ziv (LZ) 算法及例程
    Lempel-Ziv(LZ)算法是一系列无损数据压缩算法,包括LZ77、LZ78和LZW等。这些算法通过利用字典来存储已经遇到的字符串,并用相应的索引来代替重复出现的字符串,从而实现压缩效果。下面是一个简单的例程,展示了如何使用LZ77算法来压缩和解压缩文本数据。压缩过程:初始化一个空的字典和输......
  • 哈夫曼编码及例程
    哈夫曼编码是一种常见的无损压缩算法,通过根据字符出现的频率构建一个最优编码树,将频率较高的字符用较短的编码表示,从而实现数据的压缩。下面是一个简单的例程来演示如何使用哈夫曼编码进行文本数据的压缩和解压缩。压缩过程:统计输入文本中每个字符的出现频率。根据字符频率构建哈夫......
  • 样例程序分析
    下面通过Robot.java的类,继续分析Java程序的应用。Java程序的运行结果是在控制台输出测试信息,信息的内容为 “Hi,”加上输入的name信息。首先来看一下Robot.java的类,核心代码如下。具体的源代码可以查看本书附带源码的chapter1-helloworld目录下的内容。publicclassRobot{p......
  • CH573 CH582 CH579蓝牙从机(Peripheral)/主机(Central)例程讲解一(蓝牙主从机收发数据
    原文链接:https://www.cnblogs.com/risc5-ble/p/15994545.html前言:蓝牙从机,顾名思义,就是一个蓝牙从设备,可以不断发送广播等待与主机建立连接进行通信,建立连接后,可以通知主机,也可以收到主机发的信息,一般使用BLE调试助手(安卓应用市场可下载),ios可使用Lightblue来进行调试通信等......
  • 基于单片机的智能小车设计
    一、项目介绍随着科技的发展,智能机器人在日常生活中的应用越来越广泛。智能小车作为智能机器人的一种,具有便携性和多功能的特点,在教育、娱乐和工业等领域得到了广泛关注和应用。智能小车可以通过远程控制实现各种动作,如前进、后退、转弯等,并且可以通过搭载传感器实现避障、测距等功......