2.1.3.5. Giao tiếp
Module này được trang bị giao diện truyền dữ liệu nối tiếp TTL, đọc và thiết lập các thông số liên quan thông qua cổng giao tiếp.
Bảng 2.1: Các biến số đo lường của PZEM004T
NO FUNCTION HEAD DATA1-DATA5 SUM
1a Voltage Req B0 C0 A8 01 01 00 (Computer sends a request to read the voltage value) 1A 1b Voltage Resp A0 00 E6 02 00 00 (Meter reply the
voltage value is 230.2V) 88 2a Current Req B1 C0 A8 01 01 00 (Computer sends a
request to read the current value) 1B 2b Curent Resp A1 00 11 22 00 00 (Meter reply the
current value is 17.32A) D2
3a Active power Req B2
C0 A8 01 01 00 (Computer sends a request to read the active power
value)
1C
3b Active power
Resp A2
08 98 00 00 00 (Meter reply the active power value is 2200W) 42 4a Read enery Req B3 C0 A8 01 01 00 (Computer sends a
request to read the enery value) 1D 4b Read enery Resp A3 01 86 9f 00 00 (Meter reply the
enery value is 99999Wh) C9
5a Set the module
address Req B4
C0 A8 01 01 00 (Computer sends a request to set the address, the
address is 192.168.1.1)
1E
5b Set the module
address Resp A4
00 00 00 00 00 (Meter reply the
address was successfully set) A4
6a
Set the power alarm threshold
Req
B5
C0 A8 01 01 14 (Computer sends a request to set a power alarm
threshold)
33
6b
Set the power alarm threshold
Resp
A5
00 00 00 00 00 (Meter reply the power alarm threshold was
successfully set)
A5
2.1.3.6. Thông số kỹ thuật
- Model: PZEM-004
- Điện áp đo và hoạt động: 80 260VAC / 50 - 60Hz, sai số 0.01 - Dòng điện đo và hoạt động: 0 100A, sai số 0.01
- Công suất đo và hoạt động: 0 26000W - Năng lượng đo và hoạt động: 0 9999kWh.
- Màn hình hiển thị: 4 màn hình led cho các thơng số.
- Có cổng giao tiếp UART dễ dàng giao tiếp truyền dữ liệu với vi điều khiển. - Tích hợp nút nhấn Reset các thơng số dễ dàng.
2.2. Cấu hình phần cứng của hệ thống
2.2.1. Cấu hình chung
Cấu hình phần cứng của hệ thống giám sát và phân tích chất lượng điện năng dựa trên công nghệ IoT của đề tài này được thiết kế có cấu trúc như Hình 2.7. Điện áp ba pha từ mạch điện xoay chiều ba pha 380/220VAC được đưa trực tiếp đến ba module PZEM004T còn dòng điện trên từng pha được đưa module PZEM004T thông qua ba máy biến dòng 100/1A. Mỗi module PZEM004T sẽ xử lý, đo lường các đại lượng điện bao gồm: tần số, điện áp, dịng điện, cơng suất và điện năng tiêu thụ của từng pha. Ngồi ra chúng cịn được kết nối chung với một bộ vi xử lý Arduino WeMos D1 R1 có tích hợp module Wifi ESP8266. Một khi nhận lệnh từ bộ vi xử lý Arduino WeMos D1 R1 thì các module PZEM004T sẽ gửi bộ dữ liệu đo lường đến Arduino WeMos D1 R1. Sau đó tồn bộ dữ liệu đó sẽ được gửi lên cơ sở dữ liệu của ThingSpeak thông qua Internet. Khi đó, người dùng có thể truy cập để giám tồn bộ dữ liệu của hệ thống trên máy tính hoặc smartphone có kết nối với Internet ở bất cứ nơi nào.
2.2.2. Cấu hình chi tiết lắp ráp
Từ cấu hình tổng thể và các thiết bị phần cứng đã trình bày ở trên, đề tài nghiên cứu ứng dụng phần mềm Proteus 8.8 thiết kế mạch và mô phỏng hoạt động của mạch. Phần mềm Proteus có hỗ trợ các thư viện của các thiết bị phần cứng như Arduino, ESP, PZEM, LCD,. . . để giúp ta thực hiện thiết kế mạch
DATA AGGRETION AND ANALYTICS ThingSpeak ALGORITHM DEVELOPMENT SENSOR ANALYTICS MATLAB Smartphone Smartphone ... Module PZEM004T WeMos D1 R1 ESP8266 Microcontroller Module PZEM004T Module PZEM004T LOAD Router N C B A 380/220VAC MQTT Python Database LOCAL SERVER TI TI TI Hình 2.7: Cấu hình phần cứng của hệ thống
Hình 2.8: Sơ đồ nối dây chi tiết trên phần mềm Proteus 8.8
thể hiện sơ đồ nối dây chi tiết giữa các phần tử, đồng thời ta có thể mơ phỏng để kiểm chứng các chức năng hoạt động của hệ thống thiết kế. Hình 2.8 thể hiện sơ đồ nối dây chi tiết của hệ thống đã thiết kế trên phần mềm Proteus 8.8.
Arduino WeMos D1 R1 Module PZEM004T Module PZEM004T Module PZEM004T Module relay Ngõ vào điện áp Hình 2.9: Hình ảnh tổng thể của hệ thống
Proteus 8.8, tác giả tiến hành thiết kế và lắp ráp mạch của hệ thống thực nghiệm theo sơ đồ nối dây chi tiết đã thực hiện. Kết nối các phần tử lại với nhau sẽ được hệ thống hoàn chỉnh để giám sát và phân tích chất lượng điện năng trong đề tài này có hình ảnh tổng thể như Hình 2.9. Các phần tử chính của hệ thống bao gồm: 03 máy biến dịng 100/1A cho ba pha, 03 module PZEM004T để đo lường các đại lượng điện của ba pha, 01 bo mạch Arduino WeMos D1 R1, 01 module rơle để mở rộng phần điều khiển. Cách thức lắp đặt hệ thống để thực hiện việc giám sát và phân tích chất lượng điện năng đó là: Điện áp ba pha A, B, C và dây trung tính N của mạng điện hạ áp 380/220V được đưa vào ngõ vào điện áp của hệ thống. Tại ngõ vào này, điện áp pha nào sẽ được đưa vào đầu vào điện áp của PZEM004T của pha đó. Dịng điện pha A, B, C của phần mạch lực sẽ được biến đổi sang phía thứ cấp của ba máy biến dịng và được đưa vào đầu vào dòng điện của ba PZEM004T.
2.3. Kết luận chương 2
Nội dung chương 2 đã thể hiện được việc thiết kế lựa chọn các thiết bị phần cứng của hệ thống giám sát và phân tích chất lượng điện năng dựa trên cơng nghệ IoT. Các linh kiện điện tử phục vụ cho việc đo lường, điều khiển, hiển thị chẳng hạn như máy biến dòng 100/1A, module PZEM004T, bo mạch Arduino Wemos D1 R1, môđun wifi kết nối với Arduino,. . . đã được lựa chọn để thu thập dữ liệu, xử lý và tính tốn các thơng số mong muốn như điện áp, dịng điện, công suất, điện năng tiêu thụ,. . . Sơ đồ kết nối dây giữa các thiết bị phần cứng, sơ đồ chi tiết thể hiện sự đấu nối giữa các phần tử cũng đã được trình bày trong chương này. Sau khi nghiên cứu lắp ráp hệ thống phần cứng hồn chỉnh thì tổng thể của hệ thống cũng được thể hiện giúp người đọc dễ dàng hình dung.
CHƯƠNG 3.
THIẾT KẾ CHƯƠNG TRÌNH GIÁM SÁT VÀ PHÂN TÍCH CHẤT LƯỢNG ĐIỆN NĂNG
DỰA TRÊN CÔNG NGHỆ IoT
Các dữ liệu đo lường từ hệ thống được lắp đặt tại vị trí cần giám sát sẽ được thu thập và đẩy lên Internet để phục vụ cho việc giám sát và phân tích chất lượng điện năng tại vị trí cần giám sát. Một ứng dụng dựa trên công nghệ IoT được sử dụng trong luận văn này đó là phần mềm ThingSpeak. Sau khi thiết lập các thơng số ban đầu cần thiết để phần mềm thiết kế trên ThingSpeak có thể kết nối với hệ thống thơng qua Internet thì tất cả các thơng số chất lượng điện năng sẽ được giám sát và phân tích một cách đầy đủ và trực quan thơng qua các biểu đồ. Hoặc có thể sử dụng các cách thức lưu trữ và phân tích kết quả bằng phần mềm khác như: Matlab, Excel,... khi cần thiết. Do đó, nội dung cơ bản của chương này sẽ tập trung vào việc ứng dụng các phần mềm để viết lệnh nạp vào bo mạch Arduino nhằm mục đích đọc được các dữ liệu đo lường từ các module PZEM004T sau đó đẩy dữ liệu lên mạng Internet để hiển thị trên giao diện được thiết kế trên phần mềm ThingSpeak.
3.1. Các giao thức truyền thông trong các ứng dụng IoT
Trong luận văn này, các dữ liệu đo lường của hệ thống đặt tại vị trí cần giám sát sẽ được truyền thông dữ liệu lên mạng Internet để thực hiện việc giám sát và phân tích chất lượng điện năng trên phần mềm Thingspeak tại các máy tính hoặc smartphone có kết nối với Internet. Q trình truyền thơng dữ liệu đó có thể được thực hiện theo một số giao thức truyền thông. Hiện nay có năm giao
thức truyền tải dữ liệu phổ biến có thể được sử dụng trong các ứng dụng IoT như sau:
- MQTT (Message Queue Telemetry Transport) - CoAP (Constrained Applications Protocol) - AMQP (Advanced Message Queue Protocol)
- XMPP (Extensible Messaging và Presence Protocol) - DDS (Data Distribution Service)
3.1.1. MQTT (Message Queue Telemetry Transport)
Hình 3.1 thể hiện giao thức MQTT, nó là một giao thức mã nguồn mở để truyền các messages giữa nhiều Client (Publisher và Subscriber) thông qua một Broker trung gian, được thiết kế để đơn giản và dễ dàng triển khai. Kiến trúc MQTT dựa trên Broker trung gian và sử dụng kết nối TCP long-lived từ các Client đến Broker. MQTT hỗ trợ tổ chức hệ thống theo các Topics có tính phân cấp, như một hệ thống tập tin (ví dụ: /Home/kitchen/humidity), cung cấp nhiều lựa chọn điều khiển và QoS (Quality of Service). MQTT là một giao thức khá nhẹ nên có thể được sử dụng cho truyền thông 2 chiều thông qua các mạng có độ trễ cao và độ tin cậy thấp, nó cũng tương thích với các thiết bị tiêu thụ điện năng thấp.
3.1.2. CoAP (Constrained Applications Protocol)
CoAP (Hình 3.2) là một giao thức truyền tải tài liệu theo mơ hình clien- t/server dựa trên Internet tương tự như giao thức HTTP nhưng được thiết kế cho các thiết bị ràng buộc. Giao thức này hỗ trợ một giao thức one-to-one để chuyển đổi trạng thái thông tin giữa client và server. CoAP sử dụng UDP (User Datagram Protocol), khơng hỗ trợ TCP, ngồi ra cịn hỗ trợ địa chỉ broadcast và multicast, truyền thông CoAP thông qua các datagram phi kết nối (connec- tionless) có thể được sử dụng trên các giao thức truyền thông dựa trên các gói.
Hình 3.1: Giao thức truyền thơng MQTT
UDP có thể dễ dàng triển khai trên các vi điều khiển hơn TCP nhưng các cơng cụ bảo mật như SSL/TSL khơng có sẵn, tuy nhiên ta có thể sử dụng Datagram Transport Layer Security (DTLS) để thay thế.
3.1.3. AMQP (Advanced Message Queue Protocol)
AMQP (Hình 3.3) là một giao thức làm trung gian cho các gói tin trên lớp ứng dụng với mục đích thay thế các hệ thống truyền tin độc quyền và khơng tương thích. Các tính năng chính của AMQP là định hướng message, hàng đợi, định tuyến (bao gồm point-to-point và publish-subscribe) có độ tin cậy và bảo mật cao. Các hoạt động sẽ được thực hiện thơng qua broker, nó cung cấp khả năng điều khiển luồng (Flow Control). Một trong các Message Broker phổ biến là RabbitMQ, được lập trình bằng ngơn ngữ Erlang, RabbitMQ cung cấp cho lập trình viên một phương tiện trung gian để giao tiếp giữa nhiều thành phần trong một hệ thống lớn. Không giống như các giao thức khác, AMQP là một giao thức có dây (wire-protocol), có khả năng diễn tả các message phù hợp với định dạng dữ liệu, có thể triển khai với rất nhiều loại ngơn ngữ lập trình.
Hình 3.3: Giao thức truyền thơng AMQP
3.1.4. DDS (Data Distribution Service)
DDS (Hình 3.4) là một ngơn ngữ trung gian dựa vào dữ liệu tập trung được sử dụng để cho phép khả năng mở rộng, thời gian thực, độ tin cậy cao và trao đổi dữ liệu tương tác. Đây là một giao thức phi tập trung (broker-less) với truyền thông ngang hàng trực tiếp theo kiểu peer-to-peer giữa các publishers và subscribers và được thiết kế để trở thành một ngôn ngữ và hệ điều hành độc lập. DDS gửi và nhận dữ liệu, sự kiện, và thơng tin lệnh trên UDP nhưng cũng
có thể chạy trên các giao thức truyền tải khác như IP Multicast, TCP/IP, bộ nhớ chia sẻ,. . . DDS hỗ trợ các kết nối được quản lý many-to-many theo thời gian thực và ngồi ra cịn hỗ trợ dị tìm tự động (automatic discovery). Các ứng dụng sử dụng DDS cho truyền thông được tách riêng và không yêu cầu sự can thiệp từ các ứng dụng của người dùng, có thể đơn giản hóa việc lập trình mạng phức tạp. Các tham số QoS được sử dụng để xác định các cơ chế tự dị tìm của nó được thiết lập một lần.
Hình 3.4: Giao thức truyền thông DDS
3.1.5. XMPP (Extensible Messaging và Presence Protocol)
XMPP (Hình 3.5) là giao thức truyền thơng dùng cho định hướng tin nhắn trung gian dựa trên ngôn ngữ XML. XMPP là mơ hình phân quyền client-server phi tập trung, được sử dụng cho các ứng dụng nhắn tin văn bản. Có thể nói XMPP gần như là thời gian thực và có thể mở rộng đến hàng trăm hàng nghìn nút. Dữ liệu nhị phân phải được mã hóa base64 trước khi nó được truyền đi trong băng tần. XMPP tương tự như MQTT, có thể chạy trên nền tảng TCP.
Hình 3.5: Một ví dụ về XMPP
3.2. Giới thiệu các phần mềm để thiết kế
3.2.1. Phần mềm ThingSpeak
ThingSpeak là một clound service khá nổi tiếng và phổ biến trong cộng đồng IoT, nó cho phép người dùng đưa dữ liệu lên cloud và từ cloud lấy dữ liệu về qua giao thức HTTP. Trong đề tài này, ThingSpeak được áp dụng để thiết kế chương trình phần mềm giám sát và phân tích các dữ liệu đo lường bao gồm: tần số, điện áp, dịng điện, cơng suất và điện năng tiêu thụ từ hệ thống đưa lên ThingSpeak. Một ưu điểm của ThingSpeak là có tích hợp phần mềm Matlab, do đó chúng ta có thể dễ dàng phân tích tập dữ liệu đo lường bằng các đoạn chương trình tính tốn và hiển thị dưới dạng biểu đồ trong Matlab. Trong mục này, cách tạo 1 tài khoản ThingSpeak và 1 Data Channel và dùng Blocky để đưa data lên channel này thông qua giao thức HTTP bao gồm các bước như sau:
Bước 1: Tạo tài khoản ThingSpeak
Truy cập vào địa chỉ https://thingspeak.com và chọn Sign Up để đăng ký một tài khoản miễn phí. Sau khi điền đầy đủ các thông tin yêu cầu, ta sẽ nhận được email yêu cầu xác thực tài khoản email như 3.6
Hình 3.6: Giao diện đăng ký tạo tài khoản trên ThingSpeak
Sau khi xác thực, ta sẽ có thể login vào và thấy được các thơng tin về tài khoản của mình.
Bước 2: Tạo Data Channel
Sau khi login, ta cần tạo một data channel để lưu trữ dữ liệu. Trong My Channels, ta chọn New Channel và điền các thơng tin cần thiết.
Một ví dụ ở đây là chúng ta tạo 1 channel để chứa các dữ liệu từ cảm biến với Field 1 là nhiệt độ (temperature) và Field 2 là độ ẩm (humidity) như 3.7:
Hình 3.7: Giao diện tạo Data Channel trên ThingSpeak
Bước 3: Lấy URL cần thiết để upload dữ liệu
Để đọc hay ghi dữ liệu về ta cần biết URL để truy cập. Ta mở kênh mới tạo, tìm đến tab API Keys và sẽ thấy được các URL để đọc hay ghi dữ liệu:
Bước 4: Upload dữ liệu từ Blocky
Hình 3.8: Giao diện lấy URL để upload dữ liệu trên ThingSpeak
liệu lên ThingSpeak, ta có thể xem các dữ liệu này trong channel, tab Private View.
Hình 3.9: Giao diện upload dữ liệu từ Blocky trên ThingSpeak
3.2.2. Phần mềm Arduino IDE
Arduino IDE là một chương trình phần mềm mã nguồn mở cho phép người dùng viết và tải lên mã trong một mơi trường làm việc thời gian thực. Vì mã này sau đó sẽ được lưu trữ trong đám mây. Hệ thống này hồn tồn tương thích với bất kỳ bo mạch phần mềm Arduino nào. Giao diện chính của phần mềm
Arduino IDE được thể hiện như Hình 3.10.
Hình 3.10: Giao diện chương trình Arduino IDE
Trong đề tài này ứng dụng phần mềm Arduino IDE để lập trình chương trình nạp vào bo mạch Arduino WeMos D1 R1. Nhiệm vụ của đoạn chương trình trong phần mềm này là phải đọc được các dữ liệu đo được từ các module PZEM004T bằng một số lệnh cơ bản có cú pháp và ý nghĩa được trình bày trong Bảng 3.1. Sau khi bo mạch Arduino WeMos D1 R1 đọc được dữ liệu từ các PZEM004T thì nó sẽ tiếp tục gửi dữ liệu lên Cloud của ThingSpeak nhờ module ESP8266 tích hợp trên bo mạch Arduino WeMos. Các lệnh cơ bản để gửi dữ liệu từ bo mạch Arduino WeMos lên ThingSpeak có cú pháp và ý nghĩa được trình bày trong Bảng 3.2. Đoạn code của chương trình trên Arduino IDE được lập trình