You are on page 1of 9

Project 2: Smart Button

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 )

Code cho Arduino

/*

DEVZONE – Admin Phạm Trọng Phụng BK K63

*/
#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();

int relay1State = LOW;


int pushButton1State = HIGH;

int relay2State = LOW;


int pushButton2State = HIGH;

int relay3State = LOW;


int pushButton3State = HIGH;

int relay4State = LOW;


int pushButton4State = HIGH;

#define AUTH " điền mã token vào “ // nhập mã token


#define WIFI_SSID " /**********/ " //nhập tên wifi
#define WIFI_PASS “ /**********/ " //nhập pass wifi

#define SERVER "blynk-cloud.com " // tên server chủ của app blynk
#define PORT 8442

#define RELAY_PIN_1 12 //D6


#define RELAY_PIN_2 16 //D0
#define RELAY_PIN_3 4 //D2
#define RELAY_PIN_4 5 //D1

#define PUSH_BUTTON_1 2 //D4


#define PUSH_BUTTON_2 14 //D5
#define PUSH_BUTTON_3 13 //D7
#define PUSH_BUTTON_4 1 //TX

#define VPIN_BUTTON_1 V12


#define VPIN_BUTTON_2 V13
#define VPIN_BUTTON_3 V14
#define VPIN_BUTTON_4 V15

#define OTA_HOSTNAME "Home_Automation"


BLYNK_CONNECTED() {

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

 Đôi điều về Blynk và cách sử dụng


Blynk là một ứng dụng chạy trên nền tảng iOS và Android để điều
khiển và giám sát thiết bị thông qua internet. Blynk không bị ràng
buộc với những phần cứng cụ thể nào cả, thay vào đó, nó hỗ trợ
phần cứng cho bạn lựa chọn như Arduino, Raspberry Pi, ESP8266
và nhiều module phần cứng phổ biến khác.
Sau khi tải app Blynk các bạn mở app lên vào làm theo các bước sau:
1.Các bạn có thể tạo tài khoản hoặc dùng tài khoản Facebook.
2.Tạo một project, đây được hiểu giống như là một ứng dụng.
3. Điền tên Project và chọn Board phần cứng (Các bạn có thể chọn
NodeMCU hoặc ESP8266).

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

You might also like