Như học viên đã trình bày ở chương 2 về việc lựa chọn thiết bị phần cứng sử dụng giao tiếp wifi để cho phép các thiết bị truy cập mạng, module sử dụng là ESP 12- ESP8266 với thiết kế nhỏ gọn, anten trực tiếp trên mạch và hỗ trợ anten kéo dài. Đồng thời thiết bị hỗ trợ lập trình trực tiếp trên nền tảng ngôn ngữ C. Tại mục này của luận văn sẽ trình bày chi tiết cấu tạo của phần cứng thiết bị được sử dụng và kết nối từ phần cứng hỗ trợ giao tiếp wifi đến thiết bị điều khiển ngoại vi cuối cùng (một đèn 220VAC).
45
Hình 3.1: Sơ khối của hệ thống 3.1.1 Xây dựng phần cứng
Module Wifi ESP8266 ESP-12E là module phát triển dựa trên nền chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử dụng và lập trình các ứng dụng trên ESP8266 trở nên rất đơn giản.
Hình 3.2: Thiết kế phần cứng ESP12-ESP8266 Thông số kĩ thuật:
IC chính: ESP8266 Wifi SoC. Phiên bản firmware: Node MCU. Chip nạp và giao tiếp UART: CP2102.
GPIO tương thích hoàn toàn với firmware Node MCU. Cấp nguồn: 5VDC MicroUSB hoặc Vin.
GIPO giao tiếp mức 3.3VDC
Tích hợp Led báo trạng thái, nút Reset, Flash. Tương thích hoàn toàn với trình biên dịch Arduino.
46
Để có thể lập trình cho module wifi và tiến hành các kết nối với phần cứng học viên lựa chọn sử dụng kit nhúng clover alpha.
Hình 3.2: Thiết kế phần cứng của kit Clover Alpha
Clover Alpha Board là một Board chủ điều khiển do Clover Team nghiên cứu phát triển. Dựa trên nền tảng Arduino, Clover Alpha Board được tích hợp một số thiết bị như: Đèn LED, nút nhấn, còi, mắt nhận tín hiệu hồng ngoại...; các ngoại vi khác được kết nối thông qua một chuẩn duy nhất sử dụng cổng RJ11 giúp loại bỏ sự phức tạp về kết nối của nền tảng Arduino và cho phép dễ dàng thực hiện các kết nối không dây phổ biến như: Bluetooth, Wifi.
Thông số kỹ thuật:
Kích thước 75mm x 67mm x 18mm Khối lượng 48 gram
Vi điều khiển ATMega328
Nền tảng lập trình Arduino, CloverBlock Điện áp cung cấp 7-24V (DC- 5.5x2.1mm) Điện áp hoạt động 5V (DC)
Dòng tiêu thụ tối đa 1A
Cổng giao tiếp 4 (RJ11 6P6C)
Giao tiếp hỗ trợ IO, ADC, PWM, UART, SPI, I2C
USB USB mini-B 2.0
Kết nối không dây Bluetooth 4.0 / Wifi (Tùy chọn) Thiết bị tích hợp Đèn LED, Nút nhấn, Còi, IR
Kit clover cho phép kết nối các ngoại vi tích hợp một cách đa dạng, các cổng kết nối giao tiếp theo hướng sử dụng cáp RJ11 chuẩn ethernet công nghiệp làm cho kết nối
47
vật lý trở nên chắc chắn và dễ kiểm soát hơn. Đồng thời các ngoại vi tương thích theo chuẩn của arduino cho phép các cảm biến đọc ghi dễ dàng.
STT Tên ngoại
vi/cổng kết nối Chức năng
1 USB
Cung cấp nguồn 5V cho Board từ máy tính, sạc điện thoại, …
Nạp chương trình được lập trình từ máy tính Giao tiếp truyền - nhận dữ liệu với máy tính
2 Nút On/Off
Cho phép cung cấp hoặc ngừng cung cấp nguồn cho Board khi sử dụng nguồn ngoài như: Pin, Adaptor… được kết nối qua Jack DC [3]
3 DC Jack Cấp nguồn cho Board từ nguồn như pin, adapter. (Khuyến
cáo 7-24V)
4 Nút Reset Khởi động lại chương trình trên Board.
5 Nút Boot/Run Boot: Nạp chương trình từ máy tính xuống Board.
Run: Cho phép sử dụng kết nối module Bluetooth hoặc Wifi.
6 Wifi/Bluetooth Cho phép Board mở rộng kết nối không dây sử dụng module Bluetooth hoặc Wifi nếu cần thiết.
7 Nút nhấn Ngoại vi được sử dụng dưới dạng dữ liệu đầu vào cơ bản.
8 Đèn LED Ngoại vi được sử dụng dưới dạng dữ liệu đầu ra hình ảnh cơ bản. 9 Còi Ngoại vi được sử dụng dưới dạng dữ liệu đầu ra âm thanh cơ
bản.
10 Mắt thu hồng
ngoại
Ngoại vi được sử dụng dưới dạng dữ liệu đầu vào để giao tiếp với các loại điều khiển hồng ngoại như: Điều khiển điều hòa, điều khiển tivi…
11 Port
(Cổng kết nối)
Bao gồm 4 Ports được sử dụng để kết nối với các thiết bị ngoại vi (TBNV) khác như: TBNV nhập liệu đầu vào, TBNV đầu ra điều khiển, TBNV cảm biến, TBNV hiển thị, TBNV Robot…
Bảng 3.1: Mô tả ngoại vi phần cứng Clover
STT Màu sắc cổng Ý nghĩa kết nối
1 Vàng (Yellow) Vào/Ra số (Digital Input/Output)
2 Cam (Orange) Ra tương tự - PWM
3 Đen (Black) UART
4 Nâu (Brown) I2C
5 Xanh lục (Green) SPI
6
Xanh lam (Blue) Vào tương tự (ADC)
Lam nhạt 1 chân ADC
Lam vừa 2 chân ADC
Lam đậm 4 chân ADC
48
Port Ký hiệu Digital I/O ADC Kết nối khác
1 4 1 PWM
2 4 2 UART
3 4 4 I2C
4 4 1 SPI
Bảng 3.3: Mô tả thông tin các cổng kết nối Clover
Để tiến hành kết nối với ngoại vi đầu cuối là thiết bị dân dụng 220VAC, học viên sử dụng một thiết bị cho phép kết nối theo chuẩn RJ11 và có thể nhận tín hiệu điều khiển từ Clover Board.
Hình 3.3: Thiết bị kết nối 220VAC
Ổ cắm có thể cấp nguồn cho 3 thiết bị điện cùng lúc
Một đầu kết nối với nguồn điện dân dụng thông qua dây kết nối 220V Một đầu kết nối với Clover Board cho phép Board điều khiển việc cấp điện
cho các thiết bị điện
Ổ cắm được đóng gói hoàn chỉnh dễ dàng cho việc kết nối thay vì phải đấu nối dây điện trực tiếp, an toàn khi sử dụng và tránh được các tai nạn ngoài ý muốn.
Để có thể nhận biết trạng thái ánh sáng môi trường học viên sử dụng một cảm biến ánh sáng, Dựa trên nguyên lý làm việc của quang điện trở là khi ánh sáng chiếu vào chất bán dẫn làm phát sinh các điện tử tự do, tức sự dẫn điện tăng lên và giảm điện trở của chất bán dẫn, các đặc tính điện và độ nhạy của quang điện trở phụ thuộc vào vật liệu chế tạo. Trong bóng tối quang trở có điện trở lên đến
49
vài MΩ, khi có ánh sáng điện trở giảm xuống mức một vài Ω. Module được thiết kế với hai ngõ ra Analog và Digital( TTL) đầu ra Digital được thiết lập ngưỡng sáng bằng chiết áp trên module, xoay chiết áp về bên dấu “+” để tăng độ nhạy, xoay chiết áp về bên dấu “-” để giảm độ nhạy. Khi có ánh sáng đầu ra Digital ở mức 0( 0V-TTL) khi che tối ở mức 1( 5V-TTL).
Hình 3.4: Cảm biến thu thập dữ liệu ánh sáng
Để có thể thu thập giá trị nhiệt độ, độ ẩm của môi trường, học viên sử dụng một cảm biến nhiệt độ độ ẩm tương thích với Clover kit. Module được kết nối thông qua cáp RJ11. Được tích hợp bộ đo nhiệt độ và độ ẩm cùng bộ xử lý trong một nhằm đơn giản hóa kết nối và tăng độ chính xác cho việc ghi nhận nhiệt độ và độ ẩm môi trường. Độ chính xác cao, khả năng đáp ứng nhanh, khả năng kháng nhiễu tốt cảm biến là một sự lựa chọn cho các dự án IoT.
Cảm biến với lõi DHT11 là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp one wire (giao tiếp digital một dây truyền dữ liệu duy nhất). Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp người dùng có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào.
Hình 3.5: Cảm biến nhiệt độ độ ẩm
Khi đã đầy đủ các thành phần kết nối trên bo mạch chính clover theo chuẩn RJ11, đảm bảo quá trình đọc ghi dữ liệu được liền mạch để sẵn sàng cho chương trình được xử lý bởi trung tâm là một vi điều khiển nhúng thuộc chuẩn nhúng phổ biến là atmega 328P rất phổ biến trong xây dựng các hệ thống IoT.
50
Hình 3.6: Kết nối phần cứng hoàn thiện
Phần cứng kết nối hoàn thiện với cảm biến ánh sáng, cảm biến nhiệt độ độ ẩm có nhiệm vụ thu thập các dữ liệu môi trường, hai cảm biến này được xử lý và lập trình bởi board mạch clover và kết nối cới port dữ liệu tương ứng. Bo mạch có nhiệm vụ truy nhập wifi ESP8266-ESP12 được tích hợp trên bo mạch với anten pcb cực kì nhỏ gọn. Phần truy nhập wifi cũng được cấu hình và lập trình tài mục này.
3.1.2 Lập trình tầng firmware
Hình 3.7: chu trình đọc ghi dữ liệu từ cảm biến
Dữ liệu thu thập từ cảm biến sẽ liên tục được đọc ghi và cập nhật lên server lưu trữ theo thời gian thực, chính vì vậy được xây dựng bởi hàm updatesensor (toàn bộ chương trình
đính kèm ở phụ)
void UpdateSensor() {
Temperature = DHT11_getTemperature(); Humidity = DHT11_getHumidity();
51 Light = LightSensor_ReadasAnalog(2,PERCENT); IoT_SendData("IoTTemp",(String)(Temperature)); delay(5); IoT_SendData("IoTHumidity",(String)(Humidity)); delay(5); IoT_SendData("IoTLight",(String)(Light)); }
Cấu trúc của chương trình là chia các dữ liệu thành các bản tin “IoT send” rồi thông qua giao thức MQTT để vận chuyển dữ liệu và đồng bộ hóa, các số liệu sẽ được chuyển đổi thành dạng bản tin thích hợp của MQTT broker và được liên tục update.
Hình 3.8: Chu trình cập nhật dữ liệu lên MQTT server
Để có thể cung cấp server chứa giao thức MQTT học viên sử dụng nền tảng cloudmqtt để chứa các dữ liệu thu thập được cũng như lắng nghe các bản tin truyền nhận để thực hiện giao tiếp với tầng điều khiển dưới vi điều khiển nhúng và giao tiếp với tầng dashboard giao diện phía trên.
IoT_WifiConfig("admin","12345689");
IoT_ServerConfig("m13.cloudmqtt.com","11152"); IoT_UserConfig("admin","123456");
IoT_Listen("IoTControl");
52
Hình 3.9: Các node trong ứng dụng nhà thông minh trên Node RED
Để xây dựng giao diện dashboad và nhúng MQTT cần tiến hành các bước sau: Khởi tạo cấu hình cảm biến và gắn các trường giữ liệu đối với trường dữ liệu cảm biến độ ẩm, nhiệt độ, ánh sáng. Tại cửa sổ network trên giao diện Node RED chọn button “mqtt in” và điền các trường như sau
Hình 3.10: khai báo các trường của cảm biến ánh sáng
Giải thích các trường cần cấu hình:
Server: nơi chứa địa của mqttcloud với port tương ứng
Topic: chứa tên gọi topic đã được khởi tạo trong MQTT, topic của tương ứng với tên của trường dữ liệu truyền từ dưới thiết bị ESP8266 lên. Đối với ảnh trên là cấu hình cho cảm biến ánh sáng tương thích với “IoTLight”.
53
Output: auto detect, tự động chuyển đổi kiểu dữ liệu. Name: nhãn tên khi hiển thị lên giao diện.
Hình 3.11: cấu hình các trường của biểu đồ hiển thị
Group: cho phép đặt tên để gom các nhãn lại để dễ quản lý Size: quyết định kích thước hiển thị của biểu đồ
Label: đặt tên hiển thị
Type: quyết định dạng biểu đồ X-asis: trục x hiển thị của biểu đồ Y-asis: trục y hiển thị của biểu đồ
Series clours: chọn màu hiển thị của biểu đồ
Đối với Node RED việc cấu hình một biểu đồ để hiển thị dữ liệu hết sức đơn giản, hơn nữa cấu hình cho giao diện người dùng nhà thông minh cũng không cần quá phức tạp nhưng phải hiển thị dữ liệu một các cụ thể và tiện thao tác cho người dùng. Đặc biệt kết nối của các thiết bị sẽ có mức độ ổn định khác nhau và có độ trễ nhất định chính vì vậy cần cấu hình giao thức MQTT cho phép bản tin truyền nhận theo các khung dữ liệu dạng chuỗi json để đảm bảo bản tin vẫn đúng kẻ cả khi băng thông thấp và không ổn định.
Sau khi đã cấu hình các cảm biến thành công tiếp tục tiến hành cấu hình các nút nhấn chuyển chế độ. Tại của sổ dashboard của Node RED chọn nút “switch” và cấu hình tương tự cho các nút đèn chiếu sáng, đèn phòng ngủ, rèm cửa sổ.
54
Hình 3.12: Cấu hình nút điều khiển trong nhà thông minh
Group: cho phép nhóm các nhãn
Size: điều khiển kích thước, nếu muốn tự động điều chỉnh các màn hình khác nhau thì để ở chế độ auto
Label: cho phép đặt tên nhãn hiển thị trên giao diện. Icon: cho phép tải ảnh đại diện để hiện thị nút điều khiển On Payload: khi gạt nút thì truyền bản tin “LIGHTON” Off Payload: khi tắt nút thì truyền bản tin “LIGHTOFF”
55
3.3 Chạy thử nghiệm hệ thống
Sau khi tiến hành khởi tạo và thiết lập các node trên Node RED, đồng thời load firmware cho phần cứng, cho kết quả tương ứng như sau:
Hình 3.13: Kết quả xây dựng ứng dụng điều khiển nhà thông minh
Thông số chung của sản phẩm:
STT Nội dung Số lượng Khả năng
1 Cảm biến 2 Đo nhiệt độ(0-60oC), độ ẩm (0- 100%), ánh sáng (0-100%),
2 Điều khiển 3 Điều khiển 220VAC
3 Biểu đồ 3 Vẽ biểu đồ thời gian thực
4 Khác
Biểu đồ màu thay đổi theo mức (ví dụ: nhiệt độ trung bình biểu đồ màu
56
3.4 Kết luận
Chương cuối của luận văn tập trung vào xây dựng trực tiếp hệ thống trên nền tảng Node RED và lập trình trên các phần cứng đã lựa chọn. Kết quả nhận được là phần cứng đã hoạt động theo đúng tính năng, chương trình phần mềm hiển thị giao diện và điều khiển tương thích với phần cứng. Hệ thống sử dụng nền tảng Node RED hoạt động ổn định, phần cứng thông qua kết nối từ module wifi ESP8266 cho kết nối ổn định với khoảng cách trong phạm vi nhà ở trung bình. Hệ thống cũng cho phép biến các thiết bị điện cơ bản như quạt, đèn… thành thiết bị có thể tham gia vào mạng internet khẳng định đặc tính “Things” của sự thông minh trong kết nối vạn vật. Ngoài ra, nền tảng Node RED được học viên sử dụng hoàn toàn có thể mở rộng với các điều khiển thông minh như lập lịch, thiết đặt kịch bản hoặc chế độ luật điều khiển như nhà thông minh hiện có.
57
KẾT LUẬN
Dưới sự hướng dẫn của người hướng dẫn khoa học cùng với sự tập trung nghiên cứu của bản thân, sau một quá trình tìm hiểu, nghiên cứu, xây dựng và giải quyết bài toán đặt ra trong luận văn học viên đã hoàn thiện được nội dung luận văn đáp ứng được các yêu cầu và nội dung đặt ra theo đề cương đã xây dựng.
Về những kết quả thực tế luận văn đã đạt được:
Cách thức cài đặt và sử dụng nền tảng Node RED trong xây dựng ứng dụng IoT nói chung và nhà thông minh nói riêng.
Xây dựng thành công chương trình điều khiển nhà thông minh trên nền tảng Node RED
Xây dựng thành công thiết bị thử nghiệm nhà thông minh có khả năng điều khiển thông qua internet.
Về định hướng nghiên cứu tiếp theo, học viên dự kiến sẽ thực hiện các công việc sau:
Phát triển nhiều node wifi đề điều khiển đa dạng hơn.
Phát triển hệ thống giao diện dashboard với tốc độ cao hơn và nhiều kịch bản điều khiển hơn.
Cuối cùng, học viên xin chân thành cảm ơn các Thầy, Cô và các bạn Học viên đã quan tâm đến những vấn đề được trình bày trong luận văn này.