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 và nạp vào bo mạch Arduino WeMos D1 R1 để thực hiện chức năng giám sát và phân tích chất lượng điện năng của hệ thống thiết kế.
Bảng 3.1: Một số hàm đọc giá trị đo từ PZEM004T
Cấu trúc hàm Ý nghĩa
pzem_info pzemData = pzem.getData(); Hàm đọc dữ liệu đo lường từ PZEM004T
float voltage = (pzemData.volt); Hàm đọc giá trị điện áp từ PZEM004T và
gán cho biến voltage
float current = (pzemData.ampe); Hàm đọc giá trị dòng điện từ PZEM004T và
gán cho biến current
float freq = (pzemData.freq); Hàm đọc giá trị tần số từ PZEM004T và gán
cho biến freq
float power = (pzemData.power); Hàm đọc giá trị công suất từ PZEM004T và
gán cho biến power
float energy = (pzemData.energy); Hàm đọc giá trị điện năng tiêu thụ từ
PZEM004T và gán cho biến energy
float pf = (pzemData.powerFactor); Hàm đọc giá trị hệ số công suất từ
PZEM004T và gán cho biến pf