Đề tài “Thiết kế và thi công hệ thống phân loại sản phẩm theo khối lượng” là một hệ thống phân loại sản phẩm dựa trên khối lượng của chúng, sản phẩm đạt ngưỡng cho phép sẽ là sản phẩm đạt và ngược lại sẽ là sản phẩm loại. Hệ thống này giúp tăng hiệu suất và độ chính xác trong quá trình phân loại sản phẩm so với phương pháp thủ công truyền thống. Dựa trên phần mềm Arduino IDE và vi điều khiển Arduino để xử lý yêu cầu đề tài. Kết quả của việc phân loại được hiển thị trực quan và đa dạng các phương thức khác nhau như led 7 đoạn, LCD, website.
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI SẢN PHẨM THEO KHỐI LƯỢNG GVHD: GVC ThS Nguyễn Đình Phú SVTH 1: Phạm Văn Dũng MSSV: 19161216 SVTH 2: Đồn Duy Tân MSSV: 19161283 Tp Hồ Chí Minh - 7/2023 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI SẢN PHẨM THEO KHỐI LƯỢNG GVHD: GVC ThS Nguyễn Đình Phú SVTH 1: Phạm Văn Dũng MSSV: 19161216 SVTH 2: Đoàn Duy Tân MSSV: 19161283 Tp Hồ Chí Minh - 7/2023 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 27 tháng năm 2023 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Phạm Văn Dũng MSSV: 19161216 Đoàn Duy Tân MSSV: 19161283 Chuyên ngành: Điện tử Công nghiệp Mã ngành: 01 Hệ đào tạo: Đại học quy Mã hệ: Khóa: 2019 Lớp: 19161ĐTCN I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI SẢN PHẨM THEO KHỐI LƯỢNG II NHIỆM VỤ: Các số liệu ban đầu: - Một kit Arduino Mega2560 - Một kit ESP32 - Một băng tải mini - Tài liệu thông số kỹ thuật máy in TIJ Nội dung thực hiện: - Tham khảo tài liệu, đọc tóm tắt tài liệu đưa hướng dẫn đề tài - Tìm hiểu lập trình giao tiếp Arduino Mega2560 - Tìm hiểu lập trình giao tiếp ESP32 - Tìm hiểu lập trình thiết kế website - Tìm hiểu cách sử dụng máy in phun nhiệt TIJ - Nghiên cứu giao tiếp Arduino Mega 2560 ESP32 - Nghiên cứu giao tiếp Arduino Mega2560 máy in TIJ - Nghiên cứu điều khiển giao tiếp Arduino với thiết bị ngoại vi (loadcell, LCD, led đoạn, động DC, servo) - Viết chương trình điều khiển, kết nối thiết bị hệ thống - Chạy thử, kiểm tra, đánh giá, hiệu chỉnh - Viết báo cáo - Tiến hành báo cáo đề tài đồ án III NGÀY GIAO NHIỆM VỤ: 27/02/2023 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 03/07/2023 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: CÁN BỘ HƯỚNG DẪN GVC ThS Nguyễn Đình Phú BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày 27 tháng 02 năm 2023 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Phạm Văn Dũng Lớp: 19161ĐTCNA MSSV: 19161216 Họ tên sinh viên 2: Đoàn Duy Tân Lớp: 19161ĐTCNC MSSV: 19161283 Tên đề tài: Thiết kế thi công hệ thống phân loại sản phẩm theo khối lượng Tuần/ngày Nội dung Tuần Chọn đề tài xét duyệt đề tài (27/2 – 05/3) Tuần Viết đề cương chi tiết (06/3 – 12/3) Tuần + Tìm hiểu kết nối loadcell với (13/3 – 26/3) Arduino, hiển thị khối lượng lên LCD Tuần Tìm hiểu động cơ, servo, thiết bị (27/3 – 02/4) ngoại vi Tuần + Kết hợp cân sản phẩm phân loại (03/4 – 16/4) servo, hiển thị số lượng đạt hay không đạt led đoạn kết hợp IC 74HC595 Tuần - (17/4 – 23/4) Tìm hiểu giao tiếp UART Arduino với ESP32 - Thiết kế giao diện website - Vẽ PCB điều khiển module led đoạn Tuần + 10 - Bắt đầu thiết kế, thi công băng tải (24/4 – 07/5) - Tổng hợp lại tìm hiểu tích hợp lên mơ hình băng tải Xác nhận GVHD Tuần 11 - (08/5 – 14/5) máy in TIJ - Tuần 12 Tìm hiểu giao tiếp Arduino với Gắn máy in lên băng tải Xây dựng mơ hình hệ thống hồn chỉnh (15/5 – 21/5) Tuần 13 (22/5 – 28/5) Tuần 14 + 15 + 16 (29/5 – 18/6) Chạy kiểm nghiệm, đánh giá hiệu chỉnh lại độ xác Viết báo cáo, làm powerpoint, đồng thời kiểm tra lại mơ hình GV HƯỚNG DẪN (Ký ghi rõ họ tên) LỜI CAM ĐOAN Nhóm xin cam đoan tất nội dung, thơng tin, ý tưởng kết nghiên cứu đồ án tự nghiên cứu thực hướng dẫn giảng viên GVC ThS Nguyễn Đình Phú Các sản phẩm tài liệu tìm kiếm từ nhiều nguồn khác đảm bảo tính xác đầy đủ, nguồn tài liệu tham khảo trích dẫn nguồn thích rõ ràng Tất thơng tin trình bày đồ án hồn tồn xác trung thực, khơng chép hay sử dụng nội dung từ nguồn khơng phép Nhóm xin hồn tồn chịu trách nhiệm trước môn, khoa nhà trường cam đoan Người thực đề tài Phạm Văn Dũng Đoàn Duy Tân LỜI CẢM ƠN Trong đồ án tốt nghiệp với đề tài "Thiết kế thi công hệ thống phân loại sản phẩm theo khối lượng", nhóm xin gửi lời cảm ơn đến người giúp đỡ hỗ trợ suốt trình thực đề tài Đầu tiên, nhóm xin chân thành cảm ơn Khoa Điện – Điện tử trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh cung cấp môi trường học tập nghiên cứu chuyên nghiệp Nhóm muốn gửi lời cảm ơn tới Thầy GVC.ThS Nguyễn Đình Phú - giảng viên hướng dẫn nhóm tận tình hỗ trợ giúp đỡ q trình nghiên cứu hồn thành đồ án Nhóm xin gửi lời cảm ơn đến phụ huynh, gia đình bạn bè người ln động viên, khích lệ, hỗ trợ suốt q trình học tập, nghiên cứu để nhóm có động lực vượt qua khó khăn hồn thành đề tài cách tốt Cuối cùng, xin gửi lời cảm ơn đến tất người đóng góp ý kiến hỗ trợ suốt trình thực đồ án tốt nghiệp Hy vọng đề tài phát triển ứng dụng vào công nghiệp sản xuất Người thực đề tài Phạm Văn Dũng Đoàn Duy Tân 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 iii LỜI CAM ĐOAN v LỜI CẢM ƠN vi DANH MỤC HÌNH x DANH MỤC BẢNG xiv DANH MỤC CÁC TỪ VIẾT TẮT xv TÓM TẮT xvii Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC Chương CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU VỀ HỆ THỐNG CÂN ĐỊNH LƯỢNG 2.1.1 Các hệ thống cân định lượng 2.1.2 Băng tải cân định lượng 2.2 PHƯƠNG PHÁP ĐO KHỐI LƯỢNG SỬ DỤNG STRAIN GAUGE 2.2.1 Giới thiệu chung 2.2.2 Cấu tạo nguyên lý hoạt động Strain gauge 2.2.3 Ứng dụng Strain gauge đo lường 10 2.3 GIỚI THIỆU VỀ CÁC CHUẨN GIAO TIẾP 11 2.3.1 Chuẩn giao tiếp UART 11 2.3.2 Chuẩn giao tiếp I2C 15 2.3.3 Chuẩn giao tiếp RS232 18 2.4 GIỚI THIỆU VỀ CÔNG NGHỆ IN PHUN MỰC BẰNG NHIỆT 20 2.4.1 Giới thiệu chung 20 2.4.2 Nguyên lý hoạt động in phun mực nhiệt 20 2.5 TỔNG QUAN VỀ NỀN TẢNG FIREBASE 21 3.1 GIỚI THIỆU 24 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 24 3.2.1 Thiết kế sơ đồ khối hệ thống 24 3.2.2 Tính tốn thiết kế mạch 26 3.2.3 Sơ đồ nguyên lý toàn mạch 56 Chương 4: THI CÔNG HỆ THỐNG 59 4.1 GIỚI THIỆU 59 4.2 THI CÔNG HỆ THỐNG 59 4.2.1 Thi công bo mạch 59 4.2.2 Lắp ráp kiểm tra 64 4.3 ĐĨNG GĨI VÀ THI CƠNG MƠ HÌNH 65 4.3.1 Đóng gói điều khiển 65 4.3.2 Đóng gói module led đoạn 66 4.3.3 Thi công mơ hình 67 4.4 LẬP TRÌNH HỆ THỐNG 69 4.4.1 Giới thiệu phần mềm 69 4.4.2 Lưu đồ giải thuật 70 4.4.3 Hướng dẫn tạo chương trình IDE 76 4.4.4 Hướng dẫn tạo chương trình website dùng phần mềm VSCode 78 4.4.5 Hướng dẫn đẩy liệu ESP32 lên Firebase liên kết Firebase với website 80 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO [1] Trương Mạnh Duy, “Thiết kế mô hình cân điện tử từ 0kg đến 2kg hiển thị LCD”, Đồ án Môn học, Học Viện Nông Nghiệp Hà Nội, 2017 [2] Phạm Văn Cường, “Xây dựng thiết kế hệ thống cân định lượng đóng bao tự động”, Đồ án Tốt nghiệp, Đại Học Dân Lập Hải Phòng, 2017 [3] Các hệ thống cân ứng dụng cảm biến loadcell, http://loadcell.com.vn/, 2020 [4] Cấu tạo băng tải cân định lượng, http://candientusaigon.vn/, 2020 [5] Nguyên lý hoạt động băng tải cân định lượng, https://intechvietnam.com/, 2018 [6] Application of Strain Guauges in Measurements of Strain Distribution in Complex Objects, https://www.rsc.org/, 2014 [7] Strain Guage Sensor of Mass Measurement Using a Brass Cantilever, https://www.semanticscholar.org/, 2017 [8] Eric Pena Mary Grace Legaspi, “A Hardware Communication Protocol Understanding Universal Asynchronous Receiver/Transmitter”, https://www.analog.com/, 2020 [9] Scott Campbell, “Basic Of The I2C Communication Protocol”, https://www.circuitbasics.com/, 2016 [10] Ujjwal Swami, “RS232 Serial Communication Protocol”, https://circuitdigest.com/, 2020 [11] Nguyên lý hoạt động máy in phun mực nhiệt, https://www.anhkhoabrother.com/,2019 [12] Giới thiệu Firebase tính Firebase, https://itnavi.com.vn/, 2021 [13] Loadcell 5kg, Datasheet [14] HX711, Datasheet BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 97 TÀI LIỆU THAM KHẢO [15] Cảm biến hồng ngoại E18 – D80NK, Datasheet [16] Arduino Mega 2560, Datasheet [17] Moudle Led đoạn 74HC595, Datasheet [18] LCD 16x2, Datasheet [19] I2C, Datasheet [20] ESP32, Datasheet [21] T1-T2 Series High Resolution Inkject Printer, Datasheet [22] Max232, Datasheet [23] JGY-370 24V DC Worm Gear Motor, Datasheet [24] 5V Four-Chanel Relay Module, Datasheet [25] MG995, Datasheet [26] Bùi Văn Minh, Dương Thanh Long, Phạm Quang Huy, “Lập trình điều khiển xa với ESP8266-ESP32 Arduino”, NXB Thanh Niên, 2019 [27] Lê Mỹ Hà, Phạm Quang Huy, “Lập trình IoT với Arduino”, NXB Thanh Niên, 2017 [28] Nguyễn Đình Phú, Giáo Trình Thực Hành Vi Điều Khiển PIC, Đại Học Sư Phạm Kỹ Thuật TP Hồ Chí Minh, 2016 [29] Trần Thị 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”, NXB Đại học Quốc gia Tp HCM, 2013 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 98 PHỤ LỤC PHỤ LỤC Chương trình hiệu chỉnh loadcell Arduino #include "HX711.h" #define DOUT_PIN 65 #define CLK_PIN 64 HX711 scale(DOUT_PIN, CLK_PIN); void setup() { Serial.begin(9600); // Chờ load cell khởi động Serial.println("Module HX711"); Serial.println("Dang ket noi voi loadcell"); Serial.println("Dat mot vat dã biet khoi luong"); scale.set_scale(); scale.tare(); } void loop() { // Đọc giá trị từ load cell float weight = scale.get_units(10); // In giá trị đọc lên Serial Monitor Serial.print("Giá trị đọc: "); Serial.print(weight); Serial.println(" kg"); delay(1000); } Chương trình Arduino //***** HỆ THỐNG PHÂN LOẠI SẢN PHẨM THEO KHỐI LƯỢNG *****// // Khai báo thư viện #include #include #include #include #include "tv_hienthi_led7doan.h" // Thư viện tự tạo cho led đoạn // Khai báo chân Module HX711 #define DOUT 65 // Chân DT module HX711 #define CLK 64 // Chân SCK module HX711 // Khai #define #define #define #define #define #define báo chân Module DATA_PIN_1 CLOCK_PIN_1 LATCH_PIN_1 DATA_PIN_2 CLOCK_PIN_2 LATCH_PIN_2 đoạn 58 //DS1 59 //SH_CP1 60 //ST_CP1 61 //DS2 62 //SH_CP2 63 //ST_CP2 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 97 PHỤ LỤC // Khai #define #define #define báo chân relay - cảm biến - servo RELAY_PIN 57 SENSOR_PIN SERVO_PIN // Khai báo nút nhấn #define BTN_ON_OFF #define BTN_RESET 54 55 // Khai báo biến chương trình int state_on_off = 0; // Lưu trạng thái nút nhấn int state_reset = 0; // Lưu trạng thái nút reset int spdat = 0; // Biến đếm sản phẩm đạt int sploai = 0; // Biến đếm sản phẩm loại int khoiluong = 0; // Biến khối lượng sản phẩm int printer = 0; // Biến gửi liệu máy in Servo s1; HX711 scale; LiquidCrystal_I2C lcd(0x3f, 16, 2); // Địa I2C LCD kích thước hình (16x2) // CTC đếm sản phẩm void demsanpham(int spd, int spl) { xuatled(ma7doan[spd / 100], ma7doan[spd / 10 % 10], ma7doan[spd % 10], DATA_PIN_1, CLOCK_PIN_1, LATCH_PIN_1); xuatled(ma7doan[spl / 100], ma7doan[spl / 10 % 10], ma7doan[spl % 10], DATA_PIN_2, CLOCK_PIN_2, LATCH_PIN_2); } // CTC phân loại sản phẩm void phan_loai() { delay(500); Serial.println(khoiluong); lcd.clear(); lcd.print(" Khoi luong: "); lcd.setCursor(6, 1); lcd.print(khoiluong); lcd.print("g "); if (khoiluong < 150 || khoiluong > 300) // Thay đổi ngưỡng { s1.write(0); delay(2000); s1.write(90); delay(3000); sploai++; demsanpham(spdat, sploai); } else { spdat++; demsanpham(spdat, sploai); } } void setup() { lcd.init(); lcd.backlight(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 98 PHỤ LỤC Serial2.begin(9600); Serial.begin(115200); Serial.begin(115200, SERIAL_8N1); scale.begin(DOUT, CLK); scale.set_scale(); scale.tare(); pinMode(SENSOR_PIN, INPUT); s1.attach(2); s1.write(90); delay(15); // Thiết lập góc ban đầu servo pinMode(DATA_PIN_1, OUTPUT); pinMode(CLOCK_PIN_1, OUTPUT); pinMode(LATCH_PIN_1, OUTPUT); pinMode(DATA_PIN_2, OUTPUT); pinMode(CLOCK_PIN_2, OUTPUT); pinMode(LATCH_PIN_2, OUTPUT); pinMode(RELAY_PIN, OUTPUT); pinMode(BTN_ON_OFF, INPUT); pinMode(BTN_RESET, INPUT); demsanpham(0, 0); } void loop() { state_on_off = digitalRead(BTN_ON_OFF); state_reset = digitalRead(BTN_RESET); bool phathien = (digitalRead(SENSOR_PIN) == LOW); float cannang = scale.get_units(10) * 0.000008591; // Thay đổi hệ số calib khoiluong = cannang * 1000; // RESET HỆ THỐNG if(state_reset == LOW && state_on_off == LOW) { delay(200); if(state_reset == LOW) { lcd.clear(); lcd.print(" RESET he thong "); demsanpham(0, 0); } } else { // Nhấn ON/OFF Hệ thống if (state_on_off == LOW) // Bật hệ thống { digitalWrite(RELAY_PIN, LOW); lcd.print (" He thong: ON"); delay(2000); if (phathien) { printer = khoiluong; phan_loai(); } else { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 99 PHỤ LỤC lcd.clear(); lcd.print(" Khoi luong: "); lcd.setCursor(7, 1); lcd.print("0g "); } } else // Tắt hệ thống { digitalWrite(RELAY_PIN, HIGH); lcd.clear(); } } String data = "D:" + String(spdat) + ",L:" + String(sploai) + "\n"; Serial2.println(data); // GUI DỮ LIỆU QUA MÁY IN String dataInput = String(printer) + "g"; sendSerialData(dataInput); } // GIAO TIẾP MÁY IN TIJ - ARUINO void sendSerialData(String dataInput) { String data1 = "1b02001d0101"; // Giá trị data1 (hex) String data2 = "1b03"; // Giá trị data2 (hex) // Chuyển đổi dataInput sang dạng hex String hexDataInput = ""; for (int i = 0; i < dataInput.length(); i++) { hexDataInput += String(dataInput[i], HEX); } // Tạo chuỗi dataOut // Thêm "0" để chuẩn câu lệnh khai báo thêm cho máy in độ dài nội dung in String dataOut1 = data1 + "0" + String(dataInput.length()) + hexDataInput + data2; // Tạo mảng byte từ chuỗi dataOut int dataLength = dataOut1.length() / 2; byte dataOut2[dataLength + 1]; for (int i = 0; i < dataLength; i++) { String hexByte = dataOut1.substring(i * 2, i * + 2); dataOut2[i] = strtoul(hexByte.c_str(), NULL, 16); } // Tính checksum byte checksum = Checksum(dataOut2, dataLength); // Thêm checksum vào cuối mảng dataOut2 dataOut2[dataLength] = checksum; // Gửi liệu qua Serial Serial.write(dataOut2, dataLength + 1); } // Hàm checksum byte Checksum(byte* data, int length) { int sum = 0; // Tính tổng byte liệu for (int i = 0; i < length; i++) { sum += data[i]; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 100 PHỤ LỤC // Áp dụng phép AND (modulo-256) 0xFF để lấy giá trị byte byte checksum = sum & 0xFF; // Tính giá trị bù hai (2s-complement) checksum byte complement = 0x100 - checksum; return complement; } Thư viện hiển thị module led đoạn int ma7doan[10] = { 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; void xuat1byte(unsigned int data, int datapin, int clockpin) { for (int i = 0x80; i != 0x00; i >>= 1) { digitalWrite(datapin, (data & i) ? HIGH : LOW); digitalWrite(clockpin, LOW); digitalWrite(clockpin, HIGH); } } void xuatled(int tram, int chuc, int dv, int datapin, int clockpin, int latchpin) { xuat1byte(dv, datapin, clockpin); xuat1byte(chuc, datapin, clockpin); xuat1byte(tram, datapin, clockpin); digitalWrite(latchpin, LOW); digitalWrite(latchpin, HIGH); } Chương trình ESP32 #include #include #include #include #include "addons/TokenHelper.h" "addons/RTDBHelper.h" #define WIFI_SSID "i1techs" #define WIFI_PASSWORD "Alasy**33" // Insert Firebase project API Key #define API_KEY "AIzaSyCbt-YBmpb1nMEgc2dGKiXznvJ6aXOTGpk" // Insert RTDB URLefine the RTDB URL */ #define DATABASE_URL "https://datn-ba3b9-default-rtdb.firebaseio.com/" BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 101 PHỤ LỤC // thiet lap chan uart RX TX #define RXp2 16 #define TXp2 17 //Xác định liệu Fireabse FirebaseData fbdo; FirebaseAuth auth; FirebaseConfig config; unsigned long sendDataPrevMillis = 0; bool signupOK = false; int spd = 0; int spl = 0; void setup(){ Serial.begin(115200); Serial2.begin(9600, SERIAL_8N1, RXp2, TXp2); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Connecting to Wi-Fi"); while (WiFi.status() != WL_CONNECTED){ Serial.print("."); delay(300); } Serial.println(); Serial.print("Connected with IP: "); Serial.println(WiFi.localIP()); Serial.println(); /* Assign the api key (required) */ config.api_key = API_KEY; /* Assign the RTDB URL (required) */ config.database_url = DATABASE_URL; /* Sign up */ if (Firebase.signUp(&config, &auth, "", "")){ Serial.println("ok"); signupOK = true; } else{ Serial.printf("%s\n", config.signer.signupError.message.c_str()); } /* Assign the callback function for the long running token generation task */ config.token_status_callback = tokenStatusCallback; Firebase.begin(&config, &auth); Firebase.reconnectWiFi(true); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 102 PHỤ LỤC void loop(){ if (Serial2.available()) { String data = Serial2.readStringUntil('\n'); // đọc chuỗi liệu từ Arduino int dem1Pos = data.indexOf("D:"); // tìm vị trí ký tự T int dem2Pos = data.indexOf("L:"); // tìm vị trí ký tự H if (dem1Pos != -1 && dem2Pos != -1) { spd = data.substring(dem1Pos + 2, dem2Pos - 1).toFloat(); spl = data.substring(dem2Pos + 2).toFloat(); } } if (Firebase.ready() && signupOK && (millis() - sendDataPrevMillis > 1000 || sendDataPrevMillis == 0)){ sendDataPrevMillis = millis(); if (Firebase.RTDB.setInt(&fbdo, "San pham dat", spd)){ Serial.println("PASSED"); Serial.println("PATH: " + fbdo.dataPath()); Serial.println("TYPE: " + fbdo.dataType()); } else { Serial.println("FAILED"); Serial.println("REASON: " + fbdo.errorReason()); } if (Firebase.RTDB.setFloat(&fbdo, "San pham loai", spl)){ Serial.println("PASSED"); Serial.println("PATH: " + fbdo.dataPath()); Serial.println("TYPE: " + fbdo.dataType()); } else { Serial.println("FAILED"); Serial.println("REASON: " + fbdo.errorReason()); } } } Chương trình thiết kế website Visual Studio Code a Chương trình xây dựng website dùng ngôn ngữ HTML BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 103 PHỤ LỤC ĐỒ ÁN TỐT NGHIỆP header { display: flex; justify-content: center; align-items: center; } logo { margin-right: 20px; } h1 { text-align: center; }TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA: ĐIỆN - ĐIỆN TỬ
ĐỒ ÁN TỐT NGHIỆPPHÂN LOẠI SẢN PHẨM THEO KHỐI LƯỢNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 104 PHỤ LỤC SP ĐẠT: SP LOẠI: SV thực hiện Phạm Văn Dũng - 19161216 Đoàn Duy Tân - 19161283 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 105 PHỤ LỤC Import the functions you need from the SDKs you need TODO: Add SDKs for Firebase products that you want to use https://firebase.google.com/docs/web/setup#available-libraries // Your web app's Firebase configuration // For Firebase JS SDK v7.20.0 and later, measurementId is optional const firebaseConfig = { apiKey: "AIzaSyCbt-YBmpb1nMEgc2dGKiXznvJ6aXOTGpk", authDomain: "datn-ba3b9.firebaseapp.com", databaseURL: "https://datn-ba3b9-default-rtdb.firebaseio.com", projectId: "datn-ba3b9", storageBucket: "datn-ba3b9.appspot.com", messagingSenderId: "345670626154", appId: "1:345670626154:web:73260dbadfc4397b131313", measurementId: "G-NBFETVWCZ7" }; firebase.initializeApp(firebaseConfig); firebase.analytics(); var spd = document.getElementById('spd'); var dbRef = firebase.database().ref().child('San pham dat'); dbRef.on('value', snap => spd.innerText = snap.val()); var spl = document.getElementById('spl'); var dbRef2 = firebase.database().ref().child('San pham loai'); dbRef2.on('value', snap => spl.innerText = snap.val()); b Chương trình thiết kế website dùng ngôn ngữ CSS *{ margin: 0; padding: 0; } logo-container { display: flex; justify-content: space-between; height: 200px; width: 100%; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 106 PHỤ LỤC } title { position: absolute; left: 25%; padding-top: 10px; text-align: center; font-family: "Times New Roman", sans-serif; color: rgb(15, 128, 204); text-transform: uppercase; font-size: 25px; letter-spacing: 15em; margin-right: 200px; } logo1 { background-image: url(https://reviewedu.net/wpcontent/uploads/2021/08/lo-go-spkt.png); background-size: 100%; margin-left: 50px; width:100px; height:128px; } logo2 { background-image: url(https://feee.hcmute.edu.vn/Resources/Images/SubDomain/feee/Logo/Logo%20k hoa%20dien.png); background-size: 100%; margin-right: 35px; width:170px; height:140px; } tabContainer { width: 100%; } tabContainer buttonContainer { display: flex; justify-content:space-between; height: 110px; } tabContainer buttonContainer button BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 107 PHỤ LỤC { border: none; outline: none; cursor: pointer; font-family: "Orbitron", sans-serif; text-transform: uppercase; letter-spacing: 15em; font-size: 30px; color:#19237e; padding: 10px; transition-duration: 0.4s; background-color:transparent; } tabContainer buttonContainer button:hover { background-color:rgb(61,234,86); } tabContainer tabPanelContainer { justify-content:center; height: 85%; border: none; background: rgba(187, 187, 187, 0.712); color:black; } tabContainer tabPanelContainer tabPanel { height: 0%; text-align: center; box-sizing: border-box; font-family: "Orbitron",sans-serif; letter-spacing: 0.15em; } tabContainer tabPanelContainer tabPanel tabsub { display: flex; justify-content: space-around; height: 100%; } footer { margin-top: 100px; font-family: "Orbitron", sans-serif; text-transform: uppercase; letter-spacing: 15em; font-size: 10px; color: white; padding-top: 5px; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 108 PHỤ LỤC text-align: center; background-color: rgb(88, 86, 86); } image-sp-dat { width: 30%; margin: auto; } image-sp-loai { width: 30%; margin: auto; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 109