Tổng hợp những câu hỏi cần thiết và quan trọng của môn Thiết kế hệ thống nhúng (KMA). Tài liệu này giúp các bạn sinh viên có thể vượt qua các bài kiểm tra giữa kỳ, cuối kỳ và đạt kết quả cao nhất. Xin cảm ơn các bạn đã xem và tải tài liệu.
Trang 1ĐO NHIỆT ĐỘ, ĐỘ ẨM GỬI ĐẾN BLYNK VÀ ĐIỀU KHIỂN
ĐÈN LED TỪ XA BẰNG ĐIỀU KHIỂN BLYNK
Link Wokwi: https://wokwi.com/projects/381177565320726529
Trên ứng dụng Blynk tạo một đèn LED và một switch để điều khiển đèn LED Một màn hình hiển thị nhiệt độ và một màn hình hiển thị độ ẩm lấy dữ liệu từ wokwi.
Một chân của đèn LED được nối với chân esp:21, chân còn lại nối với GND của ESP32.
Cảm biến DHT22: Chân dht1:VCC nối với esp:D0, chân dht1:SDA nối với esp:15, chân dht1:GND nối với GND của ESP32.
Hình ảnh đo cảm biến nhiệt độ và độ ẩm, đèn tắt
Trang 2Hình ảnh đo cảm biến nhiệt độ và độ ẩm, đèn bật
CODE:
#define BLYNK_TEMPLATE_ID "TMPL6ifmjvOG5" //Định nghĩa mã mẫ&u cu)a Blynk
Mã mẫ&u này là một chuỗ&i đặc biệt để) liển kể7t với ứng dụng Blynk
#define BLYNK_TEMPLATE_NAME "ThinkIOT" //Đặt tển cho mẫ&u Blynk
#define BLYNK_AUTH_TOKEN "6MVpEiwHcI0GgtAyMldbYGWS93bjQYpf" //Xác định token xác thực Blynk cho kể7t nỗ7i với ứng dụng Blynk
//Nhúng thư viện DHTesp cho ca)m biể7n DHT22 và thư viện Blynk cho kể7t nỗ7i với ứng dụng Blynk thỗng qua ESP32
#include <DHTesp.h>
#include <BlynkSimpleEsp32.h>
#define DHTPIN 15 //Led nỗ7i chẫn 15
#define LED_PIN 21 //Ca)m biể7n nỗ7i chẫn 21
DHTesp dht; //Tạo một đỗ7i tượng cu)a lớp DHTesp để) sư) dụng cho ca)m biể7n DHT22
char auth[] = BLYNK_AUTH_TOKEN; //Đặt token xác thực Blynk vào một ma)ng
ký tự
char ssid[] = "Wokwi-GUEST"; //Đặt tển mạng WiFi mà ESP32 sẽ kể7t nỗ7i char pass[] = ""; //Đặt mật khẫ)u mạng WiFi Trong trường hợp này, mật khẫ)u được đặt là chuỗ&i rỗ&ng
BlynkTimer timer; //Tạo một đỗ7i tượng timer để) lển lịch cho việc gư)i dữ liệu từ ca)m biể7n DHT
void setup() {
Trang 3pinMode(LED_PIN, OUTPUT); //Thiể7t lập chẫn LED_PIN là chể7 độ OUTPUT để) điểgu khiể)n đèn LED
Serial.begin(115200); //Bắ7t đẫgu giao tiể7p serial để) ghi thỗng tin debug
dht.setup(DHTPIN, DHTesp::DHT22); // IKhở)i tạo ca)m biể7n DHT
Blynk.begin(auth, ssid, pass); //Kể7t nỗ7i với ứng dụng Blynk sư) dụng token xác thực và thỗng tin mạng WiFi
timer.setInterval(2000L, sendDHTData); // Gư)i dữ liệu DHT cứ sau 2 giẫy
}
BLYNK_WRITE(V3) { //Hàm được gọi khi trạng thái nút trển ứng dụng Blynk thay đỗ)i
int buttonState = param.asInt(); //Đọc trạng thái cu)a nút từ tham sỗ7
if (buttonState == 1) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
void sendDHTData() { //Hàm gư)i dữ liệu từ ca)m biể7n DHT22 để7n ứng dụng Blynk
//Đọc dữ liệu nhiệt độ và độ ẫ)m từ ca)m biể7n
float t = dht.getTemperature();
float h = dht.getHumidity();
if (isnan(h) || isnan(t)) {
Serial.println("Khỗng đọc được từ ca)m biể7n DHT!");
return;
}
//Gư)i dữ liệu để7n ứng dụng Blynk
Blynk.virtualWrite(V0, t);
Blynk.virtualWrite(V1, h);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("%\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" °C");
}
void loop() {
Blynk.run(); //Xư) lý tẫ7t ca) sự kiện Blynk
timer.run(); //Kiể)m tra và chạy các sự kiện đã được lển lịch trong timer
Trang 4}