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主題 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM