Module relay 4 kênh

Một phần của tài liệu (LUẬN văn THẠC sĩ) thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( google home) (Trang 27)

CHƯƠNG 3 : Thiết bị và giải pháp công nghệ

3.3. Module relay 4 kênh

Relay là thiết bị đóng cắt cơ bản, nó được sử dụng rất nhiều trong cuộc sống và trong các thiết bị điện tử.

Cấu tạo Relay gồm 2 phần:

- Cuộn hút: Tạo ra năng lượng từ trường để hút tiếp điểm về phía mình. Tùy vào

điện áp làm việc người ta chia Relay ra: + DC: 5V, 12V, 24V

+ AC: 110V. 220V

Hình 3.5: Cấu tạo Relay

- Cặp tiếp điểm: Khi khơng có từ trường (không cấp điện cho cuôn dây).

Tiếp điểm 1 được tiếp xúc với 2 nhờ lực của lị xo. Tiếp điểm thường đóng, khi có năng lượng từ trường thì tiếp điểm 1 bị hút chuyển sang 3. Trong Relay có thể có 1 cặp tiếp điểm, 2 cặp tiếp điểm hoặc nhiều hơn.

Relay 4 Kênh 5V gồm 4 rơ le hoạt động tại điện áp 5VDC, chịu được hiệu điện thế lên đến 250VAC 10A. Relay 4 kênh 5V được thiết kế chắc chắn, khả

năng cách điện tốt. Trên module đã có sẵn mạch kích relay sử dụng transistor và IC cách ly quang giúp cách ly hoàn toàn mạch điều khiển (vi điều khiển) với rơ le bảo đảm vi điều khiển hoạt động ổn định. Có sẵn header rất tiện dụng khi kết nối với vi điều khiển.

Relay 4 kênh sử dụng chân kích mức Thấp (0V), khi có tín hiệu 0V vào chân IN thì relay sẽ nhảy qua thường hở của Relay. Ứng dụng dùng với relay module khá nhiều bao gồm cả điện DC hay AC.

Hình 3.6: Module relay 4 kênh

Thông số kỹ thuật:

- Sử dụng điện áp ni 5VDC.

- 4 Relay đóng ngắt ở điện thế kích bằng 0V nên có thể sử dụng cho cả tín hiệu 5V hay 3v3 (cần cấp nguồn ngồi), mỗi Relay tiêu thụ dịng khoảng 80mA. - Điện thế đóng ngắt tối đa: AC250V – 10A hoặc DC30V – 10A.

3.4. Đèn led 3 W

Với độ sáng tương đương, LED Bulb chỉ cần sử dụng công suất bằng một nửa đèn Compact, nhưng tuổi thọ lại cao gấp 5 lần so với đèn Compact.

Ánh sáng chiếu sáng trực tiếp, cho ánh sáng thẳng, hiệu suất sáng cao (>= 90lm/w)

Mặt trước đèn được làm bằng nhựa PC nên ánh sáng tản đều, chống chói lóa;

Thân đèn được thiết kế bằng nhựa PBT có khả năng chống cháy và chịu nhiệt cao

Các chỉ số quang thông và hiệu năng của đèn đều vượt trội so với đèn truyền thống.

Kiểu dáng đa dạng về kiểu dáng và màu sắc trắng, vàng, đỏ, xanh dương, xanh lá.

Hình 3.7: Bóng đèn led 3W

LED có hiệu suất phát sáng cao hơn bóng đèn compact, sợi tóc. Kích thước nhỏ gọn, phù hợp với từng vị trí, nhu cầu sử dụng. Không gây độc hại, rất thân thiện với môi trường. Thiết kế nhỏ gọn, phù hợp với các chóa lon compact cũ.

Hình 3.8: Bảng thơng số kỹ thuật đèn led 3W 3.5. Phần mềm IDE

Đây là phần mềm dùng để lập trình nạp code vơ kit NodeMCU Lua ESP8266

Cấu trúc một chương trình trong phần mềm IDE: Phần 1: Khai báo biến

Đây là phần khai báo kiểu biến, tên các biến, định nghĩa các chân trên board một số kiểu khai báo biến thông dụng:

* #define

Nghĩa của từ define là định nghĩa, hàm #define có tác dụng định nghĩa, hay cịn gọi là gán, tức là gán một chân, một ngõ ra nào đó với 1 cái tên.

Ví dụ #define led 13

Chú ý: sau #define thì khơng có dấu “,” (dấy phẩy)

*Khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…

Các chúng ta có thể tham khảo thêm các kiểu biến cũng như công dụng tại arduino.cc

Phần 2: Thiết lập (void setup())

{ ….. }

Cấu trúc của nó có dấu ngoặc nhọn ở đầu và ở cuối, nếu thiếu phần này khi kiểm tra chương trình thì chương trình sẽ báo lỗi.

