zoukankan      html  css  js  c++  java
  • Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器

    一、硬件准备

    USB转ESP8266两块、DHT11温度湿度传感器、ESP8266-01/ESP8266-01一块(如果学习的话多买几块,ESP-01/ESP-01S的区别

    USB转ESP8266 说明:为什么要买两块

    二、软件准备

    Arduino、EMQX(这是mqtt服务器可以部署在本地也可以放在远程服务器上)、MQTTBox(mqtt客户端程序)、如果是Window系统的话 安装相关USB驱动程序。

    三、安装EMQX 下面介绍的方法是部署在远程服务器上。

    MQTT服务器配置方法

    四、安装Arduino IDE

    到官网下载安装

    五、配置Arduino IDE  的 ESP8266开发环境

    参考地址

    六、把ESP-01与DHT11连接

    连接方法

    七、打开Arduino IDE 编写代码  

    注意修改 Wi-Fi名和 Wi-Fi密码,如果是本地mqtt服务器的话地址填 127.0.0.1

    #include <SimpleDHT.h>
    #include <ESP8266WiFi.h>
    #include <PubSubClient.h>
    
    int pinDHT11 = 2; // GPIO2 of ESP8266
    const char* ssid = "XXXXX";//手机Wi-Fi热点
    const char* password = "XXXX";//手机Wi-Fi密码
    const char* mqtt_server = "XXXXXXX";//服务器网址或者IP地址
    
    //const String macAddress = WiFi.macAddress();
    //const char* clientID = macAddress.c_str();    //MAC地址
    const char* clientID = "ESP8266_01_A";          //连接mqtt用户名
    
    WiFiClient espClient;
    PubSubClient client(espClient);
    SimpleDHT11 dht11(pinDHT11);
    
    long lastMsg = 0;
    char msg[50];
    int value = 0;
    
    void setup() {
      //pinMode(BUILTIN_LED, OUTPUT);     // 将BUILTIN_LED引脚初始化为输出
      Serial.begin(115200);
      setup_wifi();
      client.setServer(mqtt_server, 1883);
      client.setCallback(callback);
    }
    
    void setup_wifi() {
    
      delay(10);
      WiFi.begin(ssid, password);     // 我们从连接到WiFi网络开始
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
      }
      Serial.println("WiFi connected");
    }
    
    
    ///接收反馈
    void callback(char* topic, byte* payload, unsigned int length) {
     Serial.print("Message arrived ["); Serial.print(topic);   Serial.print("] ");
     
      for (int i = 0; i < length; i++) {
        Serial.print((char)payload[i]);
      }  
    
    }
    
    void reconnect() {
      // 循环,直到我们重新连接
      while (!client.connected()) {
        
        if (client.connect(clientID)) {               //connected
          Serial.print("MQTT连接成功");                 // 连接mqtt成功
      //    client.publish("ESP_01主题", "hello world");  // 一旦连接,发布公告…
          client.subscribe("ESP_01主题");               // 一旦连接,发布主题
        } else {
          delay(5000);                                 // 等待5秒再重试
        }
      }
    }
    void loop() {
    
      if (!client.connected()) {
        reconnect();
      }
      client.loop();
    
    
    ////////温度湿度
      byte temperature = 0;
      byte humidity = 0;
      int err = SimpleDHTErrSuccess;
      if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
        Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
        return;
      }
       String tmp = "温度:";            //字符串拼接
       tmp += String(temperature);
       tmp += String(" 湿度:");
       tmp += String(humidity);
      
      Serial.print((int)temperature); Serial.print(" *C, "); 
      Serial.print((int)humidity); Serial.println(" H");
      client.publish("ESP_01主题", tmp.c_str());//发送主题
      delay(2000);  
    ////////温度湿度 
    }

    八、烧录程序

    用改装过的 USB转ESP8266 连接ESP-01连接电脑,准备烧录。

    点击IDE左上角的箭头开始烧录。

     九、测试程序

    把烧录好的ESP8266,取下来,装到 USB转ESP8266 没改装的转换器上,插入电脑,打开IDE右上角的图标,即可看到运行状态。

     

     十、打开MQTTBox 订阅ESP_01主题 

  • 相关阅读:
    .NET探索模型路由约定实现伪静态
    .NET中使用DebuggerDisplay轻松定制调试
    .NET探索平台条件编译
    Spring Boot+Logback输出日志到指定路径
    SAPD:FSAF升级版,合理的损失值加权以及金字塔特征选择 | ECCV 2020
    FSAF:嵌入anchor-free分支来指导acnhor-based算法训练 | CVPR2019
    RepPointsV2:更多的监督任务,更强的性能 | NIPS 2020
    RepPoints:微软巧用变形卷积生成点集进行目标检测,创意满满 | ICCV 2019
    CornerNet-Lite:CornerNet粗暴优化,加速6倍还提点了 | BMVC 2020
    SaccadeNet:使用角点特征进行two-stage预测框精调 | CVPR 2020
  • 原文地址:https://www.cnblogs.com/easyidea/p/11568386.html
Copyright © 2011-2022 走看看