目录

前言

一、准备工具

二、百度天工物联网平台的搭建

三、Arduino IDE 环境的搭建和代码

四、微信小程序的搭建和代码


前言

基于MQTT协议借助百度天工物联网平台,通过Arduino IDE烧录程序,实现微信小程序下发指令到ESP8266 Node MCU,从而简单控制小车的前进、后退、左右转。

作为一个实打实的新手,自己对这方面可以说是完全不了解。我在看了B站的视频以及很多博客之后,最后选择跟着安信可科技发布的B站视频一步步来做:【直播回放】微信小程序MQTT远程控制安信可NodeMCU ESP8266。(上)_哔哩哔哩_bilibili

当然,这个视频的发布也在一年前了,现在会有一些内容上的更新,我会在下面提及。我在跟着安装安信可IDE环境的时候并未成功,最后在Arduino IDE上烧录的程序。另外还有一些我遇到的问题和坑都会在下文中进行说明。


一、准备工具

  • 小车底盘、电池、电机驱动模块(我用的逐飞科技)、舵机
  • esp8266Node Mcu 12-E(安信可科技)、连接电脑的串口线
  • 百度天工物联网平台 物联网核心套件_物联网接入-百度智能云 (baidu.com) 如果是第一次使用需要打开物联网接入的功能
  • Arduino IDE  下载 – 太极创客
  • 微信开发者工具  微信公众平台 (qq.com)

二、百度天工物联网平台的搭建

在打开物接入平台的功能后,进入控制台。

创建项目,选择地域,填写自己的项目名称以及描述,选择项目类型为数据型。

创建完项目之后,点击蓝色项目名称进入项目列表

创建策略,如果需要微信端下发指令到ESP8266端,同时需要微信端接受8266的反馈信息,则创建两个主题分别由微信端和8266端订阅和发布,这里要注意的是:微信端订阅的主题是8266端要发布的主题,同样8266端订阅的主题是微信端发布的主题。

创建身份,选择密码验证,点击下一步,选择刚刚创建的策略,点击下一步完成身份的创建。保存好身份密匙,这是8266和微信小程序连接MQTT服务器的密码。

点击用户列表创建用户,首先创建微信小程序端用户,选择身份为刚刚创建的身份以及刚刚创建的策略。同样,创建8266端用户。

至此,服务器基本搭建完成。

三、Arduino IDE 环境的搭建和代码

由于要实现微信小程序远程遥控小车的功能需要WIFI功能的参与,所以需要对Arduino配置WiFi环境。

打开Arduino IDE,点击工具——>开发板——>开发板管理器,输入ESP8266,然后下载出现的8266库。需要注意的是由于这里是在Arduino的后台官网下载,所以下载可能会失败,而且不止一次,我的解决办法是当下载失败,就是出现红色错误的时候,断开无线网,连接自己的手机热点,即只要下载不动了,就在WiFi和手机热点之间来回切换,反复横跳。所用流量大概在300M左右。

下载完成后,点击工具——>开发板,选择NodeMcu 1.0即可。

接着,下载连接MQTT服务器的相关库,点击项目——加载库——管理库,输入PubSubClient下载。

这样就基本完成了IDE的配置。

然后在IDE环境中编写代码,烧录进8266中。

其中百度天工中创建的服务器地址

要订阅和发布的主题

服务器的用户名

用户列表中8266端的用户名,点击连接测试为用户ID