Phần này dùng để thiết lập các tốc độ truyền dữ liệu, kiểu chân là chân ra hay chân vào. Trong đó:

Serial.begin(9600);

Dùng để truyền dữ liệu từ board Arduino lên

máy tính. pinMode(biến, kiểu vào hoặc ra); Ví

dụ: Dùng để xác định kiểu chân là vào hay ra

pinMode(ChanDO, INPUT); Phần 3: Vòng lặp

Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các nhiệm vụ mà chúng ta mong muốn, thường bắt đầu bằng:

void loop() {

……………. }

Một số câu lệnh, cấu trúc thường gặp:

Bảng 2.1 Một số câu lệnh thường gặp

Ký hiệu, câu lệnh Ý nghĩa

//

Dấu // dùng để giải thích, khi nội dung giải thích nằm trên 1 dịng, khi

kiểm tra chương trình thì phần kiểm tra sẽ bỏ qua phần này, không kiểm

/*

Ký hiệu này cũng dùng để giải thích, nhưng giải thích dành cho 1 đoạn, tức

…. có thể xuống dịng được

*/

#define biến chân

Define nghĩa là định nghĩa, xác định. Câu lệnh này nhằm gán tên 1 biến

vào 1 chân nào đó. Ví dụ #define led 13 digitalWrite(chân,

Dùng để tắt, mở 1 chân ra. Cú pháp của nó là digitalWrite(chân,trạng thái

trạng thái);

chân);. Ở đây trạng thái chân có thể là HIGH hoặc LOW. Ví dụ:

digital(led,HIGH); , hoặc digital(led,LOW); . Chú dấu chấm phẩy đằng sau

câu lệnh. analogWrite(chân,

Có ý nghĩa dùng để băm xung (PWM), thường dùng để điều khiển tốc độ

giá trị);

động cơ, độ sáng led,..

digitalRead(chân);

Read nghĩa là đọc, lệnh này dùng để đọc giá trị digital tại chân muốn đọc

analogRead(chân) ;

Read nghĩa là đọc, lệnh này dùng để đọc giá trị analog tại chân muốn đọc

delay(thời gian);

Delay nghĩa là chờ, trì hỗn, duy trì. Lệnh này dùng để duy trì trạng thái

đang thực hiện chờ một thời gian. Thời gian ở đây được tính bằng mili

giây, 1 giây bằng 1 ngàn mili giây.

thứ so

{ sánh. Ví dụ trong bài về cảm biến độ ẩm đất (phần 5) thì: Các câu lệnh

if (giatriAnalog>500) //nếu giá trị đọc được của biến giatriAnalog lớn hơn

} 500

else () {

{

digitalWrite(Led,HIGH); //Ra lệnh cho led sáng

Các câu lệnh delay(1000);//chờ 1s

} }

else nghĩa là ngược lại

CHƯƠNG 4

T

THHIIẾẾTT KKẾẾ MMẠẠCCH H ĐĐIIỀỀUU KKHIHIỂỂNN TTHHIIẾẾTT BBỊỊ ĐĐIỆIỆNN BBẰẰNNGG

G GIIỌỌNNG G NNÓÓI I VVỚIỚI GGOOOOGGLELE AASSSSISISTTAANNT T 4 4..11.. SSơơ đđồồ kkhhốốii Hình 4.1: Sơ đồ khối hệ thống Khối nguồn:

Đây là khối để cung cấp điện cho tồn bộ hệ thống điện. Gồm có hai nguồn:

Nguồn cho mạch điều khiển: tạo ra dòng điện và điện thế ổn định cung cấp an tồn cho cả mạch. Ở đây có thể dùng nguồn 6V-24V

Nguồn cho các thiết bị điện: Dùng điện 220V Khối xử lí trung tâm NodeMCU Lua Esp8266:

Khối xử lí trung tâm Node MCU Esp8266

Nguồn Blynk Relay Công Tắc Cảm Ứng Thiết Bị Điện Google Assistant

Khối xử lí trung tâm NodeMCU Lua Esp8266 gồm Chip WiFi ESP8266EX bên trong Module ESP-12E để dễ dàng kết nối WiFi. Dùng để xử lý các tín hiệu điều khiển các thiết bị điện từ Google Assistant, Blynk cũng như cơng tắc cảm ứng

Khối Relay:

Dùng để đóng ngắt các thiết bị điện trong nhà. Ở mơ hình này tơi sử dụng module relay 4 kênh có thể đóng ngắt được bốn thiết bị trong nhà

Khối công tắc cảm ứng:

Dùng để điều khiển bằng tay các thiết bị trong nhà khi không sử dụng điều khiển bằng giọng nói với Google Assistant và Blynk

Khối Blynk:

