基于MQTT百度天工服务器,实现微信小程序控制ESP8266,完成遥控小车的简单控制
目录
前言
一、准备工具
二、百度天工物联网平台的搭建
三、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,完成遥控小车的简单控制相关推荐
- 【微信小程序控制硬件③】 从软件到硬件搭建一个微信小程序控制esp8266的项目,自定义通讯协议,为面试职位和比赛项目加分!
微信物联网生态主要分在微信硬件开发平台与腾讯物联开发平台,前者已经停止维护,但依然有着很大的学习价值,而后者作为主推的平台,集成很多功能,包括从微信小程序实现配网到控制: 为了兼顾更多的朋友和自己的学 ...
- (开源)微信小程序控制esp8266
微信小程序控制esp8266 第一.远程App控制或手动控制 下载esp8266示例程序 第二.微信小程序开发 流程说明:首先要使esp8266能够联网,能联网就可以控制,使用示例程序,修改WIFI. ...
- 基于腾讯云服务器部署微信小程序后台服务(Python+Django)
一 前言 微信小程序,相信大家早已熟知,它是一种无需下载安装即可使用的轻型应用,具有跨平台和接近Native App性能体验的优势.从开发模式上说,它是前后端分离的,微信小程序负责实现前端应用,后端服 ...
- 使用微信小程序控制ESP8266(麦克纳姆轮)智能车
Author:wuli丶汐 专业:电信 使用微信程序控制WIFI小车之ESP8266例程: 一.控制原理原理 **简述**利用发布订阅模式,即:利用ESP8266 订阅了一个主题,再利用app inv ...
- 微信小程序控制三轮全向排爆小车
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.微信小程序制作 二.电机驱动 三.蓝牙串口通信 四.机械臂 前言 随着人工智能普及,智能小车开始流行起来,可是现在 ...
- 微信小程序控制STC12单片机蓝牙通信与PWM控制舵机
此项目主要用蓝牙小程序,蓝牙通信控制舵机开关灯的作用. 下面我们先看实物.机械结构是一个机械朋友(LT)设计的,十分感谢他. 1.1小程序 WXML的程序: <button bindtap=&q ...
- 【微信小程序控制硬件⑧ 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!(附带Demo)
[微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...
- 【微信小程序控制硬件②】 开始微信小程序之旅,导入小程序Mqtt客户端源码,实现简单的验证和通讯于服务器.(附带源码)
文章目录 一.前言: 二.注册微信小程序: 三.本博文连接和微信物联有何区别: 四.微信小程序`MQTT`客户端源码导入注意事项: 五.下载: 微信物联网生态主要分在微信硬件开发平台与腾讯物联开发平台 ...
- 【微信小程序控制硬件 第13篇】安信可B站直播学习总结,微信小程序MQTT远程控制ESP8266 NodeMCU,谈谈微信生态那些事;
[微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...
最新文章
- git 创建分支并合并到master 上
- maya如何查看资源大纲_3DMaya大纲视图在哪查看?
- Tableau必知必会之巧用 Index 函数查看数据类别详情
- ffmpeg 把视频解码成jpg
- 永洪科技携手华为构建金融智慧运营与商业智能方案,解决金融敏捷分析难题
- Travis CI 一些专用术语介绍
- tensor也可以作为索引
- 程序员终结者还是“白嫖”开源代码?GitHub推出的AI编程辅助工具陷入争议
- Microsoft Visual Studio 2005中使用水晶报表
- Atitit 知识发现 艾提拉总结 目录 1. 知识发现	1 1.1. 与数据挖掘的区别与联系 数据挖掘的一种更广义的说法	2 1.2. 基本任务	3 1.2.1. 数据分类	3 1.2.2.
- ModbusTcp协议详解
- xlsx表格怎么做汇总统计_用excel表格统计数据-如何将多个EXCEL表格的数据进行汇总?...
- 学习《医学三字经白话解》之气喘
- Handling App Links
- qq好友发聚会照片html,在QQ朋友聊天页面上点击发送图片,打开后怎么同时可以点击几张图片一次性发送,...
- Dithering(Dithering pixel studio)
- Linux系统 deamon进程
- 【图像处理】【图像去模糊】 总结
- 越吃越年轻的26种抗衰老食物
- 如何清除浏览器缓存?