LỚP: 129478Đề tài: Thiết kế hệ thống điều khiển cho hệ thống phân loại sảnphẩm ứng dụng xử lý ảnhGiảng viên hướng dẫn TS... Giới thiệu chung:Hiện nay ngành công nghiệp ngày càng phát tri
Trang 1Giảng viên hướng dẫn TS NGUYỄN THÀNH HÙNG
Sinh Viên Dương Văn Bằng MSSV:20184349
Nguyễn Văn Hoạt MSSV:20184464Trần Ngọc Long MSSV:20184536
-Hà
Trang 2Nội,T1/2022-Đánh giá của giảng viên hướng dẫn
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Kết quả đánh giá Hà Nội, ngày … tháng … năm 2022 Giảng viên hướng dẫn Họ tên Điể m Dương Văn Bằng Nguyễn Văn Hoạt Trần Ngọc Long
Trang 3MỤC LỤC
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 Giới thiệu chung: 1
1.2 Nguyên lý hoạt động của hệ thống : 1
1.3 Các thành phần cơ bản của hệ thống : 2
CHƯƠNG 2: THIẾT KẾ PHẦN MỀM ĐIỀU KHIỂN 11
2.1.Thuật toán xử lý ảnh: 11
2.2.Thiết kế giao diện: 12
CHƯƠNG 3: MÔ HÌNH THỰC NGHIỆM VÀ PHÂN TÍCH 13
3.1.Mô hình thực nghiệm: 13
3.2.Kết quả thực nghiệm: 14
3.3.Thảo luận kết quả thực nghiệm: 14
CHƯƠNG 4: KẾT LUẬN 15
4.1 Kết luận: 15
4.2 Hướng phát triển của đề tài trong tương lai: 15
TÀI LIỆU THAM KHẢO 16
PHỤ LỤC 18
1 Code arduino 18
2 Code Visual Studio 24
3 Code Windown Forms 29
Trang 4
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu chung:
Hiện nay ngành công nghiệp ngày càng phát triển các công ty xí nghiệp
đã áp dụng tự động hóa vào sản xuất để tiện ích cho việc quản lý dây chuyền vàsản phẩm của toàn bộ hệ thống một cách hợp lý là yêu cầu thiết yếu, tiết kiệm được nhiều thời gian cũng như quản lý một cách dễ dàng
Trong đó có một khâu quan trọng ảnh hưởng đến chất lượng sản phẩm là phân loại sản phẩm Hệ thống phân loại sản phẩm nhằm chia sản phẩm ra các nhóm có cùng thuộc tính với nhau để thực hiện đóng gói hay loại bỏ sản phẩm hỏng.Để đáp ứng yêu cầu đó, nhóm chúng em đã tiến hành nghiên cứu tài liệu, thiết kế và xây dựng mô hình “Hệ thống phân loại sản phẩm theo màu sắc ứng dụng xử lý ảnh”
Mục tiêu thiết kế là mô hình phân loại sản phẩm theo màu sắc (xanh nướcbiển, xanh lá cây, vàng) Dựa trên ngôn ngữ C++ với thư viện chính là OpenCV và được thực hiện trên Kit Arduino Uno R3 Ở đây sử dụng các đặc điểm riêng biệt của từng màu sắc để đi nhận dạng và sau đó phân loại từng sản phẩm Kết quả thực hiện của đề tài đã nhận dạng được những sản phẩm có màusắc (xanh nước biển, xanh lá cây, vàng)
1.2 Nguyên lý hoạt động của hệ thống :
Hệ thống phân loại sản phẩm hoạt động trên nguyên lý dùng camera để thu nhận ảnh, sau đó dữ liệu ảnh này được truyền cho máy tính để xử lý Sau khi máy tính xử lý sẽ đưa ra kết quả về màu sắc của đối tượng, từ kết quả này thì máy tính sẽ đưa ra các lệnh truyền xuống bộ điều khiển để bộ điều khiển tiến hành điều khiển cơ cấu chấp hành để phân loại đối tượng
Trang 5Những lợi ích mà hệ thống phân loại sản phẩm đem lại cho chúng ta là rất lớn, cụ thể như:
Giảm sức lao động, tránh được sự nhàm chán trong công việc, cải thiệnđược điều kiện làm việc của con người, tạo cho con người tiếp cận với sự tiến
bộ của khoa học kỹ thuật và được làm việc trong môi trường ngày càng vănminh hơn
Nâng cao năng suất lao động, tạo tiền đề cho việc giảm giá thành sản phẩm, cũng như thay đổi mẫu mã một cách nhanh chóng
Giúp cho việc quản lý và giám sát trở nên rất đơn giản, bởi vì nó khôngnhững thay đổi điều kiện làm việc của công nhân mà còn có thể giảm sốlượng công nhân đến mức tối đa
1.3 Các thành phần cơ bản của hệ thống :
1.3.1 Phần cứng:
a Kit Arduino Uno R3
Một board mạch chủ chính dùng để truyền và nhận dữ liệu từ người sử dụng đến các thiết bị điện tử khác
Trang 6Các thông số cơ bản:
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Điện áp vào khuyên dùng 7-12V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân
Trang 7EEPROM 1 KB (ATmega328)
b Động cơ Servo SG-90
Động cơ servo SG-90 có kích thước nhỏ, là loại được sử dụng nhiều nhất
để làm các mô hình nhỏ hoặc các cơ cấu kéo không cần đến lực nặng.Động cơ servo SG-90 180 độ có tốc độ phản ứng nhanh, các bánh răng được làm bằng nhựa nên cần lưu ý khi nâng tải nặng vì có thể làm hư bánh răng, động cơ RC Servo 9G có tích hợp sẵn Driver điều khiển động cơ bên trong nên có thể dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng xung PWM
Động cơ servo SG-90 được thiết kế hệ thống hồi tiếp vòng kín Tín hiệu
ra của động cơ được nối với một mạch điều khiển Khi động cơ quay, vận tốc
và vị trí sẽ được hồi tiếp về mạch điều khiển này
Trang 8c Camera
Để tiết kiệm chi phí, nhóm em sử dụng camera điện thoại để thu nhận ảnh
d Động cơ giảm tốc
Thông số kỹ thuật của động cơ giảm tốc
Điện áp hoạt động:3V~ 9V DC (Hoạt động tốt nhất từ 6 - 8V)
Mômen xoắn cực đại: 800gf cm min 1:48 (3V)
Tốc độ không tải: 125 Vòng/ 1 Phút (3V)
208 Vòng/ 1 Phút (5V)
Dòng không tải động cơ: 70mA (250mA MAX)
1.3.2 Phần mềm:
Trang 9a Thư viện Open CV
- OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho xử lý về thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết bằng C/C++, vì vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực Opencv có các interface cho C/C++, Python Java vì vậy hỗ trợ được cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần
- OpenCV có rất nhiều ứng dụng:
Hình ảnh street view
Kiểm tra và giám sát tự động
Robot và xe hơi tự lái
Phân tích hình ảnh y học
Tìm kiếm và phục hồi hình ảnh/video
Phim – cấu trúc 3D từ chuyển động
Nghệ thuật sắp đặt tương tác
- Tính năng và các module phổ biến của OpenCV:
Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui)
Phát hiện các vật thể (objdetect, features2d, nonfree)
Trang 10 Geometry-based monocular hoặc stereo computer vision (calib3d, stitching, videostab)
Computational photography (photo, video, superres)
Machine learning & clustering (ml, flann)
CUDA acceleration (gpu)
Mỗi module chứa một bộ vi điều khiển trên bo mạch được lập trình và chấp nhận thông tin dưới dạng mã Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau đó được chuyển
và tải lên trong bộ điều khiển trên bo
Môi trường IDE chủ yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trìnhbiên dịch, phần đầu sử dụng để viết mã được yêu cầu và phần sau được
sử dụng để biên dịch và tải mã lên module Arduino Môi trường này hỗ trợ cả ngôn ngữ C và C ++
Trang 11c Visual Studio 2019
- Công cụ lập trình Visual Studio là một trong những IDE (Integrated Development Environments) có thể được sử dụng để xây dựng các dự án liên quan đến giải pháp phần mềm, ứng dụng và giao diện người dùng đồ họa
- Lập trình bằng bộ công cụ hoàn hảo từ thiết kế ban đầu tới triển khai cuối cùng
Cải thiện hiệu suất IntelliSense cho file C++
Phát triển cục bộ bằng nhiều trình giả lập phổ biến
Đơn giản hóa truy cập thử nghiệm trong Solution Explorer
Quản lý Git và tạo repository trong IDE
Hỗ trợ Kubernetes bao gồm trong khối lượng công việc của Microsoft Azure
d Proteus 8 Professonal
Trang 12Proteus là một phần mềm thiết kế mô phỏng mạch điện tử với bất kỳ thiết
bị điện tử tương tự và điện tử số Ngoài ra phần mềm còn hỗ trợ các vi mạch điều khiển như PIC 10, PIC12, Atmel AVR, ARM Cortex-M3 và nhiều loại khác Đây là một công cụ hữu ích trong công việc cũng như trong học tập về thiết kế mạch điện
Tính năng Proteus Professional :
Một ứng dụng rất tiện dụng và mạnh mẽ đã được phát triển để giúp người hủy bỏ xây dựng cũng như xác minh các bảng mạch dễ dàng hơn
Được trang bị một giao diện được tổ chức rất tốt, nơi chứa tất cả các công cụ và lệnh cần thiết để xây dựng các bảng mạch và thử nghiệm chúng
Có thể bắt đầu mọi thứ bằng cách tải một trong nhiều mẫu mà Proteus PCB Design đi kèm
Các mô phỏng tương tác có thể được bắt đầu với ứng dụng này rất hữu ích như khả năng xem cũng như chỉnh sửa các thuộc tính của mọi thành phần trên bảng
Các tùy chỉnh có thể đi sâu vào từng mục và sau đó có một số tùy chọn xem có thể được sử dụng để giảm bớt công việc của bạn
Tab Có mã nguồn nơi các thay đổi có thể được thực hiện ở mức rất cơ bản cho từng thành phần là một phần của dự án được tải
e Ứng dụng Droidcam
Trang 13private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Label^ label4;
private: System::Windows::Forms::Label^ label5;
private: System::Windows::Forms::Label^ label6;
private: System::Windows::Forms::Label^ label7;
private: System::ComponentModel::IContainer^ components;protected:
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor
this->button2 = (gcnew System::Windows::Forms::Button());
this->serialPort1 = (gcnew System::IO::Ports::SerialPort(this->components));this->comboBox1 = (gcnew System::Windows::Forms::ComboBox());this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->button3 = (gcnew System::Windows::Forms::Button());
this->button4 = (gcnew System::Windows::Forms::Button());
Trang 14this->button5 = (gcnew System::Windows::Forms::Button());
this->label3 = (gcnew System::Windows::Forms::Label());
this->label4 = (gcnew System::Windows::Forms::Label());
this->label5 = (gcnew System::Windows::Forms::Label());
this->label6 = (gcnew System::Windows::Forms::Label());
this->label7 = (gcnew System::Windows::Forms::Label());
Trang 15this->button2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 7.8F, System::Drawing::FontStyle::Bold,
System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(0)));
this->label1->ForeColor = System::Drawing::Color::Blue;
this->label1->Location = System::Drawing::Point(25, 31);
Trang 18static_cast<System::Int32>(static_cast<System::Byte>(128)));
this->label3->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif",
12, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,static_cast<System::Byte>(0)));
Trang 20this->label6->Text = L"Nguyễn Văn Hoạt ";
System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(192)),
Trang 22int check = findColor(img);
Trang 24System::EventArgs^ e) {
this->label7->Text = "YELLOW";this->label7->BackColor = Color::Yellow;this->serialPort1->Write("y");
}
};
}