Khám phá công nghệ

Khám phá các công cụ và kỹ thuật hữu ich cho Lập trình viên

Điều khiển đèn LED bằng Firebase và ESP8266

Thắng Nguyễn

Sat, 27 Apr 2024

Điều khiển đèn LED bằng Firebase và ESP8266

Tổng quan: Điều khiển đèn LED bằng Firebase và ESP8266

Sử dụng các phần cứng IoT và nền tảng đám mây , chúng ta có thể kiểm soát các thiết bị IoT từ bất kỳ nơi nào có kết nối internet. Dự án dựa trên IoT mini này đề cập đến việc điều khiển đèn LED bằng Firebase và module NodeMCU ESP8266 . Có nhiều phương pháp kiểm soát trạng thái đèn LED như sử dụng Máy chủ webỨng dụng Blynk hay các dịch vụ API. Nhưng trong phạm vi bài viết này VNFS sẽ chỉ tập trung vào Google Firebase. Trong bài viết này VNFS sẽ hướng dẫn các bạn cách điều khiển đèn LED bằng Firebase và ESP8266.

Đầu tiên chúng ta cần biết Firebase là gì? Firebase là một dịch vụ cơ sở dữ liệu thời gian thực được cung cấp bởi Google và hoạt động trên nền tảng đám mây. Kèm theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Nó giúp các lập trình phát triển nhanh các ứng dụng di động bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.

Yêu cầu phần cứng

Sau đây là các thành phần cần thiết để thực hiện dự án này. Tất cả các thành phần có thể dễ dàng mua từ Shopee. Liên kết mua linh kiện được đưa ra bên dưới:

Sơ đồ kết nối đèn LED bằng Firebase và ESP8266

Đây là sơ đồ mạch kết nối LED và Board NodeMCU ESP8266 . Kết nối cực dương của LED với GPIO5 , tức là D1 của NodeMCU ESP8266 thông qua điện trở 220ohm như trong hình bên dưới:


Cài đặt Thư viện Firebase và JSON

Để cài đăt 2 thư viện này các bạn có thể download tại link dưới đây:

  1. Thư viện firebase: https://github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
  2. Thư viện Arduino Json 5.x https://github.com/bblanchon/ArduinoJson

Sau khi download xong, trên Arduino IDE các bạn chọn Sketch > Include library > Add .zip > Select zip file để cài đặt 2 thư viện mà chúng ta đã tải xuống.

Thiết lập CSDL Firebase

Tạo một dự án firebase mới từ bảng điều khiển(console) và đi đến phần cơ sở dữ liệu. Chọn cơ sở dữ liệu thời gian thực của firebase (real-time database).

Trên firebase các bạn copy “database secret”để xác thực từ Settings Panel > Service accounts.

Thêm một nút(node) vào cơ sở dữ liệu firebase. Giá trị này sẽ quyết định bật hay tắt đèn LED.

Code trên Arduino ID

Bây giờ tất cả các thiết lập đã xong, chúng ta sẽ chuyển qua bước lập trình cho ESP8266.

 #include                        // esp8266 library
 #include                    // firebase library
 #define FIREBASE_HOST "your-project.firebaseio.com"  //Địa chỉ của project trên firebase
 #define FIREBASE_AUTH "06dEpqanFg*qAwnQLwLI" // secret key lấy từ firebase
 #define WIFI_SSID "xxxxxxxxxxxxx"   //tên wifi
 #define WIFI_PASSWORD "xxxxxxxxxxxxxx" //password wifi
 String fireStatus = ""; //Khai báo biến lưu trạng thái của đèn
 int led = D1;  //Chân kết nối của đèn với NodeMCU
 void setup() {
   Serial.begin(9600);
   delay(1000);
   pinMode(LED_BUILTIN, OUTPUT);
   pinMode(led, OUTPUT);
   WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //kết nối với wifi
   Serial.print("Connecting to ");
   Serial.print(WIFI_SSID);
   while (WiFi.status() != WL_CONNECTED) {
     Serial.print(".");
     delay(500);
   }
   Serial.println();
   Serial.print("Connected to ");
   Serial.println(WIFI_SSID);
   Serial.print("IP Address is : ");
   Serial.println(WiFi.localIP()); //In ra địa chỉ IP
   Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // Kết nối tới firebase
   Firebase.setString("LED_STATUS", "OFF"); //Khởi tạo trạng thái của đèn trên Firebase
 }
 void loop() {
   fireStatus = Firebase.getString("LED_STATUS"); // Lấy trạng thái của đèn trên firebase
   if (fireStatus == "ON") { // Kiểm tra nếu trạng thái đèn là ON
     Serial.println("Led Turned ON");
     digitalWrite(LED_BUILTIN, LOW); // make bultin led ON
     digitalWrite(led, HIGH); // make external led ON
   } else if (fireStatus == "OFF") { // Kiểm tra nếu trạng thái đèn là OFF
     Serial.println("Led Turned OFF");
     digitalWrite(LED_BUILTIN, HIGH); // make bultin led OFF
     digitalWrite(led, LOW); // make external led OFF
   } else {
     Serial.println("Wrong Credential! Please send ON/OFF");
   }
 }

Trong phần code này mình đã note rất chi tiết các bạn có thắc mắc vui lòng để lại bình luận để được giải đáp.

0 Comments

Để lại một bình luận