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

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

lmwmm2年前 (2024-12-30)技术分享1467
#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://www.lmwmm.com/post/4411.html

分享给朋友:

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

安卓用户又遭殃?被知名APP偷删手机照片

安卓用户又遭殃?被知名APP偷删手机照片

近日,网友发布视频称,使用小红书 APP 时发现,后台删除自己手机里的相册照片,被手机系统拦截。该网友称:恰好拍到了,下拉菜单栏的时候发现有这个通知。提醒大家要多多注意隐私。该消息在网上引发热议。针对“后台删照片”一事,小红书官方认证的账号…

让文心一言和ChatGPT帮我设计开源项目,结果……

让文心一言和ChatGPT帮我设计开源项目,结果……

hi,我是一名电子工程师。作为一名有着创新精神的潮男,大洋彼岸ChatGPT的热风刚吹来,我就率先在上面提了一个人类永恒的话题:先有鸡还是先有蛋?而刚刚,我又获得了有“中国版ChatGPT”之称的文心一言内测资格,这次我决定让它帮我设计一个…

用ChatGPT写假新闻!深圳一自媒体公司法人代表被抓

用ChatGPT写假新闻!深圳一自媒体公司法人代表被抓

ChatGPT问世以来,引发了不小的争议。最让人担心的事发生了——有人用它制作假新闻!此前,一篇题为《今晨甘肃一火车撞上修路工人致9人死亡》的“新闻”吸引了甘肃省平凉市警方的注意,并引发网友关注。经判定,这是一篇假新闻,警方进一步侦查发现,…

ChatGPT生成精美Echarts图表

ChatGPT生成精美Echarts图表

【需求】:我想要用 echarts V5 来开发一个【柱状图表】 【输入文本】:我想用echarts开发一个【条形图】,目标帮我分析1-3天内每天访问我网站的用户数趋势,1-3天的用户数分别为20,50,60,请帮我…

Gemini :谷歌发布最强AI大模型!打爆GPT-4

Gemini :谷歌发布最强AI大模型!打爆GPT-4

 1.Gemini 官网:【链接直达】2.谷歌Bard:【链接直达】 谷歌Gemini背后技术的杀手锏,便是原生多模态(natively multimodal)。因为以往创建多模态大模型的方法,通常是为不同的模态训练单独…

CQ9高端手机市场变局:iPhone份额下滑,华为、小米崛起

CQ9高端手机市场变局:iPhone份额下滑,华为、小米崛起

根据CQ9 Gaming发布的报告显示,2023年,iPhone在高端手机市场(零售价不低于600美元)的份额下降了4%,从75%降至71%。CQ9游戏试玩跳高高分析,这一降幅的主要原因在于华为回归5G市场以及三星折叠机的高销量。华为和三星…