Thiết kế và thi công mô hình hệ thống và quản lí trang trại heo là một đề tài nhằm thiết kế hệ thống có khả năng gửi nhận thông tin, lưu thông tin vào thẻ Tag RFID, nhận lệnh từ điện thoại, cảm biến và thời gian để điều khiển các thiết bị trong mô hình trang trại heo như đèn, quạt, dọn vệ sinh, tắm cho heo, cho ăn và có thể giám sát các hoạt động trên web FireBase. Mời các bạn cùng tham khảo.
TRƢỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -Tp HCM, ngày 10 tháng 07 năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Ngọc Thạch MSSV: 14141292 Đồn Quốc Duyệt MSSV: 14141045 Chun ngành: Cơng nghệ kỹ thuật điện - điện tử truyền thông Mã ngành: 41 Hệ đào tạo: Đại học quy Mã hệ: Khóa: 2014 Lớp: 14141DT1C 14141DT1B I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH HỆ THỐNG VÀ QUẢN LÝ TRANG TRẠI HEO II NHIỆM VỤ Nội dung thực hiện: Nội dung 1: Tìm hiểu nghiên cứu giao tiếp Module ESP 8266-12 với Arduino Mega 2560 Nội dung 2: Lƣu thông tin thẻ Tag Module RFID, thiết lập giao diện C# Visual Studio Nội dung 3: Điều khiển thiết bị theo cảm biến thời gian thực Nội dung 4: Thiết kế lập trình ứng dụng hệ điều hành Android gửi hoạt động lên web FireBase Nội dung 5: Thiết kế thi công mạch điều khiển Nội dung 6: Thiết kế mô hình sản phẩm Nội dung 7: Đánh giá kết thực III NGÀY GIAO NHIỆM VỤ: 02/04/2018 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 10/07/2018 V HỌ VÀ TÊN CÁN BỘ HƢỚNG DẪN: CÁN BỘ HƢỚNG DẪN ThS Nguyễn Trƣờng Duy BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii TRƢỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -Tp HCM, ngày 10 tháng 07 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 Ngọc Thạch Lớp:14141DT1C Họ tên sinh viên 2: Đoàn Quốc Duyệt Lớp: 14141DT1B MSSV: 14141292 MSSV: 14141045 Tên đề tài: Thiết Kế Và Thi Cơng Mơ Hình Hệ Thống Và Quản Lý Trang Trại Heo Tuần/ngày Tuần (0208/04/2018) Tuần (0915/04/2018) Tuần (1622/04/2018) Tuần (23/4 - 29 /04/2018) Xác nhận GVHD Nội dung Nhận đồ án , tìm hiểu đề tài Chọn tìm hiểu đề tài Tìm hiểu nghiên cứu giao tiếp Module ESP 8266-12 với Arduino Mega 2560 Lƣu thông tin thẻ Tag Module RFID, thiết lập giao diện C# Visual Studio Tuần 5,6 (30/4 13/05/2018) Tuần 7,8,9,10 (14/5 10/06/2018) Tuần 11,12 (11 24/06/2018) Tuần 13 (25/6 1/07/2018) Điều khiển thiết bị theo cảm biến thời gian thực 10/07/2018 Hoàn thành nhiệm vụ đồ án Thiết kế lập trình ứng dụng hệ điều hành Android gửi hoạt động lên web FireBase Tìm hiểu thiết kế mơ hình sản phẩm Viết báo cáo, kiểm phần cứng GV HƢỚNG DẪN (Ký ghi rõ họ tên) iii LỜI CAM ĐOAN Đề tài tự thực dƣới hƣớng dẫn thầy ThS Nguyễn Trƣờng Duy, dựa vào số tài liệu không chép từ tài liệu hay cơng trình có trƣớc Nếu có gian lận xin chịu trách nhiệm nội dung đồ án Ngƣời thực Nguyễn Ngọc Thạch Đoàn Quốc Duyệt iv LỜI CẢM ƠN Chúng em xin chân thành cảm ơn quý thầy, cô Trƣờng Đại Học Sƣ Phạm Kỹ Thuật TP.HCM tận tình dạy dỗ chúng em suốt năm qua Trong phải kể đến q thầy khoa Điện – Điện Tử truyền đạt kiến thức, kinh nghiệm với đam mê nhƣ đốt lên lửa đam mê khám phá chúng em từ kiến thức, đam mê chúng em kết lại thành đồ án cuối cùng, đồ án tốt nghiệp tay tạo ra, nhƣ bàn đạp để bƣớc vào cánh cửa lớn Đặc biệt, Chúng em xin cảm ơn sâu sắc thầy Nguyễn Trƣờng Duy tận tình giúp đỡ chúng em trình lựa chọn đề tài hỗ trợ chúng em trình thực đề tài Trong trình thực đồ án xảy nhiều khó khăn, thiếu sót nhƣng đƣợc đơn đốc góp ý thầy chúng em gặt hái đƣợc nhiều kiến thức kinh nghiệm Một lần chúng em xin cảm ơn thầy Sinh viên thực đồ án Nguyễn Ngọc Thạch Đoàn Quốc Duyệt v MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iii LỜI CAM ĐOAN iv LỜI CẢM ƠN v MỤC LỤC vi LIỆT KÊ HÌNH VẼ vii LIỆT KÊ BẢNG viii TÓM TẮT ix CHƢƠNG 1: TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU CỦA ĐỀ TÀI 1.3 NỘI DUNG THỰC HIỆN 1.4 GIỚI HẠN CỦA ĐỀ TÀI 1.5 BỐ CỤC ĐỒ ÁN CHƢƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 QUY TRÌNH HOẠT ĐỘNG CỦA HỆ THỐNG 2.2 GIỚI THIỆU PHẦN CỨNG 2.2.1 TỔNG QUAN ARDUINO MEGA 2560 2.2.2 GIỚI THIỆU LCD 20x4 2.2.3 GIỚI THIỆU MODULE RFID MFRC522 2.2.4 TỔNG QUAN MODULE ESP8266 2.2.5 GIỚI THIỆU MODULE L298 11 2.2.6 CẢM BIẾN MƢA [7] 14 2.2.7 CẢM BIẾN NHIỆT ĐỘ -ĐỘ ẨM [7] 15 2.2.8 CẢM BIẾN ĐO THỜI GIAN [7] 16 2.2.9 CẢM BIẾN SIÊU ÂM [7] 17 vi 2.2.10 GIỚI THIỆU FIREBASE [8] 18 2.2.11 GIỚI THIỆU MODULE RELAY (RƠ-LE) 19 2.3 GIỚI THIỆU CÁC CHUẨN GIAO THỨC: 21 2.3.1 SƠ LƢỢC VỀ GIAO TIẾP USART:[10] 21 2.3.2 SƠ LƢỢC VỀ CHUẨN SPI: 23 2.3.3 SƠ LƢỢC VỀ CHUẨN I2C:[7] 26 CHƢƠNG TÍNH TỐN VÀ THIẾT KẾ 27 3.1 GIỚI THIỆU 27 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 27 3.2.1 THIẾT KẾ SƠ ĐỒ KHỐI HỆ THỐNG 27 3.2.2 TÍNH TỐN VÀ THIẾT KẾ MẠCH 30 3.2.3 SƠ ĐỒ NGUYÊN LÝ CỦA TOÀN MẠCH 37 CHƢƠNG THI CÔNG HỆ THỐNG 38 4.1 THI CÔNG HỆ THỐNG: 38 4.2 LƢU ĐỒ GIẢI THUẬT 40 4.2.1 LƢU ĐỒ GIẢI THUẬT ARDUINO MEGA 2560 40 4.2.2 GIỚI THIỆU VỀ ARDUINO IDE 50 4.2.3 LƢU ĐỒ GIẢI THUẬT CỦA ESP 52 4.2.4 LẬP TRÌNH C# TRÊN PHẦN MỀM VISUAL STUDIO 53 4.2.5 CHƢƠNG TRÌNH TRÊN ANDROID STUDIO 56 CHƢƠNG 5: KẾT QUẢ, NHẬN XÉT, ĐÁNH GIÁ 64 5.1 SẢN PHẨM SAU KHI HOÀN THÀNH: 64 5.1.1 SẢN PHẨM: 64 5.1.2 KIẾN THỨC CÓ ĐƢỢC TRONG THIẾT KẾ SẢN PHẨM: 64 5.2 KẾT QUẢ CHẠY HỆ THỐNG: 65 5.2.1 QUÁ TRÌNH CHẠY ỨNG DỤNG TRÊN ĐIỆN THOẠI: 65 5.2.2 QUÁ TRÌNH VẬN HÀNH TRÊN PHẦN CỨNG HỆ THỐNG: 66 5.2.3 QUÁ TRÌNH VẬN HÀNH TRÊN PHẦN MỀM VISUAL STUDIO: 67 CHƢƠNG 6: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 69 vi 6.1 KẾT LUẬN 69 6.2 HƢỚNG PHÁT TRIỂN 69 TÀI LIỆU THAM KHẢO 70 PHỤ LỤC 71 CHƢƠNG TRÌNH ĐIỀU KHIỂN ANDROID STUDIO 71 CHƢƠNG TRÌNH ĐIỀU KHIỂN VISUAL STUDIO 78 CHƢƠNG TRÌNH ĐIỀU KHIỂN ESP8266 83 CHƢƠNG TRÌNH ĐIỀU KHIỂN ARDUINO 89 vi LIỆT KÊ HÌNH VẼ Hình 2-1: Board Arduino Mega 2560 Hình 2-2: Màn hình LCD 20x4 Hình 2-3: Module RFID Hình 2-4: Sơ đồ chân RFID Hình 2-5: Thơng số thẻ Tag Hình 2-6: Module NodeMCU 8266 10 Hình 2-7: Sơ đồ chân sơ đồ kết nối 11 Hình 2-8: Module L298 12 Hình 2-9: Sơ đồ chân Module L298 12 Hình 2-10: Động DC 13 Hình 2- 11: Nút nhấn hành trình 14 Hình 2- 12: Nút nhấn chân 14 Hình 2- 13: Cảm biến mƣa 14 Hình 2-14: Cảm biến DHT11 15 Hình 2-15: Sơ đồ chân Realtime 16 Hình 2-16: Module Realtime 17 Hình 2-17: Sơ đồ nguyên lý Realtime 17 Hình 2- 18: Cảm biến siêu âm 18 Hình 2- 19: Giao diện FireBase 19 Hình 2-20: Module Relay Mức Cao 20 Hình 2- 21: Module Relay mức thấp 20 Hình 2-22: Khung truyền UART 22 Hình 2-23: Sơ đồ truyền SPI thiết bị 23 Hình 2-24: Truyền SPI nhiều thiết bị 24 Hình 2-25: Chế độ SPI 25 Hình 2-26: Truyền gửi liệu song công 25 Hình 2-27: Sơ đồ truyền I2C 26 Hình 3-1: Sơ đồ khối 28 Hình 3-2: Sơ đồ nguyên lý nhiệt độ 33 Hình 3-3: Cảm biến siêu âm 33 Hình 3-4: Sơ đồ nguyên lý Realtime 34 Hình 3-5: Sơ đồ nguyên lý LCD 20x4 35 Hình 3-6: Sơ đồ nguyên lý Relay 35 Hình 3-7: Sơ đồ nguyên lý L298 36 vii Hình 3-8: Sơ đồ nguyên lý RFID 36 Hình 3-9: Sơ đồ nguyên lý toàn mạch 37 Hình 4-1: Sơ đồ bố trí linh kiện mặt 39 Hình 4-2: Sơ đồ bố trí linh kiện lớp dƣới 40 Hình 4-3: Lƣu đồ 41 Hình 4-4: Lƣu đồ điều khiển máy bơm 42 Hình 4-5: Lƣu đồ tắm cho heo 43 Hình 4-6: Lƣu đồ điều khiển bật quạt 44 Hình 4-7: Lƣu đồ hoạt động dọn vệ sinh 45 Hình 4-8: Lƣu đồ điều khiển bật đèn 46 Hình 4-9: Lƣu đồ điều khiển mái hiên 47 Hình 4-10: Lƣu đồ điều khiển cho ăn 48 Hình 4-11: Lƣu đồ cho uống 49 Hình 4-12: Lƣu đồ gửi thông tin ESP Arduino 50 Hình 4-13: Giao diện phần mềm Arduino 50 Hình 4-14: Cài đặt Arduino bƣớc 51 Hình 4-15: Cài đặt Arduino bƣớc 52 Hình 4-16: Cài đặt Arduino bƣớc 52 Hình 4-17: Lƣu đồ hoạt động ESP 53 Hình 4-18: Giao diện phần mềm Visual Studio 54 Hình 4-19: Tải chạy file.exe 55 Hình 4-20: Cài đặt Visual Studio 55 Hình 4- 21: Cài đặt Visual Studio bƣớc 56 Hình 4-22: Cài đặt Android Studio bƣớc 57 Hình 4-23: Cài đặt Android Studio bƣớc 57 Hình 4-24: Cài đặt Visual Studio bƣớc 58 Hình 4-25: Cài đặt Android Studio bƣớc 58 Hình 4-26: Cài đặt Visual Studio bƣớc5 59 Hình 4-27: Tạo project mớit rong Android 59 Hình 4-28: Tạo project Android 60 Hình 4-29: Chọn hình 61 Hình 4-30: Chọn phiên Android 61 Hình 4-31: Đặt tên cho hình 62 Hình 4-32: Chọn thiết bị để nạp chƣơng trình 62 Hình 5-1: Sản phẩm thi cơng 64 Hình 5-2: Giao diện App Chính 65 Hình 5-3: Giao diện web FireBase 66 vii Hình 5-4: Bảng điều khiển hoạt động 67 Hình 5-5: Màn hình LCD 20x4 hiển thị 67 Hình 5-6: Bảng làm việc nết nối Arduino 68 vii PHỤ LỤC delayMicroseconds(5); // xung có độ dài microSeconds digitalWrite(trig, 0); // tắt chân trig /* Tính tốn thời gian */ // Đo độ rộng xung HIGH chân echo duration = pulseIn(echo, HIGH); // Tính khoảng cách đến vật khoangcach = int(duration / / 29.412); mucnuoc=17-khoangcach; } // cma bien khaong cach 2///////////////////////////// ////////////////////////////////////////////////////// void HC_RS04_1() { readDS1307(); digitalWrite(trig_1, 0); // tắt chân trig delayMicroseconds(2); digitalWrite(trig_1, 1); // phát xung từ chân trig delayMicroseconds(5); // xung có độ dài microSeconds digitalWrite(trig_1, 0); // tắt chân trig /* Tính tốn thời gian */ // Đo độ rộng xung HIGH chân echo //// ///////////////////////////////////////// duration_1 = pulseIn(echo_1, HIGH); // Tính khoảng cách đến vật khoangcach_1 = int(duration_1 / / 29.412); mucnuoc1= (7-khoangcach_1); } // ham su li cam bien mua////////////////////////////////// /////////////////////////////////////////////////////////// void cambien_mua() { readDS1307(); value = digitalRead(rainSensor);//Đọc tín hiệu cảm biến mƣa } //dieu khien van cho an//////////////////////////////////////////////// void van_cho_an() { readDS1307(); if (gio == || gio == 11 || gio == 17 ) if (phut < 1) 96 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC { if (giay = GIAY_CODE) { digitalWrite(an_o , LOW); digitalWrite(an_c , LOW); m = 0; } } } ///// dieu khien van them nuoc//////////////////////////////////// void van_cho_uong() { if (mucnuoc1 < 3) { digitalWrite(ug_o , HIGH); } if (mucnuoc1 >= 4) { digitalWrite(ug_o , LOW); } } // dieu khien mo mai hien/////////////////////////////////////// /// dieu khien chieu mo mai hien/////////////////////////////// void dong_mo() { if (value == HIGH ) { if (stops != && rain!= 1) if (gio >= && gio < 9) { stops = 1; rain = 1; digitalWrite(rain_o , HIGH); digitalWrite(rain_c , LOW); } if (stops != && rain!= 1) if (gio >= 15 && gio = && gio < 15) { stops = 3; rain = 0; digitalWrite(rain_o , LOW); digitalWrite(rain_c , HIGH); } if (stops != && rain!= 0) if (gio > 17) { stops = 4; rain = 0; digitalWrite(rain_o , LOW); digitalWrite(rain_c , HIGH); } } if (stops != && rain!= 0) { if (value == LOW) { stops = 5; rain = 0; digitalWrite(rain_o , LOW); digitalWrite(rain_c , HIGH); } } } // dk role ///////////////////////////// void dieukhien_role() { // MAY BOM NC/////////////////////////////////// if (bom == 0) { if (mucnuoc < 6) { digitalWrite(role_1 , HIGH); } } else { 98 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC if (mucnuoc < 14) { digitalWrite(role_1 , HIGH); } } if (mucnuoc > 13) { digitalWrite(role_1 , LOW); } // dieu khien quat// if (quat == 1) { digitalWrite(role_2 , HIGH); } else digitalWrite(role_2 , LOW); // tam rua//// if (gio == 9) { if (phut < 10) { digitalWrite(role_3 , HIGH); } else digitalWrite(role_3 , LOW); } // don ve sinh////////////////////////////////////////////////////////////// if (gio == || gio == 16) { if (phut < 10) { digitalWrite(role_4 , HIGH); } else { digitalWrite(role_4 , LOW); } } /// bat den///////////////////////////////////////////////////////// if (den == 0) { if(batden==0) { if (gio >= 17 && gio < 20) { 99 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC digitalWrite(role_5 , HIGH); } else { digitalWrite(role_5 , LOW); } }else{ digitalWrite(role_5 , HIGH); } } else { digitalWrite(role_5 , HIGH); } } void hienthi_1() { lcd.setCursor(0, 1); lcd.print("MB || QUAT "); lcd.setCursor(15 , 1); lcd.print("||"); lcd.setCursor(0, 2); lcd.print("TAM "); lcd.setCursor(0, 3); lcd.print("VS || DEN"); lcd.setCursor(15 , 3); lcd.print("||"); lcd.setCursor(13, 0); lcd.print(" WORK"); // ham hien thi gia tri nhiet do am len mang hinh// lcd.setCursor(12, 1); if (digitalRead(role_1) == 1) { lcd.print("ON ") ; } else lcd.print("OFF"); ////tam heo///////////////////////////////////////// lcd.setCursor(12 , 2); if (digitalRead(role_3) == 1) { lcd.print("TAM ON "); } else lcd.print("TAM OFF"); ////ve sinh heo////////////////////////////////////// lcd.setCursor(12 , 3); if (digitalRead(role_4) == 1) { lcd.print("ON "); } else lcd.print("OFF"); ///den trang trai///////////////////////////////////// lcd.setCursor(17 , 3); if (digitalRead(role_5) == 1) 100 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC { lcd.print("ON "); } else lcd.print("OFF"); // quat giam nhiet lcd.setCursor(17, 1); if (quat == 1) { lcd.print("ON ") ; } else lcd.print("OFF"); } void hienthi_2() { //lcd.clear(); lcd.setCursor(0 , 1); lcd.print("MAI HIEN:"); lcd.setCursor(0 , 2); lcd.print("CHO AN:"); lcd.setCursor(13 , 0); lcd.print("WORK"); lcd.setCursor(13 , 1); if (rain == 1) { lcd.print("OPPEN "); } if (rain == 0) { lcd.print("CLOSE"); } lcd.setCursor(13 , 2); if (m == 1) { lcd.print("EAT ON "); } if (m == 0) { lcd.print("EAT OFF"); } lcd.setCursor(0 , 3); lcd.print("MUC NUOC:"); lcd.setCursor(10 , 3); lcd.print(mucnuoc); lcd.setCursor(16 , 3); lcd.print(mucnuoc1); lcd.setCursor(15 , 3); lcd.print("|"); } void hienthi_5() { 101 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC lcd.setCursor(0, 1); lcd.print("DANG CHINH GIAY_CODE!"); lcd.setCursor(0, 2); lcd.print("GIAY_CODE:"); lcd.setCursor(12 , 2); lcd.print(GIAY_CODE / 10); lcd.setCursor(13 , 2); lcd.print(GIAY_CODE % 10); } void thongso() { // lcd.clear(); lcd.setCursor(10 , 0); lcd.print("PARAMETER"); lcd.setCursor(0 , 1); lcd.print("EAT: 6H | 11H | 17H"); lcd.setCursor(0 , 2); lcd.print("TAM || DEN: 9H||17H"); lcd.setCursor(0 , 3); lcd.print("MHIEN:6H-9H|15H-17H"); } void xl_nutnhan() { ///////////////// nut nhan chon hien thi LCD btn_tt = digitalRead(buttonPin); btn1 = digitalRead(buttonPin1); btn2 = digitalRead(buttonPin2); if (btn_tt != btn_codinh) { if (btn_tt == LOW) { lcd.clear(); delay(200); counter++; if (counter > 5) counter = 0; } } btn_codinh = btn_tt; //////////////// NUT NHAN TANG THOI GIAN AN if (btn1 != btn_codinh1 && counter == 3) { if (btn1 == LOW) { GIAY_CODE++; } } btn_codinh1 = btn1; ///////////////N UT NHAN GIAM THOI GIAN AN if (btn2 != btn_codinh2 && counter == 3) { if (btn2 == LOW) { GIAY_CODE ; } 102 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC } btn_codinh2 = btn2; /// set realtime nut nhan /// gio if (btn1 != btn_codinh3 && counter == 4) { if (btn1 == LOW) { setgio++; if(setgio == 24) { setgio=0; } } } btn_codinh3 = btn1; if (btn2 != btn_codinh4 && counter == 4) { if (btn2 == LOW) { setgio ; } } btn_codinh4 = btn2; // phut if (btn1 != btn_codinh5 && counter == 5) { if (btn1 == LOW) { setphut++; if(setphut ==60) { setphut=0; } } } btn_codinh5 = btn1; if (btn2 != btn_codinh6 && counter == 5) { if (btn2 == LOW) { setphut ; } } btn_codinh6 = btn2; } 103 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC void hienthi_h() { lcd.setCursor(0 , 0); if ( gio < 10) { lcd.print("0"); } lcd.print(gio); lcd.print(":"); if ( phut < 10) { lcd.print("0"); } lcd.print(phut); lcd.print(":"); if ( giay < 10) { lcd.print("0"); } lcd.print(giay); lcd.print(" "); ktgiay = giay; } void dung_hd() { digitalWrite(rain_c, LOW); digitalWrite(rain_o, LOW); digitalWrite(an_c, LOW); digitalWrite(an_o, LOW); digitalWrite(ug_o, LOW); digitalWrite(role_1, LOW); digitalWrite(role_2, LOW); digitalWrite(role_3, LOW); digitalWrite(role_4, LOW); digitalWrite(role_5, LOW); } void select() { switch (counter) { case 0: hienthi_1(); break; case 1: hienthi_2(); break; case 2: thongso(); break; case 3: hienthi_5(); break; case 4: hienthi_h(); setTime(setgio, setphut, 55, 1, 8, 2, 15); 104 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC break; case 5: hienthi_h(); setTime(setgio, setphut, 55, 1, 8, 2, 15); break; } } void dung_dong_co_1() { digitalWrite(rain_o , LOW); digitalWrite(rain_c , LOW); } void DocThongTin(){ byte hoten[34]; byte diachi[18]; byte nhap[18]; byte xuat[18]; byte tiem[18]; byte block_hoten_1 = 4; byte block_hoten_2 = 5; byte block_diachi = 6; byte block_nhap = 8; byte block_xuat = 9; byte block_tiem = 10; if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } if ( ! mfrc522.PICC_ReadCardSerial()) { return; } digitalWrite(4,HIGH); ReadBlock(block_hoten_1, hoten); ReadBlock(block_hoten_2, &hoten[16]); ReadBlock(block_diachi, diachi); ReadBlock(block_nhap, nhap); ReadBlock(block_xuat, xuat); ReadBlock(block_tiem, tiem); Serial.write('*'); // Ky tu danh dau ket thuc viec gui du lieu mfrc522.PICC_HaltA(); mfrc522.PCD_StopCrypto1(); } void GhiThongTin(){ byte buf[96]; 105 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC byte i=0; byte hoten[32]; byte diachi[16]; byte nhap[16]; byte xuat[16]; byte tiem[16]; byte block_hoten_1 = 4; byte block_hoten_2 = 5; byte block_diachi = 6; byte block_nhap = 8; byte block_xuat = 9; byte block_tiem = 10; mfrc522.PCD_Init(); // Init MFRC522 // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } digitalWrite(4,HIGH); // Doc chuoi while(i