Đây là sever để điều khiển các thiết bị điện trong nhà qua wifi. Ta có thể điều khiển các thiết bị điện trong nhà qua App Blynk trên SmartPhone trên điện thoại cũng như Web Blynk trên máy vi tính.

Khối Google Assistant:

Đây là trợ lý ảo của Google để điều khiển các thiết bị điện trong nhà bằng giọng nói. Ở đây ta có thể điều khiển bằng giọng nói qua phầm mềm Google Assistant qua SmartPhone, loa thông minh Google Home Mini,…

Khối thiết bị điện:

Bao gồm các thiết bị điện trong nhà được kết nối để điều khiển được bằng giọng nói với trợ lý ảo Google Assistant, cơng tắc cảm ứng cũng như Blynk. Các thiết bị điện có thể là: Đèn, quạt, máy bơm, máy lạnh, …

Với đề tài này tôi sử dụng đèn công suất nhỏ để mô phỏng các thiết bị điện trong nhà: đèn phòng khác

4.2. Sơ đồ kết nối

Phần cứng của mơ hình điều khiển thiết bị điện trong nhà qua Wifi được kết nối với nhau theo sơ dưới đây. Với khối xử lý trung tâm là kít NodeMCU Lua ESP 8266

Hình 4.2: Sơ đồ kết nối 4.3. Mạch thực tế

Hình 4.4. Giao diện mặt sau của hệ thống

4.4. Lưu đồ giải thuật HIGHT H LOW

Hình 4.6: Lưu đồ giải thuật

Bắt Đầu

Nhận tín hiệu điều khiển từ Google Assistant/Blynk/Công Tắc Cảm Ứng Tắt thiết bị điện Tín hiệu điều khiển bật tắt thiết bị Bật thiết bị điện

Giám sát trên Blynk và công tắc cảm ứng

Nguyên lý hoạt động của hệ thống:

Điều khiển bằng giọng nói với Google Assistant:

- Khi ta nói một câu lệnh trên Google Assistant đã được cài đặt sẵn để bật tắt một thiết bị thì Google Assiatant sẽ nhận lệnh sau đó thơng qua IFTTT truyền xuống Blynk sau đó từ Blynk truyền lệnh xuống NodeMCU Lua ESP8266. Tại đây NodeMCU Lua ESP8266 sẽ xử lý dữ liệu để kích relay tương ứng với các mức logic để bật tắt thiết bị theo câu lệnh đã cài đặt trên Google Assistant

Điều khiển bằng Blynk:

- Khi có tín hiệu điều khiển từ app Blynk về khối trung tâm thì NodeMCU Lua ESP8266 sẽ xử lý dữ liệu nhận được để kích các relay tương ứng để điều khiển thiết bị điện cũng như đồng bộ trạng thái lên công tắc cảm ứng

Điều khiẻn bằng cơng tắc cảm ứng:

- Khi có tín hiệu điều khiển từ công tắc cảm ứng về khối trung tâm thì NodeMCU Lua ESP8266 sẽ xử lý dữ liệu nhận được để kích các relay tương ứng để điều khiển thiết bị điện cũng như đồng bộ trạng thái lên app Blynk

CHƯƠNG 5

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI

5.1. Kết luận

5.1.1. Những mặt đã làm được

- Mạch điện với các module nhỏ trên mạch được thiết kế, thi cơng hồn chỉnh và đã được thử nghiệm nhiều lần và đã thoạt động ổn định trong thực tế

- Hệ thống đã điều khiển được bằng giọng nói với Google Assistant

- Xây dựng được mơ hình để ứng dụng điều khiển các thiết bị điện trong nhà bằng công tắc cảm ứng

- Hệ thống có thể điều khiển được thiết bị điện từ xa thông qua wifi bằng phần mềm Blynk

- Đã đồng bộ được giữa điều khiển thiết bị điện trong nhà bằng công tắc cảm ứng với app Blynk giúp chúng ta có thể giám sát các thiết bị trong nhà thông qua giao diện của Blynk

5.1.2. Những hạn chế, tồn tại

- Điều khiển thiết bị bằng giọng nói vẫn cịn chậm

- Điều khiển thiết bị qua cơng tắc cảm ứng cịn hơn chậm

- Mạch điều khiển vẫn chưa có thể sử dụng được nguồn 220 V trực tiếp mà vẫn phài sử dụng nguồn riêng để cung cấp cho mạch

- Đồng bộ trạng thái giữa công tắc cảm ứng và phần mềm Blynk còn chậm 5.2. Hướng phát triển đề tài

- Khắc phục các hạn chế, tồn tại của hệ thống

- Tự phát triển app Android, IOS để điều khiển thiết bị qua wifi

- Tích hợp mạch công tắc cảm ứng với ESP 8266 để tạo thành mạch cơng tắc thơng minh có thể đồng bộ vơ các hệ sinh thái Smart Home hiện có trên thị trường

