Chương trình phân loại phôi đươc viết trên phần mềm Pycharm sử dụng ngôn ngữ Python trên phiên bản 3.7. Chương trình điều khiển được viết trên phần mềm Arduino IDE sử dụng ngôn ngữ C.
74
Hình 4.10. Hệ thống sau khi đã hoàn thiện
• Cài đặt Pycharm và Arduino IDE:
Hình 4.11. Cài đặt Pycharm và Arduino IDE
Dữ liệu từ camera Kinect được khai thác và sử dụng bằng máy tính cá nhân thông qua phần mềm Pycharm các dữ liệu được xử lý và được gửi vào Arduino thông qua giao tiếp Serial.
Cài đặt các thư viện sử dụng trên Pycharm bao gồm:
• SerialDevice: Truyền thông tin giữa thiết bị xử lý dữ liệu và thiết ngoại vi.
• Opencv-python: xử lý dữ liệu hình ảnh, thị giác máy tính.
• Openni: Thao tác với dữ liệu trên Kinect.
• Numpy: một thư viện toán học cho phép làm việc hiệu quả với ma trận và mảng với tốc độ xử lý nhanh hơn “Core Python” đơn thuần.
75
• Cvzone: Giao tiếp, truyền nhận dữ liệu với Arduino thông qua Serial Port.
Hình 4.12. Kết nối hệ thống thực hiện phân loại
Cùng kết nối camera và Arduino tới máy tính, trong Pycharm thiết lập truyền thống nối tiếp với Arduino:
Hình 4.13. Thiết lập truyền thống nối tiếp với Arduino
Hộp thoại Run thông báo Arduino Uno đã được kết nối thông qua cổng COM3
• Lập trình:
o Arduino:
Thư viện cvzone cũng được cài đặt trên Arduino, dữ liệu từ máy tính truyền qua Arduino thông qua Serial Port được lưu trong bộ nhớ đệm. Sử dụng hàm
76
Serial.parseInt() để lấy từng kí tự số nguyên trong bộ đệm sử dụng cho thao tác điều khiển phân loại.
▪ Serial.available() > 0: đã có dữ liệu trong bộ đệm
▪ Serial.parseInt(): lấy kí tự nguyên đầu tiên trong bộ đệm
Lần lượt các tín hiệu được lấy từ bộ đệm nếu đúng điều kiện các câu lệnh tiếp theo sẽ được thực hiện.
o Pycharm:
Các kí tự số nguyên tương ứng với loại phôi được gửi lần lượt qua Arduino. Khai báo Arduino:
Arduino = SerialObject('COM3', 9600, 1) ▪ Serial Port: COM3
▪ Tốc độ Baud: 9600
▪ Digit: 1 - số kí tự trên 1 giá trị được gửi đi (ví dụ: 5 – 1digit, 55 – 2digits) Gửi dữ liệu đã xử lý sang Arduino:
Arduino.sendData(wpTypeArr)
wpTypeArr: loại phôi đã được phân loại là các phần tử số nguyên 1, 2, 3, 4 tương
ứng với loại phôi.
• Hướng dẫn sử dụng phần cứng
Sau khi kết nối Arduino và camera với máy tính, tiến hành bật nguồn cho hệ thống, băng tải sẽ chạy sau khi nhấn nút Start, đặt phôi lên băng tải tiến hành phân loại. Trong qua trình phân loại nếu xảy ra lỗi (ví dụ như phân loại sai loại phôi) có
77
thể ấn nút Stop hệ thống sẽ dừng sau khi phân loại xong phôi đang chạy. Sau đó, ấn nút Reset để đặt lại các giá trị như ban đầu.
Camera Kinect cùng Arduino sẽ được kết nối trực tiếp tới máy tính, máy tính sẽ xử lý dữ liệu thu được từ Kinect sau đó tín hiệu 1, 2, 3, 4 sẽ được gửi sang Arduino thông qua giao tiếp Serial tương ứng 1 – Tròn cao, 2 – Vuông cao, 3 – Tam giác cao, 4 – Phôi lỗi.
Kết quả hiển thị đếm sản phẩm:
78
CHƯƠNG 5. KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 5.1. Kết quả
5.1.1. Tính chính xác a. Kết quả phân loại a. Kết quả phân loại
Kết quả phân loại sẽ hiển thị trên màn hình máy tính với các thông số bao gồm: khoảng cách từ cảm biến tới mặt băng tải (Distance), hình dạng của phôi (Shape), chiều cao phôi (Height), và trạng thái của phôi (NG hoặc OK). Với số phôi phân loại là 160 (40 phôi cho mỗi loại), nhóm thu được kết quả:
• Phôi tròn cao
Hình dưới đây mô tả quá trình phân loại phôi tam giác: