之前我们通过MQTTX控制ESP8266开关灯
ESP8266阿里云开关灯
这一节我们用MQTT控制STM32的小灯。
原理 :ESP8266接收到MQTT消息后,利用串口发送给STM32
STM32的代码就是串口控制代码,只不过在这个转口几经周折,从阿里云服务器到MQTT到ESP8266再到STM32的串口
代码分为两个部分,中转站ESP8266,最终处理STM32
ESP8266部分代码:
记得改WIFI 和服务器
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#define LED D0 // GPIO引脚别名 仅使用于NodeMCU开发板
//默认使用'$'符号作为调试信息输出的标识
//默认使用'#'符号作为控制信息的标识开头
const char *WIFI_SSID = "xxxxx"; // WIFI名称
const char *WIFI_PASS = "xxxx"; // WIFI密码
const char *MQTT_BROKER = "xxxx"; // MQTT服务器地址
const int MQTT_PORT = 1883; // MQTT服务端口
const char *CLIENT_ID = "c001"; //客户端ID
const char *PUBLISH_TOPIC = "pub01"; //发布的topic
const char *SUBSCRIBE_TOPIC = "sub01"; //订阅的topic
void callback(char *topic, uint8_t *message, unsigned int length); //回调函数声明,用于传入mqtt客户端构造函数作为参数
WiFiClient wifiClient;
//参数: MQTT服务器地址,端口号,回调函数名,承载的连接(WIFI)
PubSubClient mqttClient(MQTT_BROKER, MQTT_PORT, callback, wifiClient);
//回调函数
void callback(char *topic, uint8_t *message, unsigned int length)
{
// MQTT_doPublishOnDefaultTopic("$Received message:");
String sTopic = topic; //将topic转换为String 可以加以处理