Gửi dữ liệu cảm biến DHT11 lên Firebase của Google dùng NodeMCU ESP8266

0
1158

Có rất nhiều máy chủ và nền tảng online của bên thứ ba có sẵn để hiển thị dữ liệu cho các dự án IoT của bạn. Nhưng, tất cả các nền tảng như ThingSpeak, Blynk và IFTTT đều không đáng tin cậy và có một chút thời gian chậm trễ. Vì vậy, giải pháp tốt nhất cho vấn đề này là dịch vụ Firebase của Google cực nhanh và dữ liệu được cập nhật theo thời gian thực mà không có bất kỳ độ trễ hay trì hoãn nào. Ngoài ra, rất dễ tích hợp với dự án dựa trên ESP8266 và có thể được kết hợp với MIT App Inventor để bạn có thể tạo ra một ứng dụng IoT của riêng.

Đây là một dự án ví dụ về việc gửi dữ liệu từ DHT11 (cảm biến độ ẩm và nhiệt độ) lên firebase của Google, và dữ liệu đó được truy cấp bởi một ứng dụng IoT được xây dựng trên MIT App Inventor.

Xem thêm bài viết “Điều khiển LED với Firebase và ESP8266 NodeMCU“.

Chuẩn bị

Phần cứng

  1. NodeMCU Esp8266 12E
  2. Cảm biến DHT11
  3. Breadboard
  4. Dây cắm Breadboard

Các thư viện

  1. Firebase Arduino Library: Nhấp vào đường link này và tải xuống tập tin zip từ Github.
  2. Arduino JSON Library
  3. Include các thư viện này vào Arduino IDE
  4. DHT11 Library: Click vào đường link này để tải xuống thư viện DHT11 và include nó vào Arduino IDE
  5. Thực hiện các bước hướng dẫn bên dưới, nếu bạn chưa import thư viện board ESP8266 vào Arduino IDE còn nếu bạn đã làm điều này rồi thì bỏ qua phần hướng dẫn này.

Hướng import thư viện Board ESP vào Arduino IDE

  1. Trong Arduino IDE, vào File >> Preferences.
  2. Trong cửa sổ preferences, dán link này vào ô “Additional Boards Manager URLs” http://arduino.esp8266.com/stable/package_esp8266com_index.json
  3. Nhấp vào nút OK.
  4. Vào ‘Tools và Board’, từ menu thả xuống chọn ‘Boards Manager’.
  5. Trong cửa sổ ‘Boards Manager’, tìm  đến esp8266 by esp8266 community và chọn nó.
  6. Khi bạn chọn gói esp8266 thì nút ‘Install‘ sẽ xuất hiện, nhấp vào nút này để cài đặt.
  7. Sau khi hoàn thành, bạn sẽ có thể tìm thấy các board khác nhau của dòng ESP trong Arduino IDE và việc cài đặt đã hoàn tất.

Thêm thư viện board ESP 8266 vào Arduino IDE

Sơ đồ kết nối

Chân DATA của DHT11 được kết nối với D5 của NodeMCU ESP8266.

Sơ đồ kết nối NodeMCU với DHT11

Thiết lập Firebase 

Bước 1: Truy cập firebase.google.com và đăng nhập bằng tài khoản Gmail của bạn. Click chọn “ĐI TỚI BẢNG ĐIỀU KHIỂN”.

Bước 2: Tạo một project mới.

Bạn thực hiện các bước như hình bên dưới để tạo một project mới.

Giao diện firebase của google

Bước 3: Tạo database

Tạo database cho firebase
  • Nhấp vào Rules và thiết lập như hình dưới đây:
Thiết lập rule
  • Ở phía trên bên trái, nhấp vào biểu tượng cài đặt (hình bánh răng ) >> chọn Project settings >> Service accounts >> Database secrets >> Nhập vào chữ Show và copy secret key. Chúng tôi sẽ cần đến key này khi thiết kế ứng dụng.
Lấy secret key

Chương trình

#include <FirebaseArduino.h>

#include “DHT.h”

#include  <ESP8266WiFi.h>

#define FIREBASE_HOST “xxxxx.firebaseio.com”

#define WIFI_SSID “ten-wifi” // Thay đổi tên wifi của bạn

#define WIFI_PASSWORD “password-wifi” // Thay đổi password wifi của bạn

#define DHTPIN 14    // Chân dữ liệu của DHT 11 , với NodeMCU chân D5 GPIO là 14

#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {

  Serial.begin(9600);

  delay(1000);

  WiFi.begin (WIFI_SSID, WIFI_PASSWORD);

  Serial.print(“Dang ket noi”);

  while (WiFi.status() != WL_CONNECTED) {

    Serial.print(“.”);

    delay(500);

  }

  dht.begin();

  Serial.println (“”);

  Serial.println (“Da ket noi WiFi!”);

  Serial.println(WiFi.localIP());

  Firebase.begin(FIREBASE_HOST);

}

void loop() {

  float h = dht.readHumidity();

float t = dht.readTemperature();  // Đọc nhiệt độ theo độ C

  if (isnan(h) || isnan(t)) {

    Serial.println(“Failed to read from DHT sensor!”);

    return;

  }

  Serial.print(“Nhiet do: “);

  Serial.print(t);

  Serial.print(“*C  “);

  Serial.print(“Do am: “);

  Serial.print(h);

  Serial.println(“%  “);

  Firebase.setFloat (“Temp”, t);

  Firebase.setFloat (“Humidity”, h);

  delay(200);

}

Nếu bạn thực hiện đúng theo các bước hướng dẫn bên trên thì khi truy cập vào firebase của google bạn sẽ thấy nhiệt độ và độ ẩm được cập nhật trực tuyến như hình dưới đây.

Cập nhật nhiệt độ và độ ẩm trên firebase của google

Tạo dứng dụng theo dõi nhiệt độ và độ ẩm

Hy vọng, bạn cảm thấy thú vị với phần gửi dữ liệu lên firebase của google.

Bây giờ, đã đến lúc tạo ra một ứng dụng tùy chỉnh Internet of Things (IoT) của riêng chúng ta sẽ lấy dữ liệu từ máy chủ firebase của chúng ta và cập nhật kết quả theo thời gian thực vào ứng dụng của chúng ta.

Giao diện thiết kế

Giao diện thiết kế app theo dõi nhiệt độ và độ ẩm

Giao diện lập trình

Giao diện lập trình app theo dõi nhiệt độ và độ ẩm

Giao diện ứng dụng

Liên kết firebase với App Inventor

Bạn dán secret key và đường dẫn database (các thông số này có được ở bước 3 – tạo database bên trên) vào các ô FirebaseToken và FirebaseURL. Bạn nhớ bỏ trống ô ProjectBucket.

Kết luận

Như vậy là chúng tôi đã thành công trong việc gửi dữ liệu nhiệt độ và độ ẩm của cảm biến DHT11 lên Firebase của Google bằng cách sử dụng module NodeMCU ESP8266. Chúng ta có thể dễ dàng theo dõi sự thay đổi của nhiệt độ và độ ẩm qua trình duyệt web hoặc điện thoại android có cài đặt ứng dụng được tạo ra từ App Inventor.

Chúc các bạn học hỏi thêm được nhiều kiến thức mới.

BÌNH LUẬN

Please enter your comment!
Please enter your name here