Goal is to create a vending machine that collects no money. All the vending is done via an API. The prototype was started on July 3rd 2014.
Functionality Phase 1:
- Arduino and/or Pi controls for each motor
- Socket connection or other means (possibly SMS?) to send vend command
- API that knows how much product is within machine and the location within
- NFC reader to allow for account based purchases (although may be pushed to phase 2)
- Populate with maker related content and candy bars
Functionality Phase 2:
- Modular vending types, specifically 3D printer filament able to be purchased by the gram
- Interactive display on the unit to purchase directly from (via online)
- Second prototype made from scratch using new parts and custom case
Functionality Phase 3:
- Transparent OLED glass to create engaging experiences and possibly ads
So there is going to be an open house at the place that I’m building this out:
MakeLab @ Makeworks. Since we have a laser cutter, we threw together a front panel containing some of the logos of the space that have been helping and added some buttons.
Teddy from Makeworks installing the buttons
After the buttons were on, I started on batch creating what I need to make the modular motor backs. I need to make at minimum 4 more before I leave and hopefully another 4 before the event.
After wiring the door up for the first 8 buttons, I had an extra line coming in from the 10x ribbon so I ran a 3.3v and added some rotating colour LEDs for flare.
And finally, I ripped out the existing power cord and just used an extension (for now). I was going to add a computer power supply but the one I have from my old media centre PC wouldn’t even turn on. Connected the extension cord to the Arduino and now it’s self sustaining.
Admittedly, I should have probably called it a night a little earlier than this was done but I was on a roll, so I cranked the music (turned off for the video below), and made another 3 of the motor modules.
Next step was attaching all the motors together and testing, (missed 1 solder point from ground to a motor… oops)
After adding 4 buttons (1 for each row) and testing all the connections, voilà! a 4 button vending machine unit that doesn’t require money!
Today, I completely re-wired everything from the ground up. I went and purchased some rainbow ribbon cord (much smaller gauge that the previous, we’ll see if that was a mistake). This now cleans up the wiring within the cabinet more than I can possibly write (see pictures).
I also built a mounting unit for the same location that the previous controller was on in order to attach the Arduino and relays to.
The other thing that was a big next step was to create mini-boards for each of the motors that can be hooked up in tandem. These allow for all the common connections to be consistent and modular.
After everything was re-installed and the new module motor item was enabled, time for another test, also, a test that is even more showing progress!
Wired up the shelf with some very rudimentary wiring so that each unit was able to be addressed. Placed the shelf into the machine to see if my soldering was fine, it was but there were issues with the relays. Aside from the metal shelf (which I was insulating) I don’t know why there was a problem.
While the first test was okay, this was more about ensuring that the position that the motors will stop at are going to be the appropriate location to push a product out. There was a problem with the one motor that will eventually need to be fixed where the circular disk that attaches to the motor is not solidified. A small dab of glue should correct though.
It was good to see it looking somewhat like a vending machine.
Controlling a single relay switch with an Arduino. I only had 1 of the shelves at the time so I was trying to figure out how the individual motors worked.
The existing platform was interestingly done. All the power and ground lines were run in columns and rows in order to use as few outputs as possible. I completely understand that but what through me off was that the switches that notified the board that the motor had completed a rotation were all connected directly to the power and ground. The resistance of the motor power would be the method that the control board would turn it off.
Since I am re-wiring everything, I decided to use a bit more stable method, especially considering my knowledge (or lack there of) of electronics and power. I decided to use a common ground for everything and send individual power to each motor respectively. I am also going to run a common ground to the switches and a common feedback pull-up on the Arduino. Since there will only ever be one motor running at a given time, that common feedback pin will be the same throughout.