Tích hợp wifi trên nền tảng Node RED

Một phần của tài liệu (Luận văn thạc sĩ) Nghiên cứu xây dựng ứng dụng trên nền tảng NODE RED phục vụ nhà thông minh (Trang 47)

39

MQTT(Message Queuing Telemetry Transport) là giao thức truyền message theo mô hình cung cấp thuê bao publish/subcribe sử dụng cho các thiết bị bằng băng thông thấp, độ tin cậy cao và có khả năng hoạt động trong điều kiện đường truyền không ổn đinh. Bởi vì sử dụng băng thông thấp trong môi trường có độ trễ cao nên đây là giao thức lý tưởng cho việc xây dựng các ứng dụng IoT đặc biệt là trong xây dựng ứng dụng cho nhà thông minh. Trong một hệ thống sử dụng giao thức MQTT, nhiều node trạm (gọi là MQTT client hoặc client, là các publisher hoặc subscriber) kết nối tới một MQTT server (gọi là broker). Mỗi client sẽ đăng ký một vài kênh (topic). Quá trình đăng ký này gọi là subscribe. Trong đề tài luận văn sẽ sử dụng MQTT trao đổi dữ liệu trong hệ thống xây dựng bằng Node RED. Về cơ bản công nghệ MQTT được cấu tạo gồm:

Session: Một session- phiên làm việc được định nghĩa là kết nối từ client đến server. Tất cả các giao tiếp giữa client và server đều là một phần của phiên.

Subscription: Không giống như sessions, subscription về mặt logic là kết nối từ client đến topic. Khi thực hiện subscribed đến topic, client có thể trao đổi messages với topic. Subscriptions có thể ở trạng thái ‘transient’ hoặc ‘durable’, phụ thuộc vào cờ clean session trong gói Connect.

Publish: là hành động một client gửi dữ liệu lên kênh thông tin, mỗi khi kênh thông tin đó được cập nhật dữ liệu (dữ liệu này có thể được các client khác gửi lên) thì những client đã đăng ký theo dõi kênh này sẽ nhận được dữ liệu cập nhật đó.

Message (message payload): có định dạng mặc định là plain-text, dạng chữ viết người dùng có thể đọc được, tất nhiên dạng text này có thể được thay đổi theo nhu cầu người dùng.

Topic: Có thể coi như một “đường truyền” logic giữa hai điểm là publisher và subscriber. Về cơ bản, khi message được publish vào một topic thì tất cả những subscriber của topic đó sẽ nhận được message này.

Retain: là một cờ (flag) được gắn cho một message của MQTT. Retain chỉ nhận giá trị 0 hoặc 1 ( tương ứng giá trị logic false or true). Nếu retain= 1, broker sẽ lưu lại message cuối cùng của 1 topic kèm theo mức QoS tương ứng. Khi client bắt đầu subscribe topic có message được lưu lại đó, client ngay lập tức nhận được message.

Unsubscribe: Client muốn hủy bỏ việc đăng ký với broker.

MQTT Bridge: là một tính năng của MQTT Broker cho phép các MQTT Broker có thể kết nối và trao đổi dữ liệu với nhau. Để sử dụng tính năng này, ta cần tối thiểu 2 broker,

40

một broker bất kỳ được cấu hình thành bridge. Khi cấu hình MQTT bridge, ta cần lưu ý các thông số: address, bridge_protocol_version, topic.

Hình 2.11: Kiến trúc mức cao của giao thức MQTT

Kiến trúc mức cao của MQTT gồm hai phần chính là: Broker và Clients. Ta có thể hiểu theo cách đơn giản, broker giống như một sạp báo. Publisher là các tòa soạn báo. Tòa soạn in báo và chuyển cho sạp báo. Người đọc báo đến sạp báo, chọn tờ báo mình cần đọc (subscriber).

Broker được coi là trung tâm, nó là điểm giao của tất cả các kết nối đến từ client. Nhiệm vụ chính của broker là nhận message từ publisher, xếp các message theo hàng đợi rồi chuyển chúng tới một địa chỉ cụ thể. Nhiệm vụ phụ của nó có thể đảm nhận một vài tính năng liên quan tới quá trình truyền thông như : bảo mật message, lưu trữ message, logs.

Client chia thành 2 nhóm: publisher và subscriber. Là các software components hoạt động tại edge device nên chúng được thiết kế để có thể hoạt động một cách linh hoạt Client chỉ làm ít nhất một trong 2 việc là publish các message lên một topic cụ thể hoặc subscribe một topic nào đó để nhận message từ topic này.

Số lượng thiết bị “client” được kết nối với broker phụ thuộc vào nhà cung cấp dịch vụ.Trong thực tế, nó có thể đạt được một số lượng lớn các khách hàng vừa xuất bản và đăng ký liên tục. MQTT Clients tương thích với hầu hết các nền tảng hệ điều hành hiện có: MAC OS, Windows, Linux, Androids, iOS...

41

ESP8266 là một hệ thống trên chip (SoC), do công ty Espressif của Trung Quốc sản xuất. Thiết bị này bao gồm bộ vi điều khiển Tensilica L106 32-bit (MCU) và bộ thu phát Wi-Fi. Bo mạch chính gồm có 11 chân GPIO (Chân đầu vào / đầu ra đa dụng) và một đầu vào analog, hỗ trợ lập trình đơn giản với ngôn ngữ bậc cao. Bản thân chip ESP8266 có 17 chân GPIO, nhưng 6 trong số các chân này (6-11) được sử dụng để giao tiếp với chip nhớ flash trên bo mạch. các module độc lập như dòng ESP -của AI Thinker hoặc các bộ phát triển hoàn chỉnh như NodeMCU DevKit hoặc WeMos D1. Các bo mạch khác nhau có thể có các chân cắm khác nhau, có ăng-ten Wi-Fi khác nhau hoặc dung lượng bộ nhớ flash khác nhau trên bo mạch.

