Khái quát chung về các thiết bị điện thông minh
Thiết bị điện thông minh là hệ thống các thiết bị điện và điện tử sử dụng năng lượng, được kết nối và tự động hóa nhờ công nghệ thông tin và truyền thông Trong ngôi nhà thông minh, người dùng có thể điều khiển các thiết bị này qua điện thoại hoặc máy tính bảng Các thiết bị cũng tương tác với các thông số môi trường, cho phép giám sát và điều khiển từ xa, mang lại sự an toàn, tiện nghi, linh hoạt, tiết kiệm và thể hiện đẳng cấp của người sử dụng.
Công nghệ điều khiển thiết bị điện không dây sử dụng bluetooth
Trong những năm gần đây, công nghệ truyền nhận dữ liệu không dây thông minh đã phát triển mạnh mẽ, đóng góp lớn vào việc phát triển các hệ thống điều khiển và giám sát từ xa, đặc biệt là các hệ thống thông minh Hiện nay, có nhiều công nghệ truyền nhận dữ liệu không dây như RF, Wifi, NFC và Bluetooth Trong số đó, Bluetooth là công nghệ đã được phát triển từ lâu và liên tục được cải tiến để nâng cao tốc độ và khả năng bảo mật Ứng dụng nổi bật của Bluetooth được thể hiện trong hình 1.1.
Hình 1.1 Ứng dụng điều khiển thiết bị điện không dây của bluetooth
SVTH: Trần Mạnh Hùng 2 GVHD: ThS Đinh Hải Lĩnh
GIỚI THIỆU CÁC LINH KIỆN VÀ PHẦN MỀM ỨNG DỤNG DÙNG TRONG BỘ ĐIỀU KHIỂN
Giới thiệu về Arduino
Arduino là một board mạch vi xử lý mở, cho phép xây dựng các ứng dụng tương tác hiệu quả với môi trường Phần cứng của Arduino dựa trên vi xử lý AVR Atmel 8-bit hoặc ARM Atmel 32-bit, với các model hiện tại được trang bị 1 cổng USB, 6 chân đầu vào analog và 14 chân I/O kỹ thuật số, tương thích với nhiều board mở rộng khác nhau.
Mạch Arduino bao gồm vi điều khiển AVR cùng nhiều linh kiện bổ sung, giúp lập trình dễ dàng và mở rộng với các mạch khác Một điểm nổi bật của Arduino là các kết nối tiêu chuẩn, cho phép người dùng kết nối với CPU của board và sử dụng các module mở rộng gọi là shield Một số shield giao tiếp trực tiếp qua các chân khác nhau, trong khi nhiều shield khác sử dụng bus I²C, cho phép xếp chồng và sử dụng song song Arduino thường sử dụng các dòng chip megaAVR, như ATmega8, ATmega168, ATmega328, ATmega1280, và ATmega2560, bên cạnh một số bộ vi xử lý khác tương thích Hầu hết các mạch đều có bộ điều chỉnh tuyến tính 5V và thạch anh dao động 16 MHz, mặc dù một số thiết kế như LilyPad chạy ở 8 MHz và không có bộ điều chỉnh điện áp onboard do kích thước hạn chế Vi điều khiển Arduino có thể được lập trình sẵn với boot loader, cho phép upload chương trình vào bộ nhớ flash on-chip dễ dàng hơn so với các thiết bị khác cần bộ nạp bên ngoài, giúp việc sử dụng Arduino trở nên thuận tiện hơn.
SVTH: Trần Mạnh Hùng 4 GVHD: ThS Đinh Hải Lĩnh
Hình 2.1 Một mạch Arduino Uno chính thức với các mô tả về các cổng I/O
Trong các dòng Arduino thì Arduino Uno R3 là Board mạch rất phổ biến hiện nay (hình 2.2)
Hình 2.2 Mạch thực tế Arduino Uno R3
Các thông số của Arduino Uno R3 được thể hiện ở bảng 2.1:
SVTH: Trần Mạnh Hùng 5 GVHD: ThS Đinh Hải Lĩnh
Bảng 2.1 Bảng thông số của Arduino Uno R3
Vi điều khiển Atmega328 họ 8bit Điện áp hoạt động 5V DC (chỉ được cấp qua cổng
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit) Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader
Arduino UNO R3 sử dụng ba vi điều khiển 8bit AVR: ATmega8, ATmega168 và ATmega328 Vi điều khiển này có khả năng thực hiện các tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lý tín hiệu cho xe điều khiển từ xa, và xây dựng trạm đo nhiệt độ - độ ẩm với hiển thị trên màn hình LCD.
SVTH: Trần Mạnh Hùng 6 GVHD: ThS Đinh Hải Lĩnh
GND (Ground) là cực âm của nguồn điện cung cấp cho Arduino UNO R3 Khi sử dụng các thiết bị với nguồn điện riêng biệt, các chân GND này cần phải được kết nối với nhau để đảm bảo hoạt động ổn định.
+ 5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA
+ 3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA
+ Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO R3, ta nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND
Chân IOREF trên Arduino UNO R3 cho phép đo điện áp hoạt động của vi điều khiển, luôn duy trì ở mức 5V Tuy nhiên, không nên sử dụng chân này để cấp nguồn 5V, vì chức năng chính của nó không phải là cung cấp điện.
+ RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ
Bộ vi điều khiển được trang bị 32KB bộ nhớ Flash, nơi lưu trữ các đoạn lệnh lập trình Thông thường, một phần nhỏ trong số này, khoảng vài KB, sẽ được sử dụng cho bootloader.
SRAM (Static Random Access Memory) có dung lượng 2KB, nơi lưu trữ giá trị các biến được khai báo trong quá trình lập trình Số lượng biến càng nhiều thì yêu cầu bộ nhớ RAM càng lớn Tuy nhiên, dữ liệu trên SRAM sẽ bị mất khi mất điện.
EEPROM (Electrically Erasable Programmable Read-Only Memory) có dung lượng 1KB, hoạt động như một ổ cứng mini, cho phép người dùng đọc và ghi dữ liệu mà không lo mất mát khi mất điện, khác với dữ liệu trên SRAM.
Arduino UNO R3 có 14 chân digital cho phép đọc và xuất tín hiệu với mức điện áp 0V và 5V Mỗi chân có dòng vào/ra tối đa là 40mA Vi điều khiển ATmega328 tích hợp các điện trở pull-up từ, nhưng mặc định các điện trở này không được kết nối.
Một số chân digital có các chức năng đặc biệt như sau:
SVTH: Trần Mạnh Hùng 7 GVHD: ThS Đinh Hải Lĩnh
Chân Serial 0 (RX) và 1 (TX) trên Arduino Uno R3 được sử dụng để truyền (TX) và nhận (RX) dữ liệu TTL Serial, cho phép giao tiếp với các thiết bị khác Kết nối Bluetooth là một dạng kết nối Serial không dây Nếu không cần giao tiếp Serial, nên tránh sử dụng hai chân này để tiết kiệm tài nguyên.
Chân PWM (3, 5, 6, 9, 10, và 11) cho phép xuất xung PWM với độ phân giải 8bit, cho giá trị từ 0 đến 255 tương ứng với điện áp từ 0V đến 5V thông qua hàm analogWrite() Điều này có nghĩa là điện áp đầu ra ở các chân này có thể được điều chỉnh linh hoạt từ 0V đến 5V, thay vì chỉ cố định ở hai mức 0V và 5V như các chân khác.
Chân giao tiếp SPI bao gồm các chân 10 (SS), 11 (MOSI), 12 (MISO) và 13 (SCK) Ngoài chức năng thông thường, các chân này còn hỗ trợ truyền phát dữ liệu qua giao thức SPI với các thiết bị khác.
Trên bo mạch Arduino UNO R3, có một đèn LED màu cam được ký hiệu bằng chữ L, kết nối với chân số 13 Khi nhấn nút Reset, đèn LED này sẽ nhấp nháy để báo hiệu Nếu người dùng sử dụng chân số 13, đèn LED sẽ phát sáng.
Arduino UNO R3 có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0
Arduino UNO cho phép đọc giá trị điện áp trong khoảng 0V đến 5V thông qua chân A0 đến A5 Chân AREF trên board có thể được sử dụng để cấp điện áp tham chiếu, ví dụ nếu cung cấp 2.5V, các chân analog có thể đo điện áp từ 0V đến 2.5V với độ phân giải 10 bit Ngoài ra, Arduino UNO cũng trang bị 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.
Phần mềm lập trình Arduino IDE
Arduino sở hữu thiết kế bo mạch nhỏ gọn với nhiều tính năng hữu ích, nhưng sức mạnh thực sự của nó nằm ở phần mềm Môi trường lập trình thân thiện, cùng với ngôn ngữ Wring dễ hiểu, dựa trên C/C++, giúp người dùng kỹ thuật dễ dàng tiếp cận Đặc biệt, kho thư viện mã nguồn mở phong phú được cộng đồng chia sẻ là một lợi thế lớn cho việc phát triển dự án.
SVTH: Trần Mạnh Hùng 8 GVHD: ThS Đinh Hải Lĩnh
Arduino IDE là phần mềm dùng để lập trình cho Arduino Giao diện phần mềm lập trình Arduino IDE cho Arduino được thể hiện như hình 2.3
Hình 2.3 Giao diện của phần mềm Arduino IDE
Môi trường lập trình Arduino IDE hỗ trợ ba hệ điều hành phổ biến: Windows, Macintosh OSX và Linux Với tính chất mã nguồn mở, Arduino IDE hoàn toàn miễn phí và có thể được mở rộng bởi người dùng có kinh nghiệm Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++, và người dùng có thể nhúng code viết bằng AVR vào chương trình nhờ vào nền tảng ngôn ngữ C của AVR Hiện tại, người dùng có thể tải Arduino IDE từ trang chủ http://arduino.cc/ với nhiều phiên bản khác nhau.
- Arduino 1.5.5 BETA (hỗ trợ cho 2 board Arduino mới nhất là: Arduino Yun và Arduino Due)
- Arduino IDE cho Intel Galileo
SVTH: Trần Mạnh Hùng 9 GVHD: ThS Đinh Hải Lĩnh
Phần mềm mô phỏng Proteus
Phần mềm Proteus là công cụ mạnh mẽ cho việc mô phỏng mạch điện tử, bao gồm thiết kế mạch và lập trình điều khiển cho các vi điều khiển như MCS-51, PIC, và AVR Proteus bao gồm hai chương trình chính: ISIS, cho phép mô phỏng mạch, và ARES, dùng để thiết kế mạch in.
Proteus là công cụ mô phỏng vi điều khiển mạnh mẽ, hỗ trợ nhiều dòng như PIC, 8051, dsPIC, AVR, và ARM7/LPC2000, cùng với các giao tiếp như I2C, SPI, CAN, USB và Ethernet Với hơn 12 năm nghiên cứu và phát triển, ISIS đã thu hút hơn 12,000 người dùng toàn cầu Điểm mạnh của Proteus là khả năng mô phỏng hoạt động của hệ vi điều khiển mà không cần phần mềm bổ sung Ngoài ra, phần mềm ISIS còn cho phép xuất file sang ARES hoặc các phần mềm vẽ mạch in khác.
Hình 2.4 Phần mềm mô phỏng mạch điện tử Proteus
* Thư viện Arduino trong Proteus
Thư viện Arduino là một công cụ hữu ích cho phần mềm mô phỏng Proteus, giúp nâng cao khả năng mô phỏng Arduino một cách thuận tiện và dễ dàng hơn Thay vì chỉ mô phỏng chip Atmega328, thư viện này được phát triển bởi các lập trình viên để mở rộng khả năng sử dụng của Proteus trong việc mô phỏng các dự án Arduino.
SVTH: Trần Mạnh Hùng 10 GVHD: ThS Đinh Hải Lĩnh
KS Nguyễn Thành Trung kỹ sư Cesar Osaka, Daniel Cezar, Roberto Bauer và được đăng tải trên Blog tiếng Bồ Đào Nha: http://blogembarcado.blogspot.de/
Thư viện bao gồm các linh kiện sau:
+ Arduino Uno (phiên bản chip Atmega 328 chân DIP)
+ Arduino Uno (phiên bản chip Atmega 328 chân SMD)
+ Cảm biến siêu âm Ulstrasonic V2
Các linh kiện trong thư viện Arduino của Proteus được thể hiện như hình 2.5:
Hình 2.5 Các linh kiện trong thư viện Arduino cho Proteus
THIẾT KẾ VÀ XÂY DỰNG PHẦN MỀM ĐIỀU KHIỂN
Thiết kế và xây dựng phần mềm điều khiển
* Xây dựng lưu đồ thuật toán
Để thay đổi trạng thái hoạt động của thiết bị điện, phương pháp truyền thống là tác động trực tiếp lên công tắc hoặc jack cắm nguồn Hệ thống điều khiển bằng giọng nói cho phép người dùng bật hoặc tắt thiết bị mà không cần tiếp xúc vật lý, chỉ cần ra lệnh bằng giọng nói Hệ thống này hoạt động như một bộ phận trung gian, xử lý giọng nói và chuyển đổi thành tín hiệu điều khiển nguồn điện thông qua relay Dưới đây là lưu đồ thuật toán cho chương trình trên vi điều khiển và ứng dụng trên điện thoại Android.
3.1.1 Thiết kế lưu đồ thuật toán trong chương trình trên vi điều khiển
Dựa vào mục tiêu và yêu cầu của đề tài, em đã xây dựng được lưu đồ thuật toán làm cơ sở để viết code lập trình như hình 3.1
THIẾT KẾ CẤU TRÚC PHẦN CỨNG VÀ LẬP TRÌNH CHO BỘ ĐIỀU KHIỂN
Thiết kế cấu trúc phần cứng
Hình 4.1: Sơ đồ khối tổng quan bộ điều khiển thiết bị điện trong nhà bằng giọng nói
Cấu trúc phần cứng của hệ thống điều khiển thiết các thiết bị điện trong nhà bằng giọng nói bao gồm 5 bộ phận chính:
+ Khối nguồn: Hệ thống điều khiển sử dụng 02 nguồn 5VDC để cấp nguồn cho khối xử lý trung tâm Arduino Uno R3 và khối công suất
+ Module Bluetooth HC05: Bộ phận đóng vai trò trung gian kết nối, xử lý tín hiệu giữa Smartphone với Khối xử lý trung tâm Arduino Uno R3
Arduino Uno R3 là khối xử lý trung tâm, có chức năng nhận và xử lý tín hiệu đầu vào, từ đó phát tín hiệu điều khiển cho khối công suất hoạt động.
+ Khối công suất: Nhận tín hiệu từ khối xử lý trung tâm Arduino Uno R3, đóng vai trò điều khiển trực tiếp các thiết bị điện trong nhà
+ Khối LED báo trạng thái: Hiển thị trạng thái hoạt động của hệ thống, bật/tắt các thiết bị
SVTH: Trần Mạnh Hùng 21 GVHD: ThS Đinh Hải Lĩnh
Khối nguồn được sử dụng để cung cấp nguồn cho các khối hoạt động bao gồm:
+ Nguồn Điện áp 5VDC qua cổng usb hoặc 7-12VDC qua JACK cho mulde Relay và kit Arduino Uno R3 được thể hiện trong sơ đồ nguyên lý hình 4.2 và 4.3
Hình 4.2 Sơ đồ nguyên lý mạch nguồn 220VAC – 9VDC
Hình 4.3 Sơ đồ nguyên lý mạch nguồn 220VAC – 5VDC
+ Nguồn AC 220V: Cung cấp cho ngõ ra của khối công suất để điều khiển các thiết bị điện xoay chiều
Bluetooth là công nghệ truyền thông không dây cho phép trao đổi dữ liệu ở khoảng cách ngắn, sử dụng sóng radio UHF trong dải tần số ISM từ 2.4 đến 2.485 GHz Khoảng cách truyền tối đa của module Bluetooth đạt khoảng 10 mét Hình ảnh và sơ đồ nguyên lý của module Bluetooth được minh họa trong hình 4.4 và 4.5.
SVTH: Trần Mạnh Hùng 22 GVHD: ThS Đinh Hải Lĩnh
Hình 4.4 Hình ảnh thực tế Module Bluetooth HC-05
Hình 4.5 Sơ đồ nguyên lý Module HC-05
SVTH: Trần Mạnh Hùng 23 GVHD: ThS Đinh Hải Lĩnh
Sơ đồ chân module bluetooth HC-05 gồm có:
- KEY: Chân này để chọn chế độ hoạt động AT Mode hoặc Data Mode
- VCC: chân cấp nguồn từ 3.6V đến 6V bên trong module đã có một ic nguồn chuyển về điện áp 3.3V và cấp cho IC BC417
- GND: nối với chân nguồn GND
- TXD,RXD: đây là hai chân UART để giao tiếp module hoạt động ở mức logic 3.3V
- STATE: chân báo trạng thái của module HC05
* Chế độ hoạt động của module bluetooth HC-05
Module Bluetooth hoạt động với nguồn cung cấp từ 3.6V đến 6V, và việc cung cấp quá áp có thể dẫn đến cháy module Đặc biệt, module này tương thích với các vi điều khiển 5V mà không cần chuyển đổi mức giao tiếp từ 5V về 3.3V, khác với nhiều loại module Bluetooth khác.
Moduler Bluetooth HC-05 hoạt động với hai chế độ: Command Mode và Data Mode Trong Command Mode, người dùng có thể giao tiếp với module qua cổng serial bằng lệnh AT Ngược lại, ở Data Mode, module cho phép truyền nhận dữ liệu tới các module Bluetooth khác Chân KEY được sử dụng để chuyển đổi giữa hai chế độ này, và có hai phương pháp để chuyển module sang chế độ Data Mode.
Khi chân KEY được đưa lên mức logic cao trước khi cấp nguồn, module sẽ vào chế độ Command Mode với baudrate mặc định 38400, và đèn LED sẽ nháy chậm khoảng 2 giây Ngược lại, nếu chân KEY nối với mức logic thấp trước khi cấp nguồn, module sẽ hoạt động ở chế độ Data Mode.
Để chuyển module từ chế độ Data Mode sang Command Mode, cần nâng chân KEY lên mức cao Khi đó, module sẽ hoạt động ở chế độ Command Mode với tốc độ Baud Rate đã được thiết lập lần cuối Do đó, việc biết baudrate hiện tại của thiết bị là rất quan trọng để tương tác hiệu quả Nếu module chưa được thiết lập lại, nó sẽ sử dụng baudrate mặc định.
+ Baudrate 9600, data 8 bits, stop bits 1, parity : none, handshake: none
SVTH: Trần Mạnh Hùng 24 GVHD: ThS Đinh Hải Lĩnh
Ngoài ra, ở chế độ Data Mode, module HC-05 còn có thể hoạt động như một master hoặc slave tùy người sử dụng cấu hình
Khi sử dụng chế độ SLAVE, bạn cần kết nối thiết bị từ smartphone, laptop hoặc usb Bluetooth để dò tìm module Sau khi tìm thấy, hãy tiến hành ghép nối bằng mã pin 1234 Khi quá trình ghép nối thành công, bạn sẽ có một cổng serial từ xa hoạt động với baud rate 9600.
Trong chế độ MASTER, module tự động quét và kết nối với các thiết bị Bluetooth khác như HC-06, USB Bluetooth hoặc Bluetooth của laptop mà không cần bất kỳ thiết lập nào từ máy tính hay smartphone Chức năng này là cốt lõi trong hệ thống điều khiển thiết bị điện trong nhà bằng giọng nói.
4.1.3 Khối xử lý trung tâm Arduino Uno R3
Lựa chọn khối xử lý trung tâm là board Arduino Uno R3
Sử dụng Arduino Uno R3 kết hợp với các module Bluetooth hoặc Wi-Fi, người dùng có thể thiết kế hệ thống điều khiển và giám sát thông minh cho các thiết bị điện trong ngôi nhà Với các ứng dụng trên máy tính bảng, smartphone hoặc trình duyệt web, người dùng có thể điều khiển từ xa mọi lúc, mọi nơi có kết nối internet.
Hình 4.6 Arduino với mô hình nhà thông minh
Hệ thống điều khiển thiết bị điện trong nhà bằng giọng nói là một ứng dụng nổi bật và phổ biến của Arduino trong mô hình nhà thông minh, mang lại sự tiện lợi và hiện đại cho người dùng.
SVTH: Trần Mạnh Hùng 25 GVHD: ThS Đinh Hải Lĩnh
Khối công suất của hệ thống gồm IC đệm ULN2003A và Relay 4 kênh điều khiển 4 thiết bị a IC đệm ULN2003A
Thông số kỹ thuật của IC ULN2003A:
+ Điện áp ra max: 50V (Vce)
+ Điện áo vào max: 30V (Vin)
+ Dòng điện đầu ra liên tục: Ic = 500mA
+ Dòng điện đầu vào liên tục: I IN = 25mA
+ Công suất tiêu tán trên mỗi cặp darlington: 1W
IC ULN2003A là một vi mạch điển hình với cấu trúc gồm các mảng darlington, cho phép chịu đựng dòng điện lớn và điện áp cao Nó bao gồm 7 cặp transistor NPN ghép darlington, mỗi kênh đều có diode chặn để bảo vệ khi kết nối với tải cảm ứng như relay ULN2003A có khả năng điều khiển 7 kênh độc lập, tương thích với vi điều khiển 5V, và có thể chịu dòng điện lên tới 500mA trong thời gian dài, với biên độ đỉnh đạt 600mA Hình ảnh thực tế của IC ULN2003A được thể hiện trong hình 4.7.
SVTH: Trần Mạnh Hùng 26 GVHD: ThS Đinh Hải Lĩnh
KS Nguyễn Thành Trung b 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 có:
- Vỏ (Thường làm bằng nhựa hoặc để trần);
- Lõi cuộn dây điện từ (Thường làm bằng nhựa hoặc giấy cách điện
Khi cuộn dây chưa được cấp điện, các tiếp điểm thường đóng tiếp xúc, trong khi các tiếp điểm thường mở tách xa nhau Khi được cấp điện, cuộn dây trở thành nam châm điện, tạo lực hút lõi sắt, khiến các tiếp điểm thường mở tiếp xúc và các tiếp điểm thường đóng tách rời Bằng cách điều khiển việc cấp điện cho cuộn dây relay, ta có thể kiểm soát việc đóng/ngắt tải từ nguồn điện thông qua các tiếp điểm thường mở.
* Thiết kế module relay 4 kênh:
Module relay bao gồm ba linh kiện chính: rơ-le, transistor và PC817, giúp cách ly điện giữa hai khối khác nhau để bảo vệ mạch điện tử Sơ đồ nguyên lý và hình ảnh mạch in 3D của module relay được trình bày trong hình 4.8 và hình 4.9.
SVTH: Trần Mạnh Hùng 27 GVHD: ThS Đinh Hải Lĩnh
Hình 4.8 Sơ đồ nguyên lý module relay 4 kênh trên phần mềm Altium designer
Hình 4.9 Sản phẩm module relay 4 kênh
Thông số kỹ thuật module relay:
- Mặc định điều khiển: Bật 0, tắt 1
- Thay đổi J1, J0 để thay đổi mức điều khiển
+ Tiếp điểm relay 220V 10A ( là tiếp điểm, không phải là điện áp ra)
+ NC: Tiếp điểm thường đóng
SVTH: Trần Mạnh Hùng 28 GVHD: ThS Đinh Hải Lĩnh
Ký hiệu nguồn module relay:
+ VCC, GND là nguồn chung với điều khiển
+ VSS+, VSS- là nguồn của Relay
Nếu cách ly thì sử dụng 2 nguồn riêng, còn nếu dùng chung nguồn thì cần Jump chốt 2.54mm để nối VCC VSS+; GND VSS-
4.1.5 Khối LED báo trạng thái
Hệ thống sử dụng LED siêu sáng 5mm với màu xanh dương và đỏ, hoạt động ở điện áp khoảng 3V và dòng tối đa 20mA, nhằm hiển thị trạng thái hoạt động (bật/tắt) của từng thiết bị.
Hình 4.10 LED đơn báo trạng thái
Khi sử dụng LED với hiệu điện thế hoạt động thấp, đặc biệt ở mức 5V, cần thiết phải kết nối một điện trở để giảm hiệu điện thế vào LED Đối với các loại LED có hiệu điện thế nhỏ, điện trở nên có trị số khoảng 560 – 1000 Ohm, trong khi các loại LED có hiệu điện thế lớn hơn cần sử dụng điện trở nhỏ hơn, từ 220 – 560 Ohm Sơ đồ mô phỏng khối LED báo trạng thái được trình bày trong hình 4.11.
Hình 4.11 Sản phẩm module relay 4 kênh
SVTH: Trần Mạnh Hùng 29 GVHD: ThS Đinh Hải Lĩnh
Lập trình cho bộ điều khiển
Dựa vào thuật toán đã xây dựng, code lập trình cho bộ điều khiển được viết dựa trên nền tảng ngôn ngữ C/C++ và mã nguồn mở như sau:
*Mã code của chương trình:
//Coded By: TRAN MANH HUNG
//Dieu khien thiet bi dien trong nha bang giong noi(Bluetooth + Android)
//Khai bao thu vien su dung
SoftwareSerial BT(10, 11); //Thiết lập chân giao tiếp TX, RX là chân
The code snippet defines a string variable named "voice" and initializes integer variables for controlling devices: tb1 is set to 2 for device 1, tb2 to 3 for device 2, tb3 to 4 for device 3, and tb4 to 5 for device 4 Additionally, it assigns values to four LED variables, led1 through led4, with values ranging from 6 to 9.
Chương trình con "allon" được sử dụng để bật hoặc tắt toàn bộ thiết bị Trong đó, các chân điều khiển thiết bị được thiết lập là output bằng cách sử dụng hàm digitalWrite với các giá trị HIGH cho tb1, tb2, tb3 và tb4 Đồng thời, các đèn LED cũng được bật lên bằng cách thiết lập led1, led2, led3 và led4 ở trạng thái HIGH.
} void alloff(){ digitalWrite(tb1, LOW); digitalWrite(tb2, LOW); digitalWrite(tb3, LOW); digitalWrite(tb4, LOW); digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW);
// -Hàm khởi tạo hệ thống -// void setup() {
BT.begin(9600); pinMode(LED_BUILTIN, OUTPUT);
SVTH: Trần Mạnh Hùng 30 GVHD: ThS Đinh Hải Lĩnh
KS Nguyễn Thành Trung pinMode(tb1, OUTPUT); pinMode(tb2, OUTPUT); pinMode(tb3, OUTPUT); pinMode(tb4, OUTPUT); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT);
In the loop function, the built-in LED is activated for one second, followed by a one-second deactivation, creating a blinking effect The code also checks for available bytes from a Bluetooth connection, introducing a brief delay for stability When a specific character ('#') is detected, the loop exits, and any received characters are appended to a variable named 'voice'.
The control function enables simultaneous management of all devices When the command "*turn on all" is given, the function allon() is executed to activate all devices Conversely, the command "*turn off all" triggers the alloff() function to deactivate all devices.
The code snippet demonstrates how to activate various devices using voice commands When the command "*turn on the light" is recognized, the system sets the corresponding digital output for the light to HIGH Similarly, the command "*water pump" activates the water pump, while the command "*turn on the fan" triggers the fan's digital output Each command corresponds to a specific device, ensuring seamless control through voice recognition.
The code snippet demonstrates how to turn off various devices using voice commands When the command "*Turn off the light" is recognized, it sets the corresponding digital output for the light to LOW Similarly, the command "*turn off the pump" deactivates the pump by setting its output to LOW, and the command "*turn off the fan" does the same for the fan This functionality allows for efficient control of multiple devices through voice recognition.
// - -// voice="";}} //Thiết lập lại các biến
- Giải thích về mã code lập trình:
+ Đầu tiên, khai báo một chuỗi với câu lệnh String voice và setup 2 chân giao tiếp
TXD và RXD bằng câu lệnh:
SVTH: Trần Mạnh Hùng 31 GVHD: ThS Đinh Hải Lĩnh
SoftwareSerial BT(10, 11); //Thiết lập chân giao tiếp TX, RX là chân 10 và 11
+ Khai báo các biến tương ứng với chân tín hiệu digital cần sử dụng với câu lệnh int tb1 = 2, tb2 = 3,
Khởi tạo hai hàm con để bật tắt toàn bộ thiết bị bằng câu lệnh digitalWrite(pin, value), trong đó pin là số chân digital cần thiết lập và value có thể là HIGH hoặc LOW, tương ứng với hai mức điện áp 5V và 0V.
Vd: digitalWrite(tb1, HIGH); //Thiết lập chân điều khiển thiết bị 1 là output digitalWrite(tb1, LOW);
Trong hàm khởi tạo hệ thống, cần cấu hình các chân digital bằng câu lệnh pinMode(pin, mode); để xác định chế độ hoạt động của pin như đầu vào (INPUT) hoặc đầu ra (OUTPUT) Ví dụ: pinMode(tb1, OUTPUT); cho phép pin tb1 hoạt động như một đầu ra.
Để vi điều khiển nhận và xử lý tín hiệu từ module Bluetooth HC-05 qua cổng giao tiếp Serial, cần khai báo một biến char c và sử dụng câu lệnh gán: char c = BT.read(); để đọc từng ký tự trong bộ nhớ đệm của Serial.
Sau khi đọc các ký tự lưu trong bộ nhớ đệm Serial, vi điều khiển sẽ so sánh chúng với chuỗi voice đã được khai báo ban đầu Dựa trên kết quả so sánh, vi điều khiển sẽ xuất tín hiệu tương tự cho chân digital thông qua hàm if.
Vd: if(voice == "*bật đèn") {digitalWrite(tb1, HIGH);digitalWrite(led1, HIGH);} if(voice == "*Tắt Đèn") {digitalWrite(tb1, LOW);digitalWrite(led1,
SVTH: Trần Mạnh Hùng 32 GVHD: ThS Đinh Hải Lĩnh
4.3 Hoàn thành sản phẩm và thử nghiệm
Sau khi hoàn tất thiết kế và xây dựng cả phần cứng lẫn phần mềm điều khiển, tôi đã hoàn thành bộ điều khiển thiết bị điện trong nhà hoạt động bằng giọng nói, đúng với mục tiêu ban đầu Dưới đây là một số hình ảnh sản phẩm cùng kết quả thực nghiệm.
Hình 4.12 Bộ điều khiển thiết bị điện trong nhà bằng giọng nói
Hình ảnh thực nghiệm bộ điều khiển:
Hình 4.13 Bật đèn bằng giọng nói