Chia sẻ Mạch ESP8266 điều khiển cửa cuốn thông qua Blynk

Cách đây 10 năm nhà mình bắt đầu dùng cửa cuốn để che chắn cửa gương, đồng thời đảm bảo an toàn. Vì lý do đơn giản là World Cup xong mấy đứa cay cú ném đá cửa nhà mình (trong khi cả nhà mình không làm gì kể cả xem World Cup). Có điều thời đó còn dùng RF loại mã nhảy và điều bất tiện tất nhiên là gia đình 4 người nhưng chỉ có một bộ RF này. Mình có hỏi bên bán thì loại này họ bán 500k một bộ, khá là đắt :(. Mặt khác bộ RF này cũng khá là dễ hư nên mình nghĩ tới lúc tiễn nó về miền cực lạc luôn cho rồi. Vậy nên hôm nay mình sẽ làm bộ điều khiển cửa cuốn thông qua Blynk các bạn nhé!



Phân tích vấn đề
Cửa cuốn lúc lắp đặt ở nhà mình đã có các nút nhấn sẵn: lên, xuống và dừng lại. Bởi vậy mình sẽ đặt hộp điều khiển bên cạnh hộp nút nhấn với mục đích là khi điều khiển trên Blynk, chân NO của relay sẽ đóng làm thông mạch cho nút nhấn (kiểu như có một cọng dây nối tắt hai đầu của nút nhấn vậy :D). Mình làm như vậy mà không kích trực tiếp vào IO của bộ điều khiển cửa cuốn bởi vì mình sợ ảnh hưởng tới nó rồi không có tiền mà đền đâu :)).

Lưu ý: Chỉ thao tác cửa cuốn khi các bạn có mặt ở hiện trường hoặc có camera theo dõi. Điều khiển từ xa rất nguy hiểm nếu nhà có em nhỏ hoặc cửa cuốn có vấn đề như bị mắc cứng vật thể lạ…

Chuẩn bị
ESP8266 NodeMCU x1

Nguồn 220VAC sang 5VDC HLK-PM01 x1

Bộ relay 4 kênh x1

Board mạch xanh để hàn dây loại x1 (kích thước các bạn tự chọn)

Hộp chống cháy x1 (mình làm cây nhà lá vườn thôi, các bạn có thể thay hộp khác)

Công tắc ngắt nguồn nuôi 220VAC cho board mạch




Mình tính sơ qua tổng thiệt hại tối đa tầm 200k đấy các bạn, rẻ quá phải không?

Kết nối dây
Nguồn nuôi cho ESP8266 và relay
Mình sử dụng bộ nguồn HLK-PM01 để cấp nguồn cho toàn bộ hệ thống. Vì sao mình chọn nó, đơn giản là nó ngon và bền theo như quảng cáo :D.

Đầu vào nguồn là điện 220VAC, mình sẽ kết nối nó sau cùng.

Đầu ra bao gồm V+ và V-. V+ sẽ chia ra hai đầu kết nối đến chân Vin của ESP8266 và chân VCC của relay, V- kết nối đến GND của ESP8266 và GND của relay.

Kết nối dây điều khiển giữa ESP8266 và relay




Hình bên là ESP8266 đang sử dụng các chân GPIO kết nối đến các chân IN1, IN2, IN3, IN4 của relay.

Mình chỉ sử dụng 3 kênh của reay nên chỉ dùng các chân GPIO 4, 5, 14 kết nối đến IN1, IN2, IN3.

Kết nối dây giữa relay và hộp nút nhấn
Vì nút nhấn của mình là thường mở (NO) nên relay của mình cũng sẽ sử dụng tiếp điểm NO




Ứng với bên hình tại 3 đầu terminal K1, vị trí 1, 2, 3 ứng với từ phải sang trái. Tiếp điểm NO sẽ là terminal vị trí 2 và 3.

Vì vậy ứng với relay K1 nối với nút lên, mình sẽ nối vị trí terminal thứ 2 với một đầu của nút nhấn, vị trí terminal thứ 3 nối với một đầu còn lại.

Tương tự ứng với K2 nối với nút dừng lại, K3 nối với nút xuống.



Hình bên là 6 đầu dây tương tứng với 3 relay chạy qua, chia ra 2 bên ứng với 3 nút nhấn. Ez thôi phải không các bạn?

Code
Phía Blynk


Giao diện Blynk mình thiết kế như vậy, V0 là dừng lại, V2 là đóng cửa, V1 là mở cửa.

Ngoài ra mình có để thêm khung Terminal nhập mật khẩu. Cái này chưa phải là bảo mật, chỉ có chức năng kích hoạt điều khiển cửa cuốn trong vòng 2 phút, hết 2 phút thì phải nhập mật khẩu lại. Mình làm cái này với mục đích là lỡ các em nhỏ mượn điện thoại chơi hoặc ai đó vô tình thao tác cửa cuốn nhưng lại không có ở hiện trường thì khá nguy hiểm.

Phía Arduino
Mình sử dụng Arduino IDE để nạp code cho ESP8266

Khai báo thư viện
#include <ESP8266mDNS.h>
#include <WiFiClient.h>
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <BlynkSimpleEsp8266.h>

Không hẳn dùng hết đâu mà kệ cứ để vậy đi :D.

