找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3330|回复: 1
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:601884 发表于 2019-8-20 11:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原理讲解

原理简述:利用发布订阅模式,即:利用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 例程代码
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0


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


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

小车控制引脚:

本例程中是四驱小车

  1. //**************************************************//
  2. #define DIRA D0
  3. #define PWMA D1
  4. #define DIRB D2
  5. #define PWMB D3
  6. #define DIRC D5
  7. #define PWMC D4
  8. #define DIRD D6
  9. #define PWMD D7

  10. //**************************************************//
  11. ```
  12. **控制函数:**
  13. ```javascript
  14. void forward();
  15. void back();
  16. void turnLeft();
  17. void turnRight();
  18. void Stop();

  19. void forward(){//小车前进
  20.    Serial.println("forward");
  21.    digitalWrite(DIRA,HIGH);
  22.    digitalWrite(DIRB,HIGH);
  23.    digitalWrite(DIRC,LOW);
  24.    digitalWrite(DIRD,LOW);
  25.    
  26.    analogWrite(PWMA,500);
  27.    analogWrite(PWMB,500);
  28.    analogWrite(PWMC,500);
  29.    analogWrite(PWMD,500);
  30. }

  31. void back(){//小车后退
  32.    Serial.println("back");
  33.    digitalWrite(DIRA,LOW);
  34.    digitalWrite(DIRB,LOW);
  35.    digitalWrite(DIRC,HIGH);
  36.    digitalWrite(DIRD,HIGH);
  37.    
  38.    analogWrite(PWMA,500);
  39.    analogWrite(PWMB,500);
  40.    analogWrite(PWMC,500);
  41.    analogWrite(PWMD,500);
  42. }
复制代码




ESP8266消息检测:

  1.      if((TcpClient_Buff.indexOf("&msg=1") > 0)) {
  2.       forward();
  3.       oldtime = millis();
  4.       t_flag = true;
  5.     }else if((TcpClient_Buff.indexOf("&msg=2") > 0)) {
  6.       back();
  7.       oldtime = millis();
  8.       t_flag = true;
  9.     }else if((TcpClient_Buff.indexOf("&msg=3") > 0)) {
  10.       turnLeft();
  11.       oldtime = millis();
  12.       t_flag = true;
  13.     }else if((TcpClient_Buff.indexOf("&msg=4") > 0)) {
  14.       turnRight();
  15.       oldtime = millis();
  16.       t_flag = true;
  17.     }else if((TcpClient_Buff.indexOf("&msg=0") > 0)) {
  18.       Stop();
  19.     }else if((TcpClient_Buff.indexOf("&msg=on") > 0)) {
  20.       up_flag = true;
  21.     }else if((TcpClient_Buff.indexOf("&msg=off") > 0)) {
  22.       up_flag = false;
  23.     }
复制代码

程序说明:如上所示,通过字符串匹配,
检测到字符串 &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)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:602295 发表于 2019-8-21 11:17 | 只看该作者
谢谢分享,学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表