TÀI LIỆU THAM KHẢO

[1]. Giáo trình Arduino cho người mới bắt đầu, Cộng đồng Arduino Việt Nam [2]. Giáo trình Internet Of Thing with ESP 8266

[3]. Trang web: Arduino.vn

PHỤ LỤC Code Chương Trình Code Chương Trình

#define BLYNK_PRINT Serial #include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

// You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon).

char auth[] = "…"; Token Blynk // Your WiFi credentials.

// Set password to "" for open networks. char ssid[] = "…"; // Wifi name

char pass[] = "…"; // pass

// Set your LED and physical button pins here const int ledPin1 = 0;

const int ledPin2 = 4; const int ledPin3 = 5; const int ledPin4 = 16; const int btnPin1 = 15; const int btnPin2 = 13; const int btnPin3 = 12; const int btnPin4 = 14; BlynkTimer timer;

int led1State = LOW; int btn1State = HIGH; int led2State = LOW; int btn2State = HIGH; int led3State = LOW; int btn3State = HIGH; int led4State = LOW; int btn4State = HIGH;

// Every time we connect to the cloud... BLYNK_CONNECTED() {

// Request the latest state from the server Blynk.syncVirtual(V0);

Blynk.syncVirtual(V4); Blynk.syncVirtual(V5); Blynk.syncVirtual(V16);

// Alternatively, you could override server state using: //Blynk.virtualWrite(V12, led1State);

//Blynk.virtualWrite(V13, led2State); //Blynk.virtualWrite(V14, led3State); //Blynk.virtualWrite(V15, led4State); }

// When App button is pushed - switch the state BLYNK_WRITE(V0) { led1State = param.asInt(); digitalWrite(ledPin1, led1State); } BLYNK_WRITE(V4) { led2State = param.asInt(); digitalWrite(ledPin2, led2State); } BLYNK_WRITE(V5) { led3State = param.asInt(); digitalWrite(ledPin3, led3State); } BLYNK_WRITE(V16) { led4State = param.asInt(); digitalWrite(ledPin4, led4State); } BLYNK_WRITE(V10) { led1State = param.asInt(); digitalWrite(ledPin1, led1State); led2State = param.asInt(); digitalWrite(ledPin2, led2State); led3State = param.asInt(); digitalWrite(ledPin3, led3State); led4State = param.asInt(); digitalWrite(ledPin4, led4State); }

void checkPhysicalButton() {

if (digitalRead(btnPin1) == LOW) {

// btn1State is used to avoid sequential toggles if (btn1State != LOW) {

// Toggle LED state led1State = !led1State;

digitalWrite(ledPin1, led1State); // Update Button Widget

Blynk.virtualWrite(V0, led1State); } btn1State = LOW; } else { btn1State = HIGH; } if (digitalRead(btnPin2) == LOW) {

// btnState is used to avoid sequential toggles if (btn2State != LOW) {

// Toggle LED state led2State = !led2State;

digitalWrite(ledPin2, led2State); // Update Button Widget

Blynk.virtualWrite(V4, led2State); }

btn2State = LOW; } else {

btn2State = HIGH; }

if (digitalRead(btnPin3) == LOW) {

// btnState is used to avoid sequential toggles if (btn3State != LOW) {

// Toggle LED state led3State = !led3State;

digitalWrite(ledPin3, led3State); // Update Button Widget

Blynk.virtualWrite(V5, led3State); } btn3State = LOW; } else { btn3State = HIGH; } if (digitalRead(btnPin4) == LOW) {

// btnState is used to avoid sequential toggles if (btn4State != LOW) {

// Toggle LED state led4State = !led4State;

// Update Button Widget Blynk.virtualWrite(V16, led4State); } btn4State = LOW; } else { btn4State = HIGH; } } void setup() { // Debug console Serial.begin(9600);

Blynk.begin(auth, ssid, pass); // You can also specify server:

//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);

//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442); pinMode(ledPin1, OUTPUT); pinMode(btnPin1, INPUT_PULLUP); digitalWrite(ledPin1, led1State); pinMode(ledPin2, OUTPUT); pinMode(btnPin2, INPUT_PULLUP); digitalWrite(ledPin2, led2State); pinMode(ledPin3, OUTPUT); pinMode(btnPin3, INPUT_PULLUP);

digitalWrite(ledPin3, led3State); pinMode(ledPin4, OUTPUT);

pinMode(btnPin4, INPUT_PULLUP); digitalWrite(ledPin4, led4State);

// Setup a function to be called every 100 ms timer.setInterval(500L, checkPhysicalButton); } void loop() { Blynk.run(); timer.run(); }

Một phần của tài liệu (LUẬN văn THẠC sĩ) thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( google home) (Trang 27)