当前位置:首页 > 技术分享 > 正文内容

MQTT-ESP8266远程控制LED,8266端代码

lmwmm1年前 (2024-12-30)技术分享1094
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// 自己的无线名称
const char* ssid = "XXX";
// 自己的无线密码
const char* password = "XXX";
// mqtt服务器地址,服务器地址
const char* mqttServer = "so.lmwmm.com";

WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);

int GPIO = 4;
//8266使用接口

void setup() {
   // 设置串口
   Serial.begin(115200);
   // 设置内置LED引脚为输出模式
   pinMode(GPIO, OUTPUT);
 
   // 连接WiFi
   WiFi.mode(WIFI_STA);
   connectWifi();

   // 设置MQTT服务器和端口号
   mqttClient.setServer(mqttServer, 1883);
   mqttClient.setCallback(receiveCallback);

   // 连接MQTT服务器
   connectMQTTServer();
}

void loop() {
  // 开发板成功连接服务器    
  if (mqttClient.connected()) {
    // 保持客户端心跳
    mqttClient.loop();          
  } else {
    // 尝试连接服务器                  
    connectMQTTServer();    
  }
}

void connectMQTTServer(){
  // 避免与其它ESP8266设备重名 需要修改-----------
  String clientId = "connect_all_esp8266_mqtt_led_client" + WiFi.macAddress();

  // 连接MQTT服务器
  if (mqttClient.connect(clientId.c_str())) { 
    Serial.println("MQTT Connected.");
    // 订阅指定主题
    subscribeTopic();
  } else {
    Serial.print("MQTT Server Connect Failed. Client State:");
    Serial.println(mqttClient.state());
    delay(3000);
  }  
}

// 收到信息
void receiveCallback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message Received [");
  Serial.print(topic);
  Serial.print("] ");
 
  if ((char)payload[0] == '1') {     // 如果收到的信息以“1”为开始
    digitalWrite(GPIO, HIGH);  // 则点亮LED。
    Serial.println("LED ON");
  } else {                          
    digitalWrite(GPIO, LOW); // 否则熄灭LED。
    Serial.println("LED OFF");
  }
}

// 订阅指定主题
void subscribeTopic(){
  // topicString与前端代码中发送topic一致 需要修改---------------
  String topicString = "connect_all_esp8266_mqtt_led_topic";
  char subTopic[topicString.length() + 1];  
  strcpy(subTopic, topicString.c_str());
 
  // 通过串口监视器输出是否成功订阅主题以及订阅的主题名称
  if(mqttClient.subscribe(subTopic)){
    Serial.println("Subscrib Topic:");
    Serial.println(subTopic);
  } else {
    Serial.print("Subscribe Fail...");
  }  
}

// 连接wifi
void connectWifi(){

  WiFi.begin(ssid, password);
 
  // 等待WiFi连接
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Connected!");  
  Serial.println("");
}


扫描二维码推送至手机访问。

版权声明:本文由点度点度金讯时代-BLOG发布,如需转载请注明出处。

本文链接:https://lmwmm.com/post/4411.html

分享给朋友:

“MQTT-ESP8266远程控制LED,8266端代码” 的相关文章

树莓派上运行 Stable Diffusion,260MB 的 RAM“hold”住 10 亿参数大模型

树莓派上运行 Stable Diffusion,260MB 的 RAM“hold”住 10 亿参数大模型

编辑:梓文、张倩Stable Diffusion 能在树莓派上运行了!11 个月前 Stable Diffusion 诞生,它能够在消费级 GPU 上运行的消息让不少研究者备受鼓舞。不仅如此,苹果官方很快下场,将 Stable Diffus…

问情问心,又如何问得清

问情问心,又如何问得清

本篇文章来源于微信公众号: 美在高处…

2024迎新春必玩!苹果Apple Arcade上架5款PG全新游戏阵容

2024迎新春必玩!苹果Apple Arcade上架5款PG全新游戏阵容

苹果旗下的Apple Arcade游戏订阅在1月份迎来三款全新PG SOFT电游戏。这次更新包括万代南梦宫的《拓麻歌子探险王国ТAMagotchi Adventure Kingdom》,带玩家试玩体验PG史诗级游戏怀旧之旅;改编自受欢迎逻辑…

PG数据统计2023年Steam游戏数量超过14000,次高为Switch

PG数据统计2023年Steam游戏数量超过14000,次高为Switch

Steam是Valve旗下的PC游戏平台,也是当今最大的PG游戏在线市场,其推出的游戏数量一直保持着增长态势,并且没有出现停滞或减少的迹象。根据第三方网站PG SOFT电子游戏的统计数据,2023年在Steam平台上推出的游戏数量达到了14…

《Archaelund》:Steam独家提供CQ9玩家抢先体验战斗的新篇章

《Archaelund》:Steam独家提供CQ9玩家抢先体验战斗的新篇章

4 Dimension Games工作室带来了一场震撼的游戏体验,《Archaelund》正式登陆Steam平台,为CQ9玩家开启了一场开放世界探索和战斗的新冒险。这款游戏采用第一人称视角,让玩家深入探索一个神秘而危险的世界。游戏中的战斗系…

革新CQ9再现:苹果下一代iPad Pro迎来电子升级,但价位让人咋舌!

革新CQ9再现:苹果下一代iPad Pro迎来电子升级,但价位让人咋舌!

苹果突破了其12年来的常规做法,去年并未发布任何新款iPad产品。据悉,今年苹果计划对整个iPad产品线进行重大调整。其中最引CQ9游戏玩家注目的变化之一是,iPad Pro系列首次将采用OLED显示屏,并搭载更新更强大的M3芯片畅玩CQ9…