(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động(Đồ án tốt nghiệp) Thiết kế và thi công mô hình hệ thống nuôi tôm bán tự động
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỆN TỬ TRUYỀN THƠNG THIẾT KẾ VÀ THI CƠNG MƠ HÌNH HỆ THỐNG NUÔI TÔM BÁN TỰ ĐỘNG GVHD: TS TRƯƠNG NGỌC SƠN SVTH: ĐẶNG VĂN THƯỞNG MSSV: 14141311 SVTH: NGUYỄN ĐỨC LỢI MSSV: 13141175 SKL 0 Tp Hồ Chí Minh, tháng 01/2021 LỜI CAM ĐOAN Đề tài tự thực dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước Nếu có gian lận chúng tơi xin chịu trách nhiệm nội dung đồ án Người thực Đặng Văn Thưởng – Nguyễn Đức Lợi iii LỜI CẢM ƠN Chúng em xin chân thành cảm ơn quý Thầy Cô trường Đại Học Sư Phạm Kỹ Thuật TP.HCM tận tình dạy dỗ chúng em suốt năm qua Trong phải kể đến quý thầy cô khoa Điện – Điện Tử truyền đạt kiến thức, từ kiến thức, chúng em kết lại thành đồ án cuối cùng, đồ án tốt nghiệp tay tạo ra, bàn đạp để bước vào cánh cửa lớn Đặc biệt, Chúng em xin cảm ơn sâu sắc thầy Trương Ngọc Sơn giúp đỡ chúng em trình lựa chọn đề tài hỗ trợ chúng em trình thực đề tài Trong trình thực đồ án xảy nhiều khó khăn, thiếu sót góp ý thầy chúng em gặt hái nhiều kiến thức kinh nghiệm Chúng em không quên cảm ơn đấng sinh thành, người thân gia đình ln động viên tạo điều kiện tốt sống, học tập trình thực hoàn thành đề tài Cám ơn Sư Phạm Kỹ Thuật! Xin chân thành cám ơn! Người thực để tài Đặng Văn Thưởng – Nguyễn Đức Lợi iv MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP ii LỜI CAM ĐOAN iii MỤC LỤC v DANH MỤC HÌNH x DANH MỤC BẢNG xii TÓM TẮT xiii Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU ĐỀ TÀI 1.3 NỘI DUNG THỰC HIỆN 1.4 GIỚI HẠN CỦA ĐỀ TÀI 1.5 BỐ CỤC ĐỒ ÁN Chương 1: Tổng Quan Chương 2: Cơ Sở Lý Thuyết Chương 3: Thiết Kế Và Tính Tóan 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 Chương 2: Cơ Sở Lý Thuyết v Chương 3: Tính Tốn Và Thiết Kế Hệ Thống Chương 4: Thi Công Hệ Thống Chương 5: Kết Qủa, Nhận Xét, Đánh Gía Chương 6: Kết Luận Và Hướng Phát Triển Chương CƠ SỞ LÝ THUYẾT 2.1 QUY TRÌNH NI TÔM 2.1.1 Đặc tính sinh trưởng tơm 2.1.2 Mơ Tả quy trình giám sát ao nuôi 2.2 GIỚI THIỆU PHẦN CỨNG 2.2.1 Cảm biến nhiệt 2.2.2 Cảm biến pH 2.2.3 Cảm biến độ đục 2.2.4 ESP-32 10 2.2.5 Giới thiệu LCD 20×4 11 2.2.6 Module giảm áp DC-DC LM2596 12 2.2.7 Tổng quan ESP32-CAM 14 2.2.8 Động servo 16 2.2.9 Bơm mini 17 2.2.11 Giới thiệu Module L298 18 2.2.12 Giới thiệu chuẩn I2C 20 Chương TÍNH TỐN VÀ THIẾT KẾ 22 3.1 GIỚI THIỆU 22 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 22 3.2.1 Thiết kế sơ đồ khối hệ thống 22 Khối Module Esp32-cam 23 Khối hiển thị 23 Khối cảm biến DS18B20 23 Khối cảm biến độ đục 23 Khối cảm biến độ pH 23 Khối thời gian thực 23 v i Khối động servo 23 Khối L298 23 Khối nguồn 23 3.3.2 Tính tốn thiết kế mạch 23 Khối điều khiển xử lý 23 Các module cảm biến 24 Cảm biến nhiệt độ: 24 Cảm biến độ pH: 24 Cảm biến độ đục: 25 Module L298 25 Khối hiển thị: 26 Esp32-cam 27 Thiết bị chấp hành: 28 Bơm 28 Bơm nhu động 28 Động servo 28 Quạt nước 28 Hệ thống cho tôm ăn 29 Khối nguồn: 30 Sơ đồ nguyên lý toàn mạch 31 Chương THI CÔNG HỆ THỐNG 32 4.1 THI CÔNG MẠCH ĐIỀU KHIỂN 32 4.2 THI CÔNG BẢNG ĐIỀU KHIỂN 34 4.3 TIẾN HÀNH THI CÔNG VÀ LẮP RÁP HỆ THỐNG HOÀN CHỈNH 34 4.3.1 Mặt trước 35 4.3.2 Mặt bên 36 4.4 LƯU ĐỒ GIẢI THUẬT 36 4.5 GIỚI THIỆU VỀ PHẦN MỀM LẬP TRÌNH 41 Chương 5: KẾT QUẢ - NHẬN XÉT - ĐÁNH GIÁ 50 5.1 KẾT QUẢ ĐẠT ĐƯỢC 50 v ii 5.2 KẾT QUẢ THỬ NGHIỆM HỆ THỐNG 50 5.2.1 Quá trình chạy ứng dụng điện thoại 50 5.2.2 Quá trình vận hành phần cứng hệ thống 53 5.3 NHẬN XÉT - ĐÁNH GIÁ 54 Chương 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 54 6.1 KẾT LUẬN 54 6.2 HƯỚNG PHÁT TRIỂN 54 TÀI LIỆU THAM KHẢO 55 PHỤ LỤC 56 v ii i DANH MỤC HÌNH Hình 2- 1: Cảm biến DS18B20 Hình 2- 2: Điện cực đo pH Hình 2- 3: Module chuyển giá trị pH Hình 2- 4: Cảm biến độ đục Hình 2- 5: Hình ảnh Node MCU-32S thực tế .10 Hình 2- 6:Màn hình LCD 20×4 11 Hình 2- 7: Module giảm áp DC-DC LM2596 13 Hình 2- 8: Sơ đồ nguyên lý mạch giảm áp DC-DC 13 Hình 2- 9: Module ESP-32CAM .14 Hình 2- 10: Sơ đồ chân esp32-cam 15 Hình 2- 11: Hình ảnh thực tế động servo 16 Hình 2- 12: Hình ảnh bơm mini thực tế .17 Hình 2- 13: Hình ảnh thực tế động nhu động 18 Hình 2- 14: Hình ảnh thực tế module L298 18 Hình 2- 15: Sơ đồ kết nối module L298 19 Hình 2- 16: Sơ đồ truyền I2C 21 Hình 3- 1: Sơ đồ khối mơ hình ni tơm bán tự động 22 Hình 3- 2: Sơ đồ kết nối cảm biến DS18B20 với ESP32 .24 Hình 3- 3: Sơ đồ kết nối cảm biến độ pH với ESP32 24 Hình 3- 4: Sơ đồ kết nối cảm biến độ đục với ESP32 25 Hình 3- 5: Sơ đồ nguyên lý module l298 .26 Hình 3- 6: Sơ đồ kết nối i2c kết nối LCD 20×4 27 Hình 3- 7: Sơ đồ kết nối esp32-cam 27 Hình 3- 8: Sơ đồ kết nối động servo với ESP32 28 Hình 3- 9: Quạt tự làm cho mơ hình 29 Hình 3- 10:Máy cho ăn mơ hình 29 Hình 3- 11:Sơ đồ nguyên lý toàn hệ thống 31 Hình 4- 1: Sơ đồ bố trí linh kiện mặt 33 Hình 4- 2: Sơ đồ bố trí linh kiện mặt 33 Hình 4- 3: Sơ đồ bố trí linh kiện mặt 34 x Hình 4- 4: Sơ đồ bố trí linh kiện lớp 34 Hình 4- 5: Sơ đồ bố trí thiết bị mặt trước 35 Hình 4- 6: Hình ảnh thực tế mặt trước .35 Hình 4- 7: Hình ảnh thực tế mặt bên phía 36 Hình 4- 8: Lưu đồ chương trình code điều khiển .37 Hình 4- 9: Lưu đồ chế độ tự động 38 Hình 4- 10: Lưu đồ chế độ điều khiển tay 39 Hình 4- 11: Lưu đồ truyền nhận liệu lên ứng dụng blynk 40 Hình 4- 12: Quy trình làm việc arduino .41 Hình 4- 13: Giao diện lập trình arduino .41 Hình 4- 14: Giao diện menu arduino IDE 42 Hình 4- 15: Giao diện file menu arduino IDE 42 Hình 4- 16: Giao diện Examples menu 43 Hình 4- 17: Giao diện Sketch Menu Arduino IDE .43 Hình 4- 18: Giao diện edit menu arduino IDE 44 Hình 4- 19: Giao diện Tool Menu Arduino IDE 44 Hình 4- 20: Lựa chọn board Arduino lập trình 45 Hình 4- 21: Arduino Toolbar 45 Hình 4- 22: Chương trình nạp thành cơng 45 Hình 4- 23: Giao diện phầm mềm blynk 47 Hình 4- 24: Các tài nguyên blynk .47 Hình 4- 25: Giao diện thuộc tính tài nguyên(button) 48 Hình 4- 26: Giao diện thiết kế mơ hình .49 Hình 5- 1: Giao diện điều khiển Wifi 51 Hình 5- 2: Giao diện điều khiển Wifi hình ảnh đươc gửi 52 Hình 5- 3: Hình ảnh hiển thị cấp nguồn cho hệ thống 53 Hình 5- 4: Hình ảnh mơ hình hệ thống thực tế 54 x i DANH MỤC BẢNG Bảng 2- 1: Sơ đồ chân cảm biến pH Bảng 2- 2: Sơ đồ chân cảm biến độ đục Bảng 2- 3: Chức chân hình LCD 20×4 12 Bảng 2- 4: Bảng thông số kỹ thuật esp32-cam 14 Bảng 4- 1: Danh sách linh kiện 32 xi TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách tham khảo: [1] Nguyễn Đình Phú, “Giáo Trình Vi Xử Lý ” , Xuất ĐH Quốc Gia Tp.HCM, 2016 [2] Nguyễn Đình Phú – Nguyễn Trường Duy, Giáo trình Kỹ thuật số, Nhà xuất đại học quốc gia TP Hồ Chí Minh, 2013 [3] 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ử bản, Nhà xuất đại học quốc gia TP Hồ Chí Minh, 2013 Các trang web tham khảo: [4] www.arduino.vn [5] https://www.youtube.com/watch?v=I-HbdRWwMVY&t=314s [6] https://community.blynk.cc/ [7] www.alldatasheet.com BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55 TÀI LIỆU THAM KHẢO PHỤ LỤC ĐOẠN CODE CHƯƠNG TRÌNH CHÍNH #define BLYNK_PRINT Serial #include #include #include #include #include #include #include #include #include #include #define bt_tb1 12 #define bt_tb2 #define bt_tb3 15 // #define bt_tb4 23 #define bt_tb5 #define bt_tb6 #define bt_tb7 18 #define bt_tb8 19 #define M1 14 #define M2 27 #define M3 26 #define M4 25 #define M5 33 #define M6 32 #define ONE_WIRE_BUS 13 #define SensorPin 39 #define SensorPin_duc 36 BlynkTimer timer; LiquidCrystal_I2C lcd(0x27, 20, 4); Servo servo1; OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); WidgetRTC rtc; WidgetBridge bridge1(V8); char auth[] = "bhnkmLLGgwWCX_PDh3BltS3d_mLVTTdy"; char ssid[] = "hihi"; char pass[] = "12345678"; char server[] = "blynk-cloud.com"; // URL for Blynk Cloud Server int port = 8080; int st_bt_tb1 = HIGH; int st_bt_tb2 = HIGH; int st_bt_tb3 = HIGH; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56 TÀI LIỆU THAM KHẢO int st_bt_tb4 = HIGH; int st_bt_tb5 = HIGH; int st_bt_tb6 = HIGH; int st_bt_tb7 = HIGH; int st_bt_tb8 = HIGH; int st_out_tb1 = HIGH; int st_out_tb2 = HIGH; int st_out_tb3 = HIGH; int st_out_tb4 = HIGH; int st_out_tb5 = HIGH; int st_out_tb6 = HIGH; int st_out_tb7 = HIGH; int st_out_tb8 = HIGH; float phValue; unsigned long int avgValue; //Store the average value of the sensor feedback float b; int buf[10], temp; int mkn = 1; int tempC, temCcai = 35; int deviceCount = 0; float giatriduc; int tam = 0, gio, phut, giay; String gios; String phuts; String giays; byte ktdegree[8] = {0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000}; void setup() { Serial.begin(9600); pinMode(bt_tb1, INPUT_PULLUP); pinMode(bt_tb2, INPUT_PULLUP); pinMode(bt_tb3, INPUT_PULLUP); pinMode(bt_tb4, INPUT_PULLUP); pinMode(bt_tb5, INPUT_PULLUP); pinMode(bt_tb6, INPUT_PULLUP); pinMode(bt_tb7, INPUT_PULLUP); pinMode(bt_tb8, INPUT_PULLUP); setSyncInterval(10 * 60); ESP32PWM::allocateTimer(0); ESP32PWM::allocateTimer(1); ESP32PWM::allocateTimer(2); ESP32PWM::allocateTimer(3); servo1.setPeriodHertz(50); servo1.attach(2, 500, 2400); servo1.writeMicroseconds(1500); sensors.begin(); deviceCount = sensors.getDeviceCount(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57 TÀI LIỆU THAM KHẢO Serial.print(deviceCount, DEC); Serial.println(" devices."); lcd.begin (); lcd.backlight(); lcd.createChar(1, ktdegree); lcd.setCursor(0, 0); lcd.print("Be Nuoi Tom"); timer.setInterval(1000L, sendSensor); timer.setInterval(100L, checkPhysicalButton); timer.setInterval(5000L, xoalcd); timer.setInterval(10000L, clockDisplay); mkn = 1; delay(1000); lcd.clear(); } void loop() { if (mkn == 1) { WiFi.begin(ssid, pass); lcd.clear(); while (WiFi.status() != WL_CONNECTED) { delay(50); st_out_tb8 = 1; Serial.print("cho ket noi"); lcd.setCursor(15, 0); lcd.print("MKN!"); timer.run(); HTLCD_MKN(); CHEDO(); } lcd.clear(); Blynk.config(auth, server, port); Blynk.connect(); mkn = 0; } if (WiFi.status() != WL_CONNECTED) { mkn = 1; } Blynk.run(); timer.run(); HTLCD(); CHEDO(); } //////////////////////////////////////////// void HTLCD_MKN() { lcd.setCursor(0, 3); lcd.print("Che do: "); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58 TÀI LIỆU THAM KHẢO lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(tempC); lcd.write(1); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Do PH: "); lcd.print(phValue); lcd.setCursor(0, 2); lcd.print("Do Duc: "); lcd.print(giatriduc); } /////////////////////////////////////////// void HTLCD() { lcd.setCursor(0, 3); lcd.print("Che do: "); lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(tempC); lcd.write(1); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Do PH: "); lcd.print(phValue); lcd.setCursor(0, 2); lcd.print("Do Duc: "); lcd.print(giatriduc); lcd.setCursor(15, 0); lcd.print(gio); lcd.print(":"); lcd.print(phut); } ////////////////////////////////////////////////// void CHEDO() { gios = String(hour()); phuts = String(minute()); giays = String(second()); gio = gios.toInt(); phut = phuts.toInt(); giay = giays.toInt(); if (st_out_tb8 == 1) { lcd.setCursor(9, 3); lcd.print("Manual"); } else { lcd.setCursor(9, 3); lcd.print("Auto "); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59 TÀI LIỆU THAM KHẢO if (gio >= 17 && gio 31) { analogWrite(M1, 250); Blynk.virtualWrite(V0, LOW); } else{ analogWrite(M1, 0); Blynk.virtualWrite(V0, HIGH); } if (giatriduc>=1.5 && giatriduc buf[j]) { temp = buf[i]; buf[i] = buf[j]; buf[j] = temp; } } } avgValue = 0; for (int i = 2; i < 8; i++) //take the average value of center sample avgValue += buf[i]; phValue = (3000.0 * ((avgValue / 6.0) * 3.3 / 4095.0) / 2000.0) ; //convert the analog into millivolt phValue = 3.5 * phValue; //convert the millivolt into pH value BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60 TÀI LIỆU THAM KHẢO float adc = analogRead(SensorPin_duc); giatriduc = (3000.0 * (adc * 3.3 / 4095.0) / 2000.0) ; Blynk.virtualWrite(V10, tempC); Blynk.virtualWrite(V11, phValue); Blynk.virtualWrite(V12, giatriduc); } //////////////////////////////////////////////// void checkPhysicalButton() { if (st_out_tb8 == 1) { if (digitalRead(bt_tb1) == LOW) { if (st_bt_tb1 != LOW) { st_out_tb1 = !st_out_tb1; if ( st_out_tb1 == 0) analogWrite(M1, 250); else analogWrite(M1, 0); Blynk.virtualWrite(V0, st_out_tb1); } st_bt_tb1 = LOW; } else { st_bt_tb1 = HIGH; } if (digitalRead(bt_tb2) == LOW) { if (st_bt_tb2 != LOW) { st_out_tb2 = !st_out_tb2; if ( st_out_tb2 == 0) analogWrite(M2, 250); else analogWrite(M2, 0); Blynk.virtualWrite(V1, st_out_tb2); } st_bt_tb2 = LOW; } else { st_bt_tb2 = HIGH; } if (digitalRead(bt_tb3) == LOW) { if (st_bt_tb3 != LOW) { st_out_tb3 = !st_out_tb3; if ( st_out_tb3 == 0) analogWrite(M3, 250); else analogWrite(M3, 0); Blynk.virtualWrite(V2, st_out_tb3); } st_bt_tb3 = LOW; } else { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61 TÀI LIỆU THAM KHẢO st_bt_tb3 = HIGH; } if (digitalRead(bt_tb4) == LOW) { if (st_bt_tb4 != LOW) { st_out_tb4 = !st_out_tb4; if ( st_out_tb4 == 0) analogWrite(M4, 250); else analogWrite(M4, 0); Blynk.virtualWrite(V3, st_out_tb4); } st_bt_tb4 = LOW; } else { st_bt_tb4 = HIGH; } if (digitalRead(bt_tb5) == LOW) { if (st_bt_tb5 != LOW) { st_out_tb5 = !st_out_tb5; if ( st_out_tb5 == 0) analogWrite(M5, 250); else analogWrite(M5, 0); Blynk.virtualWrite(V4, st_out_tb5); } st_bt_tb5 = LOW; } else { st_bt_tb5 = HIGH; } if (digitalRead(bt_tb6) == LOW) { if (st_bt_tb6 != LOW) { st_out_tb6 = !st_out_tb6; if ( st_out_tb6 == 0) analogWrite(M6, 250); else analogWrite(M6, 0); Blynk.virtualWrite(V5, st_out_tb6); } st_bt_tb6 = LOW; } else { st_bt_tb6 = HIGH; } if (digitalRead(bt_tb7) == LOW) { if (st_bt_tb7 != LOW) { st_out_tb7 = !st_out_tb7; if (st_out_tb7 == && tam == ) { servo1.writeMicroseconds(2000); delay(3000); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62 TÀI LIỆU THAM KHẢO servo1.writeMicroseconds(1500); bridge1.digitalWrite(14, HIGH); delay(2000); bridge1.digitalWrite(14, LOW); tam = 1; } if (st_out_tb7 == && tam == ) { servo1.writeMicroseconds(1000); delay(3000); servo1.writeMicroseconds(1500); tam = 0; } Blynk.virtualWrite(V6, st_out_tb7); } st_bt_tb7 = LOW; } else { st_bt_tb7 = HIGH; } } if (digitalRead(bt_tb8) == LOW) { if (st_bt_tb8 != LOW) { st_out_tb8 = !st_out_tb8; Blynk.virtualWrite(V7, st_out_tb8); } st_bt_tb8 = LOW; } else { st_bt_tb8 = HIGH; } } ///////////////////////////////////////////////////////// BLYNK_WRITE(V0) { if (st_out_tb8 == 1) { st_out_tb1 = param.asInt(); if ( st_out_tb1 == 0) analogWrite(M1, 250); else analogWrite(M1, 0); } } BLYNK_WRITE(V1) { if (st_out_tb8 == 1) { st_out_tb2 = param.asInt(); if ( st_out_tb2 == 0) analogWrite(M2, 250); else BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 63 TÀI LIỆU THAM KHẢO analogWrite(M2, 0); } } BLYNK_WRITE(V2) { if (st_out_tb8 == 1) { st_out_tb3 = param.asInt(); if ( st_out_tb3 == 0) analogWrite(M3, 250); else analogWrite(M3, 0); } } BLYNK_WRITE(V3) { if (st_out_tb8 == 1) { st_out_tb4 = param.asInt(); if ( st_out_tb4 == 0) analogWrite(M4, 250); else analogWrite(M4, 0); } } BLYNK_WRITE(V4) { if (st_out_tb8 == 1) { st_out_tb5 = param.asInt(); if ( st_out_tb5 == 0) analogWrite(M5, 250); else analogWrite(M5, 0); } } BLYNK_WRITE(V5) { if (st_out_tb8 == 1) { st_out_tb6 = param.asInt(); if ( st_out_tb6 == 0) analogWrite(M6, 250); else analogWrite(M6, 0); } } BLYNK_WRITE(V6) { if (st_out_tb8 == 1) { st_out_tb7 = param.asInt(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64 TÀI LIỆU THAM KHẢO if (st_out_tb7 == && tam == ) { servo1.writeMicroseconds(2000); delay(3000); servo1.writeMicroseconds(1500); bridge1.digitalWrite(14, HIGH); delay(2000); bridge1.digitalWrite(14, LOW); tam = 1; } if (st_out_tb7 == && tam == ) { servo1.writeMicroseconds(1000); delay(3000); servo1.writeMicroseconds(1500); tam = 0; } } } BLYNK_WRITE(V7) { st_out_tb8 = param.asInt(); } BLYNK_CONNECTED() { Blynk.syncVirtual(V0); Blynk.syncVirtual(V1); Blynk.syncVirtual(V2); Blynk.syncVirtual(V3); Blynk.syncVirtual(V4); Blynk.syncVirtual(V5); Blynk.syncVirtual(V6); Blynk.syncVirtual(V7); rtc.begin(); bridge1.setAuthToken("zUe7sTWl6huXugUwts9EYFwAH7y8S5HI"); } //////////////////////////////////////////////////////////////////////////// void xoalcd() { lcd.clear(); } /////////////////// void clockDisplay() { gios = String(hour()); phuts = String(minute()); giays = String(second()); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65 TÀI LIỆU THAM KHẢO ĐOẠN CODE CHƯƠNG TRÌNH ESP32_CAM #include "esp_camera.h" #include #include #include const char* ssid = "hihi"; const char* password = "12345678"; char auth[] = "zUe7sTWl6huXugUwts9EYFwAH7y8S5HI"; //sent by Blynk // Select camera model #define CAMERA_MODEL_AI_THINKER // Has PSRAM #include "camera_pins.h" #define PIR 13 #define PHOTO 14 #define LED String local_IP; void startCameraServer(); void takePhoto() { digitalWrite(LED, HIGH); delay(200); uint32_t randomNum = random(50000); Serial.println("http://"+local_IP+"/capture?_cb="+ (String)randomNum); Blynk.setProperty(V1, "urls", "http://"+local_IP+"/capture?_cb="+(String)randomNum); digitalWrite(LED, LOW); } void setup() { Serial.begin(115200); pinMode(LED,OUTPUT); Serial.setDebugOutput(true); Serial.println(); digitalWrite(LED, LOW); camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; config.pin_d0 = Y2_GPIO_NUM; config.pin_d1 = Y3_GPIO_NUM; config.pin_d2 = Y4_GPIO_NUM; config.pin_d3 = Y5_GPIO_NUM; config.pin_d4 = Y6_GPIO_NUM; config.pin_d5 = Y7_GPIO_NUM; config.pin_d6 = Y8_GPIO_NUM; config.pin_d7 = Y9_GPIO_NUM; config.pin_xclk = XCLK_GPIO_NUM; config.pin_pclk = PCLK_GPIO_NUM; config.pin_vsync = VSYNC_GPIO_NUM; 66 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH TÀI LIỆU THAM KHẢO config.pin_href = HREF_GPIO_NUM; config.pin_sscb_sda = SIOD_GPIO_NUM; config.pin_sscb_scl = SIOC_GPIO_NUM; config.pin_pwdn = PWDN_GPIO_NUM; config.pin_reset = RESET_GPIO_NUM; config.xclk_freq_hz = 20000000; config.pixel_format = PIXFORMAT_JPEG; // if PSRAM IC present, init with UXGA resolution and higher JPEG quality // for larger pre-allocated frame buffer if(psramFound()){ config.frame_size = FRAMESIZE_UXGA; config.jpeg_quality = 10; config.fb_count = 2; } else { config.frame_size = FRAMESIZE_SVGA; config.jpeg_quality = 12; config.fb_count = 1; } // camera init esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x", err); return; } sensor_t * s = esp_camera_sensor_get(); // initial sensors are flipped vertically and colors are a bit saturated if (s->id.PID == OV3660_PID) { s->set_vflip(s, 1); // flip it back s->set_brightness(s, 1); // up the brightness just a bit s->set_saturation(s, -2); // lower the saturation } // drop down frame size for higher initial frame rate s->set_framesize(s, FRAMESIZE_QVGA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); startCameraServer(); Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); local_IP = WiFi.localIP().toString(); Serial.println("' to connect"); Blynk.begin(auth, ssid, password); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67 TÀI LIỆU THAM KHẢO void loop() { // put your main code here, to run repeatedly: Blynk.run(); digitalWrite(LED, LOW); if(digitalRead(PHOTO) == HIGH){ Serial.println("Capture Photo"); takePhoto(); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68 S K L 0 ... Giới thi? ??u linh kiện, thi? ??t bị sử dụng thi? ??t kế hệ thống Chương 3: Tính Tốn Và Thi? ??t Kế Hệ Thống Tính tốn thi? ??t kế, đưa sơ đồ nguyên lý hệ thống Chương 4: Thi Công Hệ Thống Thi? ??t kế hệ thống, ... khiển thi? ??t bị theo tự động hóa Với ý tưởng giải bất cập điều khiển tự động, nhóm chúng em xin đưa đề tài: THI? ??T KẾ VÀ THI CƠNG MƠ HÌNH HỆ THỐNG NI TƠM BÁN TỰ ĐỘNG Hệ thống có chức sau: Hệ thống. .. quay động để kéo/ thả máng ăn Thi? ??t kế tính tốn chân kết nối Arduino với module 3.2 TÍNH TỐN VÀ THI? ??T KẾ HỆ THỐNG 3.2.1 Thi? ??t kế sơ đồ khối hệ thống a Sơ đồ khối Mơ hình hệ thống gồm nhiều thi? ??t