Giám sát nhiệt độ, độ ẩm (DHT11) thông qua Thingspeak bằng NodeMCU ESP8266

Giám sát nhiệt độ, độ ẩm (DHT11) thông qua Thingspeak bằng NodeMCU ESP8266

Trong chuỗi bài viết về NodeMCU ESP8266 với Thingspeak. Hôm nay mình sẽ hướng dẫn các bạn cách giám sát Nhiệt độ, độ ẩm theo thời gian thực bằng Web Server Thingspeak,

và thực hiện trên giám sát trên trên App ThingView.

Nếu bạn chưa biết cách cài đặt NodeMCU ESP8266 trên Arduino IDE thì các bạn xem bài viết bên dưới nhé.

Tạo tài khoản Thingspeak và tạo kênh mới

Các bạn truy cập vào website Thingspeak.com để tạo cho mình một tài khoản nhé.

Sau khi hoàn tất việc đăng nhập, các bạn click vào Thingspeak.

Chọn “Channels – My Channels – Create a New Channel” .

  • Name: Ở đây mình đặt là “Arduinokit.vn.
  • Field1: Bạn điền là Nhiệt Độ.
  • Field2: Bạn điền là Độ Ẩm.

Tiếp theo nhấn vào Save Channel để lưu lại nhé.

Tạo xong sẽ được bảng như thế này.

Sau khi Upload chương trình sẽ hiển thị như thế này.

Thiếp lập API Keys Thingspeak.

Chọn Channels/API Keys.

Chúng ta quan tâm đến Write APY Key.

Phần này chúng ta Copy và cho vào trong Code nhé.

Thiếp lập Thingview trên Smartphone.

Tải App Thingview

Sau khi tải Thingview về chúng ta vào Channels > Channel Settings.

Tiếp theo mở App Thingview chúng ta nhập Channel ID và APY Key vào nhé.

Sơ đồ đấu nối

NodeMCU ESP8266 Cảm biến nhiệt độ, độ ẩm (DHT11)
Vin 5V
GND GND
D0 OUT

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng Shopee
NodeMCU ESP8266 1 Mua ngay
Cảm biến nhiệt độ DHT11 1 Mua ngay
Dây cắm (Đực – Đực) 1 Mua ngay
Breadboard 1 Mua ngay

Code

#include <DHT.h>  // Including library for dht
#include <ESP8266WiFi.h>

String apiKey = "XXVLQW2ILG8W9AZ8";       // Enter your Write API key from ThingSpeak
const char* ssid = "Nha Tro 4";           // Give your wifi network name
const char* password = "nguyennam";   // Give your wifi network password
const char* server = "api.thingspeak.com";
#define DHTPIN 5       //pin D0 where the dht11 is connected
DHT dht(DHTPIN, DHT11);
WiFiClient client;

void setup() 
{
       Serial.begin(115200);
       delay(10);
       dht.begin();
       Serial.println("Connecting to ");
       Serial.println(ssid);
       WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED) 
     {
            delay(500);
            Serial.print(".");
     }
      Serial.println("");
      Serial.println("WiFi connected");
}

void loop() 
{
      float h = dht.readHumidity();
      float t = dht.readTemperature();
              if (isnan(h) || isnan(t)) 
                 {
                     Serial.println("Failed to read from DHT sensor!");
                      return;
                 }
                         if (client.connect(server,80))   //   "184.106.153.149" or api.thingspeak.com
                      {    
                             String postStr = apiKey;
                             postStr +="&field1=";
                             postStr += String(t);
                             postStr +="&field2=";
                             postStr += String(h);
                             postStr += "\r\n\r\n";

                             client.print("POST /update HTTP/1.1\n");
                             client.print("Host: api.thingspeak.com\n");
                             client.print("Connection: close\n");
                             client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
                             client.print("Content-Type: application/x-www-form-urlencoded\n");
                             client.print("Content-Length: ");
                             client.print(postStr.length());
                             client.print("\n\n");
                             client.print(postStr);

                             Serial.print("Temperature: ");
                             Serial.print(t);
                             Serial.print(" degrees Celcius, Humidity: ");
                             Serial.print(h);
                             Serial.println("%. Send to Thingspeak.");
                        }
          client.stop();

          Serial.println("Waiting...");
  
  // thingspeak needs minimum 15 sec delay between updates, i've set it to 30 seconds
  delay(10000);
}

Thư viện

Download thư viện “DTH.h”: Tải ngay

Bài viết liên quan

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments