2.4.1 Ứng dụng Blynk là gì?
Blynk là ứng dụng trên điện thoại di động Smarphone được thiết kế cho hệ thống Internet of Things. Nó có thể:
Điều khiển các thiết bị phần cứng từ xa Hiển thị dữ liệu cảm biến
Lưu trữ dữ liệu
Và nhiều điều thú vị khác...
Hình 2.15:Ứng dụng Blynk
2.4.2 Blynk hoạt động như thế nào?
21 Blynk App - cho phép tạo giao diện cho sản phẩm của bạn bằng cách kéo thả các widget khác nhau mà nhà cung cấp đã thiết kế sẵn.
Blynk Server - chịu trách nhiệm xử lý dữ liệu trung tâm giữa điện thoại, máy tính bảng và phần cứng. Bạn có thể sử dụng Blynk Cloud của Blynk cung cấp hoặc tự tạo máy chủ Blynk riêng của bạn. Vì đây là mã nguồn mở, nên bạn có thể dễ dàng intergrate vào các thiết bị và thậm chí có thể sử dụng Raspberry Pi làm server của bạn.
Library Blynk – support cho hầu hết tất cả các nền tảng phần cứng phổ biến - cho phép giao tiếp với máy chủ và xử lý tất cả các lệnh đến và đi.
Bây giờ hãy tưởng tượng: mỗi khi bạn nhấn một nút trong ứng dụng Blynk, yêu cầu sẽ chuyển đến server của Blynk, server sẽ kết nối đến phần cứng của bạn thông qua library . Tương tự thiết bị phần cứng sẽ truyền dữ liệu ngược lại đến server.
Hình 2.16:Các kết nối Server Blynk
Ứng dụng Blynk cho phép các Board kết nối tới Server qua Internet và được điều khiển thông qua điện thoại thông minh.
2.4.3 Tính năng , đặc điểm
Cung cấp API & giao diện người dùng tương tự cho tất cả các thiết bị và phần cứng được hỗ trợ
Kết nối với server bằng cách sử dụng: o Wifi
22 o Ethernet
o USB (Serial) o GSM
o …
Các tiện ích trên giao diện được nhà cung cấp dễ sử dụng Thao tác kéo thả trực tiếp giao diện mà không cần viết mã
Dễ dàng tích hợp và thêm chức năng mới bằng cách sử dụng các cổng kết nối ảo được tích hợp trên blynk app
Theo dõi lịch sử dữ liệu
Thông tin liên lạc từ thiết bị đến thiết bị bằng Widget Gửi email, tweet, thông báo realtime, v.v.
Được cập nhật các tính năng liên tục!
2.4.4 Cần gì để sử dụng Blynk
Hardware: Bao gồm các thiết bị phần cứng như Arduino, Raspberry Pi, Esp8266, esp32 ….
Smartphone: Hiện tại thì Blynk hỗ trợ 2 nền tảng là Android và IOS.
Internet: chắc chắn là phải cần Internet thì các thiết bị có thể giao tiếp được với nhau nhỉ.
Library: Chắc chắn mỗi thiết bị sẽ phải cài các thư viện khác nhau
23 Để có thư viện Blynk trong Arduino IDE thì ta tải thư viện Blynk tại Web Github với đường dẫn blynkkk\blynk-library-master.
Hình 2.18:Giao diện thêm thư viện trong Arduino IDE
Sau đó vào Arduino IDE chọn Sketch -> Include Library -> Add .ZIP Library…
Hình 2.19:Thêm thư viện tải về
24
Hình 2.20: kết quả thêm thư viện
25
TÍNH TOÁN VÀ THIẾT KẾ
3.1 GIỚI THIỆU
Trong chương nàyngười thực hiện sẽ trình bày về cách tính toán, sơ đồ khối, sơ đồ nguyên lý của các board mạnh của hệ thống: mạch điều khiển các thiết bị ngõ ra có sử dụng relay, mạch nguồn cung cấp điện áp – dòng điện cho cả hệ thống
3.2 THỰC TRẠNG NHU CẦU
Với sự phát triển của kinh tế, xã hội, nhu cầu về việc điều khiển thiết bị từ xa qua điện thoại hay máy tính, tiện ích cho sự di chuyển đi lại của mỗi người do bận rộn, lười biếng hoặc do quên tắt thiết bị mỗi khi rời đi.
3.3 BÀI TOÁN ĐẶT RA
Để đáp ứng nhu cầu của mỗi người về một căn phòng thông minh, có thể điều khiển các thiết bị thường được sử dụng như đèn, quạt,.... Có thể điều khiển thông qua App điện thoại. Người thực hiện đã thấy được nhu cầu này ngày càng thiết thực trong cuộc sống hàng ngày nên đã quyết định làm đề tài “ Thiết kế và thi công mô hình điều khiển thiết bị điện trong nhà “ nhằm để thỏa các yêu cầu của mọi người về mong muốn một căn phòng thông minh, hiện đại và tiện ích.
App điều khiển qua điện thoại có chức năng điều khiển bật tắt các thiết bị điện.
Board điều khiển gồm những yêu cầu cần thiết sau: - Điện áp vào: 7-12 V
- Dòng ra trên mỗi chân I/O: 30-50 mA - Số chân I/O : 20-30 chân
- Có kết nối chuẩn UART - Có kết nối chuẩn SPI - Có kết nối chuẩn I2C
26
3.3.1 Thiết kế sơ đồ khối hệ thống
CÁC THIẾT BỊ ĐIỆN
Hình 3.1:Sơ đồ khối hệ thống
Khối nguồn:Cung cấp dòng điện và điện áp đảm bảo cho các linh kiện hoạt động ổn định.
Khối hiển thị: Nhận tín hiệu từ khối xử lý và xuất các ký tự lên màn hinh LCD
Khối điều khiển: Ứng dụng Blynk
Khối RFID và Pasword: xuất dữ liệu gồm mã thẻ và mật khẩu
Khối cảm biến:thu thập các dữ liệu từ môi trường sau đó chuyển các dữ liệu đã thu thập thành các tín hiệu số và các tín hiệu tương tự và gửi về khối xử lý.
Khối xử lý:Thu nhận các tín hiệu từ khối cảm biến, khối thực hiện cuộc gọi và nhắn tin, khối Internet để tiến hành xử lý các tín hiệu đó và xuất ra khối hiển thị và khối công suất
KHỐI XỬ LÝ VÀ GỬI TÍN HIỆU
ĐIỀU KHIỂN
KHỐI ĐIỀU KHIỂN CÔNG SUẤT
KHỐI KẾT NỐI INTERNET
KHỐI THỰC HIỆN CUỘC GỌI VÀ TIN
NHẮN KHỐI ĐIỀU KHIỂN KHỐI RFID VÀ KEYPAD KHỐI CẢM BIẾN KHỐI HIỂN THỊ
27
Khối thực hiện cuộc gọi và nhắn tin:khối này có nhiệm vụ nhận tín hiệu từ khối xử lý và thực hiện chức năng nhắn tin hoặc gọi điện thông báo đến sđt chủ nhà
Khối kết nối Internet:kêt nối Internet và thu thập các gói dữ liệu trên Server Blynk và gửi về khối xử lý đồng thời nhận dữ liệu từ khối xử lý và gửi các gói dữ liệu đó lên lại Sever
Khối điều khiển công suất:Nhận tín hiệu từ khối xử lý và xuất ra điện áp 5v hoặc 0v để kích relay và chống nhiễu cho relay.
3.3.2 App điều khiển
Yêu cầu :
Có thể bật, tắt các thiết bị Giao diện đẹp, dễ sử dụng
Hình 3.2: Giao diện điều khiển app Blynk
Giao diện của ứng dụng có thanh thông báo tình trạng kết nối Internet và 10 nút nhấn ON/OFF điều khiển đèn, quạt,... khi nhấn vào sẽ hiển thị trạng thái
28 ON/OFF thiết bị đó. Giao diện có thêm hai đồng hồ đo nhiệt độ, độ ẩm và một biểu đồ giám sát nhiệt độ, độ ẩm được cập nhật từng phút.
3.3.3 Board điều khiển
Dựa vào sơ đồ khối của hệ thống, người thực hiện đã quyết định chọn những linh kiện phù hợp với từng khối như sau:
3.3.3.1 Khối kết nối Internet
a.Giới thiệu dòng chíp ESP8266
Chip ESP8266 được phát triển bởi Espressif để cung cấp giải pháp giao tiếp Wi-Fi cho các thiết bị IoT. Điểm đặc biệt của dòng ESP8266 là nó được tích hợp các mạch RF như balun, antenna switches, TX power amplifier và RX filter ngay bên trong chip với kích thước rất nhỏ chỉ 5x5mm nên các board sử dụng ESP8266 không cần kích thước board lớn cũng như không cần nhiều linh kiện xung quanh. Ngoài ra, giá thành của ESP8266 cũng rất thấp đủ để hấp dẫn các nhà phát triển sản phẩm IoT.
Cấu trúc phần cứng của dòng chip ESP8266:
- Sử dụng 32-bit MCU core có tên là Tensilica
- Tốc độ system clock có thể set ở 80MHz hoặc 160MHz - Không tích hợp bộ nhớ Flash để lưu chương trình - Tích hợp 50KB RAM để lưu dữ liệu ứng dụng khi chạy
- Có đầy đủ các ngoại vi chuẩn để giao tiếp như 17 GPIO, 1 Slave SDIO, 3 SPI, 1 I2C, 1 I2S, 2 UART, 2 PWM.
- Tích hợp các mạch RF để truyền nhận dữ liệu ở tần số 2.4GHz
- Hỗ trợ các hoạt động truyền nhận các IP packages ở mức hardware như Acknowledgement, Fragmentation và Defragmentation, Aggregation, Frame, Encapsulation… (và phần stack TCP/IP sẽ được thực hiện trên firmware của ESP8266).
- Do không hỗ trợ bộ nhớ Flash nên các board sử dụng ESP8266 phải gắn thêm chip Flash bên ngoài và thường là Flash SPI để ESP8266 có thể đọc chương trình ứng dụng với chuẩn SDIO hoặc SPI.
29
Hình 3.3: ESP8266 Mạch nguyên lý đầy đủ của ESP8266 :
Chúng ta có thể thấy board ESP8266 chỉ cần thạch anh và SPI flash chip và vài linh kiện điện trở rất đơn giản. Do đó việc tích hợp giao tiếp Wi-Fi vào board ứng dụng với ESP8266 rất dễ dàng và nhanh chóng.
Mô hình lập trình ứng dụng với ESP8266 có thể chia làm 2 loại như sau: - Sử dụng firmware được cung cấp bởi Espressif và giao tiếp thông qua AT commands.
- Lập trình firmware trực tiếp vào ESP8266 sử dụng bộ thư viện SDK cung cấp bởi Espressif.
30
Các loại module cho ESP8266 trên thị trường
Ngoại trừ module ESP-WROOM-02 được phát triển bởi chính Espressif cho mục đích nghiên cứu các tính năng của ESP8266, các module ứng dụng phổ biến hiện nay của ESP8266 đều được phát triển bởi công ty AI-Thinker.
Hiện tại có khá nhiều module khác nhau cho ESP8266 được sản xuất bởi công ty AI-Thinker. Đặc điểm khác nhau giữa các module này bao gồm:
- Loại anten sử dụng (PCB anten, chip anten hoặc gắn anten ngoài) - Dung lượng của chip Flash SPI trên board
- Kích thước board của module.
- Có gắn khung nhôm chống nhiễu hay không
- Số lượng pin GPIO đưa ra chân kết nối Hiện tại AI-Thinker sản xuất 14 loại module cho ESP từ module ESP-01 đến ESP-14. Ở thị trường Việt Nam thì các module là ESP-01, ESP-07 và ESP-12, ESP NodeMCU khá phổ biến. Ở đây người thực hiện chọn ESP8266 NodeMCU, với kích thước nhỏ gọn, giá thành rẻ, có khả năng kết nối wifi mạnh mẽ và có thể nhận dữ liệu từ Database Firebase và làm chiều ngược lại nên người thực hiện đã quyết định sử dụng module này
Lý do chọn linh kiện: Linh kiện nhỏ gọn, giá thành rẻ, kết nối Internet ổn định, phụ hợp với mục tiêu đề tài
b.Node MCU ESP 8266
NodeMCU V1.0 được phát triển dựa trên Chip WiFi ESP8266EX bên trong Module ESP-12E dễ dàng kết nối WiFi với một vài thao tác. Board còn tích hợp IC CP2102, giúp dễ dàng giao tiếp với máy tính thông qua Micro USB để thao tác với board. Và có sẳn nút nhấn, led để tiện qua quá trình học, nghiên cứu. Với kích thước nhỏ gọn, linh hoạt board dễ dàng liên kết với các thiết bị ngoại vi để tạo thành project, sản phẩm mẫu một cách nhanh chóng.
Thông số kỹ thuật:
- Chip: ESP8266EX
- Điện áp cung cấp : DC 5 ~ 9V
- WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n - Hỗ trợ bảo mật: WPA/WPA2
31 - Bộ nhớ Flash: 32MB
- Cổng kết nối: hỗ trợ USB-TTL CP2102 với cổng Micro-USB - Giao tiếp dữ liệu: UART / HSPI / I2C / I2S /GPIO / PWM - Led báo trạng thái GPIO16, nút Reset
- Tương thích với Arduino IDE
- Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU - Lua
- Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One- wire, trừ chân D0)
- Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
Hình 3.5:Sơ đồ khối chân NodeMCU
Lý do chọn linh kiện: Linh kiện nhỏ gọn, lập trình được trên Arduino, kết nối được Internet, có 9 cổng Digital điều khiển được nhiều thiết bị phù hợp với đề tài
3.3.3.2 Khối xử lý
a.Giới thiệu về Arduino
Arduino là một nền tảng phần cứng mã nguồn mở được sử dụng cho các dự án xây dựng các ứng dụng mạch điện tử. Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vị vua vào thế kỷ thứ 9 là King Arduino. Arduino chính
32 thức được đưa ra giới thiệu vào năm 2005 như là một công cụ khiêm tốn dành cho các sinh viên của giáo sư Massimo Banzi, là một trong những người phát triển Arduino, tại trường Interaction Design Instistute Ivrea (IDII), Italia.
Cấu tạo của Arduino là một mạch vi điều khiển, sử dụng bộ xử lý Atmel 8 bit hoặc Atmel 32 bit. Nó được dùng để lập trình tương tác với các thiếtbị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác bằng ngôn ngữ C, C++.Đặc điểm nổi bật của Arduino là tính chất nguồn mở từ phần cứng tới phần mềm, môi trường phát triển ứng dụng cực kỳ dễ sử dụng, ngôn ngữ lập trình có thể học một cách nhanh chóng ngay cả với người ít am hiểu về điện tử và lập trình. Ngoài ra, Arduino còn được ưa chuộng là do mức giá rất thấp phù hợp với sinh viên. Tính tới thời điểm này thì Arduino đã cho ra mắt rất nhiều loạiboard mạch, mỗi loại đều có các thông số khác nhau và phục vụ cho các ứng dụng khác nhau như: Arduino UNO dành cho người mới bắt đầu, Arduino Mega 2560 dành cho các ứng dụng phức tạp, Arduino Lilypad dành cho các ứng dụng gắn lên quần áo hoặc để đeo… Trong đề tài này, để thỏa với nhu cầu bài toán đặt ra nên người thực hiện quyết định chọn vi điều khiển là board mạch Arduino Mega2560.
b.Giới thiệu board mạch Arduino Mega
Arduino Mega 2560 là board mạch vi điều khiển sử dụng chip xử lý Atmega2560. Nó có ngoại hình khá lớn so với các board mạch Arduino khác do sử dụng chip xử lý lớn, có nhiều chân I/O, chân Analog.
* Các thông số kỹ thuật của bo mạch Arduino Mega 2560:
- Chip xử lý: Atmega2560 - Điện áp hoạt động: 5V
- Điện áp vào (khuyến nghị): 7-12V - Điện áp vào (giới hạn): 6-20V
- Tổng số chân I/O : 54 (có 15 chân có thể phát xung PWM) - Tổng số chân analog: 16
- Dòng DC trên mỗi chân I/O: 20 mA - Dòng DC trên chân 3.3V: 50 mA
33 Arduino Mega 2560 có thể được cấp nguồn bằng cổng USB hoặc bằng nguồn ngoài và việc chọn nguồn cấp được diễn ra hoàn toàn tự động. Tức là ta có thể cấp cả 2 nguồn vào cùng lúc, nếu nguồn ngoài không có hoặc quá bé thì Arduino sẽ lấy nguồn từ cổng USB và ngược lại. Nguồn ngoài có thể lấy từ adapter AC-DC thông qua jack cắm 3.5mm hoặc từ pin bằng cách nối cực dương của pin vào chân Vin và cực âm vào chân GND. Dù cho ta dùng nguồn nào thì điện áp cấp vào phải nằm trong ngưỡng 7-12 V theo khuyến cáo của nhà sản xuất. Nếu ta cấp nguồn dưới 7V vào thì chân 5V sẽ khôngcho ra đủ điện áp 5V, mạch sẽ thiếu ổn định. Còn nếu cấp nguồn lớn hơn 12V vào thì ICổn áp có thể nóng lên, làm hỏng cả board mạch.
Chân cấp nguồn gồm những chân sau:
- GND (Ground): cực âm của nguồn điện cấp cho Arduino. Khi ta dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau.
- 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, 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.
- IOREF: điện áp hoạt động của vi điều khiển trên Arduino có thể được đo ở chân này. Mặc dù vậy ta không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn mà chỉ là tham chiếu điện áp hoạt động của vi xử lý.
Các ngõ vào ra (I/O) của Arduino Mega:
Arduino Mega 2560 có tổng cộng 54 chân digital, mỗi chân đều có thể là ngõ vào hoặc ngõ ra tuỳ theo ta lập trình. Chúng chỉ cho ra 2 mức điện áp là 0V hoặc