Đồ án Thiết kế và thi công mô hình hệ thống và quản lý trang trại heo

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 Đoàn Quốc Duyệt MSSV: 14141045 Chuyên 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 chính quy Mã hệ: 1 Khóa: 2014 Lớp: 14141DT1C 14141DT1B I. TÊN ĐỀ TÀI: TH

pdf122 trang | Chia sẻ: huong20 | Ngày: 13/01/2022 | Lượt xem: 416 | Lượt tải: 0download
Tóm tắt tài liệu Đồ án Thiết kế và thi công mô hình hệ thống và quản lý trang trại heo, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HIẾ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 và 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 trên thẻ Tag của Module RFID, thiết lập giao diện C# trên Visual Studio.  Nội dung 3: Điều khiển các thiết bị theo cảm biến và thời gian thực.  Nội dung 4: Thiết kế và lập trình ứng dụng trên hệ điều hành Android và gửi các hoạt động lên web FireBase.  Nội dung 5: Thiết kế và 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 quả thực hiện. 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: 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 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 MSSV: 14141292 Họ tên sinh viên 2: Đoàn Quốc Duyệt Lớp: 14141DT1B 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. Xác nhận Tuần/ngày Nội dung GVHD Tuần 1 (02- 08/04/2018) Nhận đồ án , tìm hiểu đề tài Tuần 2 (09- 15/04/2018) Chọn và tìm hiểu đề tài. Tuần 3 (16- Tìm hiểu và nghiên cứu giao tiếp Module ESP 22/04/2018) 8266-12 với Arduino Mega 2560. Tuần 4 (23/4 - 29 Lƣu thông tin trên thẻ Tag của Module RFID, thiết /04/2018) lập giao diện C# trên Visual Studio. Tuần 5,6 Điều khiển các thiết bị theo cảm biến và thời gian (30/4 - thực. 13/05/2018) Tuần 7,8,9,10 Thiết kế và lập trình ứng dụng trên hệ điều hành (14/5 - Android và gửi các hoạt động lên web FireBase. 10/06/2018) Tuần 11,12 (11 - 24/06/2018) Tìm hiểu thiết kế mô hình sản phẩm. Tuần 13 (25/6 - 1/07/2018) Viết báo cáo, kiểm ra các phần cứng 10/07/2018 Hoàn thành nhiệm vụ đồ án GV HƢỚNG DẪN (Ký và ghi rõ họ và tên) iii LỜI CAM ĐOAN Đề tài này là do chúng tôi tự thực hiện dƣới sự hƣớng dẫn của thầy ThS. Nguyễn Trƣờng Duy, dựa vào một số tài liệu và không sao chép từ tài liệu hay công trình đã có trƣớc đó. Nếu có bất kỳ sự gian lận nào chúng tôi xin chịu trách nhiệm về nội dung đồ án của mình. Ngƣời thực hiện 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 trong suốt những năm qua. Trong đó phải kể đến quý thầy cô trong khoa Điện – Điện Tử đã truyền đạt những kiến thức, kinh nghiệm cùng với sự đam mê của mình nhƣ đốt lên những ngọn lửa đam mê khám phá trong mỗi chúng em và rồi từ những kiến thức, đam mê đó chúng em kết lại thành một đồ án cuối cùng, đồ án tốt nghiệp do chính tay mình tạo ra, nó nhƣ một bàn đạp đầu tiên để bƣớc vào những cánh cửa lớn hơ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 trong quá trình lựa chọn đề tài và hỗ trợ chúng em trong quá trình thực hiện đề tài. Trong quá trình thực hiện đồ án cũng xảy ra nhiều khó khăn, thiếu sót nhƣng đƣợc sự đôn đốc và góp ý của thầy chúng em đã gặt hái đƣợc nhiều kiến thức và kinh nghiệm. Một lần nữa chúng em xin cảm ơn thầy. Sinh viên thực hiện đồ á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.1 ĐẶT VẤN ĐỀ ........................................................................................................ 1 1.2 MỤC TIÊU CỦA ĐỀ TÀI ...................................................................................... 1 1.3 NỘI DUNG THỰC HIỆN ...................................................................................... 2 1.4 GIỚI HẠN CỦA ĐỀ TÀI ....................................................................................... 2 1.5 BỐ CỤC ĐỒ ÁN .................................................................................................... 2 CHƢƠNG 2: CƠ SỞ LÝ THUYẾT ............................................................................ 4 2.1 QUY TRÌNH HOẠT ĐỘNG CỦA HỆ THỐNG ................................................... 4 2.2 GIỚI THIỆU PHẦN CỨNG .................................................................................. 4 2.2.1 TỔNG QUAN ARDUINO MEGA 2560 ......................................................... 4 2.2.2 GIỚI THIỆU LCD 20x4................................................................................... 5 2.2.3 GIỚI THIỆU MODULE RFID MFRC522 ...................................................... 7 2.2.4 TỔNG QUAN MODULE ESP8266 ................................................................ 9 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 3. TÍNH TOÁN VÀ THIẾT KẾ ............................................................. 27 3.1 GIỚI THIỆU ......................................................................................................... 27 3.2 TÍNH TOÁ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 TOÁN VÀ THIẾT KẾ MẠCH ............................................................ 30 3.2.3 SƠ ĐỒ NGUYÊN LÝ CỦA TOÀN MẠCH ................................................. 37 CHƢƠNG 4. 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. ............................................................................. 4 Hình 2-2: Màn hình LCD 20x4. ....................................................................................... 6 Hình 2-3: Module RFID. .................................................................................................. 7 Hình 2-4: Sơ đồ chân RFID. ............................................................................................ 7 Hình 2-5: Thông số thẻ Tag. ............................................................................................ 9 Hình 2-6: Module NodeMCU 8266. .............................................................................. 10 Hình 2-7: Sơ đồ chân và 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 cơ DC. ................................................................................................ 13 Hình 2- 11: Nút nhấn hành trình. ................................................................................... 14 Hình 2- 12: Nút nhấn 4 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 giữa 2 thiết bị. .................................................................. 23 Hình 2-24: Truyền SPI nhiều thiết bị. ............................................................................ 24 Hình 2-25: Chế độ cơ bản của SPI. ................................................................................ 25 Hình 2-26: Truyền gửi dữ 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 trên. ...................................................................... 39 Hình 4-2: Sơ đồ bố trí linh kiện lớp dƣới. ...................................................................... 40 Hình 4-3: Lƣu đồ chính. ................................................................................................. 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 giữa ESP và 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 2. .............................................................................. 51 Hình 4-15: Cài đặt Arduino bƣớc 3. .............................................................................. 52 Hình 4-16: Cài đặt Arduino bƣớc 5. .............................................................................. 52 Hình 4-17: Lƣu đồ hoạt động của ESP. ........................................................................ 53 Hình 4-18: Giao diện phần mềm Visual Studio. ............................................................ 54 Hình 4-19: Tải và 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 3. ..................................................................... 56 Hình 4-22: Cài đặt Android Studio bƣớc 1. ................................................................... 57 Hình 4-23: Cài đặt Android Studio bƣớc 2. ................................................................... 57 Hình 4-24: Cài đặt Visual Studio bƣớc 3. ...................................................................... 58 Hình 4-25: Cài đặt Android Studio bƣớc 4. ................................................................... 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 mới trong Android. ................................................................... 60 Hình 4-29: Chọn màn hình. ............................................................................................ 61 Hình 4-30: Chọn phiên bản Android. ............................................................................. 61 Hình 4-31: Đặt tên cho màn 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 khi nết nối Arduino. ............................................................... 68 vii LIỆT KÊ BẢNG Bảng 2-1: Chức năng của các chân màn hình LCD 20x4 ................................................ 6 Bảng 2-2: Bảng tần số hoạt động. .................................................................................... 8 Bảng 4-1: Danh sách linh kiện. ...................................................................................... 38 viii TÓM TẮT Ngày nay công nghệ trở nên hiện đại, xu hƣớng mọi thứ điều sẽ đƣợc kết nối và điều khiển thông qua mạng không dây wifi (Wireless Fidelity) và điều khiển các thiết bị theo tự động hóa. Với ý tƣởng giải quyết những bất cập của điều khiển tự động, nhóm chúng em xin đƣa ra đề tài: Thiết Kế Và Thi Công Mô Hình Hệ Thống Và Quản Lý Trang Trại Heo. 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. Với đề tài này, nhóm hi vọng sẽ làm cơ sở nghiên cứu cho các nhóm sau có thể mở rộng, phát triển nữa. Nếu đƣợc điều chỉnh tốt, ý tƣởng này kết hợp với mô hình trang trại heo thực tế với quy mô lớn sẽ trở thành một hệ thống lớn đáp ứng nhu cầu điều khiển, quản lý tất cả các thiết bị trong trang trại heo một cách hiện đại, nâng cao đời sống tiện ích trong chăn nuôi. ix CHƢƠNG 1. TỔNG QUAN CHƢƠNG 1: TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Ngày nay, xã hội ngày càng phát triển mạnh mẽ, kỹ thuật ngày càng hiện đại nên nhu cầu về trao đổi thông tin giải trí, nhu cầu về điều khiển các thiết bị từ xa ngày càng cao. Và những hệ thống dây cáp phức tạp lại không thể đáp ứng nhu cầu này. Vì vậy công nghệ không dây đã ra đời và phát triển mạnh mẽ, tạo rất nhiều thuận lợi cho con ngƣời trong đời sống hằng ngày. Hiện nay, việc đƣa máy móc, công nghệ hiện đại vào sản suất nông nghiệp trên thế giới rất phổ biến, đặt biệt là các nƣớc phát triển Tuy nhiên, so với thế giới ngành nông nghiệp nƣớc ta còn khá lạc hậu, trong đó có chăn nuôi, mô hình sản xuất nhỏ lẻ, ít ứng dụng khoa học, công nghệ hiện đại vào sản xuất, dẫn đến năng suất thấp, chất lƣợng kém. Chính vì vậy, nhằm góp phần đƣa công nghệ kĩ thuật áp dụng vào chăn nuôi trong nƣớc nhiều hơn, ứng dụng đƣợc thực tế hơn nên nhóm đã quyết định làm đề tài: THIẾT KẾ VÀ THI CÔNG MÔ HÌNH HỆ THỐNG VÀ QUẢN LÝ TRANG TRẠI HEO. Ở những đề tài trƣớc chỉ dừng lại ở việc quản lí vật nuôi nhờ vào RFID mà chƣa kết hợp đƣợc việc quản lí và chăn nuôi. Đối với đề tài này, nhóm sẽ kết hợp giữa quản lí và chăn nuôi, đồng thời sử dụng điện thoại để quản lí từ xa, từ đó có thể xử lý các trục trặc, sự cố. 1.2 MỤC TIÊU CỦA ĐỀ TÀI Thiết kế, thi công đƣợc mô hình quản lí trang trại nuôi heo gồm các mục tiêu cụ thể:  Thiết kế, thi công đƣợc phần cứng của mạch điều khiển.  Viết đƣợc phần mềm điều khiển arduino mega 2560, điều khiển hệ thống cho ăn, uống tự động, điều khiển đƣợc hệ thống tắm, dọn vệ sinh tự động, điều khiển đƣợc hệ thống làm mát tự động cho heo, mái che cho chuồng trại.  Viết đƣợc phần mềm giao tiếp giữa arduino mega 2560 và máy tính, điện thoại.  Viết đƣợc phần mềm C# quản lí thông tin của heo.  Viết đƣợc ứng dụng android nhận thông tin và cảnh báo của trang trại heo. 1 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 1. TỔNG QUAN 1.3 NỘI DUNG THỰC HIỆN  Nội dung 1: Giao tiếp Module ESP-12 8266 với Arduino Mega 2560.  Nội dung 2: Lƣu thông tin trên thẻ Tag của Module RFID, thiết lập giao diện C# trên Visual Studio.  Nội dung 3: Điều khiển các thiết bị theo cảm biến và thời gian thực.  Nội dung 4: Thiết kế và lập trình ứng dụng trên Android Studio và điều khiển thiết bị qua điện thoại.  Nội dung 5: Hiển thị thông tin trên web FireBase.  Nội dung 6: Thiết kế mô hình sản phẩm.  Nội dung 7: Đánh giá kết quả thực hiện. 1.4 GIỚI HẠN CỦA ĐỀ TÀI  Sử dụng vi điều khiển arduino mega 2560 để điều khiển.  Chỉ thiết kế mô hình giám sát nhỏ trong trang trại nuôi heo.  Chỉ sử dụng động cơ DC để điều khiển mái che, để mô phỏng mô hình trang trại.  Chỉ sử dụng động cơ bƣớc, đông cơ DC để điều khiển hệ thống cho ăn, uống tự động phù hợp mô hình nhỏ.  Chỉ có thể giám sát trang trại bằng thời gian thực, điện thoại thông qua phần mềm Android Studio.  Chỉ sử dụng điều khiển các hệ thống cho ăn, uống, dọn vệ sinh, tắm rửa, làm mát và mái che một cách tự động cho trang trại quy mô nhỏ, số lƣợng 5 con. 1.5 BỐ CỤC ĐỒ ÁN  Chƣơng 1: Tổng Quan.  Chƣơng 2: Cơ Sở Lý Thuyết.  Chƣơng 3: Tính Toán Và Thiết Kế Hệ Thống.  Chƣơng 4: Thi Công Hệ Thống.  Chƣơng 5: Kết Quả, Nhận Xét, Đánh Giá.  Chƣơng 6: Kết Luận và Hƣớng Phát Triển. Chƣơng 1: Tổng Quan. 2 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 1. TỔNG QUAN Chƣơng này trình bày vấn đề dẫn nhập, lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn và bố cục đồ án. Chƣơng 2: Cơ Sở Lý Thuyết. Giới thiệu các linh kiện, thiết bị sử dụng thiết kế hệ thống, các chuẩn truyền, giao thức. Chƣơng 3: Tính Toán Và Thiết Kế Hệ Thống. Tính toán thiết kế, đƣa ra sơ đồ nguyên lí của hệ thống. Chƣơng 4: Thiết Kế Hệ Thống. Thiết kế hệ thống, lƣu đồ, đƣa ra giải thuật và chƣơng trình. Chƣơng 5: Kết Quả, Nhận Xét, Đánh Giá. Đƣa ra kết quả đạt đƣợc sau một thời gian nghiên cứu, một số hình ảnh của hệ thống, đƣa ra những nhận xét, đánh giá toàn bộ hệ thống. Chƣơng 6: Kết Luận và Hƣớng Phát Triển. Trình bày những kết luận về hệ thống những phần làm rồi và chƣa làm, đồng thời nếu ra hƣớng phát triển cho hệ thống. 3 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 2. CƠ SỞ LÝ THUYẾT CHƢƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 QUY TRÌNH HOẠT ĐỘNG CỦA HỆ THỐNG Mạch đƣợc điều khiển bởi Module Arduino Mega 2560 đóng vai trò điều khiển trung tâm, Arduino điều khiển tiếp nhận giao tiếp với các module khác trong đề tài nhƣ: Module RFID MFRC522, WifiEsp V1, Cảm biến mƣa, Cảm biến siêu âm, Cảm biến cân nặng, Module L298, Động cơ DC, LCD 20x4, Cảm biến nhiệt độ. Sự kết hợp của các thiết bị sẽ tạo nên một hệ thống quản lý heo một cách tốt nhất, hiện đại hơn. 2.2 GIỚI THIỆU PHẦN CỨNG 2.2.1 TỔNG QUAN ARDUINO MEGA 2560 a. Giới thiệu Board Arduino Mega. [7] Arduino Mega2560 là một vi điều khiển bằng cách sử dụng ATmega2560. Arduino Mega2560 khác với tất cả các vi xử lý trƣớc giờ vì không sử dụng FTDI chip điều khiển chuyển tín hiệu từ USB để xử lý. Thay vào đó, nó sử dụng ATmega16U2 lập trình nhƣ là một công cụ chuyển đổi tín hiệu từ USB. Ngoài ra, Arduino Mega2560 cơ bản vẫn giống Arduino Uno R3, chỉ khác số lƣợng chân và nhiều tính năng mạnh mẽ hơn, nên các bạn vẫn có thể lập trình cho con vi điều khiển này bằng chƣơng trình lập trình cho Arduino Uno R3. Hình 2-1: Board Arduino Mega 2560. b. Thông số kỹ thuật: 4 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 2. CƠ SỞ LÝ THUYẾT  Vi điều khiển chính: ATmega2560.  IC nạp và giao tiếp UART: ATmega16U2.  Nguồn nuôi mạch: 5VDC từ cổng USB hoặc nguồn ngoài cắm từ giắc tròn DC (khuyên dùng 7-9VDC để đảm bảo mạch hoạt động tốt. Nếu bạn cắm 12V thì IC. ổn áp rất dễ chết và gây hƣ hỏng mạch).  Số chân Digital : 54 (có 15 chân PWM).  Số chân Analog: 16.  Giao tiếp UART: 4 bộ UART.  Giao tiếp SPI: 1 bộ (chân 50 đến 53) dùng với thƣ viện SPI của Arduino.  Giao tiếp I2C: 1 bộ.  Ngắt ngoài: 6 chân.  Bộ nhớ Flash: 256 KB, 8KB sử dụng cho Bootloader.  SRAM: 8 KB.  EEPROM: 4 KB.  Xung clock: 16 MHz. 2.2.2 GIỚI THIỆU LCD 20x4 a. Giới thiệu về màn hình LCD 20x4. [4] Ở các phần giao tiếp với led 7 đoạn có hạn chế vì chỉ hiển thị đƣợc các số từ 0 đến 9 hoặc số hex từ 0 đến F – không thể nào hiển thị đƣợc các thông tin kí tự khác nhƣng chúng sẽ đƣợc hiển thị đầy đủ trên LCD có rất nhiều dạng phân biệt theo kích thƣớc từ vài kí tự đến hàng chục kí tự từ 1 hàng đến vài chục hàng vì vậy để cho thuận tiện cho việc hiển thị nên chúng ta sử dụng LCD. Ở đây chúng ta sử dụng LCD 20x4 có nghĩa là có 4 hàng, mỗi hàng có 20 kí tự. Màn hình LCD 20x4 sử dụng IC Driver HD44780. Hỗ trợ giao tiếp dữ liệu 4bits và 8bit có khả năng hiển thị 4 dòng mỗi dòng 20 ký tự màn hình có độ bền cao màn hình LCD 20x4 bao gồm bộ điểu khiển và các vùng nhớ. b. Cấu tạo màn hình LCD 20x4 Đƣợc cấu tạo gồm 14 chân: Các chân cấp nguồn Chân số 1 là chân nối mass(0V), chân thứ 2 là chân VDD nối với nguồn 5V. Chân thứ 3 thƣờng đƣợc nối với contrast thƣờng nối với biến trở. Các chân điều khiển chân số 4 là chân RS dùng để điều khiển lựa chọn thanh ghi Chân RW dùng để quá trình đọc và ghi Chân E là chân cho phép 5 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 2. CƠ SỞ LÝ THUYẾT các chân dữ liệu D7-D0: Chân số 7 đến chân số 14 là 8 chân dùng để trao đổi giữa thiết bị và LCD. Hình 2-2: Màn hình LCD 20x4. c. Chức năng và thông số hoạt động của LCD 20x4 Bảng 2-1: Chức năng của các chân màn hình LCD 20x4 STT TÊN CẤU CHỨC NĂNG CHÂN HÌNH 1 VSS Power GND 2 VDD Power +5V 3 VO analog Contrast Control 4 RS Input RS=0 chọn thanh ghi lệnh RS=1chọn thanh ghi giữ liệu 5 RW Input RW=0 thanh ghi viết RW=1 thanh ghi đọc 6 E Input Cho phép 7 D0 8 D1 9 D2 Chân truyền dữ liệu 10 D3 I/0 6 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 2. CƠ SỞ LÝ THUYẾT 11 D4 12 D5 13 D6 14 D7 Các thông số hoạt động và giới hạn: - Có 3 vùng nhớ nội bộ: Bộ nhớ DDRAM Bộ nhớ phát ký tự ROM- CGROM bộ nhớ phát ký tự RAM-CGRAM - Khả năng hiển thị 20 ký tự mỗi hàng gồm 4 dòng. - Giao tiếp 4bits hoặc 8bits. 2.2.3 GIỚI THIỆU MODULE RFID MFRC522 a. Tổng quan về Module MFRC522 [7] Module RFID MFRC522 với mức giá rẻ và thiết kế nhỏ gọn module này là sự lựa chọn hàng đầu cho các ứng dụng về đọc ghi thẻ RFID.Module MFRC522 đƣợc sử dụng trong đồ án với mục đích kiểm soát đóng mở cửa bằng giao thức giữa thẻ Tag và Module MFRC522, đƣợc kết nối ới Arduino UNO. Thẻ Tag giao tiếp với Module MFRC522 đƣợc chấp nhận (là thẻ đúng), Module sẽ chuyển thông tin sang Arduino xử lý thực hiện tác vụ yêu cầu đã lập trình sẵn (ở đây là đóng mở cửa). Đầu đọc MFRC522 sử dụng IC MFRC522 của Philip dùng để đọc và ghi dữ liệu cho thẻ NFC tần số 13.56 MHZ. Hình 2-3: Module RFID. 7 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH Hình 2-4: Sơ đồ chân RFID. CHƢƠNG 2. CƠ SỞ LÝ THUYẾT b. Chức năng chân và thông số kỹ thuật Tần số hoạt động: Tần số hoạt động là tần số điện từ mà thẻ tag dùng để giao tiếp hoặc thu đƣợc năng lƣợng. Phổ điện từ mà RFID thƣờng hoạt động là tần số thấp (LF), tần số cao (HF), siêu cao tần (UHF) và vi sóng (Microwave). Vì hệ thống RFID truyền đi bằng sóng điện từ, chúng cũng đƣợc điều chỉnh nhƣ thiết bị radio. Hệ thống RFID không đƣợc gây cản trở các thiết bị khác, bảo vệ các ứng dụng nhƣ radio cho c...ấp cho các module trên: It= ( ) Từ đó ta chọn nguồn dòng là 2(mA).  Nguồn cung cấp cho các thiết bị là 5V, nên ta chọn nguồn áp là 5V.  Dùng một nguồn 3.3V để cung cấp riêng cho ESP và RFID.  Điều khiển thiết bị 220V bằng lƣới điện 220V thông qua role. 3.2.3 SƠ ĐỒ NGUYÊN LÝ CỦA TOÀN MẠCH Hình 3-9: Sơ đồ nguyên lý toàn mạch. 37 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG CHƢƠNG 4. THI CÔNG HỆ THỐNG 4.1 THI CÔNG HỆ THỐNG: Bảng liệt kệ linh kiện sử dụng: Bảng 4-1: Danh sách linh kiện. STT Tên linh kiện Thông số Dạng vỏ 1 Arduino Mega 2560 7-9VDC ATmega2560 2 Module RC522 3.3V,13-26mA,13.56Hz 40 x 60 mm 3 Trở 10K 0207/10 4 Động cơ DC , 1.5-24W 33x25.8x2mm 5 LCD LCD 20x4, 16 chân, 2.7V~5V, 5mm 350uA~16mA 6 Module L298 43x43x27mm 7 ESP8266-12 8 Adapter 5V-1A,5V-2A 5.5mm 9 Domino 2 chân CON2 KF128 10 Cảm biến mƣa 5V,100mA 30 x 16mm 54 x 40mm 11 Cảm biến siêu âm 5V-2mA 12 Cảm biến DHT11 3 - 5 V, 2.5mA 15x12x5.5mm. 38 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Sơ đồ bố trí linh kiện lớp trên và lớp dƣới của mạch đƣợc thể hiện ở Hình 4-1 và Hình 4-2. Hình 4-1: Sơ đồ bố trí linh kiện mặt trên. 39 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Hình 4-2: Sơ đồ bố trí linh kiện lớp dưới. 4.2 LƢU ĐỒ GIẢI THUẬT. 4.2.1 LƢU ĐỒ GIẢI THUẬT ARDUINO MEGA 2560.  Lƣu đồ chƣơng trình chính. 40 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG BẮT ĐẦU CẤU HÌNH CHO HỆ THỐNG 4 KIỂM TRA CÓ DỮ LIỆU ĐÚNG VÀO CHƯƠNG NHẬN TỪ TRÌNH EVENT MÁY TÍNH KHÔNG? 4 SAI NHẬN ĐƯỢC ‘1’ GHI THÔNG TIN 3 ĐÚNG SAI ĐÚNG VÀO CHƯƠNG KIỂM TRA CÓ DỮ LIỆU TRÌNH EVENT NHẬN TỪ ESP KHÔNG? ĐÚNG NHẬN ĐƯỢC ‘3’ TẠO THẺ MỚI SAI KIỂM TRA SAI NHẬN ĐƯỢC SAI ĐÚNG THỰC HIỆN TUẦN TỰ CÁC XUẤT RA 1 GIÁ TRỊ CHUONG TRÌNH CON ĐỂ ĐIỀU KHIỂN THIẾT BỊ KẾT THÚC Hình 4-3: Lưu đồ chính.  Giải thích lƣu đồ: - Khi có một sự kiện đang xảy ra, ngay lậy tức vi xử lý sẽ gọi những hàm tƣơng ứng trong sự kiện này ra để làm việc. - Nếu không có sự kiện nào đặc biệt, các hàm có trong void loop sẽ đƣợc thực hiện một cách tuần tự.  Lƣu đồ điều khiển máy bơm. 41 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG BẮT ĐẦU SAI SAI BƠM=0 MỨC NƯỚC THẤP ĐÚNG ĐÓNG RELAY MỞ RELAY SAI MỨC NƯỚC THẤP ĐÚNG ĐÓNG RELAY MỞ RELAY SAI MỨC NƯỚC CAO ĐÚNG MỞ RELAY ĐÓNG RELAY KẾT THÚC . Hình 4-4: Lưu đồ điều khiển máy bơm.  Giải thích lƣu đồ: - Nếu không có điều khiển mở trên app điện thoại thì máy bơm hoạt động tự động theo mực nƣớc của hồ chứa. Nếu có lệnh mở máy bơm, nếu mực nƣớc bé hơn 12cm, mở máy bơm để bơm nƣớc, còn không thì tắt máy bơm, điều kiện này tránh cho bơm nƣớc tràn hồ chứa. - Khi hoạt động tự động, nếu mực nƣớc hồ thấp hơn 4cm thì mở máy bơm, nếu mực nƣớc lớn hơn 12cm, tức là đầy hồ, tắt máy bơm. 42 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG  Lƣu đồ điều khiển tắm cho heo. BẮT ĐẦU SAI ĐÚNG GIỜ ĐÚNG NGƯNG TẮM TẮM HEO HEO SAI HẾT GIỜ ĐÚNG NGƯNG TẮM TẮM HEO HEO KẾT THÚC Hình 4-5: Lưu đồ tắm cho heo.  Giải thích lƣu đồ: Khi đúng giờ tắm heo là 8 giờ sáng, bật hệ thống phun nƣớc để tắm heo, tắm heo trong vòng 5 phút rồi tắt hệ thống tắm heo. 43 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG  Lƣu đồ điều khiển nhiệt độ chuồng heo. BẮT ĐẦU SAI QUẠT=0 ĐÚNG SAI T>30 ĐỘ ĐÚNG BẬT QUẠT KHÔNG LÀM GÌ BẬT QUẠT SAI T<24 ĐỘ ĐÚNG TẮT QUẠT KHÔNG LÀM GÌ KẾT THÚC Hình 4-6: Lưu đồ điều khiển bật quạt.  Giải thích lƣu đồ: 44 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG - Khi không có điều khiển bằng tay qua app android, quạt sẽ hoạt động tự động theo nhiệt độ môi trƣờng, nếu có điều khiển bật, quạt sẽ bật lên. - Khi hoạt động tự động, nếu nhiệt độ lơn hơn 30 độ, quạt sẽ bật, đến khi nhiệt độ bé hơn 24 độ thì tắt.  Lƣu đồ hoạt động của hệ thống dọn vệ sinh. BẮT ĐẦU SAI VE_SINH=0 ĐÚNG SAI ĐÚNG GIỜ ĐÚNG BẬT VỆ SINH TẮT VỆ SINH BẬT VỆ SINH SAI HẾT GIỜ ĐÚNG TẮT VỆ SINH BẬT VỆ SINH KẾT THÚC Hình 4-7: Lưu đồ hoạt động dọn vệ sinh.  Giải thích lƣu đồ: Khi không có điều khiển bằng tay trên app android, hệ thống hoạt động tự động theo giờ. Nếu có điều khiển bằng tay, hệ thống sẽ bật lên để dọn rửa chuồng. 45 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG  Lƣu đồ hoạt động của đèn trong chuồng heo. BẮT ĐẦU SAI DEN=0 ĐÚNG SAI ĐÚNG GIỜ ĐÚNG BẬT ĐÈN TẮT ĐÈN BẬT ĐÈN SAI HẾT GIỜ ĐÚNG TẮT ĐÈN BẬT ĐÈN KẾT THÚC Hình 4-8: Lưu đồ điều khiển bật đèn. 46 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG  Giải thich lƣu đồ: - Khi không có điều khiển bằng tay trên app android, đèn hoạt động theo thời gian, nếu có điều khiển mở, đèn sẽ đƣợc mở lên. - Khi hoạt động tự động theo thời gian, đèn đƣợc mở từ 17 giờ chiều tới 19 giờ tối.  Lƣu đồ hoạt động của mái hiên. BẮT ĐẦU SAI TRỜI KHÔNG MƯA ĐÚNG SAI ĐÚNG GIỜ ĐÚNG MỞ MÁI HIÊN ĐÓNG MÁI HIÊN ĐÓNG MÁI HIÊN KẾT THÚC Hình 4-9: Lưu đồ điều khiển mái hiên.  Giải thích lƣu đồ: - Khi trời mƣa, mái hiên sẽ đƣợc đóng lại, khi trời nắng, mái hiên sẽ hoạt động theo thời gian. - Khi trời nắng, mái hiên mở từ 6 giờ sáng tới 9 giờ sáng, và từ 15 giờ tới 17 giờ. 47 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG  Lƣu đồ cho ăn. BẮT ĐẦU SAI ĐÚNG GIỜ ĐÚNG MỞ VAN ĐÓNG VAN SAI T_MỞ > T_ĐẶT ĐÚNG ĐÓNG VAN MỞ VAN KẾT THÚC Hình 4-10: Lưu đồ điều khiển cho ăn.  Giải thích lƣu đồ: Khi đúng giờ cho ăn, van đƣợc mở, lƣợng thức ăn cho heo đƣợc tính toán dựa vào thời gian mở, van mở trong vòng 10 giây rồi đóng lại cho tới lần ăn kế tiếp. 48 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG  Lƣu đồ mở van nƣớc xuống máng. BẮT ĐẦU SAI HẾT NƯỚC ĐÚNG MỞ VAN SAI NƯỚC ĐẦY ĐÚNG ĐÓNG VAN MỞ VAN KẾT THÚC Hình 4-11: Lưu đồ cho uống.  Giải thích lƣu đồ: Khi heo uống hết nƣớc, mở van ra để thêm nƣớc xuống máng nƣớc, đủ nƣớc thì đóng van lại.  Lƣu đồ nhận, gửi thông tin giữa Arduino và ESP. 49 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG 3 ĐÚNG KIỂM TRA KÍ TỰ TỪ ESP SO SÁNH GIÁ TRỊ TRONG CHƯƠNG SAI TRÌNH EVENT XUẤT GIÁ TRỊ TƯƠNG ỨNG KẾT THÚC Hình 4-12: Lưu đồ gửi thông tin giữa ESP và Arduino.  Giải thích lƣu đồ: - Khi ESP nhận các kí tự từ ESP, Arduino nhận đƣợc vào chƣơng trình even, xuất ra một giá trị tƣơng tứng vào biến để Arduino đọc và thực hiện. 4.2.2 GIỚI THIỆU VỀ ARDUINO IDE a. Giới thiệu về Arduino IDE. Là công cụ đƣợc phát triển để lập trình cho các boar Arduino, đƣợc phát triển để có thể chạy trên các nền tản Windows, MAX OS X và Linux. Arduino là môi trƣờng 50 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH Hình 4-13: Giao diện phần mềm Arduino. CHƢƠNG 4. THI CÔNG HỆ THỐNG phát triển tích hợp mã nguồn mở, cho phép ngƣời dùng dễ dàng viết code và nạp nó lên board mạch. Môi trƣờng phát triển đƣợc viết bằng Java dựa trên ngôn ngữ Arduino là môi trƣờng phát triển tích hợp mã nguồn mở, cho phép ngƣời dùng dễ dàng viết lập trình xử lý và phần mềm mã nguồn mở khác. Phần mềm này có thể đƣợc sử dụng với bất kỳ board mạch Arduino nào. b. Cài đặt Arduino IDE. Bƣớc 1: Vào đƣờng link https://www.arduino.cc/en/Main/Software/. Bƣớc 2: Bấm chuột vào Windows ZIPfile for non admin install . Hình 4-14: Cài đặt Arduino bước 2. Bƣớc 3: Bấm vào JUST DOWNLOAD. 51 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Hình 4-15: Cài đặt Arduino bước 3. Bƣớc 4: Download file cài đặt và giải nén file cài đặt. Bƣớc 5: Chạy file arduino-1.8.5. Hình 4-16: Cài đặt Arduino bước 5. 4.2.3 LƢU ĐỒ GIẢI THUẬT CỦA ESP.  Giới thiệu. ESP đƣợc lập trình trên Aruino IDE. Là thiết bị mở rộng giúp Arduino kết nối firebase.  Lƣu đồ giải thuật. 52 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG BẮT ĐẦU KẾT NỐI WIFI KẾT NỐI FIREBASE KIỂM TRA THỜI GIAN TỪ ĐÚNG GỬI CHUỖI LÊN ARDUINO FIREBASE 2 SAI 2 KIỂM TRA KÍ TỰ TỪ ĐÚNG GỬI KÍ TỰ VỪA NHẬN FIREBASE CHO ARDUINO SAI ĐÚNG KÍ TỰ TƯƠNG ỨNG CHO KIỂM TRA NHIỆT ĐỘ ARDUINO 1 SAI 1 Hình 4-17: Lưu đồ hoạt động của ESP.  Giải thích lƣu đồ: ESP nhận lệnh từ cả app Adroid và Aruino. Khi nhận đƣợc lệnh từ các button của app Adroid, ESP truyền các kí tự tƣơng ứng xuống Arduino, Arduino nhận đƣợc kí tự sẽ so sánh và thực hiện lệnh tƣơng ứng. ESP đọc nhiệt độ và độ ẩm, so sánh với nhiệt độ cài đặt, sau đó gửi kí tự điều khiển xuống, Arduino đọc, so sánh kí tự đọc đƣợc để đƣa ra lệnh điều khiển quạt. Tƣơng tự, ESP nhận đƣợc các kí tự từ Arduino và so sánh gửi chuổi thông báo tƣơng ứng lên Firebase. 4.2.4 LẬP TRÌNH C# TRÊN PHẦN MỀM VISUAL STUDIO. 53 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG a. Giới thiệu Visual Studio. [11] Visua studio là môi trƣờng phát triển tích hợp từ Microsoft, đƣợc sử dụng để phát triển các ứng dụng của Microsoft Window, các trang web, các ứng dụng, dịch vụ web. Visual studio sử dụng nền tanrphast triển phần mềm của Microsoft nhƣ Windows API, Windows Forms, Windows Presentation Foundation, Windows Store và Microsoft Silverlight. Visual studio bao gồm một trình soạn thảo mã hỗ trợ IntelliSense cũng nhƣ cải tiến mã nguồn. Trình gỡ lỗi tích hợp hoạt động cả về trình gỡ lỗi mức độ mã nguồn và gỡ lỗi mức độ máy. Hình 4-18: Giao diện phần mềm Visual Studio. Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình biên tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) hầu nhƣ mọi ngôn ngữ lập trình. Các ngôn ngữ tích hợp gồm có C, C++ và C++/CLI (thông qua Visual C++), VB.NET (thông qua Visual Basic.NET), C thăng (thông qua Visual C#) và F thăng (nhƣ của Visual Studio 2010). Hỗ trợ cho các ngôn ngữ khác nhƣ J++/J thăng, Python và Ruby thông qua dịch vụ cài đặt riêng rẽ. Nó cũng hỗ trợ XML/XSLT, HTML/XHTML, JavaScript và CSS. b. Hƣớng dẩn cài đặt visual studio 2015. Bƣớc 1: Tải và chạy file Setup.exe. 54 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Hình 4-19: Tải và chạy file.exe Bƣớc 2: Nhấn Continue để tiếp tục. Hình 4-20: Cài đặt Visual Studio. Bƣớc 3: Nhấn vào Install và chờ đợi để phần mềm đƣợc cài đặt, sau khi cài xong ta restart lại máy. 55 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Hình 4- 21: Cài đặt Visual Studio bước 3. 4.2.5 CHƢƠNG TRÌNH TRÊN ANDROID STUDIO. a. Giới thiệu Android Studio. [6] Google cung cấp cho lập trình viên một IDE gọi là Android Studio để phát triển ứng dụng Android. Ứng dụng Android yêu cầu một số file cấu hình. Ứng dụng sẽ đƣợc viết chủ yếu bằng ngôn ngữ lập trình Java. Android studio sẽ sử dụng Android SDK (Android software development kit) và Gradle tooling để chuyển đổi những file này thành ứng dụng Android. Nó cho phép biên dịch, đóng gói và deploy và khởi chạy ứng dụng sau khi đã build xong. Android SDK bao gồm cả ADB (Android Debug bridge) là 1 công cụ cho phép ta kết nối tới các thiết bị máy ảo và máy thật để build ứng dụng. Nó cho phép ta quản lý các thiết bị và hỗ trợ ta debug ứng dụng. Hầu hết các file cấu hình trong Android đều dƣới dạng XML. Android Studio cung cấp các trình sửa file cho từng file riêng. b. Cài đặt Android Studio. [8] Bƣớc 1: Vào đƣờng link: https://developer.android.com/sdk/index.html để download android studio. 56 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Hình 4-22: Cài đặt Android Studio bước 1. Bƣớc 2: Chạy file vừa tải đƣợc. Hình 4-23: Cài đặt Android Studio bước 2. Bƣớc 3: Nhấn next. 57 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Hình 4-24: Cài đặt Visual Studio bước 3. Bƣớc 4: Tích vào tất cả các ô nhƣ hình bên dƣới, sau đó nhấn next. Hình 4-25: Cài đặt Android Studio bước 4. Bƣớc 5: Nhấn vào “I Agree” để chấp nhận các điều khoảng của nhà sản xuất và chờ android studio đƣợc cài vào máy. 58 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Hình 4-26: Cài đặt Visual Studio bước5 . c. Cách sử dụng Android Studio. Trƣớc tiên vào phần mềm Android Studio, sẽ thấy màn hình nhƣ hình dƣới và Hình 4-Tạo27: projectTạo project mới trong mớit Android. rong Android. chọn theo dấu mũi tên màu đỏ. 59 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Nhập vào: - Application Name: tên ứng dụng của muốn lập trình. - Company Domain: có thể đặt theo định dạng sau tên mình. tên công ty. tên ứng dụng mình đang làm. - Project location: đƣờng dẫn chứa tệp tin chƣơng trình. Tạo projectHình mới 4-28 trong: Tạo Android project. mới trong Android. Sau khi đặt tên xong nhấn Next để qua bƣớc tiếp theo, bƣớc này xuất hiện màn hình chọn phiên bản Android để lập trình, lƣu ý khi chọn phiên bản Android càng thấp thì ứng dụng tạo ra sẽ chạy đƣợc trên nhiều thế hệ. (Hình 4-30). 60 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Hình 4-30: Chọn phiên bản Android. Hình 4-29: Chọn màn hình. 61 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG Đặt tên cho màn hình xong nhấn nút “Finish” chổ khung tròn màu đỏ. Hình 4-31: Đặt tên cho màn hình. Hình 4-32: Chọn thiết bị để nạp chương trình. 62 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 4. THI CÔNG HỆ THỐNG 63 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 5. KẾT QUẢ- NHẬN XÉT- ĐÁNH GIÁ CHƢƠNG 5: KẾT QUẢ, NHẬN XÉT, ĐÁNH GIÁ 5.1 SẢN PHẨM SAU KHI HOÀN THÀNH: 5.1.1 SẢN PHẨM: Hình 5-1: Sản phẩm thi công. Do quy mô của mô hình nên chúng ta thiết kế các thiết bị hợp lý để phù hợp với kích thƣớc mô hình, các thiết bị đƣợc đƣa ra bên trong và xung quanh của chiếc hộp hình chữ nhật. Bố trí thiết bị sao cho hợp lý, sắp xếp dây điện để tăng tính thẩm mỹ cao. 5.1.2 KIẾN THỨC CÓ ĐƢỢC TRONG THIẾT KẾ SẢN PHẨM: Kiến thức về vi xử lý thì học đƣợc cách lập trình Arduino, hiểu biết về ngắt, ngoài ra còn biết giao tiếp với module WIFI qua USART và giao tiếp thẻ RFID qua chuẩn SPI. 64 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 5. KẾT QUẢ- NHẬN XÉT- ĐÁNH GIÁ Biết đƣợc cách lập trình ứng dụng trên Android, cách tạo một giao diện, ánh xạ các phần tử bên giao diện qua giao diện lập trình, hiểu thêm đƣợc về giao thức mạng cũng nhƣ là cách giao tiếp truyền nhận dữ liệu thông qua mạng không dây WIFI. Hiểu thêm đƣợc các kiến thức về các cảm biến nhƣ: cảm biến mƣa, siêu âm, Realtime, nhiệt độ độ ẩm, Module Relay điều khiển thiết bị xoay chiều, Có thể sử dụng phần mềm công cụ Altium để thiết kế sơ đồ nguyên lý và bố trí linh kiện trên mạch. Biết đƣợc cách lập trình C# trên Visual Studio, cách tạo một giao diện, kết nối các phần tử bên giao diện qua giao diện lập trình, hiểu thêm đƣợc về giao thức cổng SerialPort cũng nhƣ là cách giao tiếp truyền nhận dữ liệu thông quachuẩn UART. 5.2 KẾT QUẢ CHẠY HỆ THỐNG: 5.2.1 QUÁ TRÌNH CHẠY ỨNG DỤNG TRÊN ĐIỆN THOẠI: Giao diện của ứng dụng khi có dữ liệu từ điện thoại gửi lên FireBase thì trên Web sẽ hiển thị. Hình 5-2: Giao diện App Chính. 65 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 5. KẾT QUẢ- NHẬN XÉT- ĐÁNH GIÁ Khi chạy hệ thống các hoạt động của heo sẽ đƣợc hiển thị trên web FireBase và sẽ cập nhật liên tục qua wifi. Hình 5-3: Giao diện web FireBase. 5.2.2 QUÁ TRÌNH VẬN HÀNH TRÊN PHẦN CỨNG HỆ THỐNG: - Sau khi cấp nguồn cho phép bắt đầu hệ thống hoạt động, các thiết bị bắt đầu hoạt động. - Các thiết bị sẽ hoạt động theo thời gian mình cài đặt và theo các cảm biến khi có tín hiệu vào. 66 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 5. KẾT QUẢ- NHẬN XÉT- ĐÁNH GIÁ Hình 5-4: Bảng điều khiển hoạt động. - Màn hình LCD 20x4 sẽ hiển thị các trạng thái của thiết bị máy bơm, đèn, vệ sinh, quạt, tắm và thời gian thực. Hình 5-5: Màn hình LCD 20x4 hiển thị. 5.2.3 QUÁ TRÌNH VẬN HÀNH TRÊN PHẦN MỀM VISUAL STUDIO: Sau khi chạy chƣơng trình thì trên màn hình hiển thị bảng cho phép bắt đầu quẹt thẻ tag. 67 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 5. KẾT QUẢ- NHẬN XÉT- ĐÁNH GIÁ Hình 5-6: Bảng làm việc khi nết nối Arduino. Các bƣớc thực hiện đọc thẻ RFID trên phần mềm Visual Studio:  Bƣớc 1: Nhấp nút “kết nối” kết nối Serialport của Visual Studio với Arduino để truyền nhận dữ liệu.  Bƣớc 2: Đƣa thẻ vào Module RFID các thông tin lƣu trên thẻ sẽ đƣợc đọc ra hiển thị lên các text trong bảng.  Bƣớc 3: Nhấp nút “Tạo thẻ mới” có nghĩa là SetkeyA làm cho thông tin cũ trên thẻ sẽ đƣợc xóa hết và bắt đầu thêm thông tin mới.  Bƣớc 4: Sau khi chúng ta thêm thông tin trên các TextBox thì chúng ta sẽ nhấp nút “Thêm Thông Tin”. Hệ thống sẽ gửi thông báo “Bạn có chắc muốn thêm thông tin” nhấp “OK” để thêm thông tin. 68 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CHƢƠNG 6. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN CHƢƠNG 6: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Hệ thống điều khiển đƣợc các thiết bị cơ bản cho mô hình chăn nuôi nhƣ cho ăn, uống, điều khiển nhiệt độ nuôi, bật đèn, máy bơm nƣớc, tiến đến chăn nuôi tự động một cách chuyên nghiệp. Việc quản lý hệ thống dễ dàng qua nút nhấn và LCD ngay tại trang trại. Việc quản lý từ xa nhờ vào ứng dụng của Android Studio giúp ngƣời nuôi nắm bắt hoạt động của trang trại dễ dàng, tạo nên sự yên tâm và phản ứng kiệp thời khi đi xa, tuy nhiên chƣa kết nối đƣợc nhiều wifi và tốc độ truyền nhận còn chậm. Thông tin vật nuôi đƣợc lƣu giữ, quản lý thông qua hệ thống RFID với thẻ tag đƣợc gắn trên vật nuôi, sau đó xuất thông tin ra trên giao diện C# khi thẻ đƣợc đọc giúp ngƣời nuôi quản lý đƣợc dễ dàng. Việc thêm thẻ mới cũng nhƣ ghi thông tin mới cho heo cũng thuận tiện hơn khi thực hiện qua giao diện này. Tuy nhiên, việc quản lý, giám sát quy mô lớn bị hạn chế, chƣa phân ra đƣợc độ tuổi heo nuôi để có những thông số phù hợp cho chăn nuôi, tiến đến chăn nuôi một cách chuyên nghiệp, quy mô lớn. 6.2 HƢỚNG PHÁT TRIỂN Phát triển theo hƣớng chăn nuôi quy mô lớn, khép kín. Tự động hóa hoạt động của trang trại từ đầu vào đến đầu ra. Phân chia độ tuổi, mục đích nuôi để có chế độ chăm sóc riêng, phù hợp cho sự phát triển của heo, tạo nên năng suất cao. Việc quản lý thông tin heo chi tiết hơn, giúp ngƣời nuôi đảm bảo các tiêu chuẩn về thực phẩm sạch, có thể xuất khẩu qua các nƣớc. 69 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách Tham Khảo [1] Trần Thu Hà, Trƣơng Thị Bích Ngà, Nguyễn Thị Lƣỡng, Bùi Thị Tuyết Đan, Phù Thị Ngọc Hiếu, Dƣơng Thị Cẩm Tú, “Giáo trình điện tử cơ bản”, Đại Học Sƣ Phạm Kỹ Thuật Tp.HCM 21/1/2013. [2] Nguyễn Văn Hiệp, Đinh Quang Hiệp, “Giáo trình lập trình Android Cơ Bản”, NXB Đại Học Quốc Gia 2015. [3] Nguyễn Việt Hùng, Nguyễn Ngô Lâm, Nguyễn Văn Phúc, “Giáo Trình Truyền Số Liệu”, Xuất bản ĐH Quốc Gia, Tp.HCM, 2011. [4] Nguyễn Đình Phú, “Giáo Trình Vi Xử Lý ” , Xuất bản ĐH Quốc Gia, Tp.HCM, 2016. [5] Nguyễn Văn Hiệp, “Giáo trình Lập trình Android trong ứng dụng điều khiển”, Đại Học Sƣ Phạm Kỹ Thuật Tp.HCM, 2016. Trang Web Tham Khảo [6] Trần Duy Thanh, Bài tập 31: Cách sử dụng SQLite trong Android, 12/6/2013, https://duythanhcse.wordpress.com/2013/06/12/bai-tap-31-cach-su-dung-sqlite-trong- android/ [7] Các bài viết trong [8] Trang https://esp8266.vn/nonos-sdk/basic/uart/ [9] Trang https://github.com/firebase/firebase-arduino [10] Trang [11] Trang https://visualstudio.microsoft.com/ [12] Trang mau-lon-can-thuoc-nam-long.html [13]Trang https://www.youtube.com/watch?v=-8hKl7qUxZA 70 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC PHỤ LỤC CHƢƠNG TRÌNH ĐIỀU KHIỂN ANDROID STUDIO Activity_main.xml------------------------------------------ <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:android=""> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="100"> <ImageView android:layout_width="match_parent" android:layout_height="116dp" android:layout_weight="50" android:src="@drawable/logo" /> <ImageView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="50" android:src="@drawable/ute" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="100"> <ImageView android:id="@+id/device1" android:layout_width="wrap_content" android:layout_height="86dp" android:layout_weight="50" android:src="@drawable/on" /> <ImageView android:id="@+id/device2" 71 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="50" android:src="@drawable/on" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="100"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn_d1" android:text= "DK" android:layout_weight="50"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn_d2" android:text= "DK" android:layout_weight="50"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="100"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" Nhiệt độ:" android:layout_weight="30" android:textSize="40dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/temp" android:hint="Temp" android:layout_weight="70" android:textSize="40dp"/> <LinearLayout 72 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="100"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" Độ ẩm :" android:layout_weight="30" android:textSize="40dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Humm" android:hint="Humm" android:layout_weight="70" android:textSize="40dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Author : Ngọc Thạch - Quốc Duyệt" android:textSize="20dp" /> Mainactivity.java---------------------------------------------------- package com.example.admin.doantotnghiep; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.google.firebase.database.DataSnapshot; 73 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; public class MainActivity extends AppCompatActivity { ImageView tt_tb1, tt_tb2; TextView nd, da; Button btn1, btn2; FirebaseDatabase csdl; DatabaseReference trangthai1, trangthai2, dk_tb1, dk_tb2, nhietdo, doam; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); anh_xa(); csdl = FirebaseDatabase.getInstance(); trangthai1 = csdl.getReference("trangthai_tb1"); trangthai2 = csdl.getReference("trangthai_tb2"); dk_tb1 = csdl.getReference("dk_trangthai_tb1"); dk_tb2 = csdl.getReference("dk_trangthai_tb2"); nhietdo = csdl.getReference("nhietdo"); doam = csdl.getReference("doam"); nhietdo.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { nd.setText(dataSnapshot.getValue().toString()); } @Override public void onCancelled(DatabaseError databaseError) { } }); doam.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { da.setText(dataSnapshot.getValue().toString()); } @Override public void onCancelled(DatabaseError databaseError) { 74 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC } }); trangthai1.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { btn1.setText(dataSnapshot.getValue().toString()); if (btn1.getText().toString().equals("ON")) { tt_tb1.setImageResource(R.drawable.on); } else if (btn1.getText().toString().equals("OFF")) { tt_tb1.setImageResource(R.drawable.off); } else { tt_tb1.setImageResource(R.drawable.ute); } } @Override public void onCancelled(DatabaseError databaseError) { } }); trangthai2.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { btn2.setText(dataSnapshot.getValue().toString()); if (btn2.getText().toString().equals("ON")) { tt_tb2.setImageResource(R.drawable.on); } else if (btn2.getText().toString().equals("OFF")) { tt_tb2.setImageResource(R.drawable.off); } else { tt_tb2.setImageResource(R.drawable.ute); } } @Override public void onCancelled(DatabaseError databaseError) { } }); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (btn1.getText().toString().equals("ON")) { 75 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC dk_tb1.setValue("OFF"); } else if (btn1.getText().toString().equals("OFF")) { dk_tb1.setValue("ON"); } else { dk_tb1.setValue("None"); } } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (btn2.getText().toString().equals("ON")) { dk_tb2.setValue("OFF"); } else if (btn2.getText().toString().equals("OFF")) { dk_tb2.setValue("ON"); } else { dk_tb2.setValue("None"); } } }); } public void anh_xa() { tt_tb1 = (ImageView) findViewById(R.id.device1); tt_tb2 = (ImageView) findViewById(R.id.device2); nd = (TextView) findViewById(R.id.temp); da = (TextView) findViewById(R.id.Humm); btn1 = (Button) findViewById(R.id.btn_d1); btn2 = (Button) findViewById(R.id.btn_d2); } } App------------------------------------------------------------------ 76 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultConfig { applicationId "com.example.admin.doantotnghiep" minSdkVersion 21 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } aaptOptions { cruncherEnabled=false } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' implementation 'com.google.firebase:firebase-database:12.0.1' implementation 'com.google.android.gms:play-services:12.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso- core:3.0.2' } apply plugin: 'com.google.gms.google-services' 77 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC DoAnTotNghiep------------------------------------------------------------------- // Top-level build file where you can add configuration options common to all sub- projects/modules. buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath 'com.google.gms:google-services:3.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } CHƢƠNG TRÌNH ĐIỀU KHIỂN VISUAL STUDIO using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; 78 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.IO.Ports; namespace HeoCard { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // dữ liệu nhận int i = 0; char[] data_nhan = new char[102]; private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { data_nhan[i] = (char) serialPort1.ReadChar(); if (data_nhan[i] == '*') { i = 0; string ten = ""; string diachi = ""; string nhap = ...+= textBoxNhap.Text; len = textBoxNhap.TextLength; for (int i = 0; i < 16 - len; i++) { data_gui = data_gui + " "; } data_gui += textBoxXuat.Text; len = textBoxXuat.TextLength; for (int i = 0; i < 16 - len; i++) { data_gui = data_gui + " "; } 81 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC data_gui += textBoxTiem.Text; len = textBoxTiem.TextLength; for (int i = 0; i < 16 - len; i++) { data_gui = data_gui + " "; } //data_gui += "*"; MessageBox.Show("Bạn có chắc muốn thêm thông tin", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Question); serialPort1.Write(data_gui); MessageBox.Show(data_gui); } //button kết nối private void buttonKetnoi_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { //serialPort1.Close(); buttonKetnoi.Text = "Kết nối"; } else { serialPort1.Open(); buttonKetnoi.Text = "Ngƣng kết nối"; } } private void textBoxTen_TextChanged(object sender, EventArgs e) { } private void textBoxNhap_TextChanged(object sender, EventArgs e) { } } } 82 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC CHƢƠNG TRÌNH ĐIỀU KHIỂN ESP8266 #include #include #include #include #define Hanoizone 3600*7 #define FIREBASE_HOST "pig-manager.firebaseio.com" #define FIREBASE_AUTH "" char ssid[] = "Xomtrokhongnuoicho!"; // your network SSID (name) char pass[] = "Lanheocute50/36T"; // your network password #define DHTTYPE DHT11 #define DHTPIN 13 DHT dht(DHTPIN, DHTTYPE); float temp_f; float h,prevh=20; float t,prevt=20; const long interval = 2300; String tb1,prevtb1="" ; String tb2,prevtb2="" ; int j=0,k=0,j4=0,k4=0; int j2=0,k2=0,j3=0,k3=0; /////////////////////// unsigned long epoch; int hh; int mm; int ss; int force_update = 1; uint32_t ts=0, ts1=0,ts2=0,ts3=0; unsigned int localPort = 2390; int ip = 0; //String IP_of_Server[5] = {"122.155.169.213", "129.6.15.28", "158.108.212.149", "203.158.118.2", "129.250.35.250"}; IPAddress timeServer; const char* ntpServerName = "0.asia.pool.ntp.org"; const int NTP_PACKET_SIZE = 48; byte packetBuffer[ NTP_PACKET_SIZE]; WiFiUDP udp; unsigned long sendNTPpacket(IPAddress& address) { // Serial.println("sending NTP packet..."); memset(packetBuffer, 0, NTP_PACKET_SIZE); packetBuffer[0] = 0b11100011; packetBuffer[1] = 0; 83 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC packetBuffer[2] = 6; packetBuffer[3] = 0xEC; packetBuffer[12] = 49; packetBuffer[13] = 0x4E; packetBuffer[14] = 49; packetBuffer[15] = 52; udp.beginPacket(address, 123); udp.write(packetBuffer, NTP_PACKET_SIZE); udp.endPacket(); } void NTP_get(void) { WiFi.hostByName(ntpServerName, timeServer); sendNTPpacket(timeServer); delay(1000); int cb = udp.parsePacket(); if (!cb) {} else { udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer unsigned long highWord = word(packetBuffer[40], packetBuffer[41]); unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]); unsigned long secsSince1900 = highWord << 16 | lowWord; const unsigned long seventyYears = 2208988800UL; epoch = secsSince1900 - seventyYears + Hanoizone; } } void onTimerISR(){ epoch++; //Toggle LED Pin timer1_write(5000000); } void setup() { Serial.begin(250000); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); dht.begin(); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { delay(500); } udp.begin(localPort); NTP_get(); hh = (epoch % 86400L) / 3600; mm = (epoch % 3600) / 60; 84 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC ss = (epoch % 60); noInterrupts(); timer1_isr_init(); timer1_attachInterrupt(onTimerISR); timer1_enable(TIM_DIV16, TIM_EDGE, TIM_SINGLE);//80Mhz->80M dao động trong 1s, 80Mz/16=5 000 000 timer1_write(5000000); interrupts(); pinMode(4,OUTPUT); } void loop() { ts = millis(); if(ts - ts1 >= 5000) {NTP_get();ts1=ts;} hh = (epoch % 86400L) / 3600; mm = (epoch % 3600) / 60; ss = (epoch % 60); if(ts-ts2>=10000) { if (hh < 10) {Serial.print(0); Serial.print(hh) ;} else if (hh >= 10) {Serial.print(hh) ;} if (mm < 10) {Serial.print(0); Serial.print(mm) ;} else if (mm >= 10) {Serial.print(mm) ;} if (ss < 10) {Serial.print(0); Serial.println(ss) ;} else if (ss >= 10) {Serial.println(ss) ;} ts2=ts; } if ( ts - ts3 >= 10000 ) { h = dht.readHumidity(); t = dht.readTemperature(); if(prevh != h) Firebase.setFloat("nhietdo",t); if(prevt != t) Firebase.setFloat("doam",h); prevh=h; prevt=t; ts3 = ts; } tb1=Firebase.getString("dk_trangthai_tb1"); tb2=Firebase.getString("dk_trangthai_tb2"); //điều khiển các thiết bị máy bơm,đèn if ( tb1=="ON" && prevtb1 != tb1 ) { 85 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC Firebase.setString("trangthai_tb1","ON"); Serial.print('A'); prevtb1 = tb1; } else if ( tb1=="OFF" && prevtb1 != tb1 ) { Firebase.setString("trangthai_tb1","OFF"); Serial.print('a'); prevtb1 = tb1; } if ( tb2=="ON" && prevtb2 != tb2 ) { Firebase.setString("trangthai_tb2","ON"); Serial.write('B'); prevtb2 = tb2; } else if ( tb2=="OFF" && prevtb2 != tb2 ) { Firebase.setString("trangthai_tb2","OFF"); Serial.write('b'); prevtb2 = tb2; } if (t > 30) Serial.print('c'); else if (t < 24) Serial.write('d'); hienthi_choan(); hienthi_vesinh(); hienthi_batden(); hienthi_tam(); } void hienthi_choan() { if(hh==7 || hh==11 || hh== 17) { if( mm <10 ) { if(ss >0 ) { if(j<1) { Firebase.setString("Đang Cho Ăn","ON"); k=0; j++; } 86 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC } else { if(k<1) { Firebase.setString("Đang Cho Ăn","OFF"); j=0; k++; } } } }else{ if(k<1) { Firebase.setString("Đang Cho Ăn","OFF"); j=0; k++; } } } void hienthi_vesinh() { if( hh== 6 || hh==16 ) { if(mm < 12 ) { if(j4<1) { Firebase.setString("Đang Vệ Sinh","ON"); k4=0; j4++; } } else { if(k4<1) { Firebase.setString("Đang Vệ Sinh","OFF"); j4=0; k4++; } } 87 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC }else{ if(k4<1) { Firebase.setString("Đang Vệ Sinh","OFF"); j4=0; k4++; } } } void hienthi_tam() { if( hh==9 ) { if(mm < 13 ) { if(j2<1) { Firebase.setString("Đang Tắm","ON"); k2=0; j2++; } } else { if(k2<1) { Firebase.setString("Đang Tắm","OFF"); j2=0; k2++; } } }else{ if(k2<1) { Firebase.setString("Đang Tắm","OFF"); j2=0; k2++; } } } 88 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC void hienthi_batden() { if(tb2="OFF") { if( hh >=17 && hh < 20 ) { if(j3<1) { Firebase.setString("Đang Bật Đèn","ON"); k3=0; j3++; } } else { if(k3<1) { Firebase.setString("Đang Bật Đèn","OFF"); j3=0; k3++; } } } else { Firebase.setString("Đang Bật Đèn","ON"); } } CHƢƠNG TRÌNH ĐIỀU KHIỂN ARDUINO #include // thu vien lcd_i2c ////////////////THUVIEN RFID////////////////////////// #include #include #define RST_PIN 5 #define SS_PIN 53 MFRC522 mfrc522(SS_PIN, RST_PIN); char val, val1; int tt; // PHAN KHAI BAO 89 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC LiquidCrystal_I2C lcd(0x27, 20, 4); // khoi tao cho lcd // khai báo cho realtime const byte DS1307 = 0x68; const byte NumberOfFields = 7; int giay, phut, gio, thu, ngay, thang, nam, ktgiay = 0, kt = 0; byte setgiay=0x00, setphut=0x30, setgio=0x06; // khai bao cho cam bien sieu am HC-SR04 const int trig = 35; // chân trig của HC-SR04 const int echo = 37; // chân echo của HC-SR04 unsigned long duration; // biến đo thời gian int distance; // biến lƣu khoảng cách // khia bap cam bien HC_RS04 2 const int trig_1 = 12; // chân trig của HC-SR04 const int echo_1 = 13; // chân echo của HC-SR04 unsigned long duration_1; // biến đo thời gian float khoangcach_1; // biến lƣu khoảng cách float mucnuoc1 , mucnuoc; // khai bao cho cam bien mua int rainSensor = 27; // Chân tín hiệu cảm biến mƣa ở chân digital 7 (arduino) // đinh nghiã các chân chƣc năng///////////////////////////////////////////////// //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// #define role_1 23 // may bom nc #define role_2 19//QUAT THONG GIO #define role_3 16 //TAM RUA #define role_4 17 // don ve sinh #define role_5 6 // bat den #define ug_o 7 // cho uong ///////// chan dieu khien MAI HIEN/////////////////////////////////// /////////////////////////////////////////////////////////////////// #define rain_c 9 #define rain_o 8 // cong tac hanh trinh cho CB MUA const int sw_rs = 18; ////// chan dieu khien van thuc an///////////////////////////////// ///////////////////////////////////////////////////////////////// #define an_c 11 #define an_o 10 // cong tac hanh trinh cho van cho an const int sw_as = 3; ////// chan dieu khien van uong nuoc///////////////////////////////// ///////////////////////////////////////////////////////////////// // cong tac hanh trinh cho van cho an 90 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC const int sw_us = 2; ///////// khia bao cac bien trung gian //dinh nghia cho loacell int m , g; int times ; int chon = 1; float khoangcach , khoiluong; int rain=2; //bien trung gian dk cho mai hien int value ; // khai bao cho nut nhan #define buttonPin 47 // chon hien thi #define buttonPin1 45 // tang tg cho ăn set gio phut #define buttonPin2 25 // giam tg cho ăn set gio phut int counter = 0; int btn_tt , btn1 , btn2 ; int btn_codinh = 1; int btn_codinh1 = 1; int btn_codinh2 = 1; int btn_codinh3 = 1; int btn_codinh4 = 1; int btn_codinh5 = 1; int btn_codinh6 = 1; int stops = 0; int stop1 , stop2; //dieu khien bang dien thoat int quat , den , bom , ve_sinh; int GIAY_CODE = 10 ; int choan , tam , vesinh , batden; String inString= ""; void setup() { // khởi tạo cho Serial và i2c Serial.begin(250000); Serial3.begin(250000); Wire.begin();//khai bao //KHOI TAO RFID SPI.begin(); mfrc522.PCD_Init(); // khởi tạo cho lcd them chuân I2C lcd.init(); lcd.clear(); lcd.backlight(); setTime(8, 59, 55, 1, 8, 2, 15); // khoi tao chan cho HC-SRO4 91 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC pinMode(trig, OUTPUT); pinMode(echo, INPUT); pinMode(rain_c, OUTPUT); pinMode(rain_o, OUTPUT); pinMode(an_c, OUTPUT); pinMode(an_o, OUTPUT); pinMode(ug_o, OUTPUT); pinMode(3, INPUT); pinMode(role_1, OUTPUT); pinMode(role_2, OUTPUT); pinMode(role_3, OUTPUT); pinMode(role_4, OUTPUT); pinMode(role_5, OUTPUT); // khoi tao io cho cam bien mua pinMode(rainSensor, INPUT); // Đặt chân cảm biến mƣa là INPUT, vì tín hiệu sẽ đƣợc truyền đến cho Arduino attachInterrupt(1, dung_dong_co_1, FALLING); // khoi tao nut nhan pinMode(buttonPin, INPUT); pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); pinMode(48,OUTPUT); digitalWrite(48,LOW); } void serialEvent()//task khi cos event zo thuc hien { val = Serial.read(); switch (val) { case '1': GhiThongTin(); break; case '3': SetKeyA(); break; } } void serialEvent3()//task khi cos event zo thuc hien { while(Serial3.available()) { val1 = Serial3.read(); if(isDigit(val1)) 92 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC { inString += (char)val1; if (inString.length()== 6) { byte hh = (inString.charAt(0)-48)*10 + (inString.charAt(1)-48); byte mm = (inString.charAt(2)-48)*10 + (inString.charAt(3)-48); byte ss = (inString.charAt(4)-48)*10 + (inString.charAt(5)-48); setTime(hh, mm, ss, 1, 8, 2, 15); //Serial.print(hh);Serial.print(" ");Serial.print(mm);Serial.print(" ");Serial.println(ss); inString =""; } } switch (val1) { case 'A': bom = 1; break; case 'a': bom=0; break; case 'B': den = 1; break; case 'b': den = 0; break; case 'c': quat = 1; break; case 'd': quat = 0; break; } } } void loop() { DocThongTin(); // gọi hàm thực hiện đọc và hien thị realtime readDS1307(); // hien thi thoi gian////////////////// lcd.setCursor(0 , 0); 93 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC 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; //////////////////////////////////////////////////////// // HC-RS04////////////////////////////////////////////// if(counter==4 || counter== 5) { dung_hd(); }else { HC_RS04(); HC_RS04_1(); // CAM BIEN MUA cambien_mua(); // dieu khien role dieukhien_role(); // dong mo mai hien dong_mo(); // dieu khien cho an van_cho_an(); van_cho_uong(); } ////////////////////////////////////////////////////////// xl_nutnhan(); select(); lcd.setCursor(9 , 0); lcd.print(counter); } /// HAM XU LI THONG TIN TU CAM BIEN/////////////////////// /////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX////////////////// // các hàm cafn có để đọc realtime/////////////////////// int bcd_st(byte num) { return ((num / 16 * 10) + (num % 16)); } /////////////////////////////////////////////////////// void readDS1307() 94 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC { Wire.beginTransmission(DS1307); Wire.write((byte)0x00); Wire.endTransmission(); Wire.requestFrom(DS1307, NumberOfFields); giay = bcd_st(Wire.read() & 0x7f); phut = bcd_st(Wire.read() ); gio = bcd_st(Wire.read() & 0x3f); // ch? d? 24h. thu = bcd_st(Wire.read() ); ngay = bcd_st(Wire.read() ); thang = bcd_st(Wire.read() ); nam = bcd_st(Wire.read() ) + 2000; } /////////// ham hien thi realtime ///////////////////////////////////////////////////////// //////////////////////////////////////////////////////// // chuyen thap phan sang bcd int st_bcd(byte num) { return ((num / 10 * 16) + (num % 10)); } // cai dat thoi gian //////////////////////////////////////////////////////////////////// /* cài d?t th?i gian cho DS1307 */ void setTime(byte gi, byte p, byte g, byte t, byte n, byte th, byte na) { Wire.beginTransmission(DS1307); Wire.write(byte(0x00)); // d?t l?i pointer Wire.write(st_bcd(g)); Wire.write(st_bcd(p)); Wire.write(st_bcd(gi)); Wire.write(st_bcd(t)); // thu of week: Sunthu = 1, Saturthu = 7 Wire.write(st_bcd(n)); Wire.write(st_bcd(th)); Wire.write(st_bcd(na)); Wire.endTransmission(); } // ham xu li tinh hieu cam bien sieu am void HC_RS04() { readDS1307(); digitalWrite(trig, 0); // tắt chân trig delayMicroseconds(2); digitalWrite(trig, 1); // phát xung từ chân trig 95 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC delayMicroseconds(5); // xung có độ dài 5 microSeconds digitalWrite(trig, 0); // tắt chân trig /* Tính toá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 / 2 / 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 5 microSeconds digitalWrite(trig_1, 0); // tắt chân trig /* Tính toá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 / 2 / 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 == 7 || 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 , HIGH); digitalWrite(an_c, LOW); m = 1; } 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 != 1 && rain!= 1) if (gio >= 6 && gio < 9) { stops = 1; rain = 1; digitalWrite(rain_o , HIGH); digitalWrite(rain_c , LOW); } if (stops != 2 && rain!= 1) if (gio >= 15 && gio <= 17) { stops = 2; rain = 1; 97 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC digitalWrite(rain_o , HIGH); digitalWrite(rain_c , LOW); } if (stops != 3 && rain!= 0) if (gio >= 9 && gio < 15) { stops = 3; rain = 0; digitalWrite(rain_o , LOW); digitalWrite(rain_c , HIGH); } if (stops != 4 && rain!= 0) if (gio > 17) { stops = 4; rain = 0; digitalWrite(rain_o , LOW); digitalWrite(rain_c , HIGH); } } if (stops != 5 && 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 == 6 || 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 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<96){ if(Serial.available()){ buf[i] = Serial.read(); i++; } } //Tach thanh cac chuoi nho for (byte i=0; i<32; i++) { hoten[i] = buf[i]; } for (byte i=0; i<16; i++) { diachi[i] = buf[i+32]; } for (byte i=0; i<16; i++) { nhap[i] = buf[i+48]; } for (byte i=0; i<16; i++) { xuat[i] = buf[i+64]; } for (byte i=0; i<16; i++) { 106 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC tiem[i] = buf[i+80]; } // Ghi thong tin WriteBlock(block_hoten_1, hoten); WriteBlock(block_hoten_2, &hoten[16]); WriteBlock(block_diachi, diachi); WriteBlock(block_nhap, nhap); WriteBlock(block_xuat, xuat); WriteBlock(block_tiem,tiem); mfrc522.PICC_HaltA(); // Halt PICC mfrc522.PCD_StopCrypto1(); // Stop encryption on PCD } void ReadBlock(byte block, byte *buf) { MFRC522::MIFARE_Key keyA; /* keyA.keyByte[5]=0xFF; keyA.keyByte[4]=0xFF; keyA.keyByte[3]=0xFF; keyA.keyByte[2]=0xFF; keyA.keyByte[1]=0xFF; keyA.keyByte[0]=0xFF; */ keyA.keyByte[5]=0x33; keyA.keyByte[4]=0x33; keyA.keyByte[3]=0x33; keyA.keyByte[2]=0x33; keyA.keyByte[1]=0x33; keyA.keyByte[0]=0x33; MFRC522::StatusCode status; byte len = 18; //So sanh Key A status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &keyA, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { //Serial.print("Authentication failed"); return; } status = mfrc522.MIFARE_Read(block, buf, &len); if (status != MFRC522::STATUS_OK) { //Serial.print("Reading failed"); return; } 107 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC //Thuc hien viec gui du lieu for (byte i = 0; i < 16; i++) { Serial.write(buf[i]); delay(10); } } void WriteBlock(byte block, byte *buf){ MFRC522::MIFARE_Key keyA; /* keyA.keyByte[5]=0xFF; keyA.keyByte[4]=0xFF; keyA.keyByte[3]=0xFF; keyA.keyByte[2]=0xFF; keyA.keyByte[1]=0xFF; keyA.keyByte[0]=0xFF; */ keyA.keyByte[5]=0x33; keyA.keyByte[4]=0x33; keyA.keyByte[3]=0x33; keyA.keyByte[2]=0x33; keyA.keyByte[1]=0x33; keyA.keyByte[0]=0x33; MFRC522::StatusCode status; //Kiem tra Key A status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &keyA, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { //Serial.print("PCD_Authenticate() failed"); return; } status = mfrc522.MIFARE_Write(block, buf, 16); if (status != MFRC522::STATUS_OK) { //Serial.print("MIFARE_Write() failed"); return; } } void SetKeyA(){ byte keyA_moi[16] = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xFF, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // Look for new cards mfrc522.PCD_Init(); // Init MFRC522 108 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } digitalWrite(4,HIGH); WriteBlockKey(7, keyA_moi); WriteBlockKey(11, keyA_moi); WriteBlockKey(15, keyA_moi); mfrc522.PICC_HaltA(); // Halt PICC mfrc522.PCD_StopCrypto1(); // Stop encryption on PCD } void WriteBlockKey(byte block, byte *buf){ MFRC522::MIFARE_Key keyA; keyA.keyByte[5]=0xFF; keyA.keyByte[4]=0xFF; keyA.keyByte[3]=0xFF; keyA.keyByte[2]=0xFF; keyA.keyByte[1]=0xFF; keyA.keyByte[0]=0xFF; /* keyA.keyByte[5]=0x33; keyA.keyByte[4]=0x33; keyA.keyByte[3]=0x33; keyA.keyByte[2]=0x33; keyA.keyByte[1]=0x33; keyA.keyByte[0]=0x33; */ MFRC522::StatusCode status; //Kiem tra Key A status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &keyA, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { //Serial.print("PCD_Authenticate() failed"); return; } status = mfrc522.MIFARE_Write(block, buf, 16); if (status != MFRC522::STATUS_OK) { //Serial.print("MIFARE_Write() failed"); 109 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC return; } } 110 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH

Các file đính kèm theo tài liệu này:

  • pdfdo_an_thiet_ke_va_thi_cong_mo_hinh_he_thong_va_quan_ly_trang.pdf