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

时光总嘲笑我的痴心妄想 提交于 2020-12-25 03:39:21

 

 

WIFI小车无线远程控制,智能小车之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配网

本程序需要给WIFI板配网,首先关注公众号“巴法云”,或扫码
在这里插入图片描述
手机需要先连接到WIFI,在“云设备”中点击“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程序。而且这款编程软件不一定非要是专业的研发人员,甚至根本不需要掌握任何的程序编制知识。因为这款软件已经事先将软件的代码全部编写完毕,用户只需要根据自己的需求向其中添加服务选项即可。也就是我们所要做的只是写简单的代码拼装程序。

程序下载

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

在这里插入图片描述
具体可参考上篇帖子的第三节(app inventor 开发):帖子 https://blog.csdn.net/bemfa/article/details/98478379

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!