Khai báo biến

String password = “”;
String income = “”;
String passcompare = “”;
int relay[] = {4, 5, 14};
int relay_state[] = {0, 0, 0};
unsigned long repeat = 0;

Ở chỗ này các bạn đổi password thành password muốn nhập ở Blynk nha.

Thiết lập các chân Virtual Pin Blynk

BLYNK_WRITE(V0) {
relay_state[0] = param.asInt();
if (relay_state[0] == 0)
{
if (password.equals(passcompare))
{
digitalWrite(relay[0], relay_state[0]);
}
else
{
terminal.println(“Hay nhap mat khau”);
terminal.flush();
}
}
else
{
digitalWrite(relay[0], relay_state[0]);
}

}
BLYNK_WRITE(V1) {
relay_state[1] = param.asInt();
if (relay_state[1] == 0)
{
if (password.equals(passcompare))
{
digitalWrite(relay[1], relay_state[1]);
}
else
{
terminal.println(“Hay nhap mat khau”);
terminal.flush();
}
}
else
{
digitalWrite(relay[1], relay_state[1]);
}
}
BLYNK_WRITE(V2) {
relay_state[2] = param.asInt();
if (relay_state[2] == 0)
{
if (password.equals(passcompare))
{
digitalWrite(relay[2], relay_state[2]);
}
else
{
terminal.println(“Hay nhap mat khau”);
terminal.flush();
}
}
else
{
digitalWrite(relay[2], relay_state[2]);
}
}
BLYNK_WRITE(V3) {
income = param.asStr();
income.trim();
Serial.println(income);
if(String(password) == param.asStr())
{
terminal.println(“Dung mat khau. OK!”);
terminal.println(“Thoi gian dung mat khau la 2 phut”);
passcompare = password;
repeat = millis();
}
else
{
terminal.println(“Sai mat khau. Not OK!”);
passcompare = “”;
}
terminal.flush();
}



Khai báo hàm Setup

Serial.begin(115200);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(14, OUTPUT);
digitalWrite(4, HIGH);
digitalWrite(14, HIGH);
digitalWrite(5, HIGH);
WiFi.begin(“”, “”);
int c = 0;
while (WiFi.status() != WL_CONNECTED) {
c++;
delay(300);
Serial.print(“.”);
if (c >= 20)
{
break;

}
}
if (WiFi.status() == WL_CONNECTED)
{
Blynk.begin(“”, “”, “”);
Blynk.syncAll();
Serial.println(“ket noi”);
}
else
{
Serial.println(“khong the ket noi”);
}
]

Ở hàm này các bạn tự thêm mật khẩu wifi, password và mã auth token của blynk nhé.

Hàm chạy void loop()


void loop() {
if (Blynk.connected())
{
Blynk.run();
}
}


Thành quả
Sau khi nạp code xong, các bạn thử thành quả của mình nhé, dưới đây là video mình điều khiển cửa cuốn hoạt động:


Kết luận
Vậy là mình hoàn thành xong bộ điều khiển cửa cuốn với chi phí khá thấp, đồng thời rất tiện lợi cho mọi người trong nhà vì ai giờ cũng dùng điện thoại cả rồi. Project này vẫn có một số hạn chế:
– Phụ thuộc vào wifi nên nếu mất mạng thì đứng ngoài chơi với dế :)). Nên các bạn có thể backup thêm khi rớt mạng thì esp8266 chuyển qua phát server để điện thoại truy cập.
– Thiếu code thay đổi wifi khi cần thiết. Các bạn có thể sử dụng thư viện wifi manager. Riêng mình thì mình tự code webserver riêng cho nhẹ nợ :D.
– Thiếu hàm reconnect để kết nối lại wifi. Các bạn có thể tìm hiểu thêm.
Với dự án này thì các bạn có thể làm thêm nhiều thứ hay ho khác như điều khiển thiết bị điện trong nhà kiểu: blynk điều khiển ổ cắm, công tắc… Mình cũng đã và đang làm một vài thiết bị trong nhà mình rồi ví dụ như:


Mình thiết kế mạch này để điều khiển thiết bị 220VAC trong nhà, phù hợp với công tắc âm tường luôn các bạn nhé :D.

Mọi chi tiết thắc hãy liên hệ mình

( Nguyên lý + Code chuẩn) Link Mediafire
Khi nhấn nút "Tải Về Máy", bạn sẽ vào trang quảng cáo, vui lòng chờ 5 giây. Nút  hiện ra ở góc phải phía trên, nhấn vào để đến trang download

Theo IOTPROJECT
------------------------------------------------------------------------------------
DV1 - NHẬN VẼ MẠCH - LẬP TRÌNH 8051/ARDUINO/STM LẤY TRONG NGÀY 



-----------------------------------------------------------------------------------

DV2 - Mua linh kiện về làm mạch nhanh - Miễn phí Ship


DV3 - Kênh youtube chia sẻ kiến thức điện tử thực hành ngay

DV4 - Kênh cộng đồng Facebook Điện Tử ChipKool



CÔNG TY ECHIPKOOL - UY TÍN - CHẤT LƯỢNG - NHANH CHÓNG - BẢO MẬT

Subscribe for our Newsletter

RE-IMAGINING THE WAY
Back to top