Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 136 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
136
Dung lượng
6,41 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THƠNG THIẾT KẾ MƠ HÌNH TƯỚI RAU THƠNG MINH GVHD: NGUYỄN THANH HẢI SVTH: LÊ VÕ TRƯỜNG GIANG MSSV: 13141479 SVTH: TRẦN TRỌNG TÀI MSSV: 14141580 SKL 0 Tp Hồ Chí Minh, tháng 07/2018 an TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀ O TẠO CHẤT LƢỢNG CAO ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ MƠ HÌNH TƢỚI RAU THÔNG MINH SVTH: LÊ VÕ TRƢỜNG GIANG MSSV: 13141479 SVTH: TRẦN TRỌNG TÀI MSSV: 14141580 NGÀNH: CNKT ĐIỆN TỬ - TRUYỀN THÔNG GVHD: PGS TS NGUYỄN THANH HẢI Thành phố Hồ Chí Minh, 16 tháng năm 2018 an CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** -Tp Hồ Chí Minh, ngày 16 tháng năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Lê Võ Trƣờng Giang Trần Trọng Tài Ngành: Điện tử công nghiệp Giảng viên hƣớng dẫn: PGS TS Nguyễn Thanh Hải Ngày nhâ ̣n đề tài: MSSV: 13141479 MSSV: 14141580 Lớp: ĐT: Ngày nộp đề tài: Tên đề tài: Thiết Kế Mơ Hình Tƣới Rau Thơng Minh Các số liệu, tài liệu ban đầu: Nội dung thƣ̣c hiê ̣n đề tài: Sản phẩm: TRƢỞNG NGÀNH GIẢNG VIÊN HƢỚNG DẪN i an CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN Họ tên Sinh viên: Lê Võ Trƣờng Giang MSSV: 13141479 Trần Trọng Tài MSSV: 14141580 Ngành: Điện tử cơng nghiệp Tên đề tài: Thiết Kế Mơ Hình Tƣới Rau Thông Minh Họ tên Giáo viên hƣớng dẫn: PGS TS Nguyễn Thanh Hải NHẬN XÉT Về nội dung đề tài & khối lƣợng thực hiện: Ƣu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày 16 tháng năm 2018 Giáo viên hƣớng dẫn ii an CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Lê Võ Trƣờng Giang MSSV: 13141479 Trần Trọng Tài MSSV: 14141580 Ngành: Điện tử công nghiệp Tên đề tài: Thiết Kế Mơ Hình Tƣới Rau Thơng Minh Họ tên Giáo viên hƣớng dẫn: PGS TS Nguyễn Thanh Hải Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lƣợng thực hiện: Ƣu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày 16 tháng năm 2018 Giáo viên phản biện iii an LỜI CẢM ƠN Lời xin gửi lời cảm ơn tới gia đình nguồn động viên to lớn vật chất tinh thần, bên cạnh ủng hộ, tạo điều kiện thuận lợi để hồn thành đồ án Xin gửi lời cảm ơn chân thành tới thầy Nguyễn Thanh Hải ngƣời thầy tận tình dạy bảo, hƣớng dẫn, phân tích, giúp chúng em hồn thiện đồ án trọn vẹn Cảm ơn thầy cô khoa Điện-Điện tử cung cấp kiến thức tảng sở năm học trƣờng thân yêu Bên cạnh đó, xin gửi lời chúc sức khỏe, thành cơng tới bạn lớp hỗ trợ nhiều cách trình thực đồ án Xin chân thành cảm ơn! Nhóm thực đề tài iv an TĨM TẮT Nơng nghiệp ngành kinh tế quan trọng gắn bó với ngƣời Việt Nam từ lâu Ngày nay, nhờ áp dụng khoa học kĩ thuật vào trồng trọt, chăn nuôi mà nông nghiệp gặt hái đƣợc thành tựu to lớn Cùng với cách mạng thiết bị mạng kết nối không dây toàn cầu nên thiết bị trồng trọt, chăn nuôi đƣợc phát triển theo ứng dụng công nghệ tiên tiến Trong thực trạng kinh tế bất chấp tính mạng ngƣời dùng, nghỉ đến lợi nhuận cá nhân mà loại thực phẩm bẩn khơng rõ nguồn gốc có mặc nơi gây ảnh hƣởng nghiêm trọng đến sức khỏe ngƣời tiêu dùng Nhìn thấy nhu cầu ngƣời tiêu dùng muốn sử dụng thực phẩm sạch, nguồn gốc rõ ràng để đảm bảo cho bửa ăn hàng ngày gia đình ngon an tồn nên mơ hình trồng rau sử dụng cơng nghệ IoT đƣợc chúng em chọn để tìm hiểu nghiên cứu Dựa vào nhu cầu đƣợc để cập nên để tài " Mơ hình tƣới rau thông minh" chúng em thực chức nhƣ sau : đo nhiệt độ độ ẩm , phát chuyển động, đƣa liệu lên mạng, điều khiển động bơm nƣớc, điều khiển van xả v an MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN ii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii LỜI CẢM ƠN iv TÓM TẮT v MỤC LỤC vi DANH MỤC CÁC TỪ VIẾT TẮT viii DANH MỤC CÁC BẢNG BIỂU ix DANH MỤC CÁC BIỂU ĐỒ VÀ HÌNH ẢNH x Chƣơng TỔNG QUAN 1.1 TỔNG QUAN VỀ LĨNH VỰC NGHIÊN CỨU 1.2 MỤC ĐÍCH VÀ GIỚI HẠN ĐỀ TÀI .1 1.3 NỘI DUNG THỰC HIỆN Chƣơng CƠ SỞ LÝ THUYẾT 2.1 MỘT SỐ MƠ HÌNH TƢỚI RAU PHỔ BIẾN 2.1.1 Mơ hình tƣới ngập xả cạn 2.1.2 Trồng rau mơ hình aquaponics (trồng rau kết hợp nuôi cá) 2.2 INTERNET OF THINGS 2.3 NHỮNG CHUẨN TRUYỀN DỮ LIỆU 2.3.1 Chuẩn giao tiếp I2C 2.3.2 Chuẩn giao tiếp UART .6 2.4 TÌM HIỂU MQTT 2.4.1 Giới thiệu MQTT 2.4.2 Mơ hình MQTT Chƣơng TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 3.1 GIỚI THIỆU .9 3.1.1 Sơ đồ khối chức khối 3.1.2 Mô tả hoạt động hệ thống 3.2 THIẾT KẾ CÁC THÀNH PHẦN CỦA HỆ THỐNG 10 3.2.1 Khối cảm biến 10 vi an 3.2.2 Khối nguồn .15 3.2.3 Khối hiển thị .17 3.2.4 Khối xử lý trung tâm 18 3.2.5 Khối giao tiếp Wifi 22 3.2.6 Khối công suất 25 3.2.7 Opto PC817 26 3.2.8 Transistor BJT C1815 27 3.3 LƢU ĐỒ GIẢI THUẬT 28 3.3.1 Lƣu đồ chƣơng trình .28 3.3.2 Lƣu đồ trang web ThingSpeak 31 3.3.3 Lƣu đồ trang web MQTT 31 3.3.4 Lƣu đồ mạch truyền NRF2401 32 3.4 SƠ ĐỒ MẠCH NGUYÊN LÝ 32 Chƣơng THI CÔNG HỆ THỐNG 36 4.1 THI CÔNG PHẦN MỀM .36 4.1.1 Cập nhật nhiệt độ, độ ẩm lên ThingSpeak .36 4.1.2 Điều khiển thiết bị thông qua web MQTT .38 4.2 THI CÔNG PHẦN CỨNG .41 Chƣơng KẾT QUẢ .46 5.1 THI CÔNG MẠCH THỰC TẾ 46 5.2 HỘP ĐIỀU KHIỂN VÀ MẠCH NGUỒN XUNG 54 5.3 GIAO DIỆN WEB 55 5.3.1 Giao diện ThingSpeak 55 5.3.2 Giao diện MQTT 56 Chƣơng KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 58 6.1 KẾT LUẬN 58 6.2 HƢỚNG PHÁT TRIỂN 58 TÀI LIỆU THAM KHẢO 59 PHỤ LỤC 60 vii an DANH MỤC CÁC TỪ VIẾT TẮT MCU: IoT: LCD: UART: MQTT: PCB: PIR: pH: Microprocessor Control Unit Internet of Things Liquid Crystal Display Universal Asynchronous Receiver – Transmitter Message Queuing Telemetry Transport Printed Circuit Board Passive InfraRed potentia hydrogenii viii an digitalWrite(van1, LOW); tg_tuoi_t_tam1=0; chuyen_van1=4; } } if(mode_v4==1) { digitalWrite(van4, LOW); tg_tuoi_t_tam1=tg_tuoi_t1; chuyen_van1=4; } } if((tg_tuoi_t_tam1==tg_tuoi_t1)&&(chuyen_van1==4))///////////////////////////////van { if((mode_v5==0)&&(mode_v2==1)&&(mode_v1==1)&&(mode_v3==1)&&(mo de_v4==1)) { digitalWrite(van5, HIGH); delay(2000); digitalWrite(dongco, HIGH); tg_tuoi_t_tam1=0; chuyen_van1=5; } else { if(mode_v5==0) { digitalWrite(van5, HIGH); delay(2000); digitalWrite(van4, LOW); digitalWrite(van3, LOW); digitalWrite(van2, LOW); digitalWrite(van1, LOW); tg_tuoi_t_tam1=0; chuyen_van1=5; } } if(mode_v5==1) { digitalWrite(van5, LOW); tg_tuoi_t_tam1=tg_tuoi_t1; chuyen_van1=5; 108 an } } if((tg_tuoi_t_tam1==tg_tuoi_t1)&&(chuyen_van1==5))///////////////tat dong co { digitalWrite(dongco, LOW); delay(2000); digitalWrite(van5, LOW); digitalWrite(van4, LOW); digitalWrite(van3, LOW); digitalWrite(van2, LOW); digitalWrite(van1, LOW); tg_tuoi_t_tam1=0; chuyen_van1=0; tuoi_trua1=0; } } /////////////////////////////////////////////////// if((gio_c1==tm.Hour)&&(phut_c1==tm.Minute)&&(mode_c1==0)) /////////thoi gian tuoi buoi chieu { tuoi_chieu1=1; } if(tuoi_chieu1==1) { if(tm.Second==59) { tg_tuoi_c_tam1++; delay(1100); } if(chuyen_van1==0)////////////////////////////////////////////////// van { if(mode_v1==0) { digitalWrite(van1, HIGH); delay(2000); digitalWrite(dongco, HIGH); chuyen_van1=1; } else { digitalWrite(van1, LOW); tg_tuoi_c_tam1=tg_tuoi_c1; chuyen_van1=1; } } 109 an if((tg_tuoi_c_tam1==tg_tuoi_c1)&&(chuyen_van1==1))//////////////////// van { if((mode_v2==0)&&(mode_v1==1)) { digitalWrite(van2, HIGH); delay(2000); digitalWrite(dongco, HIGH); tg_tuoi_c_tam1=0; chuyen_van1=2; } if((mode_v2==0)&&(mode_v1==0)) { digitalWrite(van2, HIGH); delay(2000); digitalWrite(van1, LOW); tg_tuoi_c_tam1=0; chuyen_van1=2; } if(mode_v2==1) { digitalWrite(van2, LOW); tg_tuoi_c_tam1=tg_tuoi_c1; chuyen_van1=2; } } if((tg_tuoi_c_tam1==tg_tuoi_c1)&&(chuyen_van1==2))//////////////////// van { if((mode_v3==0)&&(mode_v2==1)&&(mode_v1==1)) { digitalWrite(van3, HIGH); delay(2000); digitalWrite(dongco, HIGH); tg_tuoi_c_tam1=0; chuyen_van1=3; } else { if(mode_v3==0) { digitalWrite(van3, HIGH); delay(2000); digitalWrite(van2, LOW); digitalWrite(van1, LOW); 110 an tg_tuoi_c_tam1=0; chuyen_van1=3; } } if(mode_v3==1) { digitalWrite(van3, LOW); tg_tuoi_c_tam1=tg_tuoi_c1; chuyen_van1=3; } } if((tg_tuoi_c_tam1==tg_tuoi_c1)&&(chuyen_van1==3))/////////////////////// van4 { if((mode_v4==0)&&(mode_v2==1)&&(mode_v1==1)&&(mode_v3==1)) { digitalWrite(van4, HIGH); delay(2000); digitalWrite(dongco, HIGH); tg_tuoi_c_tam1=0; chuyen_van1=4; } else { if(mode_v4==0) { digitalWrite(van4, HIGH); delay(2000); digitalWrite(van3, LOW); digitalWrite(van2, LOW); digitalWrite(van1, LOW); tg_tuoi_c_tam1=0; chuyen_van1=4; } } if(mode_v4==1) { digitalWrite(van4, LOW); tg_tuoi_c_tam1=tg_tuoi_c1; chuyen_van1=4; } } if((tg_tuoi_c_tam1==tg_tuoi_c1)&&(chuyen_van1==4))//////////////////////////////van { 111 an if((mode_v5==0)&&(mode_v2==1)&&(mode_v1==1)&&(mode_v3==1)&&(mo de_v4==1)) { digitalWrite(van5, HIGH); delay(2000); digitalWrite(dongco, HIGH); tg_tuoi_c_tam1=0; chuyen_van1=5; } else { if(mode_v5==0)//&&(mode_v4==0)) { digitalWrite(van5, HIGH); delay(2000); digitalWrite(van4, LOW); digitalWrite(van3, LOW); digitalWrite(van2, LOW); digitalWrite(van1, LOW); tg_tuoi_c_tam1=0; chuyen_van1=5; } } if(mode_v5==1) { digitalWrite(van5, LOW); tg_tuoi_c_tam1=tg_tuoi_c1; chuyen_van1=5; } } if((tg_tuoi_c_tam1==tg_tuoi_c1)&&(chuyen_van1///////////////////tat dong co { digitalWrite(dongco, LOW); delay(2000); digitalWrite(van5, LOW); digitalWrite(van4, LOW); digitalWrite(van3, LOW); digitalWrite(van2, LOW); digitalWrite(van1, LOW); tg_tuoi_c_tam1=0; chuyen_van1=0; tuoi_chieu1=0; } 112 an } } } /////////////////////////////////////////////////// void setup() { pinMode(nutnhan1, INPUT); pinMode(nutnhan2, INPUT); pinMode(nutnhan3, INPUT); pinMode(nutnhan4, INPUT); pinMode(nutnhan5, INPUT); pinMode(cb_Pin, OUTPUT); pinMode(dongco, OUTPUT); pinMode(van1, OUTPUT); pinMode(van2, OUTPUT); pinMode(van3, OUTPUT); pinMode(van4, OUTPUT); pinMode(van5, OUTPUT); digitalWrite(cb_Pin, LOW); digitalWrite(dongco, LOW); digitalWrite(van1, LOW); digitalWrite(van2, LOW); digitalWrite(van3, LOW); digitalWrite(van4, LOW); digitalWrite(van5, LOW); /////////////////////////////////////////////////// lcd.init(); radio.begin(); radio.setDataRate(RF24_1MBPS); radio.openReadingPipe(1, pipe); lcd.backlight(); /////////////////////////////////////////////////// mode=0; h=0; gio_s =EEPROM.read(0); phut_s =EEPROM.read(1); gio_t =EEPROM.read(2); phut_t =EEPROM.read(3); gio_c =EEPROM.read(4); phut_c =EEPROM.read(5); mode_s =EEPROM.read(6); mode_t =EEPROM.read(7); mode_c =EEPROM.read(8); tg_tuoi_s =EEPROM.read(9); 113 an tg_tuoi_t =EEPROM.read(10); tg_tuoi_c =EEPROM.read(11); gio_s1 =EEPROM.read(12); phut_s1 =EEPROM.read(13); gio_t1 =EEPROM.read(14); phut_t1 =EEPROM.read(15); gio_c1 =EEPROM.read(16); phut_c1 =EEPROM.read(17); mode_s1 =EEPROM.read(18); mode_t1 =EEPROM.read(19); mode_c1 =EEPROM.read(20); tg_tuoi_s1 =EEPROM.read(21); tg_tuoi_t1 =EEPROM.read(22); tg_tuoi_c1 =EEPROM.read(23); mode_v1 =EEPROM.read(24); mode_v2 =EEPROM.read(25); mode_v3 =EEPROM.read(26); mode_v4 =EEPROM.read(27); mode_v5 =EEPROM.read(28); } /////////////////////////////////////////////////// void loop() { button1(); button2(); button3(); button4(); button5(); hienthi(); pir(); dieukhien_1(); dieukhien_2(); if(h==0) digitalWrite(cb_Pin, LOW); if(h==1) digitalWrite(cb_Pin, HIGH); } Code truyền nRF2401, ESP8266 v1 DHT11 #include #include #include #include "RF24.h" /////////////////////////////////////////////////////// const uint64_t pipe = 0xE8E8F0F0E1LL; // địa để phát RF24 radio(9,10); //thay 10 thành 53 với mega byte msg[3]; 114 an /////////////////////////////////////////////////////// const int DHTPIN = 2; //Đọc liệu từ DHT11 chân mạch Arduino const int DHTTYPE = DHT11; //Khai báo loại cảm biến, có loại DHT11 DHT22 DHT dht(DHTPIN, DHTTYPE); SoftwareSerial esp8266Module(6,5); //Rx tx String network = "anhchang4mat"; // Tên WiFi Kết Nối String password = "ngusaocho"; // PassWord WiFi #define IP "184.106.153.149" // Địa Chỉ IP thingspeak.com String GET = "GET https://api.thingspeak.com/update?key=RWNB11ACKUSLY5NE"; // Cú Pháp Gởi Dữ Liệu Lên ThingSpeak int led = 13; // Định Nghĩa Chân Kết Nối Với LED String GET1 ="GET https://api.thingspeak.com/channels/235157/fields/1/last\r\n"; // Cú Pháp Lấy Dữ Liệu ThingSpeak void setup() { dht.begin(); radio.begin(); Serial.begin(9600); esp8266Module.begin(9600); pinMode(led, OUTPUT); Serial.println(" Welcome To IoT Course"); Serial.println(" huongdanmachdien.com"); setupEsp8266(); radio.setAutoAck(1); radio.setRetries(1,1); radio.setDataRate(RF24_1MBPS); // Tốc độ truyền radio.setPALevel(RF24_PA_MAX); // Dung lƣợng tối đa radio.setChannel(11); // Đặt kênh radio.openWritingPipe(pipe); // mở kênh //Serial.begin(9600); } void loop(){ int h = dht.readHumidity(); //Đọc độ ẩm int t = dht.readTemperature(); //Đọc nhiệt độ updatedata(t,h); nhandulieu(); msg[0]= t; msg[1]= h; radio.write(&msg, sizeof(msg)); delay(50); } 115 an void setupEsp8266() { int ok=0; { Serial.println("Reseting Esp8266"); esp8266Module.println("AT+RST"); if (esp8266Module.find("OK")) { Serial.println("Reset OK"); Serial.println("Changing EspMode "); Mode(); delay(5000); connectToWiFi(); delay(1000); ok=1; } else { Serial.println("OK not found"); ok=0; } } while(!ok); } void Mode() { int ok=0; do{ esp8266Module.println("AT+CWMODE=3"); while(esp8266Module.available()){ String line = esp8266Module.readString(); //Serial.println(line); if (line.indexOf("OK")!= -1) { Serial.println("Mode Changed"); ok=1; } else if(line.indexOf("no change")!= -1){ Serial.println("Esp8266 in mode 3"); ok=1; } else { Serial.println("Error while changing mode"); 116 an ok=0; } } } while(!ok); } bool connectToWiFi() { int ok=0; do{ Serial.println("Connecting WiFi "); String cmd = "AT+CWJAP=\""; cmd += network; cmd += "\",\""; cmd += password; cmd += "\""; esp8266Module.println(cmd); delay(5000); if (esp8266Module.find("OK")) { Serial.println("Connected WiFi"); ok=1; } else { Serial.println("Could not connect to WiFi"); ok=0; } } while(!ok); } void updatedata(float voltage1,float voltage2) { String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += IP; cmd += "\",80\r\n"; esp8266Module.println(cmd); delay(2000); if(esp8266Module.find("Error")){ Serial.println("ERROR while SENDING"); return; } cmd = GET + "&field1=" + (String)voltage1 + "&field2=" + (String)voltage2 + "\r\n"; 117 an esp8266Module.print("AT+CIPSEND="); esp8266Module.println(cmd.length()); delay(1000); if(esp8266Module.find(">")) { esp8266Module.println(cmd); if (esp8266Module.find("SEND OK")) { Serial.println("SEND OK"); } } esp8266Module.println("AT+CIPCLOSE"); if(esp8266Module.find("OK")) { Serial.println("Connection closed"); } } void nhandulieu() { String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += IP; cmd += "\",80"; esp8266Module.println(cmd); if(esp8266Module.find("Error")){ Serial.println("ERROR while SENDING"); return; } cmd = "GET https://api.thingspeak.com/channels/235157/fields/1/last\r\n"; esp8266Module.print("AT+CIPSEND="); esp8266Module.println(cmd.length()); delay(1000); if(esp8266Module.find(">")) { esp8266Module.print(cmd); String line = esp8266Module.readString(); Serial.println(line); if(line.indexOf("+IPD,1:1")!=-1) { digitalWrite(led, HIGH); } else if(line.indexOf("+IPD,1:0")!=-1) { digitalWrite(led, LOW); } 118 an } esp8266Module.println("AT+CIPCLOSE"); if(esp8266Module.find("OK")) { Serial.println("Connection closed"); } } Code Node MCU #include #include void nhandl(char * tp, byte * nd, unsigned int length) { String topic(tp); String noidung= String((char*)nd); noidung.remove(length); Serial.println(topic); Serial.println(noidung); if(topic=="VUON_5/RLE") { if(noidung=="1") digitalWrite(12,LOW); digitalWrite(15,LOW); if(noidung=="0") digitalWrite(12,HIGH); digitalWrite(15,HIGH); } if(topic=="VUON_4/RLD") { if(noidung=="1") digitalWrite(13,LOW); digitalWrite(15,LOW); if(noidung=="0") digitalWrite(13,HIGH); digitalWrite(15,HIGH); } if(topic=="VUON_3/RLC") { if(noidung=="1") digitalWrite(14,LOW); digitalWrite(15,LOW); if(noidung=="0") digitalWrite(14,HIGH); 119 an digitalWrite(15,HIGH); } if(topic=="VUON_1/RLA") { if(noidung=="1") digitalWrite(16,LOW); digitalWrite(15,LOW); if(noidung=="0") digitalWrite(16,HIGH); digitalWrite(15,HIGH); } if(topic=="VUON_2/RLB") { if(noidung=="1") digitalWrite(5,LOW); digitalWrite(15,LOW); if(noidung=="0") digitalWrite(5,HIGH); digitalWrite(15,HIGH); } if(topic=="BOM_1/RLF") { if(noidung=="1") digitalWrite(15,LOW); if(noidung=="0") digitalWrite(15,HIGH); } } WiFiClient c; PubSubClient MQTT("m10.cloudmqtt.com", 13260, nhandl, c); void setup() { Serial.begin(115200); WiFi.begin("Pham Tuan","28021982@"); while (1) { delay(500); if (WiFi.status() == WL_CONNECTED) break; } Serial.println("Da vao duoc internet"); while (1) { delay(500); if (MQTT.connect("ESP", "qlhtavkx", "3AInsmYApjvu")) 120 an break; } Serial.println("Da vao duoc MQTT"); MQTT.publish("test", "gui du lieu thu"); MQTT.subscribe("VUON_1/RLA"); MQTT.subscribe("VUON_2/RLB"); MQTT.subscribe("VUON_3/RLC"); MQTT.subscribe("VUON_4/RLD"); MQTT.subscribe("VUON_5/RLE"); MQTT.subscribe("BOM_1/RLF"); pinMode(12,OUTPUT); pinMode(13,OUTPUT); pinMode(14,OUTPUT); pinMode(16,OUTPUT); pinMode(5,OUTPUT); pinMode(15,OUTPUT); digitalWrite(12,LOW); digitalWrite(13,LOW); digitalWrite(14,LOW); digitalWrite(16,LOW); digitalWrite(5,LOW); digitalWrite(15,LOW); } void loop() { MQTT.loop(); MQTT.publish("BOM/RLF", String(!digitalRead(15)).c_str()); MQTT.publish("VUON1/RLA", String(!digitalRead(16)).c_str()); MQTT.publish("VUON2/RLB", String(!digitalRead(5)).c_str()); MQTT.publish("VUON3/RLC", String(!digitalRead(14)).c_str()); MQTT.publish("VUON4/RLD", String(!digitalRead(12)).c_str()); MQTT.publish("VUON5/RLE", String(!digitalRead(13)).c_str()); } 121 an S an K L 0 ... tài ? ?Thiết Kế Mơ Hình Tƣới Rau Thơng Minh? ?? Mơ hình tƣới rau thơng minh gồm khu vƣờn rau, diện tích khoảng 4,5m2, sử dụng Arduino Mega Arduino Nano, động bơm nƣớc, cảm biến độ ẩm nhiệt độ, hình. .. VÀ HÌNH ẢNH Hình 2.1: Mơ hình tƣới ngập xả cạn Hình 2.2: Mơ hình trồng rau aquaponics Hình 2.3: Sơ đồ khối hệ thống IoT Hình 2.4: Cách thức hoạt động MQTT Hình. .. giá thể 2.1.2 Trồng rau mơ hình aquaponics (trồng rau kết hợp ni cá) Mơ hình trồng rau nhƣ hệ sinh thái thu nhỏ có tuần hồn Rau đƣợc trồng khơng phân bón dựa cộng sinh trồng rau nuôi cá mà không