3.3 Xây dựng thuật tốn chương trình
3.3.1 Thuật tốn chương trình
Lưu đồ thuật toán gửi dữ liệu lên Internet và giám sát bằng phần mềm ThingSpeak của hệ thống được thể hiện trong Hình 3.11. Bắt đầu thiết lập các cổng ra vào, khởi tạo tạo các giá trị ban đầu, khởi tạo PZEM004T. Sau đó đọc dữ liệu từ các PZEM004T, thiết lập kết nối Wifi trên Wemos D1 R1. Nếu có kết nối Wifi thì gửi các giá trị đọc được từ các PZEM004T lên Thingspeak cloud. Nếu không kết nối được Wifi (nguyên nhân do đổi mật khẩu hay đứt cáp Wifi) thì hệ thống sẽ thiết lập phát Wifi trên Wemos D1 R1. Sau đó ta sẽ kết nối vào điểm truy cập Wifi của Wemos D1 R1 phát ra, tiếp theo ta mở trình duyệt web nhập Ip 192.168.4.1 để đổi tên và mật khẩu Wifi mới sau đó lưu vào EPPROM ESP8266. Nhấn nút reset để bắt đầu lại chương trình.
Bảng 3.2: Một số hàm gửi dữ liệu từ Arduino WeMos lên ThingSpeak Cú pháp hàm Ý nghĩa void thingspeak() { ur += "&field1="; ur += String(voltage); }
Khai báo hàm con thingspeak Khởi tạo trường field
Đẩy dữ liệu biến voltage cho trường field
để thu thập và đo lường các đại lượng điện của cả ba pha. Các dữ liệu này sẽ được truyền đến bo mạch Arduino Wemos D1 R1 thông qua việc giao tiếp và nhận lệnh truyền - nhận giữa chúng. Để có thể đọc được dữ liệu đo lường từ các module PZEM004T thì chúng ta cần phải lập trình các đoạn lệnh để nạp vào bo mạch Arduino. Lưu đồ thuật toán trên được sử dụng để lập trình các đoạn code trong phần mềm Arduino IDE và nạp vào bo mạch Arduino WeMos D1 R1 để thực hiện đầy đủ các chức năng của hệ thống. Các bước cơ bản của thuật toán như sau:
Bước 1: Thiết lập các cổng vào ra. Bước này thực hiện nhiệm vụ thiết lập
chức năng của các cổng vào ra trên bo mạch Arduino WeMos cho đúng với chức năng là cổng vào hay cổng ra; cổng truyền nhận dữ liệu,. . .
Bước 2: Khởi tạo các giá trị ban đầu của các biến đo lường ở mỗi PZEM004T.
Trước khi đọc liên tục các dữ liệu đo: tần số, điện áp, dịng điện, cơng suất, hệ số công suất và điện năng tiêu thụ của mỗi PZEM004T thì chương trình phải gán tất cả các đại lượng này bằng 0, sau khi đọc được giá trị sẽ liên tục cập nhật vào các biến.
Bước 3: Đọc dữ liệu đo lường từ cả ba PZEM004T. Khi nhận được lệnh truyền
tín hiệu ở chân RX của module PZEM004T được gửi từ module Arduino WeMos thì PZEM004T sẽ đẩy gói dữ liệu đo được đến bo mạch Arduino WeMos. Quá trình này cứ thế được lặp đi lặp lại liên tục trong thời gian thực trong suốt quá trình hoạt động của hệ thống.
Bắt đầu
Thiết lập các cổng vào ra
Khởi tạo giá trị ban đầu của mỗi PZEM004T: fa = 0; Ua = 0; Ia = 0; Pa = 0; Aa = 0 fb = 0; Ub = 0; Ib = 0; Pb = 0; Ab = 0 fc = 0; Uc = 0; Ic = 0; Pc = 0; Ac = 0
Đọc dữ liệu từ cả ba PZEM004T của cả ba pha
Thiết lập kết nối Wifi trên Wemos D1 R1
Kết nối Wifi?
Gửi dữ liệu lên ThingSpeak để giám sát trực tuyến Yes Kết thúc Thiết lập phát Wifi trên Wemos D1 R1 Nhập tên, mật khẩu, Auth Token
No
Truy vấn dữ liệu bằng Matlab để tính tốn phân tích CLĐN
Hình 3.11: Lưu đồ thuật tốn chương trình trên ThingSpeak
Bước 4: Thiết lập kết nối Wifi trên bo mạch Arduino WeMos. Việc thực hiện
kết nối Wifi để đảm bảo điều kiện việc truyền dữ liệu từ hệ thống lên Internet thực hiện việc giám sát từ xa các dữ liệu dựa trên công nghệ IoT.
Bước 5: Kiểm tra việc kết nối Wifi có được khơng, nếu chưa kết nối được thì
thực hiện lại các bước thiết lập. Nếu việc kết nối Wifi đã thành cơng thì chuyển sang Bước 6.
Bước 6: Gửi dữ liệu lên ThingSpeak để giám sát trực tuyến từ xa. Quá trình thực hiện này sẽ được cập nhật liên tục cứ sau một khoảng thời gian nhất định. Trong luận văn này, thời gian đó được thiết lập là 15 giây.
Bước 7: Truy vấn dữ liệu bằng Matlab để phân tích CLĐN tại vị trí giám sát.
Toàn bộ dữ liệu giám sát sẽ được lưu trữ trên cloud Web server của ThingSpeak kể từ lúc kích hoạt hệ thống. Một ưu điểm của ThingSpeak là có tích hợp phần mềm Matlab để có thể thực hiện việc truy vấn và tính tốn phân tích và hiển thị kết quả trực tiếp lên ThingSpeak. Hai ứng dụng Matlab được cho phép thực hiện trên ThingSpeak bao gồm:
- MATLAB Analysis - Tính tốn phân tích bằng Matlab
- MATLAB Visualizations – Hiển thị kết quả dưới dạng đồ họa