Professional Documents
Culture Documents
Một trong những lĩnh vực công nghệ hot nhất hiện nay đó là hệ thống
nhúng và IoT, ứng dụng điển hinh của nó mà chắc hẳn ai cũng biết hoặc
nghe tới đó Smart Home. Smart Home là một ngôi nhà/căn hộ được trang bị
hệ thống tự động tiên tiến dành cho điều khiển đèn chiếu sáng, nhiệt độ,
truyền thông đa phương tiện, an ninh, rèm cửa, cửa và nhiều tính năng khác
nhằm mục đích làm cho cuộc sống ngày càng tiện nghi, an toàn và góp phần
sử dụng hợp lý các nguồn tài nguyên, chúng sử dụng các thiết bị kết nối
Internet để có thể quản lý điều khiển và giám sát các thiết bị, hệ thống từ xa
như ánh sáng, nhiệt độ,….Hôm nay DEV Zone chúng mình sẽ hướng dẫn
các bạn làm một trong những thiết bị SmartHome thông dụng đó là bộ công
tắc điều khiển thiết bị thông minh.
Chuẩn bị
1 ESP8266 hoặc ESP32( trong project này mình sử dụng ESP 8266
nhé )
1 Module relay loại 2 kênh hoặc 4 kênh đều được
Cảm ứng chạm điện dung TTP223
Ổ cắm điện, 1 ít dây dẫn, keo nến, keo 502 và 1 tấm Fomex A4 để
làm vỏ nhé
Sơ đồ lắp đặt
( Vì trong mô phỏng mình không tìm thấy TTP223 nên để tạm là button )
/*
*/
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <ESP8266mDNS.h> // For OTA with ESP8266
#include <WiFiUdp.h> // For OTA
#include <ArduinoOTA.h> // For OTA
BlynkTimer timer;
void checkPhysicalButton();
#define SERVER "blynk-cloud.com " // tên server chủ của app blynk
#define PORT 8442
Blynk.syncVirtual(VPIN_BUTTON_1);
Blynk.syncVirtual(VPIN_BUTTON_2);
Blynk.syncVirtual(VPIN_BUTTON_3);
Blynk.syncVirtual(VPIN_BUTTON_4);
BLYNK_WRITE(VPIN_BUTTON_1) {
relay1State = param.asInt();
digitalWrite(RELAY_PIN_1, relay1State);
}
BLYNK_WRITE(VPIN_BUTTON_2) {
relay2State = param.asInt();
digitalWrite(RELAY_PIN_2, relay2State);
}
BLYNK_WRITE(VPIN_BUTTON_3) {
relay3State = param.asInt();
digitalWrite(RELAY_PIN_3, relay3State);
}
BLYNK_WRITE(VPIN_BUTTON_4) {
relay4State = param.asInt();
digitalWrite(RELAY_PIN_4, relay4State);
}
void checkPhysicalButton()
{
if (digitalRead(PUSH_BUTTON_1) == LOW) {
if (pushButton1State != LOW) {
relay1State = !relay1State;
digitalWrite(RELAY_PIN_1, relay1State);
Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);
}
pushButton1State = LOW;
} else {
pushButton1State = HIGH;
}
if (digitalRead(PUSH_BUTTON_2) == LOW) {
if (pushButton2State != LOW) {
relay2State = !relay2State;
digitalWrite(RELAY_PIN_2, relay2State);
Blynk.virtualWrite(VPIN_BUTTON_2, relay2State);
}
pushButton2State = LOW;
} else {
pushButton2State = HIGH;
}
if (digitalRead(PUSH_BUTTON_3) == LOW) {
if (pushButton3State != LOW) {
relay3State = !relay3State;
digitalWrite(RELAY_PIN_3, relay3State);
Blynk.virtualWrite(VPIN_BUTTON_3, relay3State);
}
pushButton3State = LOW;
} else {
pushButton3State = HIGH;
}
if (digitalRead(PUSH_BUTTON_4) == LOW) {
if (pushButton4State != LOW) {
relay4State = !relay4State;
digitalWrite(RELAY_PIN_4, relay4State);
Blynk.virtualWrite(VPIN_BUTTON_4, relay4State);
}
pushButton4State = LOW;
} else {
pushButton4State = HIGH;
}
}
void setup()
{
Serial.begin(115200);
Blynk.begin(AUTH, WIFI_SSID, WIFI_PASS,"blynk-cloud.com", 8442);
ArduinoOTA.setHostname(OTA_HOSTNAME);
ArduinoOTA.begin();
pinMode(RELAY_PIN_1, OUTPUT);
pinMode(PUSH_BUTTON_1, INPUT_PULLUP);
digitalWrite(RELAY_PIN_1, relay1State);
pinMode(RELAY_PIN_2, OUTPUT);
pinMode(PUSH_BUTTON_2, INPUT_PULLUP);
digitalWrite(RELAY_PIN_2, relay2State);
pinMode(RELAY_PIN_3, OUTPUT);
pinMode(PUSH_BUTTON_3, INPUT_PULLUP);
digitalWrite(RELAY_PIN_3, relay3State);
pinMode(RELAY_PIN_4, OUTPUT);
pinMode(PUSH_BUTTON_4, INPUT_PULLUP);
digitalWrite(RELAY_PIN_4, relay4State);
timer.setInterval(500L, checkPhysicalButton);
}
void loop()
{
Blynk.run();
ArduinoOTA.handle();
timer.run();
}
Sau khi nạp code cho Arduino xong bạn cần tải app Blink để kết nối với ESP
của bạn
Giờ bạn có thể kết nối và sử dụng 1 thiết bị SmartHome do chính bạn tạo ra
Và đây là sản phẩm của mình
Ưu điểm của project này là dễ làm, dễ điều khiển, chức năng phong phú.
Ngoài ra, nó còn được đồng bộ giữa điều khiển bằng cảm biến chạm với điều
khiển qua app Blynk
Mỗi project, Blynk sẽ gửi cho bạn 1 mã Auth Token để nhập vào trong
code của Board mạch điều khiển NodeMCU, Các bạn có thể lựa chọn
nhiều chức năng như nút bấm, hẹn giờ, LCD… để đưa vào project của
mình.
Mỗi đối tượng các bạn chọn sẽ tốn energy
sử dụng Virtual Pin và nút bấm trên NodeMCU để điều khiển led và đồng
bộ hóa