SnackBot: The Internet Connected Candy Machine

By Matt Haines
Developer Relations Evangelist, Electric Imp

Description: Snack Bot
Assembly Time: 2 to 3 hours
Skill Level: Intermediate

During the 2013 Bay Area Maker Faire, Electric Imp distributed an astonishing 40-plus pounds of M&Ms with our Internet-connected SnackBot. We used an iPhone to dispense the candy to anyone who came up and asked us a question. Hundreds of attendees loved it, so we decided to share how we built it.

Our SnackBot is based around the Electric Imp, a hardware, software and cloud-based platform that makes it easy to connect just about anything to the Internet. If you are new to Electric Imp, you can check out our Instructables on Getting Started With the Electric Imp, which will guide you through the process of getting your imp online and running some basic code.
SnackBot

Required Tools:
Philips screwdriver
Soldering iron
Solder
Foam tape (or other adhesive)
An iPhone or Android phone

Parts List:
Brookstone SnackMan™
Part Bundle (includes one Electric Imp Card, April Breakout Board, NFET, Diode, 10KΩ (or higher) resistor)

Step 1: Disassembling the SnackMan

The first thing we need to do is disassemble the SnackMan. We're going to take out (almost) all of the electronics and replace them with an April boar, and the NFET.

1. Remove the clear plastic dome by pressing the button on front of the SnackMan.
2. Remove the top piece of plastic to expose the gear cover and screw caps.
3. Remove the gear cover, gear, screw caps, and screws.
4. Push the button (the same button from #1) and pull up to remove the plastic cover.
5. Once the plastic cover is removed, we have access to the electronics.
6. Remove the screws attaching the circuit boards to the base.
7. Unclip all the wires from the main board.

You should now have five pieces:
• The top cover and motor
• The rotary encoder (circular dial and board) from the front of the SnackMan
• The bottom of the SnackMan (with the power cable coming up from the base)
• The main board
• The IR board

We won't be using the main board or the IR board; these can be thrown away (or kept for future projects).

Step 2: Hacking the Switch

The SnackMan has a dial to turn the machine on and off, as well as control the serving size. We're going to modify it to act as a power switch for the imp.

When the switch is in the off state, the SnackBot will be off – in any other state, the SnackBot will be on (we don't care about serving size, since that will be controlled by a Web page).

Here's what we need to do:
1. Snip the connector off the end of the cables.
2. Pull the wires apart (this will make the next steps easier).
3. Desolder all the wires except the third from the top (it should be black).
4. Solder the red wire from the SnackMan's power source to the second from the top hole.
5. Leave the red wire from the power source and the black wire we left next to one another.

SnackBot Desolder all the wires except the third from the top.
SnackBotSolder the red wire from the SnackMan's power source to the second hole from the top on the switch.

Step 3: Adding the imp and the Motor

The next thing we need to do is get the motor hooked up to our April Breakout Board.
1. Bend the NFET's leads so the outside pins line up with GND and Pin 9.
2. Solder Pin S (source) to GND (on the imp).
3. Solder Pin G (gate) to Pin 9 (on the imp).
4. Solder the negative (black) lead from the motor to Pin D (drain).
5. Flip your imp over and solder the 10kΩ resistor between Pin 9 and GND.

Now hook the imp up to power:
1. Solder the black wire from the power source (base) of the SnackMan to the imp's GND pin.
2. Solder the extra wire coming out of the rotary encoder to the imp's VIN pin.
3. Solder the positive (red) lead from the motor to the imp's VIN pin.

And add the diode:
1. Solder your diode between the positive and negative leads of the SnackMan's motor.
2. The banded/striped end of the diode should be soldered to the motor's positive (red) lead.

SnackBot This NFET is facing the opposite direction of the pin out diagram.
SnackBot D = Drain, G = Gate and S = Source

SnackBot Pin G (NFET) to Pin 9 (imp),
Pin S (NFET) to GND (imp) and
Pin D (NFET) to Negative (black) lead of motor.
SnackBot Solder a 10KΩ resistor between Pin 9 and GND.

SnackBot 1. Solder extra wire from rotary encoder to VIN.
2. Solder black wire from base of SnackMan to GND.
3. Solder the motor's positive (red) lead to VIN.
4. Solder the motor's negative (black) lead to middle pin of NFET.
SnackBot Banded/striped end of diode is soldered to the motor's positive (red) lead.


Step 4: BlinkUp and Run Code

Before we close up the newly imp-ed SnackBot, we're going to blink it up and run some test code to make sure everything is working correctly.

Get Your imp Online:
1. Add batteries (or plug in the power cable).
2. Turn the rotary encoder to any position other than the "off" position.
3. Insert an imp into the SD card slot on the April Breakout Board.
4. An LED inside the imp should start blinking.
5. Follow the steps in our BlinkUp Instructables to get your imp online.

If your imp didn't turn on, you likely have an issue with your wiring. Go back and double-check that you soldered all the things you had to solder.

At this point, your imp should be blinking green to indicate that it's online and talking to our server.

Test the Hardware
1. Log into Electric Imp's web based IDE.
2. Copy and paste out test code into the Device window in the IDE.
3. Hit Run.

If the motor didn't turn on for 10 seconds and then turn off again, you have a problem somewhere. Make sure your NFET is facing the right direction.

Run the Actual Code
1. Copy and paste the SnackBot Agent code into the Agent window of the IDE.
2. Copy and paste the SnackBot Device code into the Device window of the IDE.
3. Hit Run.

When you browse the device's Agent URL, you should be presented with a Web page. If you click one of the buttons, it should turn on the motor and dispense candy!

Step 5: Reassemble your SnackBot

Now that everything is connected and tested, let's add the finishing touches.

Secure the SnackBot's Electronics
1. If desired, remove the red piece of plastic. This will make BlinkUp easier in the future.
2. Reattach the rotary encode/power switch.
3. Add foam tape to the base of the SnackBot assembly to hold the April Breakout Board in place.
4. Firmly press the April Breakout Board (with the imp) into the foam tape you just put down.

Reassemble the Rest of the SnackBot
1. Add the plastic cover that goes over the electronics.
2. Add the plastic button.
3. Screw the plastic cover in place.
4. Cover the screws with the screw caps.
5. Add the gear/candy dispenser.
6. Add the gear cover.
7. Snap the clear plastic dome into place.

SnackBot Reattach the rotary encoder/power switch and place a piece of foam tape here.
SnackBot The April Breakout Board should be held in place by the piece of foam tape.

Add candy and enjoy!

To see SnackBot in action, check out the following video.