In my thesis, I am presenting the development procedure of an intelligent vending machine, which is able to perform all the usual functions of the vending machines, without any physical contact with the user.
The customer can select from the machine's variety of chocolates by head movements; the pick is confirmed by hand rising; and finally, a smile is necessary in exchange for the product. The machine is able to recognize the customer during the process of serving, and thus to record the consumption related to the actual user. In cases when a new user would like to use the machine, it may be needed to start the training mode, which will save photos from the customer by different head-orientations, so after that the user will be part of the recognition database.
In addition to the vending machine, the system consists of one (or more) camera(s), a PC, and a microcontroller based hardware unit. Based on the images provided by the camera, the PC side software collects all the information required for the operation of the vending machine; using the functions of the OpenCV library. The PC side software is also responsible for a graphical user interface, and for providing the communication with the microcontroller unit. The AVR microcontroller based hardware unit controls the motors inside the machine; and drives the LEDs giving feedback on the selected chocolate.
The main application was written in C++, the microcontroller’s firmware in C, and partly in Assembly.