The end of term is around the corner for 2014 and the ELEX 4315 students have done an amazing job on their term project. ELEX 4315 is an Embedded Systems course in C++, which I’ve updated to cover real-time systems and machine vision. This year the course labs added up to an automated Blueberry Sorting Machine. The system the students created used machine vision to identify ‘blue’ berries (ping-pong balls) and sort these into one bin while rejecting all other colored balls to the reject bin. Students developed the machine vision algorithm, microcontroller firmware, C++ control, and electro-mechanical sorting system including:
- An arduino microcontroller system with custom communications protocol to accept inputs (switches / pushbuttons) and control actuators (servos) and indicators (LEDs).
- C++ class to manage serial communication from microcontroller to PC
- C++ class to capture webcam images and perform the decision making on accept or reject of the berries
- C++ TCP/IP server to allow remote control of system (via another similar custom communication protocol)
- C++ client application for remote control – modified to run as CGI
- Web interface to C++ CGI client to control system
- All objects multi-threaded for optimized real-time performance
Two of the fastest systems are shown below. These systems were able to sort balls at a rate of about 2 per second with in the best run, one error in 45 balls.