Học Flutter cơ bản - Triển khai BLoC trong Flutter
Mon, 25 Nov 2024
Khám phá các công cụ và kỹ thuật hữu ich cho Lập trình viên
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.
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:
Đâ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 2 thư viện này các bạn có thể download tại link dưới đây:
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.
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.
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.
Mon, 25 Nov 2024
Sun, 24 Nov 2024
Sun, 24 Nov 2024
Để lại một bình luận