IoT - Arduino, NodeMCU ESP8266

Đ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...

Written by AnonyHome
· 3 min read >

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 AnonyHome sẽ chỉ tập trung vào Google Firebase. Trong bài viết này AnonyHome 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.

  • NodeMCU ESP8266 => Link mua shopee
  • Đèn LED 5mm màu bất kỳ => Link mua shopee
  • Breadboard => Link mua shopee
  • Điện trở 220 ohm => Link mua shopee

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 IDE

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<ESP8266WiFi.h>                        // esp8266 library
 #include<FirebaseArduino.h>                    // 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.

Xem thêm: DHT11 – Cảm biến nhiệt độ – độ ẩm với NodeMCU ESP8266

Written by AnonyHome
Fullstack Developer ! Profile

Leave a Reply

Your email address will not be published. Required fields are marked *

ĐĂNG KÝ KHÓA HỌC JAVA CƠ BẢN
Đăng ký tham gia khóa học Java cơ bản Online. Học lập trình cùng AnonyHome
HỢP TÁC CÙNG CHÚNG TÔI
Chúng tôi nhận thực hiện các dự án:
  1. Phát triển ứng dụng Mobile
  2. Xây dựng website
  3. Đồ án sinh viên, luận văn thạc sĩ
  4. ..v.v
Mọi dự án đều được xây dựng với chi phí hợp lý.
Tham gia group Facebook: click here
Hợp tác phát triển các nền tảng ứng dụng
Chúng tôi nhận các dự án:
  1. Phát triển ứng dụng Mobile
  2. Xây dựng website
  3. Đồ án sinh viên, luận văn thạc sĩ