esp8266通过MQTT控制LED灯

1 篇文章 0 订阅
1 篇文章 0 订阅

有很多人问我上个手机APP接MQTT控制文章怎么没写具体控制的代码,现在我就来补充一下说明。首先下载下面资料,安装Arduino软件,如果已经装了软件就安装esp8266的芯片库。

Arduino官网:https://www.arduino.cc/en/software 

下面是esp8266芯片库的一键安装

链接:https://pan.baidu.com/s/1Tt4HjUhW6e68t2BYnDYZuA?pwd=lkjh 
提取码:lkjh

一键安装时要把Arduino关闭,当然你也可以在Arduino软件里面搜索安装,如果你想崩溃,你就去尝试吧,因为这是外网,我们下载会时不时会断开,有时候会失败,网速还特别慢,我不建议。

安装完毕之后

打开软件点击对应操作如图所示,你会看到多了一个esp8266

 安装完毕之后选择芯片第一个

然后简单写几行代码


#include <ESP8266WiFi.h>
#include <PubSubClient.h>
WiFiClient espClient;
PubSubClient  client(espClient);
volatile boolean bz=HIGH;
#ifndef AP_CONFIG
String UID = "esp82661";//随便填
#endif
const char* UserName = "thidp@apfkk|esp66|0|MD5";//你的ID
const char* PassWord = "28767a7785e87b959403fdf37fc";//你的密码
bool subTopicCenterFlag = false;
unsigned long bemfa_mqtt_current_millis;
unsigned long bemfa_mqtt_last_re_millis = 0;
void reConnect() {
 if (!client.connected()) {
   if(client.connect(UID.c_str(),UserName,PassWord)){
     Serial.println("connected");
     subTopicCenterFlag = true;
    } else {
    bemfa_mqtt_current_millis = millis();
    if (bemfa_mqtt_current_millis - bemfa_mqtt_last_re_millis > 2000) {
      bemfa_mqtt_last_re_millis = millis();
      Serial.println(" try again reconnect");
    }
    }
 }
}

void subMqttTopicCenter() {
  if(subTopicCenterFlag == true){
      subTopicCenterFlag = false;

    Serial.print("sub topic:");Serial.println("LED");
    client.subscribe("LED");//你的主题

}}

void callback(char* rtopic, byte* payload, unsigned int length) {
 String msg = "";
 String topic = rtopic;
 for (int i = 0; i < length; i++) {
    msg += (char)payload[i];
 }
  Serial.println(topic);
  Serial.println(msg);//msg是你订阅收到的信息
  if(msg=="1") 
  {
    bz=!bz;
    digitalWrite(2,bz);
  }
 msg = "";
 topic = "";
 }

void setup(){
  WiFi.begin("807", "807807807");//你的wifi账号密码
    pinMode(2, OUTPUT);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Local IP:");
  Serial.print(WiFi.localIP());

  client.setServer("amapfkk.iot.gz.baidubce.com", 1883);
  client.setCallback(callback);
  Serial.begin(9600);
}

void loop(){
  reConnect();
  client.loop();  
  subMqttTopicCenter();
//  client.publish("LED", "1");//发布信息
//  Serial.println("A message has been published");
//  delay(1000);

}

除了备注,其他的不用管

备注已经写好了,

然后烧录代码,只要在客户端发送‘1’,单片机灯状态就会去反,快来试一下吧!

如果有什么不足之处,请各位批评指正,如果有帮助那就点个赞关注一下吧

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃烧的奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值