BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 43 4.2 LẬP TRÌNH HỆ THỐNG 4.2.1 Lưu đồ hệ thống Hình 4.3 : Lưu đồ hệ thống. KHỞI TẠO LCD, YHDC CT,SIM 900A CÁC KẾT NỐI ĐÃ SẲN SÀNG? ĐỌC CẢM BIẾN
YHDC CT VÀ ĐƯA VÀO ARDUINO
TÍNH TỐN P, A
GỬI DỮ LIỆU LÊN INTERNET BẰNG SIM900A HIỂN THỊ LÊN LCD KẾT THÚC BẮT ĐẦU S Đ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 44 Giải thích lưu đồ hệ thống
Khi bắt đầu hệ thống tiến hành khởi tạo LCD, cảm biến YHDC CT, SIM900A. Sau đó hệ thống tiếp tục kiểm tra các kết nối xem đã sẵn sang hay chưa. Nếu thỏa điều kiện kết nối hệ thống tiếp tục đọc giá trị cảm biến và đưa vào arduino, nếu chưa có kết nối thì tiếp tục kiểm tra lại kết nối.
Sau khi đọc đọc các giá trị cảm biến gửi về arduino, arduino sẽ tiến hành xử lý, tính tốn các giá trị công suất và điện năng. Kết quả tính tốn được sẽ được gửi lên Web bằng SIM900A rồi sau đó hiển thị lên LCD. Q trình được lặp lại liên tục.
4.2.2 Lưu đồ SIM900A
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 45 Giải thích lưu đồ SIM900A
Các hàm con được thực hiện theo các tập lệnh AT của SIM900A. Hàm gửi dữ liệu lên Internet được thực hiện theo các tập lệnh như sau:
AT+CSTT, AT+SAPBR, AT+HTTPINIT, AT+HTTPPARA, AT+HTTPACTION, AT+HTTPREAD, AT+HTTPTERM.
Hàm gửi tin nhắn được thực hiện theo các tập lệnh như sau: AT+CSCS, AT+CMGF, AT+CMGS.
4.2.3 Phần mềm lập trình cho Arduino
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thơng dụng mang lại nhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm. Mơi trường lập trình đơn giản dễ sử dụng, ngơn ngữ lập trình Wiring dễ hiểu và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 46
Arduino IDE là phần mềm dùng để lập trình cho Arduino. Mơi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Linux. Do có tính chất nguồn mở nên mơi trường lập trình này hồn tồn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm.
Ngơn ngữ lập trình có thể được mở rộng thơng qua các thư viện C++. Và do ngơn ngữ lập trình này dựa trên nền tảng ngơn ngữ C của AVR nên người dùng hồn tồn có thể nhúng thêm code viết bằng AVR vào chương trình nếu muốn. Hiện tại, Arduino IDE có thể download từ trang chủ http://arduino.cc/ bao gồm các phiên bản sau: Arduino 1.0.5, Arduino1.5.5 BETA, Arduino IDE cho Intel Galileo, Arduino 1.6.0.
4.2.4 Phần mềm lập trình Web Adobe Dreamweaver CS6
Adobe Dreamweaver CS6 là một phần mềm hỗ trợ thiết kế web mạnh mẽ, nhiều tính năng được sử dụng phổ biến rộng rãi. Dreamweaver hỗ trợ người dùng thiết kế giao diện của trang web mà không cần phải can thiệp vào code của trang web đó. Ta có thể chọn chức năng “Create button” hay click đôi để chọn những mẫu giao diện web theo ý muốn, để rồi từ đó biến đổi chúng một hoặc từng phần, thậm chí là tồn bộ theo ý mình. Ví dụ, ta có thể thay đổi màu sắc, font chữ, màu nền, kích thước chữ, màu các đường link, xây dựng các menu và hỗ trợ cả chức năng chỉnh sửa file CSS – Cascading Style Sheets (dành cho những người chuyên nghiệp hơn). Thậm chí, nếu ta khơng biết về CSS, ta cũng có thể chỉnh sửa một cách dễ dàng bằng những chi tiết trực quan. Chẳng hạn, ta có thể chọn một đoạn văn bản bằng cách bơi đen chúng, sau đó click chuột phải, ta sẽ thấy một thực đơn xuất hiện chứa tất cả những tùy chọn để chỉnh sửa, như màu sắc, kích cỡ, font chữ.
Adobe Dreamweaver CS6 là một công cụ xử lý dành cho những người thiết kế Web, viết code và những nhà phát triển ứng dụng ở mọi cấp độ. Chức năng code được nâng cao tạo cho nó một sự mạnh mẽ khi điều hướng những trang web phức tạp ở thời điểm thiết kế. Những cơng cụ bố trí được cải thiện làm cho công việc dàn trang được tiến hành từ ý tưởng tổng hợp đến sự đồng ý của khách hàng. Những sáng kiến thông qua bản thử Dreamweaver có thể giúp những đội hoặc những người phát triển Web cá nhân tiến đến mức độ tiếp theo như nhau khi thực hiện cũng như về mặc chức năng.
BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP 47
Hình 4.6: Giao diện phần mềm Adobe Dreamweaver CS6. 4.2.5 Phần mềm WinSCP để upload code lên website 4.2.5 Phần mềm WinSCP để upload code lên website
WinSCP là một tiện ích SFTP, FTP client miễn phí, mã nguồn mở dành cho hệ điều hành Windows. Nó sẽ giúp ta truyền tải file một cách an tồn giữa máy tính của mình và máy tính từ xa. Dựa vào đó, WinSCP cũng cung cấp các chức năng quản lí file. Chương trình có hỗ trợ cả SSH để bảo mật, cũng như hỗ trợ phương thức SCP.
BỘ MÔN ĐIỆN TỬ CƠNG NGHIỆP 48
Giao diện chính của chương trình:
Hình 4.7 : Giao diện phần mềm WinSCP. Các bước thiết lập kết nối đến Server: Các bước thiết lập kết nối đến Server:
Chọn Stored sessions
1- Click New (chỉ làm lần đầu). 2- Tại File Protocol , chọn FTP.
3- Nhập địa chỉ Host: ftp... ( theo trang web của nhóm ) 4- User: nhập tên account (UserId).
5- Nhập mật khẩu.
6- Click Save để lưu kết nối cho lần sử dụng sau. 7- Click login.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 49
Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 5.1 Kết quả 5.1 Kết quả
Sau đây là một số hình ảnh về sản phẩm đang chạy demo. Hệ thống chạy ổn định và có độ chính xác tương đối cao.
Hình 5.1: Hình ảnh demo sản phẩm.
Hình 5.1 hiển thị đầy đủ mọi thơng số như: Dịng điện, điện áp, điện năng tiêu thụ.
Các thơng số này có sai số tương đối nhỏ, tầm khoảng 3% so với giá trị thực.
Dữ liệu truyền đi trong khoảng 20s thì mới cập nhật được dữ liệu mới.
Khi bị mất điện dữ liệu được lưu vào Web và bộ nhớ EEPROM của arduino.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 50
Hình 5.2: Trang chủ của Website.
BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP 51
Hình 5.4: Hình ảnh giá điện tính theo bậc thang.
Tiếp theo là hình 5.4. Hình này hiển thị cách tính tiền điện theo bậc thang khi sử dụng điện.
Hình 5.5: Thêm thông tin khách hàng. 5.2 Nhận xét hệ thống
Hệ thống hoạt động tương đối ổn định. Đo được và tính được giá trị điện năng, hiển thị chúng lên LCD, dễ dàng cho việc quan sát tại nhà.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 52
Truyền dữ liệu tốt, đầy đủ dữ liệu, không bị mất hay lỗi dữ liệu.
Dữ liệu sau đó được đưa lên Internet. Trang Web hoạt động tốt, ổn định, tốc độ tải khá nhanh, cập nhật liên tục, chính xác các thơng tin mơi trường.
Trong trang Web có thêm biểu đồ cho nên rất tiện lợi cho việc quản lý và xem thơng tin của tình trạng sử dụng điện của từng hộ.
Chỉ cần có mạng Internet, người quản lý có thể xem thơng tin và quản lý mọi lúc, mọi nơi và bất kì thời điểm nào trong ngày vì dữ liệu thu thập được trực tiếp đưa lên mạng.
5.3 Ưu điểm hệ thống
Giám sát thông số điện năng từ xa, giúp tiết kiệm thời gian, tiền bạc, cho người ghi số điện hàng tháng.
Hệ thống nhỏ gọn, linh hoạt, sử dụng linh kiện khá rẻ so với sử dụng PLC, vì thế tiết kiệm được chi phí.
5.4 Nhược điểm hệ thống
Cảm biến của hệ thống có độ nhạy chưa cao cho nên độ chính xác so với thực tế còn chút hạn chế.
Cập nhật dữ liệu lên Internet thông qua GPRS của SIM900 còn hơi chậm. Mất chừng khoảng 20s thì mới có dữ liệu mới.
Hệ thống chưa đo được điện áp chính xác của nguồn điện xoay chiều nên độ chính xác là chưa tuyệt đối.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 53
Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 Kết luận
Qua thời gian nghiên cứu, thi công đồ án đã cơ bản được hoàn thành. Bằng sự cố gắng của bản thân mỗi cá nhân và sự phân chia, phối hợp công việc hợp lí, nhịp nhàng giữa mỗi thành viên của nhóm, đồ án này đã được hoàn thành đúng thời gian như đã định và đã đạt được yêu cầu đặt ra là thiết kế và thi công thiết bị đo điện năng tiêu thụ. Đây là một hệ thống rất có ích cho các hộ gia đình và doanh nghiệp bán điện năng.
Trong đồ án, nhóm đã trình bày khá chi tiết cấu trúc và chức năng của từng module. Do đó, người đọc có thể dễ dàng nắm bắt và hiểu các tính năng của từng module. Bên cạnh đó, nội dung của đề tài được trình bày khá chi tiết rõ ràng bằng cách sử dụng những từ ngữ thơng dụng, các hình ảnh đi kèm giúp người đọc dễ hiểu và có thể thực hiện một cách tương tự, đạt hiệu quả trong một thời gian ngắn.
6.2 Hướng phát triển đề tài
Xuất phát từ những hạn chế về mặt phần cứng và phần mềm, cũng như lợi ích của đề tài, nhóm thấy những hướng phát triển của để tài:
Về phần cứng:
- Từ mơ hình nhỏ này, có thể phát triển thêm bằng cách đo thêm điện áp để tăng độ chính xác cho hệ thống.
- Dùng một loại cảm biến đo dịng khác có độ chính xác cao hơn.
- Sử dụng nguồn độc lập cho hệ thống thay vì lấy nguồn trực tiếp từ máy tính ví dụ như adapter.
Về phần mềm:
- Tạo thêm tài khoản cho người quản lý để nâng cao tính bảo mật cho trang web.
- Phát triển thêm chức năng thanh toán cho người dùng, liên kết với các ngân hàng để thanh toán qua Payoo.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 54
TÀI LIỆU THAM KHẢO Sách tham khảo:
[1] Massimo Banzi, Getting Started with Arduino, O’Reilly Media, 2009. [2] John Boxall, Arduino Workshop, William Pollock, 2013.
[3] Michael Margollis and Nicholas Weldin, Arduino Cookbook, O’Reilly Media, Inc, 2011.
[4] Lê Chí Kiên, Giáo trình: Đo lường cảm biến, Xuất bản đại học quốc gia, Tp Hồ
Chí Minh, 2013.
Website tham khảo:
www.arduino.vn
www.AllDataSheet.com
www.w3schools.com
www.arduinodev.woofex.net
2. NỘI DUNG ĐÍNH KÈM (CD)
Nội dung đính kèm bao gồm: 1. Nội dung:
Trình bày
Tài liệu tham khảo (bao gồm datasheet) 2. Mã nguồn:
Chương trình ứng dụng trên Board (video kết quả thực hiện)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 55
PHỤ LỤC
#include <Wire.h> // Comes with Arduino IDE #include <LiquidCrystal_I2C.h>
#include "EmonLib.h" // Include Emon Library #include "EEPROM.h"
#include <SoftwareSerial.h> SoftwareSerial gprsSerial(3, 4);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
EnergyMonitor emon1; // Create an instance float A,B;
int i;
unsigned long time_counter;
void EEPROM_writeDouble(int ee, float value) {
byte* p = (byte*)(void*)&value; for (int i = 0; i < sizeof(value); i++) EEPROM.write(ee++, *p++); }
float EEPROM_readDouble(int ee) {
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 56
float value = 0.0;
byte* p = (byte*)(void*)&value; for (int i = 0; i < sizeof(value); i++) *p++ = EEPROM.read(ee++); return value;
}
void setup() {
Serial.begin(9600); // Used to type in characters gprsSerial.begin(9600);
gprsSerial.flush(); Serial.flush();
lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines, turn on backlight emon1.current(0, 12.1); // Current: input pin, calibration.
lcd.backlight(); // finish with backlight on lcd.setCursor(2,0);
lcd.print("DO AN TOT NGHIEP"); delay(200);
lcd.setCursor(0,1); //Start at character 0 on line 1 lcd.print("Current(A):");
delay(200);
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 57 lcd.print("Voltage(V):"); delay(200); lcd.setCursor(0,3); lcd.print("A (kWh):"); A = EEPROM_readDouble(0); delay(1000); } void toSerial() { while(gprsSerial.available()!=0) { Serial.write(gprsSerial.read()); } } void dulieu() { gprsSerial.println("AT+CSTT=\"v-internet\",\"\",\"\""); delay(500); toSerial(); gprsSerial.println("AT+SAPBR=1,1"); delay(500); toSerial();
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 58 gprsSerial.println("AT+HTTPINIT"); delay(500); toSerial(); String chinh = "AT+HTTPPARA=\"URL\",\"http://www.doantn.pe.hu/datn/Dulieu.php?id=1&dn="; String chinh1 = String(A) + "\"";
String chinh3 = chinh + chinh1; gprsSerial.println(chinh3); delay(500); toSerial(); gprsSerial.println("AT+HTTPACTION=0"); delay(500); toSerial(); delay(500); gprsSerial.println("AT+HTTPTERM"); toSerial(); } void loop() { char LCDmsg[16];
emon1.calcVI(40,2000); // Calculate all. No.of half wavelengths (crossings), time-out
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 59
emon1.serialprint(); // Print out all variables (realpower, apparent power, Vrms, Irms, power factor)
float supplyVoltage = 212.2; //extract Vrms into Variable float Irms = 0; float realPower =0; lcd.setCursor(12,2); dtostrf(supplyVoltage,4,2,LCDmsg); lcd.print(LCDmsg); delay(100); while(1) { if(realPower < 0)realPower = 0; time_counter++; if (time_counter >20) { time_counter=0; EEPROM_writeDouble(0, A); dulieu(); delay(5000); } else {
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 60 lcd.setCursor(12,1); dtostrf(Irms,4,2,LCDmsg); lcd.print(LCDmsg); delay(100); lcd.setCursor(12,3); dtostrf(A,4,5,LCDmsg); lcd.print(LCDmsg); delay(800); Irms = emon1.calcIrms(1450); realPower = supplyVoltage * Irms * 0.8; A= A + realPower*1/3600000;
} } }