#include <ESP8266WiFi.h>
#include <PubSubClient.h>const char* STA_SSID = "8266连接WiFi名称";
const char* PSD = "WiFi密码";
const char *mqtt_server = "百度天工中创建的服务器地址";
const char *subTopic = "要订阅的主题";
const char *pubTopic = "要发布的主题";
const char *client_id = "用户列表中8266端的用户名";
const char *mqtt_username = "服务器的用户名";
const char *mqtt_password = "创建身份时记下用来连接MQTT的密码";WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient); //定义MQTT客户端void setup() {Serial.begin(9600);WiFi.begin(STA_SSID, PSD);                  // 启动网络连接Serial.print("Connecting to ");              // 串口监视器输出网络连接信息Serial.print(STA_SSID); Serial.println(" ...");  // 告知用户NodeMCU正在尝试WiFi连接int i = 0;                                   // 这一段程序语句用于检查WiFi是否连接成功while (WiFi.status() != WL_CONNECTED) {      // WiFi.status()函数的返回值是由NodeMCU的 WiFi连接状态所决定的。 delay(1000);                               // 如果WiFi连接成功则返回值为WL_CONNECTED                       Serial.print(i++); Serial.print(' ');      // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值}                                            // 同时NodeMCU将通过串口监视器输出连接时长读 秒。// 这个读秒是通过变量i每隔一秒自加1来实现的。                                             Serial.println("");                          // WiFi连接成功后Serial.println("Connection established!");   // NodeMCU将通过串口监视器输出"连接成功"信 息。Serial.print("IP address:    ");             // 同时还将输出NodeMCU的IP地址。这一功能是通 过调用Serial.println(WiFi.localIP());              // WiFi.localIP()函数来实现的。该函数的返回值 即NodeMCU的IP地址。mqttClient.setServer(mqtt_server, 1883); //设定MQTT服务器与使用的端口,1883是默认的MQTT端口mqttClient.setCallback(callback);        //设定回调方式,当ESP8266收到订阅消息时会调用此方法delay(1500);
}
//这里就开始进行MQTT的回调,就是当收到服务器传来的信息之后可以对ESP8266执行相应的动作,
void callback(char *topic, byte *payload, unsigned int length)
{Serial.print("Message arrived [");Serial.print(topic);Serial.print("] ");Serial.println();Serial.println(String(length));for (int i = 0; i < length; i++){
Serial.print((char)payload[i]);}Serial.println();
}void reconnect()            //为防止MQTT服务器下线,当断开服务时尝试重新连接/
{while (!mqttClient.connected()){Serial.print("Attempting MQTT connection...");// Attempt to connectif (mqttClient.connect(client_id, mqtt_username, mqtt_password)){Serial.println("connected");if (mqttClient.subscribe(subTopic, 1)){Serial.println("subscribe success");}else{Serial.println("subscribe fail");}}else{Serial.print("failed, rc=");Serial.print(mqttClient.state());Serial.println(" try again in 5 seconds");// Wait 5 seconds before retryingdelay(5000);}}
}

进行烧录的时候,用串口线将8266接在电脑上,通过设备管理器——

端口查看COM端口号,设置Arduino中接入的为相应的端口。

然后进行烧录,烧录成功后按下8266上的复位按键,可以在串口检测器上看到WiFi连接成功和服务器连接成功。

四、微信小程序的搭建和代码

打开微信开发者工具,我这里使用的是测试号。自己修改项目名称,定义目录,其他不做修改点击确定。

接着下载连接MQTT服务器的第三方库,打开下面的链接,右键另存为一个mqtt文件,将次此文件复制放在你创建的小程序目录的utils中。

https://unpkg.com/mqtt@2.18.8/dist/mqtt.js

我这里不涉及微信小程序界面的代码,请自行在网上寻找。

小程序连接服务器以后写吧...累人.....

基于MQTT百度天工服务器,实现微信小程序控制ESP8266,完成遥控小车的简单控制相关推荐

  1. 【微信小程序控制硬件③】 从软件到硬件搭建一个微信小程序控制esp8266的项目,自定义通讯协议,为面试职位和比赛项目加分!

    微信物联网生态主要分在微信硬件开发平台与腾讯物联开发平台,前者已经停止维护,但依然有着很大的学习价值,而后者作为主推的平台,集成很多功能,包括从微信小程序实现配网到控制: 为了兼顾更多的朋友和自己的学 ...

  2. (开源)微信小程序控制esp8266

    微信小程序控制esp8266 第一.远程App控制或手动控制 下载esp8266示例程序 第二.微信小程序开发 流程说明:首先要使esp8266能够联网,能联网就可以控制,使用示例程序,修改WIFI. ...

  3. 基于腾讯云服务器部署微信小程序后台服务(Python+Django)

    一 前言 微信小程序,相信大家早已熟知,它是一种无需下载安装即可使用的轻型应用,具有跨平台和接近Native App性能体验的优势.从开发模式上说,它是前后端分离的,微信小程序负责实现前端应用,后端服 ...

  4. 使用微信小程序控制ESP8266(麦克纳姆轮)智能车

    Author:wuli丶汐 专业:电信 使用微信程序控制WIFI小车之ESP8266例程: 一.控制原理原理 **简述**利用发布订阅模式,即:利用ESP8266 订阅了一个主题,再利用app inv ...

  5. 微信小程序控制三轮全向排爆小车

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.微信小程序制作 二.电机驱动 三.蓝牙串口通信 四.机械臂 前言 随着人工智能普及,智能小车开始流行起来,可是现在 ...

  6. 微信小程序控制STC12单片机蓝牙通信与PWM控制舵机

    此项目主要用蓝牙小程序,蓝牙通信控制舵机开关灯的作用. 下面我们先看实物.机械结构是一个机械朋友(LT)设计的,十分感谢他. 1.1小程序 WXML的程序: <button bindtap=&q ...

  7. 【微信小程序控制硬件⑧ 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!(附带Demo)

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  8. 【微信小程序控制硬件②】 开始微信小程序之旅,导入小程序Mqtt客户端源码,实现简单的验证和通讯于服务器.(附带源码)

    文章目录 一.前言: 二.注册微信小程序: 三.本博文连接和微信物联有何区别: 四.微信小程序`MQTT`客户端源码导入注意事项: 五.下载: 微信物联网生态主要分在微信硬件开发平台与腾讯物联开发平台 ...

  9. 【微信小程序控制硬件 第13篇】安信可B站直播学习总结,微信小程序MQTT远程控制ESP8266 NodeMCU,谈谈微信生态那些事;

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

最新文章

  1. git 创建分支并合并到master 上
  2. maya如何查看资源大纲_3DMaya大纲视图在哪查看?
  3. Tableau必知必会之巧用 Index 函数查看数据类别详情
  4. ffmpeg 把视频解码成jpg
  5. 永洪科技携手华为构建金融智慧运营与商业智能方案,解决金融敏捷分析难题
  6. Travis CI 一些专用术语介绍
  7. tensor也可以作为索引
  8. 程序员终结者还是“白嫖”开源代码?GitHub推出的AI编程辅助工具陷入争议
  9. Microsoft Visual Studio 2005中使用水晶报表
  10. Atitit 知识发现 艾提拉总结 目录 1. 知识发现 1 1.1. 与数据挖掘的区别与联系 数据挖掘的一种更广义的说法 2 1.2. 基本任务 3 1.2.1. 数据分类 3 1.2.2.
  11. ModbusTcp协议详解
  12. xlsx表格怎么做汇总统计_用excel表格统计数据-如何将多个EXCEL表格的数据进行汇总?...
  13. 学习《医学三字经白话解》之气喘
  14. Handling App Links
  15. qq好友发聚会照片html,在QQ朋友聊天页面上点击发送图片,打开后怎么同时可以点击几张图片一次性发送,...
  16. Dithering(Dithering pixel studio)
  17. Linux系统 deamon进程
  18. 【图像处理】【图像去模糊】 总结
  19. 越吃越年轻的26种抗衰老食物
  20. 如何清除浏览器缓存?

热门文章

  1. 我的保研路——夏令营
  2. 顶级AI科学家裴健加盟京东 领衔大数据与智慧供应链研发
  3. GV导出EXCEL,Word
  4. 不用任何 js 库,纯前端导出数据到 Excel / CSV 文件就这么简单几行代码
  5. 【FCL入门教程1】实现简单的碰撞检测
  6. CASIA步态能量图像数据库
  7. HTML中 div标签内背景图片自适应div大小
  8. 【年度福利】聚宽2018年度评选+精选文章合集
  9. DS18B20温度传感器驱动文件
  10. 中软国际php,中软国际部分前端面试题