Hình 2.12: Sơ đồ khối của chip wifi ESP8266

Không như ứng dụng vi điều khiển, ESP8266 muốn hoạt động được phải có thêm bộ nhớ Flash bên ngoài để chứa dữ liệu chương trình và phải được thiết kế antena tốt mới có cho kết nối WiFi ổn định. Do đó, sử dụng module ESP8266 đã được tích hợp sẵn bộ nhớ Flash để lưu chương trình và antena là lựa chọn tốt nhất cho người dùng phổ thông. Trên thị trường có nhiều module của nhiều nhà sản xuất khác nhau. Các module này khác nhau cơ bản ở dung lượng bộ nhớ dữ liệu và cách thiết kế antena. Ngoài ra, chúng còn khác nhau về kích thước, kiểu ra chân và các chứng chỉ kiểm nghiệm. Mạch phát triển (KIT) ESP8266 là mạch điện giúp chúng ta dễ dàng tìm hiểu cách lập trình ESP8266. Ngoài module ESP8266, mạch phát triển sẽ được tích hợp thêm các chức năng cấp nguồn, chức năng cổng COM ảo dùng để download firmware, nút nhấn và LED. Một số mạch phát triển còn được tích hợp thêm các linh kiện chuyên dụng như module GSM/GSP, module LoRa, module OLED…

42

Hình 2.13: Mô hình hệ thống nhà thông minh

Mô hình hệ thống nhà thông minh được xây dựng bao gồm các phần sau:

Cảm biến: nơi thu thập dữ liệu của môi trường và phản hồi về bộ xử lý, đây cũng là nơi để trung chuyển dữ liệu lên tầng cao hơn đồng thời xử lý dữ liệu thô từ cảm biến thành các dữ liệu mà người dùng có thể quan sát được.

Thiết bị: dạng đầu cuối của hệ thống, nơi tiếp nhận sự điều khiển và thực thi các tác vụ của người dùng, thiết bị ở đây có thể là các thiết bị cơ bản như bóng đèn, quạt… cũng có thể là thiết bị thông minh.

Wifi ESP8266: thiết bị có nhiệm vụ truy nhập vào hệ thống wifi của căn nhà thông minh, đây cũng là một thiết bị nhúng lập trình bằng ngôn ngữ C, thiết bị có thể cấu hình được mật khẩu và tài khoản đăng nhập wifi, cho phép xử lý dữ liệu từ cảm biến, đưa ra các lệnh điều khiển đến thiết bị đầu cuối, đồng độ bản tin lên MQTT broker.

Node RED: cho phép xây dựng giao diện tương tác người dùng dashboard và nhúng giao thức MQTT để vận chuyển và trao đổi dữ liệu trên nền tảng web. MQTT server sẽ tạo ra các node mạng với điểm trung chuyển phần cứng là các điểm chứa ESP8266. Đồng thời MQTT server cũng được cung cấp cơ chế bảo mật với username và password. Trường username là một chuỗi có định dạng UTF-8 và trường password là dữ liệu nhị phân với kích thước tối đa là 65535 bytes. Sự bất cập trong phiên bản MQTT v3.1 là sử dụng mật khẩu với 12 ký tự đã được bãi bỏ ở phiên bản MQTT v3.1.1. Ngoài ra phiên bản này cũng định nghĩa rằng: một client có thể có username mà không cần password nhưng không thể tồn tại trạng thái ngược lại. Khi sử dụng xác thực bằng tên người dùng và mật khẩu, MQTT broker sẽ đánh giá thông tin client dựa trên cơ chế xác thực đã được triễn khai và gửi trả về gói tin phản hồi gọi là CONNACK, trong đó bao gồm một mã trạng thái gọi là return code.

43

Giao diện Dashboard: thông qua Node RED giao diện người dùng được thiết kế trực quan và đơn giản, giao diện tương tác trực tiếp trên web browser không phụ thuộc vào thiết bị đó là máy tính nào hay điện thoại nào. Giao diện trên Node RED cũng có thiết kế hết sức linh hoạt với các nút bấm, thanh trượt, đồ thị thời gian thực…

2.4 Kết luận

Chương này đã trình bày được nền tảng Node RED và hướng dẫn cơ bản để có thể cài đặt, sử dụng nền tảng. Đồng thời chương cũng giới thiệu sơ lược được thiết bị cho phép kết nối wifi và giao thức vận chuyển dữ liệu MQTT. Thông qua nền tảng Node RED làm chủ đạo xây dựng được mô hình điều khiển cơ bản của hệ thống nhà thông minh.

44

CHƯƠNG 3: THIẾT KẾ CHẾ TẠO THỬ NGHIỆM

Chương 3 gồm các phần như sau: phần đầu trình bày cách thức chế tạo thiết bị phần cứng có khả năng hỗ trợ giao tiếp wifi, phần tiếp theo trình bày cách thức xây dựng ứng dụng điều khiển trong nhà thông minh dựa trên nền tảng Node RED, phần cuối là tích hợp thiết bị và chạy thử nghiệm.

3.1Xây dựng phần cứng và lập trình firmware

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. Độ

Một phần của tài liệu (Luận văn thạc sĩ) Nghiên cứu xây dựng ứng dụng trên nền tảng NODE RED phục vụ nhà thông minh (Trang 47)