AICurious Logo
Published on
Thursday, October 10, 2019

Thiết kế thùng rác thông minh tự phân loại rác với Raspberry Pi 3

924 words5 min read
Authors

Nóng lên toàn cầu, bảo vệ môi trường, rác thải nhựa là những từ khoá nóng trong thời gian gần đây. Mỗi ngày, con người thải ra rất nhiều chai lọ, mà một lượng lớn trong số chúng không được xử lý đúng cách, trở thành nguyên nhân đe doạ sự sống của rất nhiều loài sinh vật và tàn phá môi trường. Tôi có nghĩ đến một giải pháp phân loại rác ngay từ thùng rác để phân loại ra các rác thải có khả năng tái chế và xử lý chúng đúng cách. Tuy thế, khi tìm kiếm từ khoá "thùng rác thông minh" lại chỉ thấy bạt ngàn các loại thùng rác có chức năng thông minh duy nhất là tự động mở lắp thùng rác?!. Tôi đã quyết định thiết kế thử một thùng rác có ứng dụng trí tuệ nhân tạo vào phân loại chai, lọ với rác thông thường. Ở bài viết này, tôi xin giới thiệu đến các bạn thiết kế đó.

Dưới đây là video thử nghiệm thùng rác này.

Thiết kế chung của thùng rác

Thiết kế chung của thùng rác tự phân loại rác

Về cơ bản thì thùng rác này được chia thành 2 ngăn, một ngăn chứa chai, lọ tái chế, và một ngăn chứa các loại rác khác. Rác sau khi được vứt vào thùng sẽ được phân loại bằng cách mở một trong 2 cửa phân loại, điều khiển bởi 2 servo. Việc nhận dạng rác cần phân loại được thực hiện trên một máy tính Raspberry Pi 3, thông qua camera.

Thùng rác này được tôi triển khai bằng một thùng rác nhựa lớn mua ngoài cửa hàng, lắp thùng rác được tạo nên bởi các tấm composite nhôm. Vì tôi chưa có nhiều kinh nghiệm thiết kế cơ học, nên thiết kế các cơ cấu chuyển động của thùng rác này còn chưa hiệu quả lắm, các bạn có thể xem video thử nghiệm phía trên.

Kết nối linh kiện

Kết nối linh kiện điện tử của thùng rác

Trung tâm của thiết kế này là máy tính Raspberry Pi 3 Model B+. Có 4 linh kiện chính được kết nối vào máy tính này:

  • 1 USB Camera: Camera này được kết nối với máy tính điều khiển thông qua 1 USB. Nó được lắp đặt phía trong thùng rác, và nhiệm vụ chính của nó là thu nhận hình ảnh để xử lý.

  • 2 động cơ servo MG996R: 2 động cơ này có nhiệm vụ mở cửa để phân loại rác. Chúng được kết nối trực tiếp để lấy tín hiệu điều khiển và nguồn từ máy tính Raspberry Pi, thông qua các cổng GPIO.

  • 1 cảm biến khoảng cách E18-D80NK 80CM NPN 5V: Cảm biến này chính là cảm biến thu nhận hành động "hơ tay" của người dùng, sử dụng để kích hoạt việc vứt rác. Trên thực tế, khi cải tiến lại thuật toán xử lý ảnh để nhận dạng khi nào có rác được vứt vào thùng, chúng ta sẽ không cần đến cảm biến này nữa. Việc phân loại rác sẽ được thực hiện tự động hơn.

  • 1 loa: Đây là loa USB, kết nối với máy tính Raspberry Pi để phát ra các thông báo tới người dùng, tăng tương tác giữa người dùng và thùng rác.

Nguyên lý hoạt động

Nguyên lý hoạt động của thùng rác

Nguyên lý hoạt động của thùng rác này hết sức đơn giản. Người dùng vứt rác vào thùng và đưa tay vào gần cảm biến khoảng cách. Kế đó, máy tính sẽ chụp hình vào đưa hình ảnh qua mạng SSD MobileNetV2 để phát hiện các chai, lọ có trong thùng và điểu khiển các servo mở cửa để phân loại rác. Rác là chai/lọ sẽ được bỏ vào ngăn bên phải thùng, ngược lại, các loại rác khác được bỏ vào bên trái thùng. Cuối cùng, hệ thống đưa ra thông báo cho người dùng qua loa.

Về mô hình phát hiện vật được sử dụng trong bài toán này: Vì thời gian tôi dành cho project này khá ít (chỉ khoảng 2 ngày), tôi đã sử dụng mô hình được huấn luyện sẵn cho OpenCV để thực hiện. Module dnn của OpenCV được đánh giá là có tốc độ và mức tiêu thụ RAM khá tốt khi sử dụng trên CPU so với các framework khác như Tensorflow hay PyTorch. Các bạn có thể tìm hiểu thêm về mô hình SSD MobileNetV2 trong OpenCV tại đây.

Kết luận

Đó là toàn bộ những gì có trong project của tôi. Mục đích của việc viết bài này là để giới thiệu đến các bạn một ứng dụng của trí tuệ nhân tạo với mục đích bảo vệ môi trường. Tuy sản phẩm chưa hoàn thiện (mới ở mức thiết kế thử nghiệm), tôi nghĩ, đó cũng là một ý tưởng tốt để thực hiện trong tương lai. Tôi cũng tìm thấy một số sản phẩm tương tự ở các link bên dưới, bạn đọc có thể tham khảo: