Thiết kế và thi công hệ thống đo điện năng một cách chính xác, trực quan. Hiển thị và cập nhật thông tin nhanh chóng trên màn hình LCD, cảnh báo khi quá công suất cài đặt. Xây dựng được website quản trị đồng thời cập nhật cơ sở dữ liệu lên database thông qua mạng Internet, đăng ký được tên miền cho website. Đề tài nghiêm cứu nhầm ứng dụng điều khiển và quản lý thông qua đường truyền Internet, hướng tới một môi trường IOT hiện đại và phát triển.
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ TRONG HỘ GIA ĐÌNH GVHD: ThS Nguyễn Trường Duy SVTH: Nguyễn Văn Cang MSSV: 14141020 SVTH: Nguyễn Chí Dũng MSSV: 14141047 Tp Hồ Chí Minh - 7/2018 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ TRONG HỘ GIA ĐÌNH GVHD: Ths.Nguyễn Trường Duy SVTH: Nguyễn Văn Cang MSSV: 14141020 SVTH: Nguyễn Chí Dũng MSSV: 14141047 Tp Hồ Chí Minh - 7/2018 TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TP HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH Tp HCM, ngày 29 tháng năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: Nguyễn Văn Cang Nguyễn Chí Dũng Kỹ thuật điện tử, truyền thơng Đại học quy 2014 MSSV: 14141020 MSSV: 14141047 Mã ngành: 141 Mã hệ: Lớp: 14141DT I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ TRONG HỘ GIA ĐÌNH II NHIỆM VỤ Các số liệu ban đầu: - Thiết kế hệ thống đo dòng điện điện áp lưới điện gia đình - Tính tốn cơng suất điện - Giao tiếp xử lý trung tâm, báo cố công suất - Kết nối Internet gửi liệu Nội dung thực hiện: - Nhiệm vụ 1: Giao tiếp mô - đun với Vi điều khiển - Nhiệm vụ 2: Giao tiếp Client-Client-Server - Nhiệm vụ 3: Thiết kế mạch đo lường, giao tiếp, mơ hình hệ thống - Nhiệm vụ 4: Hiển thị thông tin quản lý liệu Web hệ thống cảnh báo có cố III NGÀY GIAO NHIỆM VỤ: 27/03/2018 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 29/06/2018 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS.Nguyễn Trường Duy CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP - Y SINH ii TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TP HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH Tp HCM, ngày 27 tháng 03 năm 2018 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Nguyễn Văn Cang Lớp: 14141DT1A MSSV: 14141020 Họ tên sinh viên 2: Nguyễn Chí Dũng Lớp: 14141DT2A MSSV: 14141047 Tên đề tài: Thiết kế thi công hệ thống giám sát điện hộ gia đình Tuần/ngày Nội dung Tìm hiểu đề tài, lựa chọn hướng xây dựng tham khảo số hệ thống có Lựa chọn, tìm hiểu cách thức hoạt động số cảm biến, vi điều khiển Tiến hành thực nghiệm hệ thống qua loại vi điều khiển, mô- đun giao tiếp khác Lập trình cho vi điều khiển sau lựa chọn xong vi điều khiển thiết bị mong muốn Kiểm tra hoạt động hệ thống, chỉnh sửa Tiến hành lập trình trang web, gửi liệu Thiết kế hệ thống, vẽ sơ đồ mạch nguyên lý, thiết kế mạch in Tiến hành làm mạch, kiểm thử chỉnh sửa lỗi, sau hồn chỉnh phiên khác Thiết kế mơ hình cho thiết bị đo thiết bị trung tâm 10 Tiến hành thử nghiệm hệ thống thực tế khoảng cách mong muốn 11 Đóng gói thiết bị thành sản phẩm hoàn chỉnh Xác nhận GVHD iii 12 Viết báo cáo 13 Viết báo cáo, thiết kế powerpoint GV HƯỚNG DẪN (Ký ghi rõ họ tên) iv LỜI CAM ĐOAN Đề tài nhóm tự thực dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước Người thực đề tài Nguyễn Văn Cang Nguyễn Chí Dũng v LỜI CẢM ƠN Em xin gửi lời cảm ơn sâu sắc đến Thầy Nguyễn Trường Duy_ Giảng viên môn Điện tử Công Nghiệp - Y Sinh trực tiếp hướng dẫn tận tình giúp đỡ tạo điều kiện để hoàn thành tốt đề tài Em xin gởi lời chân thành cảm ơn thầy cô Khoa Điện-Điện Tử tạo điều kiện tốt cho em hoàn thành đề tài Em gửi lời đồng cảm ơn đến bạn lớp 1414DT1 1414DT2 chia sẻ trao đổi kiến thức kinh nghiệm quý báu thời gian thực đề tài Xin chân thành cảm ơn! Người thực đề tài Nguyễn Văn Cang Nguyễn Chí Dũng vi MỤC LỤC Trang bìa i Nhiệm vụ đồ án ii Lịch trình iii Cam đoan v Lời cảm ơn vi Mục lục vii Liệt kê hình vẽ x Liệt kê bảng vẽ xii Tóm tắt xiii Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘi DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC Chương CƠ SỞ LÝ THUYẾT 2.1 QUY TRÌNH THỰC HIỆN HỆ THỐNG 2.1.1 Mơ tả quy trình đo điện 2.1.2 Mơ tả quy trình giám sát cảnh báo 2.2 GIỚI THIỆU PHẦN CỨNG 2.2.1 Cảm biến biến dòng Hall 100A YHDC 2.2.2 Module cảm biến điện áp AC 2.2.3 Vi Điều Khiển Arduino Nano 2.2.4 Module chuyển giao tiếp LCD sang I2C 11 2.2.5 Module LCD 20x4 13 2.2.6 Module NodeMCU ESP8266 20 2.2.7 Module Sim900A 25 2.2.8 Đồng hồ thời gian thực DS1307 27 2.2.9 IC EEPROM 24LC512 29 2.2.10 IC nguồn LM2576 29 vii 2.3 CÁC CHUẨN GIAO TIẾP 32 2.3.1 Chuẩn giao tiếp UART 32 2.3.2 Chuẩn giao tiếp I2C 33 2.4 GIỚI THIỆU PHẦN MỀM 38 2.4.1 Phần mềm lập trình Arduino IDE 1.8.1 38 2.4.2 Phần mềm thiết kế mạch Altium 40 Chương TÍNH TỐN VÀ THIẾT KẾ 43 3.1 GIỚI THIỆU 43 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 43 3.2.1 Thiết kế sơ đồ khối hệ thống 44 3.2.2 Tính tốn thiết kế mạch 45 Chương THI CÔNG HỆ THỐNG 65 4.1 GIỚI THIỆU 65 4.2 THI CÔNG HỆ THỐNG 65 4.2.1 Thi công bo mạch 65 4.2.2 Lắp ráp kiểm tra 68 4.3 ĐĨNG GĨI VÀ THI CƠNG MƠ HÌNH 70 4.4 LẬP TRÌNH HỆ THỐNG 71 4.4.1 Lưu đồ giải thuật 71 4.4.2 Phần mềm lập trình cho vi điều khiển 74 4.4.3 Phần mềm lập trình Web Server 78 Chương KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 87 5.1 KẾT QUẢ KHẢO SÁT 87 5.1.1 Cảm biến 87 5.1.2 Vi điều khiển 88 5.1.3 Một số mô-đun khác chuẩn giao tiếp 89 5.2 KẾT QUẢ THỰC NGHIỆM 90 5.2.1 Một số hình ảnh hệ thống 91 5.2.2 Website 95 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 97 6.1 KẾT LUẬN 97 viii 6.2 HƯỚNG PHÁT TRIỂN 97 Tài liệu tham khảo 98 Phụ lục 100 ix TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách tham khảo [1] Nguyễn Đình Phú, “Giáo trình vi xử lý”, NXB Trường ĐH Sư Phạm Kỹ Thuật Tp.HCM, 2016 [2] Nguyễn Đình Phú – Phan Vân Hồn – Trương Ngọc Anh, “Giáo trình thực hành vi điều khiển PIC”, NXB Trường ĐH Sư Phạm Kỹ Thuật Tp.HCM, 08/2017 [3] Trần Thu Hà, “Giáo trình điện tử bản”, NXB ĐH Quốc Gia Tp.HCM, 2013 [4] Nguyễn Đình Phú – Nguyễn Trường Duy, “Giáo trình Kỹ thuật số”, NXB ĐH Quốc Gia Tp.HCM, 2013 [5] Nguyễn Việt Hùng – Nguyễn Ngô Lâm – Nguyễn Văn Phúc, “Giáo trình – Kỹ thuật truyền số liệu”, NXB Trường ĐH Sư Phạm Kỹ Thuật Tp.HCM, 2014 [6] Cao Thanh Nhi – Bùi Kim Lâm “Hiển thị báo giá thông tin sản phẩm”, luận văn tốt nghiệp, ĐH sư phạm kỹ thuật Tp.HCM, 1/2018 [7] Vũ Văn Đạt – Lê Văn Nhựt Quang “Thiết kế thi công hệ thống giám sát lưới điện”, luận văn tốt nghiệp, ĐH sư phạm kỹ thuật Tp.HCM, 8/2017 Bài viết tham khảo online [8] TrystanLea, “CT Sensors”, openenergymonitor.org, 7/2018 [9] SlyRemarks, “ Current and Voltage” , openenergymonitor.org, 7/2018 [10] Trung Kiên, “Giao tiếp I2C”, kienltb.wordpress.com, 3/2015 [11] Khoa công nghệ thông tin - Đại học Duy Tân, “Bài 01: Tổng quan Web Server”, kcntt.duytan.edu.vn, 01/2017 [12] Marcelstoer, “NodeMCU Documentation” , nodemcu.readthedocs.io, 6/2018 98 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH TÀI LIỆU THAM KHẢO [13] Mohannad Jabbar Mnati, “A Smart Voltage and Current Monitoring System for Three Phase Inverters Using an Android Smartphone Application”, ncbi.nlm.nih.gov, 3/2017 99 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC PHỤ LỤC Các đoạn chương trình hệ thống : Chương trình cho thiết bị đo (nạp cho Arduino Nano): #include "EmonLib.h" #include #include #include "UART_ARDUINO.h" #include SoftwareSerial SIM900(10, 11); String textSMS="CANH BAO QUA CONG SUAT"; char tempchar; UART Gui; UART Nhan; #define CURRENT_CAL 66 #define VOLT_CAL 300 float dien_ap,dong_dien,cong_suat,dien_nang,caidat; int i; EnergyMonitor emon1; void setup() { //Gui.begin(9600); Nhan.begin(9600); SIM900.begin(9600); Wire.begin(); i=0; dien_nang=0; emon1.current(A0, CURRENT_CAL); emon1.voltage(A1, VOLT_CAL, 1.7); } void loop() { emon1.calcVI(20,2000); dien_ap = emon1.Vrms; dong_dien = emon1.Irms; 100 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC cong_suat = dien_ap * dong_dien; //dien_nang = (dien_nang + cong_suat)/1000/3600; KWH dien_nang = (dien_nang + cong_suat);//WS gui_du_lieu(dien_ap,dong_dien,cong_suat,dien_nang); if (nhan_du_lieu(&caidat) == true) { EEPROM.write(0,caidat); } if (cong_suat > EEPROM.read(0)) { i++; if(i==1 or i==2) { sendSMS(textSMS); } } else { i=0; } delay(1000); } void gui_du_lieu(float a, float b,float c, float d) { Gui.write_float(a); Gui.write_float(b); Gui.write_float(c); Gui.write_float(d); } bool nhan_du_lieu(float* e) { uint32_t kich_co_goi_tin = sizeof(*e); if (Serial.available() >= kich_co_goi_tin) { (*e) = Nhan.read_float(); 101 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC Nhan.clear_buffer(); return true; } else { return false; } } void sendSMS(String message) { SIM900.print("AT+CSCS=\"GSM\"\r\n"); // Lệnh AT để gửi in nhắn SMS SIM900_response(500); SIM900.print("AT+CMGF=1\r\n"); // Bắt đầu trình gửi tin nhắn SIM900_response(500); SIM900.print("AT+CMGS=\"+84968944145\"\r"); // Số điên thoại người nhân theo format quốc tế SIM900_response(500); SIM900.print(message); // gửi nội dung tin nhắn SIM900_response(500); SIM900.print((char)26); // Kết thúc lênh gửi SIM900_response(5000); } void SIM900_response(int time) { int tnow = millis(); while ((millis()-tnow) < time){ if (SIM900.available()){ tempchar = (char)SIM900.read(); } } } Chương trình xử lý trung tâm (nạp cho NodeMCU): #include #include #include #include "UART_ARDUINO.h" 102 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC UART Nhan; UART Gui; #define add_eeprom 0x51 #define UP D4 #define DW D5 #define GUI D6 #define WF D8 #define CB D3 LiquidCrystal_I2C lcd(0x27,20,4); const byte DS1307 = 0x68; const byte NumberOfFields = 7; int second, minute, hour, day, wday, month, year; float dien_ap,dong_dien, cong_suat,dien_nang,caidat; int tam1,ky,chi_so_moi; const char* host = "diennangtieuthu.000webhostapp.com"; const char* ssid = "dlink"; const char* password = "Thuyduong123"; WiFiClient client; void setup() { //Gui.begin(9600); Nhan.begin(9600); Wire.begin(); caidat=100; chi_so_moi=0; ky=0; pinMode(UP, INPUT); pinMode(DW, INPUT); pinMode(GUI, INPUT); pinMode(CB, OUTPUT); pinMode(WF, OUTPUT); attachInterrupt(UP, TANG, CHANGE); attachInterrupt(DW, GIAM, CHANGE); attachInterrupt(GUI, GUI_DL, CHANGE); setTime(15, 15, 00, 1, 22, 7, 18); lcd.init(); 103 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Amp: "); lcd.setCursor(0, 1); lcd.print("Vol: "); lcd.setCursor(0, 2); lcd.print("Power: "); lcd.setCursor(0, 3); lcd.print("Energy: "); lcd.setCursor(15, 0); lcd.print("Set: "); // lcd.setCursor(15, 2); // lcd.print("Ky: "); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void loop() { readDS1307(); String gio = String(hour) +":"+String(minute) +":"+ String(second); String = String(year) +"/"+String(month) +"/"+ String(day); lcd.setCursor(14, 1); lcd.print(caidat); //hienthi(caidat , 14, 1); if (nhan_du_lieu(&dien_ap, &dong_dien, &cong_suat, &dien_nang) == true) { hienthi(dong_dien , 6, 0); hienthi(dien_ap , 6, 1); //hienthi(cong_suat , 7, 2); //hienthi(dien_nang , 8, 3); lcd.setCursor(7, 2); lcd.print((int) (cong_suat)); 104 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC lcd.setCursor(8, 3); lcd.print((int) (dien_nang)); // // lcd.setCursor(14, 3); lcd.print(ky); //hienthi(ky , 14, 3); ky = dien_nang - chi_so_moi; if(day==28 and hour==0 and minute==0) { chi_so_moi=dien_nang; } if(cong_suat > caidat) { digitalWrite(CB, HIGH); } else { digitalWrite(CB, LOW); } String url = "/insert.php?dong_dien=" + String(dong_dien) + "&dien_ap="+ String(dien_ap)+ "&cong_suat="+ String(cong_suat)+ "&dien_nang="+ String(dien_nang)+ "&ky="+ String(ky)+ "&gio="+ String(gio)+ "&ngay="+ String(ngay); WiFiClient client; const int httpPort = 80; if(WiFi.status() == WL_CONNECTED) { if (client.connect(host, httpPort)) { digitalWrite(WF, HIGH); if(second==30 or second==59) { client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); String line = client.readStringUntil('\r'); //delay(500); 105 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC } } else { ghidata(tam1, dong_dien, dien_ap, cong_suat, dien_nang,ky,hour, minute, second, day, month, year); tam1=tam1+11; } } else { ghidata(tam1, dong_dien, dien_ap, cong_suat, dien_nang,ky,hour, minute, second, day, month, year); tam1=tam1+11; WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); } } delay(1000); } void TANG() { caidat=caidat+10; } void GIAM() { caidat ; } void GUI_DL() { gui_du_lieu(caidat); } //============================================================= ================================================== void gui_du_lieu(float e) { Gui.write_float(e); } bool nhan_du_lieu(float* a, float* b,float* c, float* d) 106 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC { uint32_t kich_co_goi_tin = sizeof(*a) + sizeof(*b) + sizeof(*c) + sizeof(*d); if (Serial.available() >= kich_co_goi_tin) { (*a) = Nhan.read_float(); (*b) = Nhan.read_float(); (*c) = Nhan.read_float(); (*d) = Nhan.read_float(); Nhan.clear_buffer(); // reset lại nhớ đệm return true; // cuối trả true báo nhận đủ hoàn tất } else { return false; // báo chưa đủ } } //============================================================= ============================================================== == void ghidata(unsigned int tam, float dong_dien, float dien_ap, float cong_suat, float dien_nang,float ky, int gio,int phut, int giay, int ngay, int thang, int nam) { int t = tam; int k = 0; int mang[11] = {dong_dien, dien_ap, cong_suat, dien_nang,ky, gio, phut, giay, ngay, thang, nam}; //Serial.print("Data ghi:"); for (unsigned int address = t; address < t+11 ; address++) { writeEEPROM(add_eeprom, address, mang[k]); delay(5);//Serial.print(mang[k]);Serial.print(" "); k++; } } String docdata(unsigned int address) { int dong_dien,dien_ap,cong_suat,dien_nang,ky,gio1,phut1,giay1,ngay1,thang1,nam1; String ngay, gio; 107 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC dong_dien = readEEPROM(add_eeprom,address++); dien_ap = readEEPROM(add_eeprom,address++); cong_suat = readEEPROM(add_eeprom,address++); dien_nang = readEEPROM(add_eeprom,address++); ky = readEEPROM(add_eeprom,address++); gio1 = readEEPROM(add_eeprom,address++); phut1 = readEEPROM(add_eeprom,address++); giay1 = readEEPROM(add_eeprom,address++); ngay1 = readEEPROM(add_eeprom,address++); thang1 = readEEPROM(add_eeprom,address++); nam1 = readEEPROM(add_eeprom,address++); gio = String(gio1) +":"+String(phut1) +":"+ String(giay1); = String(ngay1) +"/"+String(thang1) +"/"+ String(nam1); String url = "/insert.php?dong_dien=" + String(dong_dien) + "&dien_ap="+ String(dien_ap)+ "&cong_suat="+ String(cong_suat)+ "&dien_nang="+ String(dien_nang)+ "&ky="+ String(ky) + "&gio="+ String(gio)+ "&ngay="+ String(ngay); return url; } void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data ) { Wire.beginTransmission(deviceaddress); Wire.write((int)(eeaddress >> 8)); // MSB Wire.write((int)(eeaddress & 0xFF)); // LSB Wire.write(data); Wire.endTransmission(); delay(5); } byte readEEPROM(int deviceaddress, unsigned int eeaddress ) { byte rdata = 0xFF; Wire.beginTransmission(deviceaddress); Wire.write((int)(eeaddress >> 8)); // MSB Wire.write((int)(eeaddress & 0xFF)); // LSB Wire.endTransmission(); Wire.requestFrom(deviceaddress,1); 108 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC if (Wire.available()) rdata = Wire.read(); return rdata; } void readDS1307() { Wire.beginTransmission(DS1307); Wire.write((byte)0x00); Wire.endTransmission(); Wire.requestFrom(DS1307, NumberOfFields); second = bcd2dec(Wire.read() & 0x7f); minute = bcd2dec(Wire.read() ); hour = bcd2dec(Wire.read() & 0x3f); // chế độ 24h wday = bcd2dec(Wire.read() ); day = bcd2dec(Wire.read() ); month = bcd2dec(Wire.read() ); year = bcd2dec(Wire.read() ); year += 2000; } int bcd2dec(byte num) { return ((num/16 * 10) + (num % 16)); } int dec2bcd(byte num) { return ((num/10 * 16) + (num % 10)); } void setTime(byte hr, byte min, byte sec, byte wd, byte d, byte mth, byte yr) { Wire.beginTransmission(DS1307); Wire.write(byte(0x00)); // đặt lại pointer Wire.write(dec2bcd(sec)); Wire.write(dec2bcd(min)); Wire.write(dec2bcd(hr)); Wire.write(dec2bcd(wd)); // day of week: Sunday = 1, Saturday = Wire.write(dec2bcd(d)); Wire.write(dec2bcd(mth)); Wire.write(dec2bcd(yr)); Wire.endTransmission(); } void hienthi(float so,int cot,int hang) 109 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC { int ng1 = (int)(so); int tp1 = (so - (float)ng1)*100; int tramnghin = ng1/100000; int chucnghin = ng1/10000; int nghin = ng1/1000; int tram = ng1/100; int chuc = ng1%100/10; int donvi = ng1%100%10; int chuc1 = tp1/10; int donvi1 = tp1%10; if(tramnghin==0 && chucnghin==0 && nghin==0&&tram==0 && chuc==0) { lcd.setCursor(cot, hang); lcd.print(donvi); lcd.setCursor(cot+1, hang); lcd.print("."); lcd.setCursor(cot+2, hang); lcd.print(chuc1); lcd.setCursor(cot+3, hang); lcd.print(donvi1); lcd.setCursor(cot+4, hang); lcd.print(" "); lcd.setCursor(cot+5, hang); lcd.print(" "); lcd.setCursor(cot+6, hang); lcd.print(" "); } else if(tramnghin==0 && chucnghin==0 && nghin==0 && tram==0){ lcd.setCursor(cot, hang); lcd.print(chuc); lcd.setCursor(cot+1, hang); lcd.print(donvi); lcd.setCursor(cot+2, hang); lcd.print("."); lcd.setCursor(cot+3, hang); lcd.print(chuc1); 110 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC lcd.setCursor(cot+4, hang); lcd.print(donvi1); lcd.setCursor(cot+5, hang); lcd.print(" "); lcd.setCursor(cot+6, hang); lcd.print(" "); }else if(tramnghin==0 && chucnghin==0 && nghin==0){ lcd.setCursor(cot, hang); lcd.print(tram); lcd.setCursor(cot+1, hang); lcd.print(chuc); lcd.setCursor(cot+2, hang); lcd.print(donvi); lcd.setCursor(cot+3, hang); lcd.print("."); lcd.setCursor(cot+4, hang); lcd.print(chuc1); lcd.setCursor(cot+5, hang); lcd.print(donvi1); lcd.setCursor(cot+6, hang); lcd.print(" "); } else if(tramnghin==0 && chucnghin==0){ lcd.setCursor(cot, hang); lcd.print(nghin); lcd.setCursor(cot+1, hang); lcd.print(tram); lcd.setCursor(cot+2, hang); lcd.print(chuc); lcd.setCursor(cot+3, hang); lcd.print(donvi); lcd.setCursor(cot+4, hang); lcd.print("."); lcd.setCursor(cot+5, hang); lcd.print(chuc1); lcd.setCursor(cot+6, hang); lcd.print(" "); } else if(tramnghin==0){ lcd.setCursor(cot, hang); lcd.print(chucnghin); 111 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC lcd.setCursor(cot+1, hang); lcd.print(nghin); lcd.setCursor(cot+2, hang); lcd.print(tram); lcd.setCursor(cot+3, hang); lcd.print(chuc); lcd.setCursor(cot+4, hang); lcd.print(donvi); lcd.setCursor(cot+5, hang); lcd.print("."); lcd.setCursor(cot+6, hang); lcd.print(chuc1); } else { lcd.setCursor(cot, hang); lcd.print(tramnghin); lcd.setCursor(cot+1, hang); lcd.print(chucnghin); lcd.setCursor(cot+2, hang); lcd.print(nghin); lcd.setCursor(cot+3, hang); lcd.print(tram); lcd.setCursor(cot+4, hang); lcd.print(chuc); lcd.setCursor(cot+5, hang); lcd.print(donvi); lcd.setCursor(cot+6, hang); lcd.print(" "); } } 112 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ... KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THI T KẾ VÀ THI CÔNG HỆ THỐNG GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ TRONG. .. thuật điện tử, truyền thơng Đại học quy 2014 MSSV: 14141020 MSSV: 14141047 Mã ngành: 141 Mã hệ: Lớp: 14141DT I TÊN ĐỀ TÀI: THI T KẾ VÀ THI CÔNG HỆ THỐNG GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ TRONG HỘ GIA ĐÌNH... Phần mềm thi t kế mạch Altium 40 Chương TÍNH TỐN VÀ THI T KẾ 43 3.1 GIỚI THI U 43 3.2 TÍNH TỐN VÀ THI T KẾ HỆ THỐNG 43 3.2.1 Thi t kế sơ đồ khối hệ thống