IoT Chocolate Vending Machine

To expand the story of the Chocolate factory to cover the complete supply chain for the Modern Supply Chain Experience 2017 conference I built an IoT chocolate ball vending machine.

What seemed so simple, let one ball out when the user presses the button, was really quite challenging. Because the balls had uneven size and shape and the foil wrapping was inconsistent it proved hard to prevent jams. The vending machine consists of 4 identical hoppers each with a disk with 4 holes at the bottom and a motor that rotates it 1/4 of a turn on a button press. As it was not guaranteed that a ball would fall into every hole, there is also an optical beam sensor in the tube to detect if a ball has really been released. If no ball is released on 1/4 turn we do another until a ball is released or we hit a max number of turns, assuming the hopper is empty. 

9 Iterations of Hopper Design

Case 3D Design

The case was designed for quick cheap construction from 3/8 particle board and wrapped in black textured vinyl. The buttons are arcade buttons, all the rest of the hardware and name plate were 3D printed. There was a single Raspberry Pi with an Ada Fruit motor controller board. Each hopper had a $10 15rpm geared 12v motor and 3mm optical beam break sensor.

The Pi was running Java 8 with IoT CS Client library to send back data for each released ball of chocolate to IoT Asset Monitoring Cloud.

Animated 3D Render

So that the vending machine demo could be shown when the hardware was not available, I created a 3D animation that was used in the IoT Device Simulator to simulate the vending machine. A single animated image was used but sliced into 4 vertical slices. That way the javascript code could choose the frame for each slice independently to reflect the chocolate level for each color in the simulator model.

Video of Vending Machine in Action