20 Unbelievable Arduino Projects
20 Unbelievable Arduino Projects
Here are twenty amazing Arduino projects that you almost wouldn't believe, if not for that they are the real deal. These authors have turned their wildest dreams into reality with the power of Arduino, an easy-to-use microcontroller development board. It is no wonder that Arduino literally translates to "Strong friend (masculine)" in Italian. Anything is possible with the mighty power of Arduino. It's compact, it's straightforward, and makes embedding electronics into the world-at-large fun and easy. Check out some of these amazing projects, and get inspired to build your own reality.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Author and Copyright Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 LED Cube 8x8x8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Intro: LED Cube 8x8x8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Step 1: Skills required . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Step 2: Component list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Step 3: Ordering components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Step 4: What is a LED cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Step 5: How does a LED cube work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Step 6: The anatomy of a LED cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Step 7: Cube size and IO port requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Step 8: IO port expansion, more multiplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Step 9: IO port expansion, alternative solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Step 10: Power supply considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Step 11: Buy a power supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Step 12: Build a power supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Step 13: Choose your LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Step 14: Choose your resistors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Step 15: Choose the size of your cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Step 16: How to make straight wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Step 17: Practice in small scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Step 18: Build the cube: create a jig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Step 19: Build the cube: soldering advice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Step 20: Build the cube: test the LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Step 21: Build the cube: solder a layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Step 22: Build the cube: test the layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Step 23: Build the cube: straigthen the pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Step 24: Build the cube: bend the pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Step 25: Build the cube: solder the layers together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Step 26: Build the cube: create the base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Step 27: Build the cube: mount the cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Step 28: Build the cube: cathode risers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Step 29: Build the cube: attach cables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Step 30: Build the controller: layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Step 31: Build the controller: clock frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Step 32: Build the controller: protoboard soldering advice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 33: Build the controller: Power terminal and filtering capacitors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Step 34: Build the controller: IC sockets, resistors and connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Step 35: Build the controller: Power rails and IC power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Step 36: Build the controller: Connect the ICs, 8bit bus + OE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Step 37: Build the controller: Address selector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Step 38: Build the controller: AVR board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Step 39: Build the controller: Transistor array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Step 40: Build the controller: Buttons and status LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Step 41: Build the controller: RS-232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Step 42: Build the controller: Make an RS-232 cable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Step 43: Build the controller: Connect the boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Step 44: Build the controller: Connect the cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Step 45: Program the AVR: Set the fuse bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Step 46: Program the AVR with test code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Step 47: Test the cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Step 48: Program the AVR with real code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Step 49: Software: Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Step 50: Software: How it works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Step 51: Software: IO initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Step 52: Software: Mode selection and random seed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Step 53: Software: Interrupt routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Step 54: Software: Low level functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Step 55: Software: Cube virtual space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Step 56: Software: Effect launcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Step 57: Software: Effect 1, rain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Step 58: Software: Effect 2, plane boing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Step 59: Software: Effect 3, sendvoxels random Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Step 60: Software: Effect 4, box shrinkgrow and woopwoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Step 61: Software: Effect 5, axis updown randsuspend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Step 62: Software: Effect 6, stringfly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Step 63: Software: RS-232 input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Step 64: PC Software: Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Step 65: PC Software: Cube updater thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Step 66: PC Software: Effect 1, ripples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Step 67: PC Software: Effect 2, sidewaves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Step 68: PC Software: Effect 3, fireworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Step 69: PC Software: Effect 4, Conway's Game of Life 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 70: Run the cube on an Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Step 71: Hardware debugging: Broken LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Step 72: Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Power Laces- the Auto lacing shoe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Intro: Power Laces- the Auto lacing shoe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Step 1: Parts & Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Step 2: The Laces pt. 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Step 3: The Laces pt. 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Step 4: Servo Mounting Plate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Step 5: Construct the Motor Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 Step 6: Mount the Servos, Battery, and Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 Step 7: Adding some electronics to the motor shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105 Step 8: Connect the Laces to the Servos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 Step 9: Upload the Arduino Sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Plantduino Greenhouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112 Intro: Plantduino Greenhouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112 Step 1: Plant Science 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113 Step 2: Build a Garden/ Plant Seeds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 Step 3: Build a Greenhouse: Step 1 materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 Step 4: Build a Greenhouse: Step 2 Build the Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 Step 5: Build a Greenhouse: Step 4 Lay the plastic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 Step 6: Build the Greenhouse: Step 5 Add the back and the door . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 Step 7: Build the Greenhouse: Step 7 Make it airtight/waterproof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 Step 8: Build a Greenhouse: Step 8 Dig a Trench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Step 9: Watering System: Step 1 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Step 10: Watering System: Step 2 Build a Relay Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 Step 11: Watering System: Step 3 Connect the Valve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 Step 12: Watering System: Step 4 moisture sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 Step 13: Watering System: Step 5 Write the Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 Step 14: Watering System: Step 6 Bring It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 Step 15: Plantduino: Step 1 materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 Step 16: Plantduino: Step 2 Schematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128 Step 17: Plantduino: Step 3 Assembly Tips and Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 Step 18: Birdhouse: Creation and Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 Step 19: Creating the Birdhouse Motherboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 Step 20: Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136 Step 21: Final Thoughts/ Additional Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
The EyeWriter 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 Intro: The EyeWriter 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 Step 1: Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 Step 2: Parts list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 Step 3: Software - openFrameworks & EyeWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 Step 4: Software - Camera & Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 Step 5: Load Arduino sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 Step 6: Hardware: Power Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 Step 7: Hardware: Infrared LED's . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 Step 8: Hacking the PS Eye camera - preparing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 Step 9: Hacking the PS Eye camera - VSync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 Step 10: Hacking the PS Eye camera - finishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148 Step 11: Full Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 Step 12: Building a wood base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150 Step 13: Using EyeWriter Software - Setup & Tracking Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 Step 14: Using EyeWriter Software - Calibration Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152 Step 15: Using EyeWriter Software - Catch Me . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152 Step 16: Using EyeWriter Software - Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 Step 17: Using EyeWriter Software - Typing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 Step 18: Using EyeWriter Software - Pong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 Twitter Mood Light - The World's Mood in a Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 Intro: Twitter Mood Light - The World's Mood in a Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 Step 1: How it works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156 Step 2: All you need is... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Step 3: Connect the Arduino and WiFly to a computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 Step 4: Connecting the LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 Step 5: Choosing good search terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161 Step 6: Download the code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165 Step 7: Programming step 1: SPI UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165 Step 8: Programming step 2: Connecting to a Wireless Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 Step 9: Programming step 3: Searching Twitter with TCP/IP port 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 Step 10: Programming step 4: RGB LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 Step 11: Programming 5: Computing the World Mood . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171 Step 12: Building the Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173 Step 13: Enjoy! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 Flamethrowing Jack-O'-Lantern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 Intro: Flamethrowing Jack-O'-Lantern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 Step 1: Go get stuff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 Step 2: Cut a cap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 3: Gut it . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178 Step 4: Design a face . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179 Step 5: Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 Step 6: Cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 Step 7: Bend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182 Step 8: Brackets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 Step 9: Drill holes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 Step 10: Attach things . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 Step 11: Candle mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185 Step 12: Battery adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186 Step 13: Program the Receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187 Step 14: Program the transmitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188 Step 15: Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188 Step 16: Antenna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188 Step 17: Wire the transmitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .189 Step 18: Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190 Step 19: Case closed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190 Step 20: Wire the reciever . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190 Step 21: Put it together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191 Step 22: Wire the motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191 Step 23: Put it in the pumpkin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192 Step 24: Candle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192 Step 25: Fire! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193 Make a 24X6 LED matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194 Intro: Make a 24X6 LED matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194 Step 1: Getting All The Right Things . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195 Step 2: How it works? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195 Step 3: Schematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196 Step 4: Soldering The LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197 Step 5: Programming The Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 Step 6: We Are Done! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 Secret Knock Detecting Door Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199 Intro: Secret Knock Detecting Door Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200 Step 1: Tools, Supplies, And Skills . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 (If this all looks too challenging, you might consider signing kit mailing list which, when available, will be much easier and a lot more simple.) Time : . . . . . . .201
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Skills : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 Tools: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 Materials : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 Electronics: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 Case: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 Step 2: Program The Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 Step 3: Lay Out And Test The Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 Step 4: Prepare The Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 Step 5: Make The Lock Turning Clamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 Step 6: Make The Knock Detector Spring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207 Step 7: Soldering The Circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208 Step 8: Assembling The Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213 Step 9: Mounting, Testing, and Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216 Step 10: Epilog: Changes And Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216 Did you build this? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216 Masters of Secret Knocks: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217 turn signal biking jacket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218 Intro: Turn signal biking jacket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218 Step 1: Supplies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218 Step 2: Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219 Step 3: Sew your power supply and LilyPad to your jacket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 Step 4: Test your stitching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Step 5: Sew on your turn signal LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225 Step 6: Sew in your control switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 Step 7: Sew in your indicator LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 Step 8: Program your jacket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233 Tree Climbing Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 Intro: Tree Climbing Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 Step 1: Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235 Step 2: Tools and Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236 Step 3: Motor Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238 Step 4: Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240 Step 5: Power, cont. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242 Step 6: Legs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243 Step 7: Feet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243 Step 8: Motor Hubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244 Step 9: Building the Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246 Step 10: Frame, cont. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247 Step 11: Electronics Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 12: Rotation Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .250 Step 13: Backbone Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251 Step 14: Mounting the Spine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252 Step 15: Mounting the Spine, cont. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253 Step 16: Linear Slides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .254 Step 17: Wiring the Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256 Step 18: Limit Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257 Step 19: Battery Holders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258 Step 20: Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260 Rave Rover - Mobile Dance Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261 Intro: Rave Rover - Mobile Dance Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261 Step 1: Starting the Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261 Step 2: Cutting Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264 Step 3: Fitting the floor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264 Step 4: Getting LEDs ready . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265 Step 5: Installing the LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267 Step 6: Adding the Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267 Step 7: LED Color Check and Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268 Step 8: Gathering More Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269 Step 9: Frame Building . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270 Step 10: Getting frames to fit... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272 Step 11: Mounting Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272 Step 12: More Mounting... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273 Step 13: Pole Mounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274 Step 14: Finishing the Electronics... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275 Step 15: Drive Test! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276 Step 16: Installing Floor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276 Step 17: Final touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276 Step 18: Speaker Install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 Step 19: Finally Done! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278 Step 20: Where to find parts... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278 Step 21: Party Time! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280 Type Case, the making of a low-resolution display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281 Intro: Type Case, the making of a low-resolution display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281 Step 1: The idea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281 Step 2: Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282 Step 3: Development = solving problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283 Step 4: The build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283 Step 5: The documentation process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .286
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288 Sigh Collector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289 Intro: Sigh Collector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289 Step 1: Material Needed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .290 Step 2: Build and Program Circuit. Hack into Air Pump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .290 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .291 Step 3: Build the Sigh Collector main unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292 Step 4: Make the air bladder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292 Step 5: Combine electronics with main unit. Install Check Valve and Pump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293 Step 6: Build carrying case, Sew handle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295 Step 7: Build and Program circuit for sigh detection. Assemble electronics into carrying case. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296 Step 8: Cut and Sew chest strap and attach the stretch sensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296 Step 9: A word on Wireless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297 Step 10: Finished . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298 Make a Fire Breathing Animetronic Pony from FurReal Butterscotch or S'Mores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299 Intro: Make a Fire Breathing Animetronic Pony from FurReal Butterscotch or S'Mores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299 Step 1: Get it before you hack it . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299 Step 2: What you will need. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300 Step 3: Removing the skin: Head first . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .301 Step 4: Removing Skin: ENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .301 Step 5: Remove Skin: Straight from the horses mouth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302 Step 6: Remove Skin: The body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303 Step 7: Removing the skin: The legs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304 Step 8: Removing the skin: the Neck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305 Step 9: Removing the face . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305 Step 10: Getting access to the Circuit board in the lower body. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .306 Step 11: Cutting the power to the Microcontroler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307 Step 12: Tapping power for the Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307 Step 13: Tapping the lines into the motor control circuit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307 Step 14: Taping into the encoders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .308 Step 15: Getting the morors and sensors connected to the arduino. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309 Step 16: Connecting a wii nunchuck into the system. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .310 Step 17: The Arduino Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .310 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311 Step 18: Getting the fuel to the head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311 Step 19: Building an ignition system. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .312 Step 20: Remote fuel trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 21: Follow up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .314 Tweet-a-watt - How to make a twittering power meter... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315 Intro: Tweet-a-watt - How to make a twittering power meter... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315 Step 1: Make it! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316 Step 2: Prep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316 Step 3: Make the Receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318 Step 4: Configure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320 Step 5: Solder the Transmitter - parts list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324 Step 6: Transmitter Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327 Step 7: Assemble and create the transmitter - 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327 Step 8: Assemble and create the transmitter - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329 Step 9: Assemble and create the transmitter - 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331 Step 10: Assemble and create the transmitter - 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333 Step 11: Assemble and create the transmitter - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335 Step 12: Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .339 Step 13: Expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343 Step 14: Design - overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343 Step 15: Design - listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344 Step 16: Design - store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .347 Step 17: Design - graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352 Step 18: Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .356 Step 19: Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .357 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .357 Bubblesteen Bubble Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358 Intro: Bubblesteen Bubble Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358 Step 1: Things you will need . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358 Step 2: Dealing with the micro controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359 Step 3: Putting it together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359 Step 4: Arduino & motor shield platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .360 Step 5: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .360
Step 6: Additional photos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362 Arduino R/C Lawnmower (painted) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363 Intro: Arduino R/C Lawnmower (painted) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363 Step 1: Setting up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368 Step 2: The Motor Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .370 Step 3: The Wheels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .373 Step 4: The Frame part A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .375 Step 5: The Frame part B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .377 Step 6: Mounting the motors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 7: Mounting the mower deck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .380 Step 8: Select and Install the batteries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382 Step 9: Mount the electronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .383 Step 10: The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385 Step 11: More Videos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .386 How to Build an Arduino Powered Chess Playing Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .387 Intro: How to Build an Arduino Powered Chess Playing Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .387 Step 1: Parts and Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .387 Step 2: Design and Code Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .389 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .390 Step 3: Mounting the Drawer Bearings (Y Axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .390 Step 4: Building the Motor Mount (Y Axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .391 Step 5: Installing the Rack Gears (Y Axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .392 Step 6: Wiring and Mounting the Motor (Y Axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .393 Step 7: Mounting the Crossbars (X Axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .394 Step 8: Mounting the Drawer Bearing and Rack Gears (X Axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .395 Step 9: Attaching the Magnet to the Servo (X Axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .396 Step 10: Wiring and Mounting the Motor (X Axis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .397 Step 11: Wiring the Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .397 Step 12: Place the Magnets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .399 Step 13: Code, Final Assembly + Reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .399 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .400 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .400 SITWAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .401 Intro: SITWAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .401 Step 1: MATERIALS AND COSTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .402 Step 2: Salvaging parts from the donor wheelchair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .402 Step 3: Build the frame and mount the wheels and motors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .402 Step 4: STEERING CONTROLLER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .403 Step 5: ELECTRONICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .404 Step 6: WIRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .405 Step 7: MOTOR TEST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .406 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .407 Step 8: THE FIRST TEST RIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .407 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .407 Step 9: ADDING 3D PRINTED OBJECTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408 Step 10: CONCLUSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .409 A Makers Wedding - Photo booth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .410 Intro: A Makers Wedding - Photo booth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .410
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 1: How it works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .411 Step 2: Software and Trigger Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .411 Step 3: Booth Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415 Step 4: Cut The Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415 Step 5: Bottom Panel - Tripod Mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .416 Step 6: Box Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418 Step 7: Adding Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .420 Step 8: Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422 Step 9: Details and Finishing - Part 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .423 Step 10: Details and Finishing - Part 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .424 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427 Step 11: Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .429
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Disclaimer
All do-it-yourself activities involve risk, and your safety is your own responsibility, including proper use of equipment and safety gear, and determining whether you have adequate skill and experience. Some of the resources used for these projects are dangerous unless used properly and with adequate precautions, including safety gear. Some illustrative photos do not depict safety precautions or equipment, in order to show the project steps more clearly. The projects are not intended for use by children. Many projects on Instructables are user-submitted, and appearance of a project in this format does not indicate it has been checked for safety or functionality. Use of the instructions and suggestions is at your own risk. Instructables, Inc. disclaims all responsibility for any resulting damage, injury, or expense. It is your responsibility to make sure that your activities comply with all applicable laws.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Author:chr
I like microcontrollers and LEDs :D
I made this LED cube together with my friend chiller. The build took about 4 days from small scale prototyping to completed cube. Then another couple of hours to debug some faulty transistors. The software is probably another 4-5 days of work combined.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Don't look at the color codes. This is not 100ohms.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Very tiny wire. Perfect for working on prototyping PCBs.
File Downloads
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
pricelist.xls (12 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'pricelist.xls']
Image Notes 1. 1000 leds for 16 bucks. But beware! The descriptions aren't always that great. We ordered diffused leds and got clear ones :/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Do this fast enough, and your human eyes won't know the difference! Robots may be able to see past the illusion, though.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. 8 layers 2. A 64x64 image is flashed first on layer 0 3. Then another image is flashed on layer 1 4. Wash rinse repeat
Image Notes 1. Was easier to see when I didn't draw all 64 lines
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
multiplex_theoretical.sch (21 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'multiplex_theoretical.sch']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
multiplex_alternative.sch (10 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'multiplex_alternative.sch']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Old SCSI disk 2. Inside here is a small powersupply that used to supply the SCSI hard drive that was inside.
Image Notes 1. Used a Molex connector so we could disconnect the cube easily.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. BAD This is not what we ordered! Damn you ebay!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. If you make a small indentation before drilling, the drill won't slide sideways.
Image Notes 1. All done. We used this LED to test all the holes. 2. Everything but the kitchen sink? We sort of used the kitchen sink to hold the jig in place ;)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. If the tip of your soldering iron looks like this, it is time to clean it!
Image Notes 1. This little gadget is great for cleaning your soldering iron
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Multimeter connected in series to measure mA. 2. 5 volts from power supply
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Start with this row 2. Then do this column 3. And then the rest.. 4. Don't remove the leg that sticks out to the side. It is convenient to connect ground to it when testing the LEDs.
Image Notes 1. LED ready to be soldered. Look how nicely they line up.
Image Notes 1. We marked off where we wanted to have the midway bracing, so we didn't accidentally put it in different locations in each layer :p
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Ground connected to the layer 2. 5v from power supply 3. 5 volts via resistor.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. This isn't going to be a very nice LED cube! 2. We use a 4x4x4 cube here to demonstrate.
Image Notes 1. Pin straightening paid off.. see how straight the cube is
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Pins are bent in order to make contact with the next LED
Image Notes
Image Notes
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
1. All the pins are bent and ready to receive the next layer.
Image Notes 1. We taped over the battery terminals to avoid any disasters!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. We added these 4x4x4 images to help illustrate the process.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. This is mounted on the underside of the board to hold the wires in place.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Didn't have any rubber feet that were high enough.
Image Notes 1. All the wires are bent 90 degrees. This is more than enough to hold the cube in place.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Ground wire for layer 0 2. Ground for layer 1 3. Ground for layer 2
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The connections are a bit flimsy. The cube will last a lot longer with this strain relief.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Way to little space in between the ICs. No room for resistors and connectors.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
multiplexer_board.sch (238 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'multiplexer_board.sch']
avr_board.sch (249 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'avr_board.sch']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. I got an oscilloscope for Christmas :D we used it to visualize some of the signals in the LED cube.
Image Notes 1. This is what the clock signal from a crystal looks like
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. 1 2. 2 3. 3
Step 33: Build the controller: Power terminal and filtering capacitors
The cube is complete, now all that remains is a monster circuit to control the thing. Let's start with the easiest part, the "power supply". The power supply consists of a screw terminal where you connect the GND and VCC wires, some filtering capacitors, a switch and a an LED to indicate power on. Initially, we had designed an on-board power supply using an LM7805 step down voltage regulator. However, this turned out to be a big fail. We used this with a 12V wall wart. But as you may already know, most wall warts output higher voltages than the ones specified on the label. Ours outputted something like 14 volts. The LM7805 isn't a very sophisticated voltage regulator, it just uses resistance to step down the voltage. To get 5 volts output from 14 volts input means that the LM7805 has to drop 9 volts. The excess energy is dispersed as heat. Even with the heat sink that you see in the picture, it became very very hot. Way to hot to touch! In addition to that, the performance wasn't great either. It wasn't able to supply the necessary current to run the cube at full brightness. The LM7805 was later removed, and a wire was soldered between the input and output pins. Instead we used an external 5V power source, as covered in a previous step. Why so many capacitors? The LED cube is going to be switching about 500mA on and off several hundred times per second. The moment the 500mA load is switched on, the voltage is going to drop across the entire circuit. Many things contribute to this. Resistance in the wires leading to the power supply, slowness in the power supply to compensate for the increase in load, and probably some other things that we didn't know about ;) By adding capacitors, you create a buffer between the circuit and the power supply. When the 500mA load is switched on, the required current can be drawn from the capacitors during the time it takes the power supply to compensate for the increase in load. Large capacitors can supply larger currents for longer periods of time, whereas smaller capacitors can supply small but quick bursts of energy. We placed a 1000uF capacitor just after the main power switch. This works as our main power buffer. After that, there is a 100uF capacitor. It is common practice to have a large capacitor at the input pin of an LM7805 and a smaller capacitor at it's output pin. The 100uF capacitor probably isn't necessary, but we think capacitors make your circuit look cooler! The LED is connected to VCC just after the main power switch, via a resistor.
Image Notes 1. Bottom side of power supply. See, only solder traces. No wires.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
2. This was removed later, because it couldn't deliver the needed amps.
Image Notes 1. A layer in the led cube is switched on. 2. The resulting rise in current draw makes VCC fluctuate a little
Image Notes 1. Input side not soldered yet. 2. Resistor soldered to IC 3. Resistor soldered to connector
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. GND and VCC runs along the length of the board.
Image Notes 1. VCC crosses GND once for each row of ICs
Step 36: Build the controller: Connect the ICs, 8bit bus + OE
In the picture, you'll notice a lot of wires have come into place. All the tiny blue wires make up the 8+1bit bus that connects all the latch ICs. 8 bits are for data, and the +1 bit is the output enable line. At the top of the board, we have added a 16 pin connector. This connects the latch board to the micro controller board. Next to that, you see the 74HC138. The tiny blue wires are Kynar wire. This is a 30 or 32 AWG (american wire gauge) wire. Very tiny. We love working with this type of wire. Because it is so thin, it doesn't take up that much space on the circuit board. If we had used thicker wire, you wouldn't be able to see the board through all the wires. Kynar wire is coated with tin, so you can solder directly after stripping it. No need for pre-tinning. The tiny blue wires are connected to the same pin on every latch IC. From the connector at the top, you can see 8 green wires connected to the bus. This is the 8 bit data bus. We used different colors for different functions to better visualize how the circuit is built. The orange wire connected to the bus is the output enable (OE) line. On the right hand side of the connector, the first pin is connected to ground.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
oscillator and it's two capacitors. On either side of the ATmega there is a 100nF filtering capacitor. One for GND/VCC and one for AVCC/GND. In the top left corner, there is a two pin connectors and two filtering capacitors. One 10uF and one 100nF. The LED is just connected to VCC via a resistor, and indicates power on. The large 16 pin connector directly above the ATmega connects to the latch array board via a ribbon cable. The pinout on this corresponds to the pinout on the other board. The smaller 10 pin connector to the left, is a standard AVR ISP programming header. It has GND, VCC, RESET, SCK, MISO and MOSI, which are used for programming. Next to it, there is a jumper. When this is in place, the board can be powered from the programmer. Caution: DO NOT power the board from the programmer when the actual LED cube is connected to the controller. This could possibly blow the programmer and even the USB port the programmer is connected to! The second image shows the underside. Again all GND and VCC lines are soldered as traces on the protoboard or bare wire. We had some more left over straight metal wire, so we used this. The orange wires connect the ATmega's RESET, SCK, MOSI and MISO pins to the ISP programming header. The Green wires connect PORTA to the data bus. The blue wires are the address select lines for the 74HC138 and output enable (OE) for the latch array. 1) Start by placing the 40 pin IC socket, the 10 pin ISP connector with a jumper next to it and the 16 pin data bus connector. 2) Solder in place the power connector, capacitors and power indicator LED. 3) Connect all the GND and VCC lines using solder traces or wire. Place a 100nF capacitor between each pair of GND/VCC pins on the ATmega. 4) Solder in the crystal and the two 22pF capacitors. Each capacitor is connected to a pin on the crystal and GND. 5) Run all the data bus, address select and OE wires, and the ISP wires. Transistors, buttons and RS232 will be added in later steps. At this time, the AVR board can be connected to an ISP programmer and the ATmega should be recognized.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Pull up resistors. This type of resistor is called a resistor network. It just has a bunch of resistors connected to a common pin. 2. Two and two resistors work together.
Image Notes 1. Signal goes to two transistors. 2. This point was connected to VCC after this picture was taken.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. These capacitors helps the max232 bump the voltage up to rs232 levels.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. We managed to get the colors wrong on the first try. That's why the cable in the first picture has a yellow shrink tube ;)
Image Notes 1. The GND/VCC cable connects between the two 2pin headers here.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The ground layer ribbon cable connects here. Just connect it the other way if your LED cube is upside-down ;)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
test.hex (14 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'test.hex']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
ledcube_8x8x8_eeprom.eep (1 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'ledcube_8x8x8_eeprom.eep']
ledcube_8x8x8.hex (46 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'ledcube_8x8x8.hex']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
ledcube_8x8x8-v0.1.2.tar.gz (20 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'ledcube_8x8x8-v0.1.2.tar.gz']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The interrupt routine pulls Output Enable high while running to disable the output of the latch array.
Image Notes 1. Layer 0 is on 2. Layer 1 is on 3. My oscilloscope doesn't have 8 channels, so I can only show the first two layers. 4. Output from the layer transistor lines.
Image Notes 1. The interrupt routine runs roughly 21% of the time. This leaves the remaining 79% for effect code!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. If you move the camera when taking a picture of any POV gadget, you can see the POV action. I moved the camera very fast in this picture. Yet you can barely see the effect. With a lower refresh rate, the dots and spaces would be longer
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
The %EFFECTS_TOTAL after rand() keeps the random value between 0 and EFFECTS_TOTAL-1.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Here is how it works: 1) Clear the cube by filling the buffer with 0x00; 2) For()-loop from 0 to 3. 4) Set ii to i. If grow is specified we set it to 3-i to reverse it. 5) Draw a wireframe box centered along the diagonal between 0,0,0 and 7,7,7. One corner of the box uses the coordinates 4+ii on all axes, moving from 4-7. The other corner uses 3-ii on all axes, moving from 3-0. 6) Delay for a while, then clear the cube. These two functions are used as one single effect in the effect launcher. First the shrink grow effect is called 8 times, one for each corner, then woopwoop is called four times, two shrink and grow cycles. To launch the shrink grow function, we used a for loop with some neat bit manipulation tricks inside to avoid writing 8 lines of code. The second argument of the shrink grow functions is the rotation, in 4 steps. We are counting from 0 to 7, so we can't simply feed i into the function. We use the modulo operator % to keep the number inside a range of 0-4. The modulo operator divides by the number specifies and returns the remainder. The third argument is the flip. When flip = 0, the cube is not flipped. > 0 flips. We use the bitwise AND operator to only read bit 3 of i. Bitwise operators are an absolute must to know about when working with micro controllers, but that is outside the scope of this instructable. The guys over at AVR Freaks have posted some great information about this topic. You can read more at http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=37871
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Takes an ASCII character as input and returns a bitmap of the character.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
cube_pc-v0.1.tar.gz (82 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'cube_pc-v0.1.tar.gz']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
The Arduino has 13 GPIO pins and 8 analog inputs, which can also be used as GPIO. This gives you a total of 21 IO lines, exactly the amount of IO needed to run the LED cube! But why write about it when we could just show you? We hooked the cube up to an Arduino and ported some of the software. Since the multiplexer array and AVR board are separated by a ribbon cable, connecting the IO lines to an Arduino is a simple matter of connecting some breadboard wires. Luckily, we soldered in a female 0.1" pin header for the transistor lines when we were debugging the first set of transistors. Just remove the ATmega and connect wires from the Arduino to these pin headers. We connected the cube like this: DATA bus: Digital pins 0-7. This corresponds to PORTD on the ATmega328 on the Arduino board, so we can use direct port access instead of Arduinos digitalWrite (which is slow). Address bus: Digital pins 8-10. This corresponds to PORTB bit 0-2. On this we HAVE to use direct port access. Arduinos digitalWrite wouldn't work with this, because you can't set multiple pins simultaneously. If the address pins are not set at the exact same time, the output of the 74HC138 would trigger the wrong latches. Output Enable: Digital pin 11. Layer transistors: Analog pins 0-5 and digital pins 12 and 13. We had to go a bit outside the scope of the Arduino platform. The intention of Arduino is to use digitalWrite() for IO port access, to make the code portable and some other reasons. We had to sidestep that and access the ports directly. In addition to that, we had to use one of the timers for the interrupt routine. The registers for the interrupt and timers are different on different AVR models, so the code may not be portable between different versions of the Arduino board. The code for our quick Arduino hack is attached.
Image Notes 1. ATmega temporarily removed 2. Layer select lines can be connected to this header, without the ATmega interfering.
File Downloads
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
arduinocube.pde (12 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'arduinocube.pde']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
LED Cube 3x3x3 Making a with ATMEGA8 flexible ring of by LED's by G7Electronica.NET contrechoc
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
UPDATE: You can help bring Power Laces to market! Click here to Support the Future! Also, check out Power Laces: Version 2.0
Why wait until 2015? Inspired by 'Back to The Future II', this project is less 'Practical' than 'Proof of Concept', but hopefully it'll tide you over until Nike comes out with something more polished. This was also the first time I worked with an Arduino microcontroller, and I wanted to get some experience with the little guy. Operation is quite simple- step into the shoe and a force sensor reads the pressure of your foot and activates two servo motors, which apply tension to the laces, tightening the shoe. A touch switch reverses the servos. Due to budget constraints, I only modified one shoe. Where did I put that darn sports almanac?! And if you get a chance, vote for me in the Instructable USB contest!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Just wait until everyone at the Airport sees your new kicks!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Got your hat and shoes, now don't forget all kids in the future wear their pants inside-out.
Image Notes 1. My lab is also a kitchen. 2. Time to go kick it at the Cafe 80s
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Surprisingly wearable! 2. I should get around to cleaning this mirror, eventually.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Ignore this- was just for protyping 2. Fit the shell onto the Zip tie.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Melt end with a lighter, and heat about 1/4" near the end to lightly glaze- this should probably be done in a well ventilated area.
Image Notes 1. This wire was for prototyping to keep the zip tie in place. Later removed. 2. These were later replaced with larger plastic loops.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. I ran out of screw nuts, so I reused the "heads" from the zip ties. I put a little hot glue on the screw tips afterward to prevent it from scratching anything.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. If the loop is too small, the laces won't "unlace" properly. 1/2" seems good enough so the untightened lace will "stand out" a bit on it's own.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. I didn't have to drill- this metal lace holder thing was loose and came right off.
Image Notes 1. I still melted the nylon down a bit, but kept the head on this one attached. I then screwed it into place to secure it.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. You want to make sure the ankle strap has enough give to let your foot in and out of the shoe easily.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. These holes were made for a geared motor I originally used. I later replaced it with servos for greater control, but the mounting holes on the servos weren't in the right place, hence the need for zip ties later.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The battery case is held in place with a zip tie on both sides. It's tight enough to keep it from falling out, but I can still change the battery as needed.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Force Sensor 2. LED (later removed the the metal shell) 3. Science! 4. Later wound up and turned into touch sensor
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Lookin' subtle- nice contract to the rest of this contraption :)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Positive LED wire to digital pin 2 2. I didn't have any working push-button switches, but I found that just touching the wire was enough to change the flow of current and could act as a switch by itself.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
Power_Laces_6_28_550AM_1_0.pde (2 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Power_Laces_6_28_550AM_1_0.pde']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Plantduino Greenhouse
by clovercreature on June 12, 2011
UPDATE 7/9/11: The AC power fed relay has been replaced with a DC battery fed relay system as shown in step 10. UPDATE: We have been selected as finalists in the microcontroller contest! Thank you for voting and rating. Thank you also for all the feedback on the safety of out relay system. We hope the new instructions are clear. We will be continually updating as we make progress on the new design. Hello Everyone! My name is Clover and I am in love with vascular plants and robots. This summer I wanted to combine my two loves of plant science and engineering. Thus I am constructing my very own greenhouse in my backyard. I am an undergrad, and as any former student knows, this means I move around constantly, and I am not always around to take care of my vegetable garden. I love my plants but since I am moving back to school in July, and my family is unreliable, I need a way to make sure that they are taken care of. Enter Arduino! I have constructed an automated watering and temperature system. This includes sensors that will turn the systems on only when needed. This is essential when the ever-changing New England weather demands some intelligence in watering and heating patterns. This is my first project using an Arduino so I am using wonderful articles from MAKE and Instructables as very helpful templates. Already the Instructables, MAKE, and Ladyada blogs have been ridiculously helpful so, worry not biology nerds, you too can show the engineers just how awesome we are!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Where the growth happens 2. or epidermal tissue 3. where photosynthesis takes place 4. Where the water and nutrients are stored and moved around throughout the plant
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Apical Bud: Main longitudal growth 2. main latitudinal growth 3. Growth in the roots
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
be between 6.5-7.5. You can test this by purchasing a pH soil tester. I bought the Luster Leaf 1612 Rapitest pH Soil Tester from Amazon for about $5. It is not the most precise way to measure pH, but it gives you a nice range. Also, this test has a chart with what to add if your soil is too basic or acidic. Seed Planting Planting seeds is very easy. In all cases, read the back of the packet your seeds came in. There should be a chart with depth and spacing requirements for that particular plant. Absolutely follow those spacing requirements or you are going to have a lot of trouble down the road. Also, only plant one or two seeds per spot. I made the mistake of planting a bunch of strawberry seeds in one plot (the seeds were so small!!!) and I have about 10 tiny strawberry plants that can't get any bigger because they are entangled in each other and there are not enough resources for them all. Right after you plant them, make sure the soil is thoroughly moist. Watering is important and for most plants, should be daily. However, the plants are delicate, especially when they are developing stem systems, so water carefully.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. This is what not to do. I planted a whole bunch of strawberry seeds and now I have a whole bunch of strangled strawberry plants
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. This overhang is not essential. It was just a cosmetic choice.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 6: Build the Greenhouse: Step 5 Add the back and the door
To make the end pieces we cut a small piece of the plastic and then draped it over the frame making sure it could touch the ground. Then we simply just ziptied it to the PVC frame, making sure the plastic was held firm. As we ziptied the back wall we held the plastic as tight as we could. For the front, we left some slack so that the doors could close all the way. Finally we cut a slit in the front to make the doorway and secure the tear with pieces of duct tape. We lined the duct tape with the industrial Velcro so that the door can be opened and closed securely.
Image Notes 1. We made closed the flaps with industrial grade velcro 2. Make sure to put duct tape over the cut in the plastic so that your door won't continue to rip
Image Notes 1. We also put this waterproof tape over the holes from the zipties.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The trench is about 10" wide and 5" deep. The specs don't matter as much as the barrier from the ever encroaching grass. It took two bags of bluestone to fill our trench.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Hose connector 2. Valve- you may need to add plumbers tape to the threads so that the nozzles fit on as tight as possible. 3. cord to the Wall Wart 4. Sprinkler Connection 5. Hose connected to water source
Image Notes 1. Battery over 12 volts 2. 12 Volt Regulator 3. relay 4. V in 5. Ground 6. Solenoid valve
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Test the nails using dry, perfect, and water saturated soils. You will want to calibrate your soils to your own watering habits and garden needs. These numbers are completely dependent on your own nail specs though.
Image Notes 1. Hose connector 2. Valve- you may need to add plumbers tape to the threads so that the nozzles fit on as tight as possible. 3. cord to the Wall Wart 4. Sprinkler Connection 5. Hose connected to water source
Image Notes 1. Attach components so that the arrow on the valve is pointing towards the sprinkler system.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. we used zipties to attach this part to the deck so that the wall- wort can easily reach the relay box in the birdhouse
Image Notes 1. place the moisture sensors in a place that is representative for the entire garden
Image Notes
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
1. make sure to snake the irrigation tubing in the garden so that all the plants are watered equally
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Connect pins 23, 24, and 25 to screw terminals as shown. These pins are the analog pins used for the sensors (moisture, temperature, and light). R1 is 10k ohms. Do not connect all the sensors to the same screw terminal. Three terminals each with two sockets are needed to connect all three sensors.
Image Notes 1. The crystal and capacitors connect to pins 9 and 10 as shown. These will help the microcontroller keep proper time. C1 and C2 are 22pF. The crystal is 16Mhz.
Image Notes 1. The power and ground on the left of the LCD in this diagram supply power to the back light. DB7, DB6, DB5, and DB4 communicate with the microcontroller to display text. Vo is the contrast pin. You will have to experiment with different
Image Notes 1. The power plug is supplying 9 volts to the 7805 power regulator. 9 volts goes "IN". The ground of the 9 volt power plug goes to the middle "GND" pin of the regulator. "OUT" supplies 5 volts to the microcontroller. C1 and C2 both have their negative leads connected to ground. The power plug and microcontroller share the same ground. C1 has its positive lead connected to 9 volts. C2 has its positive lead connected to 5 volts. Both C1 and C2 are 10uF. 2. Don't forget to connect the power and ground on the other side of the chip!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
resistors to see which gives your LCD the best contrast. You can also use a 10k potentiometer if you wish. The LCD will be connected to arduino pins 7, 8, 9, 10, 11, and 12 which are shown here on the atmega pins 13 through 18.
Image Notes 1. The arrows above are male headers used for reprogramming the board. 8 is ground. 7 is 5 volts. 3 is TX. 2 is RX. 1 is reset. R1 is 10k ohms. C1 is 100nF.
Image Notes 1. Connect pins 5, 6, 11, and 12 to their own screw terminals as shown with pin 5. These correspond with arduino pins 3, 4, 5, and 6 and will be used for controlling the relays.
Image Notes 1. Atmega 2. LCD hookup pins 3. analog sensors 4. relay outputs 5. programming cables
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. LCD wires are connected on the back of the board
Image Notes 1. The resistor here connects to pins 1 and 3 of the LCD and controls the contrast. You can use a 10 k potentiometer instead if you don't want to bother testing resistors to find what value works with your screen
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. 10 k resistor goes from reset pin to 5 volts 2. DO not forget this 100nF capacitor! you need it to allow programming communication.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Securely Attach it to house 2. These windows were cut out so that the plug from the relay bow could reach the extension cord
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. We nailed the board to pieces of wood that are offset from the back for easy access to the screw terminals 2. Relay box goes into the bottom shelf of the birdhouse 3. Wallwart that is connected to the solenoid valve (make sure it is plugged into the right outlet!) 4. cord from relay box going to outdoor extension cord 5. wall-wart from the arduino going to the outdoor extension cord
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. LCD screen displaying temperature and watering status of the greenhouse, including Celsius and F readings.
Image Notes 1. Transparent plastic protecting the screen from water damage 2. snake cords through the windows
Image Notes 1. make sure to snake the irrigation tubing in the garden so that all the plants are watered equally
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. place the moisture sensors in a place that is representative for the entire garden
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Since that first video, we've been hacking on and developing the project, and we have a new design, which we've called "eyewriter 2.0" which improves the accuracy of the device, and allow for people who's heads are moving slightly to also use an eye tracker. The original eyewriter, designed for a paralyzed Graffiti artist TEMPT1, is designed to be worn on a completely motionless head. The 2.0 design, which uses a camera and LED system mounted away from the head, can be used by people whose heads are moving slightly, such as MS patients, and people who wear glasses, etc. This eyewriter system is cheap, and completely open source. At the moment, it costs about 200$ in parts. Traditional commercial eye trackers costs between $9000$20,000, so this is a magnitude of order cheaper, and is designed to help anyone who wants or needs an eyetracker. This fall, we've been showing off and demoing the 2.0 device -- check out the eyewriter 2.0 in action -- we even hooked it up to a robotic arm, to draw the artwork people make with their eyes: http://www.switched.com/2010/12/13/eyewriter-teams-up-with-robotagger-to-print-kids-ocular-artwork/print/ (The 2.0 device was designed with help and input from Takayuki Ito, Kyle McDonald, Golan Levin and students of the eyewriter collab at Parsons MFADT. Thanks also to the Studio for Creative Inquiry / CMU for hosting a session for development)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 1: Overview
The basic idea approach is that we'll be doing a few things. First, we'll be making LED illuminators for the sides of the screen and the center. Second, we'll be hacking the PS3 eye camera to get the vertical sync (when the frame of video is being taken) and to make it sensative to IR. Third, we'll be programming and building the arduino / cirucit to control the blinking. Finally, we'll setup the base for the system and go through the basics of the software. From a technical perspective, the 2.0 system works by strobing 3 IR illuminators every frame. On even frames, it uses the center illuminator (located around the camera lens) and on odd frames it uses the 2 side illuminators. On even frames, the pupil appears bright, since the IR light is actually bouncing off the back of your eye, like red eye effect. On odd frames, your pupil appears dark. The difference between the two allows us to isolate and track the pupil in realtime. Additionally, the glints (reflections of the IR illuminators) of the dark frame are tracked, and these, plus the info on the pupil, is calibrated to screen position using a least squares fitting process for an equation that provides a mapping of glint/pupil position to screen position.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
B. openFrameworks Openframeworks is a c++ library designed to assist the creative process by providing a simple and intuitive framework for experimentation. Download and install openFrameworks if necessary. http://www.openframeworks.cc/download
C. EyeWriter GitHub GitHub is a web-based hosting service for projects that use the Git revision control system. It is a platform that allows people to exchange and share code. Visit the EyeWriter source page on GitHub. http://github.com/eyewriter/eyewriter/tree/remoteEyetracker Click Download Source on the top right menu. Choose ZIP format. After download is complete, unzip the file and place the "eyewriter-xxxxxxx" folder into openFrameworks "apps" folder. Open the "apps/eyewriter-xxxxxxx/eyeWriterTracker/RemoteEyeTracker.xcodeproj" file to test that all installations are working correctly. The source code should load in your IDE software. please be sure you're compiling for your current Operating System (the eyewriter software was originally compiled for OSX 10.5 so you might need to change compiling from 'base SDK' to 'OSX 10.6') Build and Run the source code. The Tracking screen should load in video demo mode.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Using a short strip of red and black wire, solder the red wire to the adapters positive wire, and solder the black wire to the adapters negative wire.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. From overhead, take note of which direction the wire bond points relative to positive and negative. Setup a circuit of 4 LEDs in series, in parallel with another set of 4 LEDs in series. Image Notes 1. To build LED arrays on the PCBs youll need to know the positive and negative ends of each LED. Generally speaking the longer leg of the LED is the anode (positive), and the shorter leg is the cathode (negative).
Image Notes 1. Clip the legs of the LEDs and solder them together.
Image Notes 1. After soldering the LED legs together to form the circuit, solder about 2 feet (60 centimeters) of the red & green intercom wire to the LED circuits positive & negative ends.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. After confirming your IR LEDs are working, cover the back of the LED PCB panel with hot glue to keep all connections in place.
Image Notes 1. To test the LED PCB panel, build the circuit below. Look carefully to see if your IR LEDs are glowing a faint red.
Image Notes 1. Using a larger round PCB, carefully drill press a hole into the center of the board.
Image Notes 1. On the outer rim of the PCB, build a circuit of 4 parallel sets of 4 LEDs in series. The placement of the LEDs should allow the PS Eye camera to fit through snugly, without the camera blocking the LEDs.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. After soldering the LED legs together to form the circuit, solder wiring to connect all 4 positive ends together and all 4 negative ends together, putting all 4 LED sets in parallel.
Image Notes 1. To test the larger LED PCB panel, build the circuit below. Look carefully to see if your IR LEDs are glowing a faint red.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Get a PlayStation (PS) Eye camera. Use at your own risk because the camera will undergo modifications voiding its warranty.
Image Notes 1. Pry the four plastic screw caps off the back of the casing.
Image Notes 1. Unscrew the four screws underneath where the screw caps were. Keep these screws because you will need some later.
Image Notes 1. With all four screws removed, pry off the back half of the casing. A flathead screwdriver and hammer, or a pair of pointed pliers should work. It requires significant force so be very careful not to damage anything inside or hurt yourself.
Image Notes 1. Pull the cord aside and unscrew the two bottom screws beside the plastic
Image Notes 1. Pull the cord aside and unscrew the two bottom screws beside the plastic
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Unscrew the five screws around the board (two screws on the side, three screws on top). Keep these screws also.
Image Notes 1. With all five screws removed, lift the board out of the front casing.
Image Notes 1. There are four microphones across the top of the board. Using wire cutters, clip off the microphones because they won't be used.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. There are four microphones across the top of the board. Using wire cutters, clip off the microphones because they won't be used.
Image Notes 1. Locate the Ground joint on your PS Eye board. Some PS Eye models have 5 joints near the lens mount (left image below), while some have 4 joints (right image below). If your model has 5 joints, the Ground joint is at the end closest to the lens mount. If your model has 4 joints, the Ground joint is also at the end closest to the lens mount, and twice as wide as the other joints.
Image Notes 1. Cut about 2 feet (60 centimeters) of your 4-color intercom wire, and split the red and green from the black and white.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Split the red and green wire about 2 inches (5 centimeters) from one end, and strip off a small section of insulation at the end of the green wire. The green wire will be soldered to the PS Eyes Ground joint. Clip the PS Eye board and green wire to a stand, and prepare to solder the green wire tip to the Ground joint. Use a piece of thick paper or cardboard in between the clips teeth to prevent scrapes on the board.
Image Notes 1. Locate the V-Sync via on the board. Its the via circled in the image below.
Image Notes 1. for more recent models of the PSEye camera (identified by the golden rim around the board) the VSync hotspot can be found on the front of the PCB, directly above the R19 resistor
Image Notes 1. Using a sharp knife, carefully pivot the knife tip on the via, and scrape off enough insulation coating to expose the metal contact below.
Image Notes
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The red wire needs to connect to the exposed V-Sync via, but the wire is too thick to be soldered neatly to the small via, so a 30 gauge wire will be used in between. Strip the ends of a 2 piece of 30 gauge wire. Shorten the red wire, then solder one end of the 30 gauge wire to the end of the red wire.
1. Before soldering the 30 gauge wire to V-Sync, a test should be performed to ensure all connections are correct. Build the circuit below. When the 30 gauge wire contacts the V-Sync via, the LED on the breadboard should flicker rapidly.
Image Notes 1. Unscrew the 2 screws holding the lens in place. Be careful not to break the fragile V-Sync connection. Detach the lens and keep both screws.
Image Notes 1. Measure the square opening of the new lens mount. Cut a square from the filter sheet that is minutely smaller, and place it into the lens mount opening.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. With the filter in place, screw in the new lens mount. This will require some force, and one screw will go in at an angle because the new lens mount is a little too big for the board.
Image Notes 1. Screw the new lens into the new lens mount on the board.
Image Notes 1. Use hot glue to cover and secure the V-Sync connection.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
step 1: align the 2 pieces (C) with the third piece (C) as shown in the picture, clamp them together and drill through them at approx. 3/4inch close to the edge. see image here step 2: using the two pieces (C) that have the same holes aligned, place each of them on the edges of the piece (B), clamp the aligned (see picture for example) and drill a hole through them till about 1 1/2 inch deep on the (B) piece. use the short wood rods and put them throught the holes in the piece(B) edges and through each of the pieces(C) see image here step 3: drill a hole with enough diameter for the tripod head mount screw see image here v step 4: with the bottom bar(B) and edge pieces (C) assembled, insert the rods (A) through the holes aligning them with the bottom bar length. see image here
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
In this step we will take you around the eyeWriter software so that you can set it up. Focus your camera by selecting Focus Screen on the first tab of the Computer Vision (CV) panel on the right. Rotate the lens of your camera until both video feeds look sharp, then deselect Focus Screen to return to the Tracking screen. Select load video settings on the first tab of the right panel. see image here For PS3 Eye Camera: Ideally you want a bright, balanced image with minimal noise. An example image is shown below. Under the Webcam tab, slide the Gain and Shutter settings back and forth until the video looks ideal. Under the Compression tab, if youre using a faster computer set your Frames per second (Fps) to 30. If youre using a slower computer set your Fps to 15.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
How To Start Your Own Graffiti Research Lab by fi5e
How 2.0: Hack a Bat - the Ryan Howard Speed Test by 2pointhome
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.sparkfun.com/datasheets/Components/SMD/sc16is750.pdf http://www.sparkfun.com/datasheets/Wireless/WiFi/WiFlyGSX-um.pdf http://www.sparkfun.com/datasheets/Wireless/WiFi/rn-131G-ds.pdf http://www.societyofrobots.com/microcontroller_uart.shtml Related: nlp.stanford.edu/courses/cs224n/2009/fp/22.pdf www.webservius.com/corp/docs/tweetfeel_sentiment.htm i8news.uterm.org/mood/twitter-mood-reader/ community.openamplify.com/content/docs.aspx/ www.instructables.com/id/The-Twittering-Office-Chair/ http://www.tweetfeel.com
Image Notes 1. 1 x (5" x 5" x 0.25") - the top 2. 4 * (4.75" x 4.75" x 0.25") - the 4 walls 3. sandpaper 4. Acrylic solvent cement 5. 4 x (4.25 x 1" x 0.25") - the 4 inside walls 6. 1 x (4.5" x 4.5" x 0.25") - the base 7. 1 x (4.5" x 4.5" x 0.125") - the mirror with a 6mm hole drilled in the middle Image Notes 1. wire 2. Wifly Shield 3. Arduino Duemilanove 4. RGB LED 5. Breakaway headers 6. 3x resistors (2x100 ohm,1x180 ohm) 7. 9v battery and Barrel Jack Adapter 8. Pliers 9. Wire cutters 10. USB Cable A to B 11. small printed circuit board
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
2. very rarely express the opposite emotion or no emotion. Many search phrases that I thought would work, turned out to not work that well when I searched with them. Smileys have been used with some success to extract whether the sentence is positive or negative, but I didn't find them useful for extracting anything more. The trouble with smileys is that a smile can mean so many things ;D It is often used, it seems, as a kind of qualifier for the whole sentence; since people have to compress their thoughts into 140 characters, the meaning can become ambiguous. The smiley often then acts as a qualifier that: 'this is a friendly comment' 'don't take this the wrong way' 'i am saying hello/goodbye with a smile' 'this is almost a joke' 'I know I'm being cheeky' 'I don't really mean this' Phrases using adverbs seemed to produce better results. "so scared" or "really scared" is better than just "scared" which returns bad results: for example, "not scared". Phrases in the first person seemed to produce better results. Some search phrases give tweets that suggest the author feels the emotion: for example, "i really hate...", often sounds like they really are full of hate or angry, whereas other phrases containing the word "hate" give tweets that do not seem to express much emotion, like "why do you hate..." Hyperbole is your best friend, ever: Using phrases with hyperbole produced good results. Tweets with "I'm terrified" or "I'm petrified" in them were generally more fearful sounding than "I'm scared" Regardless, the approach is still naive, but statistically, from my tests, it does seem to work well. While testing the code, I did at one point get the horribly ominous "Flashing White" that signifies the world is feeling intense fear , but since I was still testing it all, I did not hide under the table straight away, but instead, threw caution to the winds, and went on to Twitter to see what people were suddenly so fearful about. The recent tweets containing the Fear search string (see top of page) were largely relating to a large thunderstorm that had just started somewhere near Florida. If you're interested, here are some of those tweets: "Ahhh Thunder I'm so scared of Thunder !!!!! Help some 1" "I'm so scared of lightning now. Like I just ran home praying " "On our way to Narcosses at @Disney world's Grand Floridian hotel and there's a tropical storm right now. I'm terrified! ..." "I'm in my bathroom til the rain stops. I'm terrified of lightning and thunder..." "I'm terrified of thunder storms *hides in corner*" "I'm terrified of Thunder :(" "If only I was wit my becky during this thunderstorm cause I'm really scared cause of a bad experience" So... it works! ...Well, it needs the numbers tweaking to ignore the world's "tantrums", the short-lived fits of emotional outburst, and be more concerned with larger changes that signify bigger news.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
// edit TWEETS_PER_PAGE if changing the rpp value prog_char string_0[] PROGMEM = "GET /search.json?q=\"i+love+you\"+OR+\"i+love+her\"+OR+\"i+love+him\"+OR+\"all+my+love\"+OR+\"i'm+in+love\"+OR+\"i+really+love\"&rpp=30&result_type=recent"; prog_char string_1[] PROGMEM = "GET /search.json?q=\"happiest\"+OR+\"so+happy\"+OR+\"so+excited\"+OR+\"i'm+happy\"+OR+\"woot\"+OR+\"w00t\"&rpp=30&result_type=recent"; prog_char string_2[] PROGMEM = "GET /search.json?q=\"wow\"+OR+\"O_o\"+OR+\"can't+believe\"+OR+\"wtf\"+OR+\"unbelievable\"&rpp=30&result_type=recent"; prog_char string_3[] PROGMEM = "GET /search.json?q=\"i+hate\"+OR+\"really+angry\"+OR+\"i+am+mad\"+OR+\"really+hate\"+OR+\"so+angry\"&rpp=30&result_type=recent"; prog_char string_4[] PROGMEM = "GET /search.json?q=\"i+wish+i\"+OR+\"i'm+envious\"+OR+ \"i'm+jealous\"+OR+\"i+want+to+be\"+OR+\"why+can't+i\"+&rpp=30&result_type=recent"; prog_char string_5[] PROGMEM = "GET /search.json?q=\"i'm+so+sad\"+OR+\"i'm+heartbroken\"+OR+\"i'm+so+upset\"+OR+\"i'm+depressed\"+OR+\"i+can't+stop+crying\"&rpp=30&result_type=recent" ; prog_char string_6[] PROGMEM = "GET /search.json?q=\"i'm+so+scared\"+OR+\"i'm+really+scared\"+OR+\"i'm+terrified\"+OR+\"i'm+really+afraid\"+OR+\"so+scared+i\"&rpp=30&result_type=recent" ; // be sure to change this if you edit the rpp value above #define TWEETS_PER_PAGE (30) PROGMEM const char *searchStrings[] = { string_0, string_1, string_2, string_3, string_4, string_5, string_6, }; void setup() { Serial.begin(9600); delay(100); } void loop() { // create and initialise the subsystems WiFly wifly(network, password, SLEEP_TIME_BETWEEN_SEARCHES, Serial); WorldMood worldMood(Serial, emotionSmoothingFactor, moodSmoothingFactor, moderateMoodThreshold, extremeMoodThreshold, tempramentRatios); LED led(Serial, redPin, greenPin, bluePin, fadeDelay); TwitterParser twitterSearchParser(Serial, TWEETS_PER_PAGE); wifly.Reset(); char searchString[160]; while (true) { for (int i = 0; i < NUM_MOOD_TYPES; i++) { twitterSearchParser.Reset(); // read in new search string to SRAM from flash memory strcpy_P(searchString, (char*)pgm_read_word(&(searchStrings[i]))); bool ok = false; int retries = 0; // some recovery code if the web request fails while (!ok) { ok = wifly.HttpWebRequest(remoteServer, searchString, &twitterSearchParser); if (!ok) { Serial.println("HttpWebRequest failed"); retries++; if (retries > 3) { wifly.Reset(); retries = 0; } } } float tweetsPerMinute = twitterSearchParser.GetTweetsPerMinute(); // debug code Serial.println(""); Serial.print(moodNames[i]); Serial.print(": tweets per min = "); Serial.println(tweetsPerMinute); worldMood.RegisterTweets(i, tweetsPerMinute); } MOOD_TYPE newMood = worldMood.ComputeCurrentMood(); MOOD_INTENSITY newMoodIntensity = worldMood.ComputeCurrentMoodIntensity(); Serial.print("The Mood of the World is ... "); Serial.print(moodIntensityNames[(int)newMoodIntensity]); Serial.print(" "); Serial.println(moodNames[(int)newMood]); led.SetColor((int)newMood, (int)newMoodIntensity); // save the battery wifly.Sleep(); // wait until it is time for the next update delay(SLEEP_TIME_BETWEEN_SEARCHES);
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Serial.println(""); } }
File Downloads
WorldMood.zip (18 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'WorldMood.zip']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
m_printer->println("Failed to init SPI<->UART chip"); return false; } } /* A series of register writes to initialize the SC16IS750 SPI-UART bridge chip see http://www.tinyclr.com/downloads/Shield/FEZ_Shields_WiFly.cs */ void WiFly::SPI_UART_Init(void) { WriteByteToRegister(LCR,0x80); // 0x80 to program baudrate WriteByteToRegister(DLL,SPI_Uart_config.DivL); //0x50 = 9600 with Xtal = 12.288MHz WriteByteToRegister(DLM,SPI_Uart_config.DivM); WriteByteToRegister(LCR, 0xBF); // access EFR register WriteByteToRegister(EFR, SPI_Uart_config.Flow); // enable enhanced registers WriteByteToRegister(LCR, SPI_Uart_config.DataFormat); // 8 data bit, 1 stop bit, no parity WriteByteToRegister(FCR, 0x06); // reset TXFIFO, reset RXFIFO, non FIFO mode WriteByteToRegister(FCR, 0x01); // enable FIFO mode }
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
WriteToWiFlyCR(port_listen); WaitUntilReceived(AOK, ERR); // Deactivate remote connection automatic message WriteToWiFlyCR("set comm remote 0"); WaitUntilReceived(AOK, ERR); // Join wireless network WriteToWiFly("join "); WriteToWiFlyCR(m_network); delay(DEFAULT_TIME_TO_JOIN); bool ok = WaitUntilReceived("IP="); delay(DEFAULT_TIME_TO_WAIT); FlushRX(); if(ok == false) { m_printer->print("Failed to associate with '"); m_printer->print(m_network); m_printer->println("'\n\rRetrying..."); FlushRX(); AutoConnect(); } else { m_printer->println("Associated!"); ExitCommandMode(); } // TODO save this configuration } /* Enter command mode by sending: $$$ Characters are passed until this exact sequence is seen. If any bytes are seen before these chars, or after these chars, in a 1 second window, command mode will not be entered and these bytes will be passed on to other side. */ void WiFly::EnterCommandMode() { FlushRX(); delay(1000); // wait 1s as instructed above m_printer->println("Entering command mode."); WriteToWiFly("$$$"); WaitUntilReceived("CMD"); } /* exit command mode send the "exit" command and await the confirmation result "EXIT" */ void WiFly::ExitCommandMode() { WriteToWiFlyCR("exit"); WaitUntilReceived("EXIT"); }
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
return ok; }
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
each step. No effort is made to scale the step size for each rgb channel so each may not complete at the same time. */ void LED::FadeTo(int desiredColorID) { // check for valid colorID if (desiredColorID >= NUM_COLORS || desiredColorID < 0) { //logger.log("invalid Color id") return; } // get a local copy of the colors Color currentColor; currentColor.r = Colors[m_currentColorID].r; currentColor.g = Colors[m_currentColorID].g; currentColor.b = Colors[m_currentColorID].b; Color desiredColor; desiredColor.r = Colors[desiredColorID].r; desiredColor.g = Colors[desiredColorID].g; desiredColor.b = Colors[desiredColorID].b; bool done = false; while (!done) { // move each of r,g,b a step closer to the desiredColor value if (currentColor.r < desiredColor.r) { currentColor.r++; } else if (currentColor.r > desiredColor.r) { currentColor.r--; } if (currentColor.g < desiredColor.g) { currentColor.g++; } else if (currentColor.g > desiredColor.g) { currentColor.g--; } if (currentColor.b < desiredColor.b) { currentColor.b++; } else if (currentColor.b > desiredColor.b) { currentColor.b--; } // write the new rgb values to the correct pins analogWrite(m_redPin, 255 - currentColor.r); analogWrite(m_greenPin, 255 - currentColor.g); analogWrite(m_bluePin, 255 - currentColor.b); // hold at this color for this many ms delay(m_fadeDelay); // done when we have reach desiredColor done = (currentColor.r == desiredColor.r && currentColor.g == desiredColor.g && currentColor.b == desiredColor.b); } // while (!done) m_currentColorID = desiredColorID; }
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
for (int i = 0; i < NUM_MOOD_TYPES; i++) { m_worldMoodRatios[i] = m_worldMoodCounts[i] / sum; } // find the ratio that has increased by the most, as a proportion of its moving average. // So that, for example, an increase from 5% to 10% is more significant than an increase from 50% to 55%. float maxIncrease = -1.0f; for (int i = 0; i < NUM_MOOD_TYPES; i++) { float difference = m_worldMoodRatios[i] - m_worldTemperamentRatios[i]; if (m_worldTemperamentRatios[i] < 1e-4f) { #ifdef DEBUG m_printer->print("unexpected m_worldTemperamentRatios"); #endif // ifdef DEBUG continue; } difference /= m_worldTemperamentRatios[i]; if (difference > maxIncrease) { maxIncrease = difference; m_worldMood = (MOOD_TYPE)i; // this is now the most dominant mood of the world! } } // update the world temperament, as an exponential moving average of the mood. // this allows the baseline ratios, i.e. world temperament, to change slowly over time. // this means, in affect, that the 2nd derivative of the world mood wrt time is part of the current mood calcuation. // and so, after a major anger-inducing event, we can see when people start to become less angry. sum = 0; for (int i = 0; i < NUM_MOOD_TYPES; i++) { if (m_worldTemperamentRatios[i] <= 0) { #ifdef DEBUG m_printer->print("m_worldTemperamentRatios should be initialised at construction"); #endif // #ifdef DEBUG m_worldTemperamentRatios[i] = m_worldMoodRatios[i]; } else { const float a = m_moodSmoothingFactor; m_worldTemperamentRatios[i] = (m_worldTemperamentRatios[i] * (1.0f - a)) + (m_worldMoodRatios[i] * a); } sum += m_worldTemperamentRatios[i]; } if (sum < 1e-4f) { #ifdef DEBUG m_printer->print("unexpected total m_worldTemperamentRatios total"); #endif // #ifdef DEBUG return m_worldMood; } // and finally, renormalise, to keep the sum of the moving average ratios as 1.0f for (int i = 0; i < NUM_MOOD_TYPES; i++) { m_worldTemperamentRatios[i] *= 1.0f / sum; #ifdef DEBUG m_printer->print("temperament ratio: "); m_printer->println(m_worldTemperamentRatios[i]); #endif } #ifdef DEBUG // debug code - check sum is 1. sum = 0; for (int i = 0; i < NUM_MOOD_TYPES; i++) { sum += m_worldTemperamentRatios[i]; } if (sum > 1.0f + 1e-4f || sum < 1.0f - 1e-4f) { m_printer->println("unexpected renormalise result"); } #endif // #ifdef DEBUG return m_worldMood; }
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
How to Make an LED Ambient USB MOOD Mood Light: A DETECTOR Beginner BOT. (Photos) by Tutorial by Mr.Sanchez elevenbytes
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Flamethrowing Jack-O'-Lantern
by randofo on October 18, 2011
Author:randofo
Randy Sarafan loves you! I am the Technology Editor here at Instructables. I am also the author of the books 'Simple Bots,' and '62 Projects to Make with a Dead Computer'. Subscribing to me = fun and excitement!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 3: Gut it
Remove the guts from the pumpkin. To start it should be easy simple to pull them out by hand, but this is going to quickly become too difficult. Using a metal spoon or other scraping tool (I found a chisel works best) scrape the sides of the pumpkin and remove all of the slimy innards. The inside should be reasonably smooth and clean when it is done.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 5: Trace
With a marker, trace the outline of the face onto the pumpkin and remove the paper.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 6: Cut
Cut out the pumpkin's face. For the larger and more complicated shapes like the mouth, it help to cut it out in smaller pieces instead of trying to remove one large chunk from the pumpkin.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 7: Bend
Make a mark about 6" from one of the edges of the aluminum extrusion. Line up this mark with the edge of the workbench and clamp it between the workbench and something stiff and flat like a 2x4 or metal bar. Grab the protruding edge firmly and push down until it is bent to 90 degrees. In doing so, you may want to push it slightly past 90 degrees as the aluminum tends to spring back a little when done.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 8: Brackets
Download the following files for the motor mount and candle holder. Use these files as cutting guides to cut the pieces out of 1/8" acrylic. At times like these, having a laser cutter or using a laser cutter service comes in handy.
File Downloads
FTPCandle.eps (106 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'FTPCandle.eps']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
When done, disconnect the USB power, change the power selection jumper, and plug the XBee shield back in.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
FTPumpkin.pde (392 bytes) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'FTPumpkin.pde']
void setup() { // initialize serial communication: Serial.begin(9600); // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop(){ // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) { // turn LED on: digitalWrite(ledPin, HIGH); //transmit a High command to the pumpkin and delay a second so that it does not recieve more than one command //per button press Serial.println('h'); delay(1000); } else { // turn LED off: digitalWrite(ledPin, LOW); }
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
When you are done, unplug the USB, and reconnect the XBee shield. You will also need to swamp back the power jumpers on the Arduino. Lastly, change both of the TX/RX jumpers on the XBee shield from USB to XBee.
File Downloads
Pumpkin_Trigger.pde (1 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Pumpkin_Trigger.pde']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Author:Syst3mX
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. 4017 With 6 transistors for scaning the rows 2. The 3 shift registers to control the rows
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 3: Schematics
The only thing I didn't specified in the schematics is the value of the current limiting resistors because they change from each type of LEDs, so you will need to calculate them by your self. Now to calculate the value of the 24 resistors you can use this site : http://led.linear1.org/1led.wiz You should first get some specs on your LEDs, you should know their forward voltage and forward current, you can get this info from the seller. The circuit operates on 5V so your Source voltage is 5V. Download the original file to see the schematics better.(press the "i" icon in the top left corner of the picture) I have added a PCB layout of the control board, and i want to thanks Willard2.0 who made this layout and let me use it so thanks a lot mate!
Image Notes 1. Arduino Pins 2. Arduino pins 3. Download the original file to see better.(press the "i" icon in the top left corner of the picture)
Image Notes 1. I didn't have room for the full matrix, So I hope you get the big idea
Image Notes 1. Green line are jumpers and red lines are copper traces. 2. PCB layout made by Willard2.0
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
Looping text.txt (9 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Looping text.txt']
works.txt (13 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'works.txt']
Code maker(6x24).xls (25 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Code maker(6x24).xls']
Related Instructables
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Author:Grathio
Grathio Labs Creative swashbuckler. Writer for MAKE Magazine, presenter of inventions on TV, radio, magazines and newspapers. Professional problem solver. Annoyingly curious. Hacker of all things from computers to clothes to cuisine.
Important Notes: (I hate to even have to say this, but since someone's going to say it, I'll say it first:) 1) This is for entertainment purposes only. Really. This decreases the security of your door by adding another way to unlock it, and it makes your unlock code known to anyone who can hear. If you put this on your door, be sure to carry your key too. The batteries might die, the suction cups might fail or you might forget your knock. Don't complain to me if someone imitates your knock and steals all your stuff, you've been warned. For obvious improvements to safety, security and whatever, see the final page of the Instructable. 2) This is not a project for a beginner! Read through it carefully and be sure you understand it before you start! I will not take time to answer questions that are already in the instructions or from people who have gotten in over their head. (If you think this project is too complex you might go here and sign up for the kit mailing list. The kits will be much more simple than this.) Sorry about that. Now that that's out of the way, lets get to work.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Skills:
To complete this project you should be able to do the following: These are important! If you're not sure if you have these skills, read through the entire Instructable and make sure you understand it before starting anything! Basic soldering. Read a basic schematic. Basic knowledge of microcontrollers (I'll be using the Arduino.) This means you know what one is, how to upload data to it, and how to make minor changes to code. Improvisation. There are many ways to do this project, and you will have to make changes based on how your door and lock works.
Tools:
Drill (ideally a drill press) and an assortment of drill bits. Saw capable of cutting PVC pipe. (ie: Pretty mcuh any saw.) Soldering iron and solder. Pliers. Screw drivers. Heat-shrink tubing and/or electrical tape. Wire stripper. Vice. Safety glasses. Gloves. Other things you might find handy: a ruler/tape measure, a multimeter, a breadboard, some tape, a magic marker, sand paper, files, hot glue. And if you're like me a well stocked first aid kit.
Materials:
(The links are for example only, I don't necessarily recommend or have experience with any of these vendors. Feel free to suggest other sources in the comments.)
Electronics:
1 Arduino Duemilanove (Or compatible. Or really any microcontroller with at least 1 analog input and 3 digital outputs.) Buy from here, here, or here. And other places. 1 5v Gear reduction motor. The higher torque the better. Here's a good one. (14-16mm diameter is ideal because it fits inside of 1/2" PVC pipe.) I recommend one with at least 15oz/in (11 N-cm) of torque at 5v to turn a basic lock. 1 1 Piezo speaker. (30mm) similar to this. You can use larger or smaller ones, smaller will be less sensitive. 1 SPST momentary pushbutton. (normally "off") 1 Red LED 1 Green LED 1 NPN Transistor P2N2222A like these or these (or similar). 1 Rectifier Diode (1N4001 or similar) this or this will do. 1 2.2k ohm resistor (1/4 watt) 1 10k ohm resistor (1/4 watt) 1 1M ohm resistor (1/4 watt) 2 560 ohm resistor (Or whatever will run your red and green LED's at 5v. How to tell.) 1 small piece of perf board. 5x15 holes or longer. (example) 1 9 volt battery clip and 9v battery. (Or any other way you can think of to get 7-12v to the Arduino. A wall adapter like this is a great option so you don't have to worry about batteries running out. 6 AA's would be another option for longer lasting power, but it will bring down the suction cups.) Connector wire. 20 gauge or narrower flexible wire in a number of colors for connecting the electronics together. It's also a good idea to have a breadboard for setting up and testing the circuit before you solder it. We'll be doing this in step 3.
Case:
(These items are to make the project as pictured. Feel free to build a completely different and more functional case.) 20" PVC Pipe 1/2". 3 right angle 1/2" PVC connectors. 1 5-way 1/2" PVC connector. (example) 2 1/2" PVC end plug. 3 1 1/2" suction cups. (Available at hardware stores and craft centers.) NOTE: If your door is unsuitable for suction cups then replace these with three end caps and you can use adhesive strips or screws to mount the lock. 6" of 1/2" wide by 1/64" thick metal strip (steel, tin, copper, etc.) (available at hardware, craft, and art supply stores.) 4.5" of 1" wide metal sheet, 1/32" thick (steel, tin, copper, etc.) (available at hardware, craft, and art supply stores.) 2 3/32" x 3/8" screws with nuts. (1/8" will work too if you can't find the smaller ones.) 2 1.6M (metric) 16mm screws. Ideally with countersunk heads if you can find them. (For securing the motor. Check your motor specs to see what screws it needs. One motor I tried used 1.6M, the other 2M. You'll probably have to buy long ones and cut them to length.)
1 If you have a torque meter or a torque wrench, apply it to your door lock to get an idea of what torque it will take to open your lock. Use a online conversion tool to
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Arduino microcontroller. 2. Momentary pushbutton 3. 10K ohm resistor (brown, black, orange) 4. Green LED 5. Red LED 6. 560 ohm resistors. (Green Blue Brown) 7. Gear motor 8. 2.2K ohm resistor (red red red) 9. 2n2222 Transistor (NPN type) 10. Rectifier diode (1N4001) 11. Perf board 5x15 holes. 12. 1M ohm resistor (brown, black, green) 13. Piezo speaker 14. Some wire, 20-22 gauge. The more colors the better. 15. 9v battery connector 16. 9v battery. You can also run this project from the appropriate wall plug.
Image Notes 1. 20 inches of PVC, 1/2" 2. 1 1/2" diameter suction cups. 3. 5-way PVC connector. (Can be a little tricky to find.) 4. PVC end plugs 5. PVC right angle (90 degree) connectors 6. 1/2" wide metal strip used for a spring to press the detector to the door. 7. This metal strip will be made into the widget that connects our motor to the lock. 8. Screws and matching nuts. (Turns out you only need 2 pairs, not 4.)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
bit long since I've designed a simple slip clutch into the design, but it's better for all the parts if it doesn't run too much. about Line 34:const int maximumKnocks = 20; How many knocks we record. 20 is a lot. You can increase this if your secret hideout is protected by devious drummers with good memories. Increase it too much and you'll run out of memory. about Line 35:const int knockComplete = 1200; Also known as the maximum number of milliseconds it will wait for a knock. If it doesn't hear a knock for this long it will assume it's done and check to see if the knock is any good. Increase this if you're a slow knocker. Decrease it if you're a fast knocker and are impatient to wait 1.2 seconds for your door to unlock. about Line 39:int secretCode[maximumKnocks] = {50, 25, 25, 50, 100, 5 ..... This is the default knock that it recognizes when you turn it on. This is weird rhythmic notation since every value is a percentage of the longest knock. If you're having a hard time getting it to recognize "shave and a hair cut" change this to {100,100,100,0,0,0... and a simple sequence of 3 knocks will open it. Debugging: about Line 51:Serial.begin(9600); about Line 52: Serial.println("Program start."); Uncomment these lines to see some debug info on the serial port. There are a few other lines of debugging code set throughout the rest of code that you can uncomment to see what's going on internally. Be sure to set your serial port to the right speed. The rest of the code is commented so you can see how it works but you probably won't need to change it if you aren't changing the design.
File Downloads
secret_knock_detector.pde (9 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'secret_knock_detector.pde']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
1) If the motor turns very weakly the diode might be reversed. 2) If you need more power on your motor make the following circuit change: Move the wire that goes from the motor to +5v to the Vin pin on the Arduino. This will supply the motor with 9v (or whatever voltage you're supplying to it.) Tip : Check which way the motor turns. It should turn the same way as you turn your deadbolt lock to unlock it. If not, switch the motor's leads which should reverse the motor. Congratulations! You have a working secret knock detector! Now we have to put it into something more permanent that we can stick on our door.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Use a paper template to place the holes for the fastening screws, drill the holes and attach the motor to the plug. (In my case using the two 2M screws.) Countersink the screws if possible. Plug this into the "down" facing hole on the 5-way connector. #3: The 'arms' Cut one piece of PVC pipe 5 inches long. We're going to call this the "long arm". Put a right angle connector on one end. Plug the other end into the 5-way connector opposite the button. Cut two pieces of PVC pipe two inches long. We'll call these the "short arms". Half way along their length drill a 1/4" hole through one side. Put right angle connectors on one end of each arm. Plug these into the two remaining holes on the 5-way connector. You should really start to see it take shape. #3b: A Few Extra Holes with a pencil or marker draw a line down the center of the top and the bottom of the long arm. On the top side, make marks for two holes, one 3/4" from the 5-way, and another 1 1/2" from the 5-way. Drill a 3/16 (5mm) hole at each of these places. This is where our LEDs are going. Also make a line along the bottom where the long arm connects to the 5-way. Using a saw, cut a short way through the pipe, from the bottom up, until there is about a 1/2" hole into the pipe. (this is where the spring for our detector will attach. Also on the bottom, drill a 1/8" hole 1/4" further along the pipe (Away from the 5-way). We will thread the sensor's wires through here. #4: The 'legs' These are the parts that attach to the door. You may not want to cut these yet, The length depends on the design of your door lock, the length of the shaft on your motor and the final design of the Lock Turning Clamp in the next step. All three of mine were 2 5/16" long, but you're better off cutting them long and trimming them down to size later If they're too long the motor won't reach the lock to turn it. If they're too short the suction cups won't reach the door. When you do cut these, hot glue the suction cups in one end and stick the other ends in the right angle connectors on the ends of our legs.
Image Notes 1. Button mount. End plug with hole drilled for the panel mount button. 2. 5-way connector. The motor goes in the center of this. 3. This is an exploded view with all of the parts laid out how they attach (though the angles are wrong on some parts. 4. Top arm. Hole drilled to let wires through. 5. The "Board Arm" This is the arm we're putting the circuit board into. Hole drilled to allow wires through. 6. Motor mount. Will go in the bottom hole on the 5-way. 7. Ignore this hole. Not sure what I was thinking. 8. holes for LEDs. 9. The "Long Arm". (It's longer because it provides more holding power against the torque of the turning lock.)
Image Notes 1. Two sample motor mounts for two different motors. The one on the left is smaller but actually more powerful. The one on the right has a larger hole to allow clearance for the bearing. The facing surface on both of these have been ground down so more of the shaft can stick out.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. A few markings will help keep them straight when you put them back together. 2. Two pieces taped together so we get the holes lined up.
Image Notes 1. It's not a bad idea to file down the sharp corners.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. In position over the lock. 2. 1/2 of the thickness of the lock handle. This is how much we "zig" each flange. 3. Tighten the screws so they clamp down on the D-shaft. 4. Having a little bit of space is fine and will make it easier to put on. Image Notes 1. Edge view. Your lock will slot in here.
Image Notes 1. Hot glue (or otherwise attach) the sensor to the end of the metal strip. Make
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The bottom side of the Long Arm with the 1/2" slot for the metal strip and a hole for the wire. 2. 4-6" flexible metal strip. 3. Piezo sensor with about a foot of wire attached.
sure the "open" end is facing out. 2. Wrap some of the remaining wire around the strap to keep it out of the way.
Image Notes 1. Thread the wire through the round hole and slide the free end of the metal strip into the slot. 2. The free end of our wires. 3. Bend the strip more or less like this. 4. This area is where the door will be, Try to bend it so the sensor lies more or less flat against the door.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
#7: The knock sensor. Solder the speaker's 1M ohm resistor in place on the board. Make sure you have the speaker mounted firmly at the end of the spring and the wire is wound a few times around it to keep it out of the way. Thread the wire through the long leg, through the 5-way and into the short arm that we're keeping the circuit board. Solder one end of these leads to each side of the 1M resistor. Then solder a 8" lead from the ungrounded end of the resistor. This will go to Analog pin 0. #6: The button. Solder the 10K ohm resistor in place as shown. Fasten the button through the hole on the end plug, then put the plug on the 5-way connector and thread both wires through to the 'board arm' hole. Solder one lead from the switch to the resistor. The other end to the +5v wire. Solder a length of wire from the resistor according to the diagram and label it "Digital 2". #8: The motor. Nearly done. Solder the diode, transistor and resistor in place. (Make sure you get the direction right on the diode. And the transistor for that matter.) To the free end of the 2.2k ohm resistor solder a 8" lead that will go to digital pin 3. Put the motor in place in the bottom hole of the 5-way connector, thread the leads trough and solder them in place on either side of the diode, making sure you've got the motor wires in the right order so when it runs it will turn to unlock. #9: The Arduino pins Connect the labeled wires to their appropriate places on the Arduino. Test : Wait, you don't need to do this, right? You've been testing as we go, haven't you? Plug some power into the Arduino and make everything works. Especially make sure that the motor spins in the right direction to unlock your lock.
Image Notes 1. Check the pin order on your transistor. Some times they're reversed.
Image Notes 1. Tape labels are a good idea for this project if you're making the PVC pipe case. Misrouting wires is a real possibility. 2. The ground wire. We'll tack other components to this as we add them to the board. 3. The +5v wire. We'll tack other wires to this as we add them to the board. 4. In the soldering diagram this hole is hole #1,1 5. On the soldering diagram this hole is #5,15. 6. This is the bottom of the board, compared to the soldering diagram.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. #5: The solder the resistors in place to the ground line, and the short leads of the LEDs to the resistors. Pass the leads through the Board Arm hole of the 5way. 2. While we're threading wires we have threaded both the Piezo sensor wires through for the next step. 3. The + leads for the LEDs come out up here. And we mark them with tape so we don't confuse them later.
Image Notes 1. The1M resistor soldered in with the piezo sensor attached either side. 2. A lead attached that will go to Analog 0. (We don't need to thread this anywhere for right now.
Image Notes 1. Closer look at the resistors and their connections. This is what it should look like after #7, above.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The button in place with the wires fed through the 5-way. 2. The resistor and button connections.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The motor in place. 2. The final circuit with the wires fed through. 3. All the connections that will go to the Digital side of the Arduino we thread through to the Short Arm side.
Image Notes 1. Close up of the completed board. 2. Embarrassing note: the motor connection (the green connection on the left) is not in the same hole as the diagram. It's connected the same, just in the wrong hole.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Here's the back of the board so you can see the bridged connections. And a lot of messy soldering.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
#8: The Arduino and battery Yes, this is ugly as sin. I works, but... yeah. If you come up with anything better, you're welcome to it. Stick the Arduino onto the top of the frame. I used lengths of insulated wire. It worked... Attach the battery in a similar way somewhere where it can power the Arduino. Again, I used insulated solid core wires. At one point I used rubber bands which also worked just fine. Tape? Yes, that would work too. Plug in the wires in where they labels say they should go. Might as well test again it since it's all hooked up. Whew! Now we're ready to attach it to the door!
Image Notes 1. The digital pin wires threaded through the Short Arm
Image Notes 1. Circuit board getting ready to be crammed into the Board Arm. 2. The wires for Analog 0, Ground and +5v threaded through the hole in the Board Arm.
Image Notes 1. Short Arm plugged in. 2. Board Arm plugged in. 3. Button plugged in. 4. Once again, ignore this hole.
Image Notes 1. The circuit board has been pushed into the Board Arm. Having a little sticking out the far side is fine, it'll be hidden in the right angle adapter.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Side view. We haven't attached the lock clamp yet. Image Notes 1. Legs and suction cups in place. at the end of the arms.
Image Notes 1. The knock sensor is arranged so it will press flatly against the door. 2. Battery attached. 3. Arduino attached and wires plugged. 4. Here is where a neat person would shorten the leads.
Image Notes 1. Side view. We've attached the lock clamp. Now we're ready to test it on the door! 2. Shortening the wires and removing the labels would make it look nicer, but you'll have to do that on your own time. I have an Instructable to finish!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Post a picture (or video!) of your secret knock detector in comments and get this fancy Master of Secret Knocks patch
Related Instructables
Easy Bluetooth Enabled Door Lock With Arduino + Android by Collin Amedee
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 1: Supplies
. Get your supplies. You need: -- LilyPad Arduino main board -- FTDI connector -- mini USB cable -- LilyPad power supply -- 16 LilyPad LEDs (note: these aren't available from SparkFun yet, but will be soon) -- 2 push button switches -- a spool of 4-ply conductive thread -- a digital multimeter with a beeping continuity tester. This is the one I have. -- a garment or a piece of fabric to work on -- a needle or two, a fabric marker or piece of chalk, puffy fabric paint, a bottle of fabric glue, and a ruler (Available at your local fabric shop or Joann Stores .) -- a pair of scissors -- double sided tape (optional) -- a sewing machine (optional) disclosure: I designed the LilyPad, so I'll make some $ if you buy one.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. conductive thread and needle 2. chalk for drawing on fabric 3. LilyPad Arduino main board, power supply and USB link 4. LilyPad LEDs 5. switches 6. fabric glue 7. mini USB cable (like the one for your camera)
Step 2: Design
. Plan the aesthetic and electrical layout of your piece. Decide where each component is going to go and figure out how you will sew them together with as few thread crossings as possible. Make a sketch of your design that you can refer to as you work. The photos below show the sketches for my jacket. Stitching for power (+) is shown in red, ground (-) in black, LEDs in green, and switch inputs in purple. Important note about the power supply As you design, plan to keep your power supply and LilyPad main board close to each other. If they are too far apart, you are likely to have problems with your LilyPad resetting or just not working at all. Why? Conductive thread has non-trivial resistance. (The 4-ply silver-coated thread from SparkFun that comes with the LilyPad starter kit has about 14 ohms/foot.) Depending on what modules you're using in your construction, your LilyPad can draw up to 50 milliamps (mA) of current, or .05 Amps. Ohm's law says that the voltage drop across a conductive material--the amount of voltage that you lose as electricity moves through the material--is equal to the resistance of the conductive material times the amount of current that is flowing through it. For example, if your LilyPad is a foot away from the power supply, the total resistance of the conductive material that attaches your LilyPad to your power supply is about 28 ohms. (14 Ohms in the conductive thread that leads from the negative terminal of the power supply to the negative petal on the LilyPad and 14 Ohms in the conductive thread that ties the positive terminals together). This means we can expect a drop of 1.4 Volts (28 Ohms * .05 Amps.) This means that while 5 Volts is coming out of the power supply, the LilyPad will only be getting 3.6 Volts (5 Volts - 1.4 Volts). Once the voltage at the LilyPad drops below about 3.3 Volts, it will reset. The resistance of the traces from + on the power supply to + on the LilyPad and - on the power supply to - on the LilyPad should be at most 10 Ohms. Plan the distance accordingly. If all of this was confusing, don't worry! Just keep the LilyPad and power supply close to each other in your design. Transfer the sketch to your garment. Use chalk or some other non-permanent marker to transfer your design to the garment. If you want, use a ruler to make sure everything is straight and symmetrical. Use double sided tape to temporarily attach LIlyPad pieces to your garment. This will give you a good sense of what your final piece will look like. It will also keep everything in place and, as long as the tape sticks, make your sewing easier.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. trimming the battery posts off the power supply.
Image Notes 1. sewing on the + petal of the power supply. notice how I'm sewing through the hole from the front instead of the back, which is much harder.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. notice how dense my stitching is here. this is what your stitches should look like.
Image Notes 1. a glued and trimmed knot. knots without glue will come unraveled quickly.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
digitalWrite(rightSignal, LOW); // turn the right signal off delay(1000); // wait for 1 second } If your layout is the same as mine, you can just copy and paste this program into your Arduino window. If your turn signals don't work, use your multimeter (and the instructions from the last step) to test for shorts or bad connections and make sure that your program matches your physical layout. insulate your turn signal stitches Cover your traces with puffy fabric paint. Remember, you don't want to cover traces until you're sure that everything works! Use good judgment in when to coat traces.
Image Notes 1. stitching in process, outside view: 3 + petals are sewn together
Image Notes 1. these 2 middle traces are the negative (-) traces for all of my turn signal LEDs. these traces are attached to petal 10 on my LilyPad 2. this is the stitching for the positive (+) leads of my right turn signal LEDs. (Since this is an inside view, everything is reversed.) These traces lead to petal 11 on my LilyPad.
Image Notes 1. my finished right turn signal. notice how my stitching doesn't come through to the outside of the garment.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. the first trace from my left switch is finished. this is the switch input trace that is tied to petal 6 on the LilyPad. I just have to glue and trim the knot. 2. these are the stitches that lead from the power supply to the LilyPad. 3. these are my left turn signal stitches. I have a knot to glue and trim on these too. 4. you might have noticed that I didn't insulate my traces. you too can leave them uninsulated, but be aware of shorts from folding/bending whenever you're not wearing the jacket! especially when you are programming and troubleshooting.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 1: Design
I started out by creating a basic design in Sketchup. The robot was to consist of two segments, joined by a spine which could be extended or retracted. Each segment would have four legs with very sharp points as feet. To climb, the legs on the top segment would pinch together and the sharp feet would dig into the bark, securing the robot. Then the spine would be retracted, pulling up the bottom segment. The legs on the bottom segment would then grip the tree, and the top segment would release. Finally, the spine would extend, pushing the top segment upwards, and the process would repeat. The climbing sequence is somewhat similar to the way an inchworm climbs. In my original design (show in the images above), all four legs in each segment were controlled by one highly geared down motor. I decided to ditch this idea for a few reasons. Firstly, I could not find the type of spur gear needed to mesh the legs together. Also, with all the legs linked together, the robot would have a hard time gripping uneven surfaces. Finally, I decided that the robot would be much easier to build if the motors drove the legs directly. The other significant change I made from my original design was the way the spine worked. In my model, I used a rack and pinion type gearing system to extend and contract the spine. However, I could not find the necessary parts to build such a system, so I ended up using a threaded rod coupled to a motor to actuate the spine.
Image Notes 1. The strange leg shape came from resizing the legs all at once in Sketchup. 2. Front on
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
3. To make these types of images in Sketchup, turn X-ray on and turn perspective off.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The pins on the L298HN must be manually bent for the chip to stand upright
Image Notes 1. I removed this resistor, and wired the Current Sense directly to ground 2. Ignore this bit
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. This goes to the 5th motor 2. This heatsink is part of one from an old ATX power supply.
Step 4: Power
The robot's power is supplied by two different sources. The Arduino and the motor controller logic circuitry are powered by a 9V battery, while the motors are powered by an approximately 12V Li-Ion battery pack. I wanted to avoid having to buy an expensive LiPo/Li-Ion battery pack and charger, so I searched through my piles of electronic junk for a device with an appropriate battery. I settled on the battery from a 12" iBook laptop. The battery was 10.8V and 50Wh, but it was a little large and heavy for my needs. To fix this, I tore it open and had a look at the internals. I found that the battery was comprised of six 3.7 volt cells. These cells were organized in pairs of two wired in paralleled. The three pairs were then wired in a series, making a total 11.1V. To shrink the pack but keep the voltage, I simply removed one cell from each pair. The final battery pack had only half the capacity and half the discharge rate of the original (now only 2C), but the full voltage. I then wrapped the cells together with electrical tape so they would hold their shape, and soldered a quick-disconnect connector to the battery leads.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. I left his bit so I could still charge the battery in the laptop
Image Notes 1. -
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. These barrel connectors can be scavenged from old wall worts
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Ignore how this is wired, I did it wrong the first time around.
Step 6: Legs
The legs are some of the most important parts of this robot, because their design determines whether or not the robot can grip onto trees. I decided to have four pairs of legs, each pair controlled by one motor. To make the legs, I cut four 8.5" lengths of the aluminum bar. I marked the segments 2.5" from each end. At those marks, I bent the aluminum at a right angle, to make a "U" shape. If you do not have a bending brace (which I don't) you can get a clean bend by clamping the aluminum with a c-clamp right on the mark, and pushing the unclamped end against a solid surface, like a work bench.
Step 7: Feet
To grip the tree, the robot has very sharp feet at the end of its legs (where else?). The feet are made from jumbo-sized T pins, which you can get at your local fabric store. To fasten them to the legs, I made some clamps out of aluminum. I cut 8 3/8" or so lengths of aluminum, and filed a thin groove lengthwise into each of them, for the pins to fit into. Then I drilled a pair of holes into the aluminum, and corresponding holes into the ends of the legs. The clamps were then bolted down to the legs, with the pins inserted in the grooves. I left about 3/8" of an inch of the pins extending form the legs, but the length can be adjusted by loosening the bolts.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. It is difficult to see from this picture, but there is a small groove down the clamp which holds the pin at a right angle to the leg.
Image Notes 1. This is approximately how the legs will be positioned on the robot
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. I countersunk the screws, because the heads were beveled.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Bolt head 2. Nuts fasten the bolt to the plate 3. Washer 4. Locknut holds the washer on 5. Second plate
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. I actually eventually had to ditch these spacers. Read on.
Image Notes 1. I used a spacer so the head would not short anything
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
I then connected the motor's leads to the terminal strips on the motor controller, and connected the motor voltage terminal to the 12V battery pack, via a toggle switch. I connected the 5V regulator to the logic voltage terminal, via the same toggle switch. I collected the umbilical cord of wires running between the two segments of the robot into a bundle, and fastened them together with zip ties and electrical tape, to keep them organized.
Image Notes 1. Ignore these. I removed them when I though to power the logic voltage off the
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
voltage regulator
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The bottom is covered with electrical tape to prevent shorts
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
tree_robot.pde (5 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'tree_robot.pde']
Related Instructables
Arduino robot with microcontroller Controlled Line Arduino on a Following Robot Breadboard (Photos) by (video) by (Photos) by www.robotscience.co.za earthshine ThatCaliforniaGuy
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Top panel grid for the main portion of the stage.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Four Wire interface for connecting, Power, Ground, Clock, Data
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Light up test to make sure each strand works before installing!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Sometimes 3M tape doesnt always stick, always best to go back and make sure they stick with Hot Glue or another adhesive!
Image Notes 1. All of the LED ends have to be wired together, so once the strands are installed, they still have to be coupled together.
Image Notes 1. The tools of the trade, Soldering Iron, HeatShrink, a lighter for the heatshrink, and a glue gun!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
1. Arduino Programming
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Extra rails added on top of the Stage frame to support the LED frame and dancers.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
In the video you can see how hard it is to control the air, I am using a standard blow nozzle and just shooting air into the input to make sure the frames will move and not be locked together. In the final version, I fixed the flow by adding in a flow restrictor on the solenoid input, make going up and down very smooth.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
We start installing by necessity. Obviously we need to drive around, so the motors and wheels get mounted first! Next is the batteries (can't forget those)..and then the next biggest item which was the subwoofer.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Zotac Mini ITX with 2Gb Ram and 32Gb Solid State Harddrive
Image Notes 1. Victor 884 Speed Controls 12v to 19v Converter for PC Standard 3 Position Air Solenoid Ground and Power Strips
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Zoom Player is great for its TCP interface to be able to control it over a network.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
The Lightning Simulator/Breathalyzer/Graphic Raving out your Equalizer Computer by Arduino itstemo1 Powered by alinke
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The ready "Type Case" installation, displaying recent newspaper headlines.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 2: Simulations
Ive learned it the hard way a few years back: It is better to make some mockups and visual tests before jumping off. Simulations have many benefits. First of all they can be changed more easily then the real deal and therefor are better suitable for experimentation. It can be seen faster whether something might work or not and after everything is right, a simulation is a proof of concept and can help to get funding for a project. I did some compositions in Photoshop to see what the 125 pixels are be capable of. It became clear that it was not possible to recognize images, with so few pixels text on the other hand worked somehow. Since it is not so interesting to display static letters I needed to get going with an animation. I love to use Processing for all kinds of things and therefor it was the tool of choice. My first test in Processing was a conversion of a movie to the 125 pixels. Here is a flick which shows a Betty Boop cartoon, the Processing simulation and a later recording of the real thing. (The original Betty Boop cartoon from 1933 is in public domain and not copyright protected anymore. Source: archive.org) I think that this shows quite well the limitations due to the very few pixels. After that I moved on to animate text. The simulation fetched resent headlines from an online newspaper and displayed them as scrolling text. The bigger part of the Processing code was then later used for the real object, which after this tests, I was confident to build.
Image Notes 1. The headline. 2. The actual displayed part of the headline. 3. The resent frame rate. 4. The brightness values of the according compartments.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
TurtleArt Turtle by IT_Daniher Smallsword Choreography Shirt by grossmr1 How to have fun with Arduino (and become a Geek in the process) by john otto
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Sigh Collector
by mkontopo on March 2, 2009
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. One end goes to the motor, from the TIP120's collector pin. 2. common ground with the arduino's power supply!
File Downloads
circuit-sigh-recieve.pdf ((425x425) 241 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'circuit-sigh-recieve.pdf']
sc-reciever.txt (1 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'sc-reciever.txt']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
sight-collector-diagram.pdf ((684x432) 231 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'sight-collector-diagram.pdf']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 5: Combine electronics with main unit. Install Check Valve and Pump
Place the air pump and circuit inside of the main unit, on the lower shelf. Now it's time to make a connection between the air pump, and the air bladder/balloon, which will sit on the surface. We only want air to go one way, and not come out the other direction, so we use something called a "check valve" . The basic principle is that a hinged door, rubber diaphragm or ball is displace by air going one way, but then prevents the air from going back. I bought my check valve on McMaster Carr's website; More specifically it's called a PVC Swing-check valve. I'm using the 1" diameter one. This one was attractive to me because of it's extremely low "cracking pressure", or the pressure needed to displace the barrier. < 0.1 psi !! I used a simple garden hose to run from the pump, to the check valve, then from the other side of the valve into the balloon. The fittings are coupled and sized properly, and I used some glue to further secure them, and prevent any air leaks...
Image Notes 1. Low psi Check Valve, purchased from McMaster Carr. 2. Pump Attachment. 3. Typical garden hose from a hardware store.
Image Notes 1. Added this piece at the end, to secure the check valve in place.
Image Notes 1. Secured the air bladder to the hose with a couple of zip ties..
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Sensor connects through an RCA cable. The cable is encased in latex tubing.
Image Notes 1. I sewed the nylon strap so it runs around the box and attaches to the handle. 2. The circuit will go in here.
Image Notes 1. Sensor will attach here, via a hacked RCA cable. 2. A hole for the potentiometer to poke through. We'll attach the knob from the front. 3. Hole for the LED indicator light. This LED will illuminate when a sigh is has been detected. 4. A hole for the power switch will be here.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
sight-collector-diagram.pdf ((684x432) 231 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'sight-collector-diagram.pdf']
Step 7: Build and Program circuit for sigh detection. Assemble electronics into carrying case.
Follow the circuit diagram below. A higher resolution PDF is also attached. Program the Arduino with the provided code. To monitor breathing, we will be making a chest strap that is outfitted with a stretch sensor. The expansion and contraction of the chest will provide us with data that we can use, in code, to extrapolate what normal breathing is, and therefore determine with a larger than usual inhalation (followed by large exhalation) is. A 10 or 20K potentiometer will be used to dial in a threshold value, which will represent how large of an inhalation is associated with a sigh. I purchased my stretch sensor from Merlin Robotics , a company in the UK. They stock a variety of sizes. I'm using the 20cm sensor. In my circuit, i'm amplifying the signal from the sensor with a resistor bridge and an OpAmp chip (see diagram). This is the method suggested by the manufacturer. You can find the datasheet on the internet. Note: I imagine a similar idea could be done with pressure sensor instead of a stretch sensor. You'd could attach the pressure point on the sensor to some kind of tubing and wrap that tubing around the chest. Drill holes in the front face of the carrying case and attach the potentiometer, indicator LED, power switch and stretch sensor attachment (RCA, female) to it from the back before screwing the box back together. I'm powering the Arduino with a 9V battery. I've got 2 of them wired in parallel so i'll get the same voltage, but double the amperage (it'll last longer).
Image Notes 1. Arduino Pro Mini (just a smaller Diecimille) 2. Stretch sensor 3. Op-Amp 4. Powered by 2 9V batteries, wired in parallel for extra amperage (but same current).
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
circuit-sigh-send.pdf ((500x500) 247 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'circuit-sigh-send.pdf']
sc-sender.txt (2 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'sc-sender.txt']
Step 8: Cut and Sew chest strap and attach the stretch sensor.
The basic idea here, is that a fabric strap is wrapped around the chest by the lower ribs (where the most motion occurs). The stretch sensor bridges a small gap in the chest strap, the rest of which is not stretchy, so breathing, subsequently deforms the sensor as needed. You'll have to measure the length of strap to your individual body type. I sewed an extra strip of fabric around the strap, so the wires can safely sit inside. In the front, where the stretch sensor connection is, I sewed a 'sleeve' of fabric that would loosely cover the sensor so it wouldn't get rubbed or damaged. In the back of the chest strap, I made a simple shape (like on a backpack) for tightening and loosening the strap. I had the shape laser-cut out of clear acrylic (see image), but you can make it any way you are able to.
Image Notes 1. Final laser-cut piece, made from the background Illustrator diagram. This will be the strap tightener for the chest-strap.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Congrats! You're finished. You can now use your Sigh Collector to monitor your emotional health.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Intro: Make a Fire Breathing Animetronic Pony from FurReal Butterscotch or S'Mores
For Maker Faire Detroit 2011, I displayed a hack I made to a FurReal Friends Butterscotch Pony. My fellow LVL1 Hackers and I had taken control of the motor control system of the toy and added a flame thrower to it. It seemed to go over really well with the crowd, so I am putting up the information for anyone to make there own. It was a blast to make and I hope everyone has as much fun remaking it. Just remember that this project uses Fire and should only be built and operated by no less then 2 adults with appropriate experience in fire safety and proper fire safety equipment on hand.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Wire cutters 2. Wire Stripers 3. Wire 4. 3v (2 AA battery pack) 5. razor 6. Multimeter 7. Grill igniter 8. Soldering Iron 9. Solder 10. Hotglue Gun 11. Wii Nunchuck 12. Screwdrivers
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Fabric tucked in around the ears. I already removed the years at this point.
Image Notes 1. Fabric sewn into the plastick under the eye. 2. Fabric sewn into the top of the eye.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. already removed 2. Slide out away from the body and it should pop right out. be careful not to beak the rubber on the skin.
Image Notes 1. Removing the rubber from the plastic. pulling will do it for most parts but a few will have to be cut.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Part like have a little rubber on then is from where I had to cut it with a razor.
Image Notes 1. This part slip into a slot under the chin. It will not stay so you will have to hot glue it.
Image Notes 1. Seem that crosses from one leg to the other in the lower front of the pony. 2. Seem continues from the Velcro to cross seem. 3. Seem continues from the Velcro to cross seem.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Zipper running from the tail to the Velcro under the pony. It is sewn over at each in but after you cut the threads it just unzip without a problem.
Image Notes 1. The string that was inside of the fabric loop
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. What you should have at the end of this step
Image Notes 1. the non fur fabric looped around a zip tie.
Image Notes 1. What you should have at the end of this step
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Screw 2. Screw 3. Screw on the outside and inside of the ear mount 4. Screw 5. Screw 6. Screw
Step 10: Getting access to the Circuit board in the lower body.
I removed every screw I could find from the pony and still could not get the body open. I could not see any clips I could open, or anything else I could remove to release it, so I did the next best thing and dremeled a hole in the stomach. This ended up working out in the end as it provided a good place to put the fuel for the flame thrower. You will want the hole large enough to allow your PVC tube to just slide in.
Image Notes
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
1. Circuit board for the body. location where we will load the fuel.
Step 13: Tapping the lines into the motor control circuit.
You will need to tap into the the lines coming out of the motor control circuit coming out of the micro-controllers. We will do this at 4 spots on each of the Circuit boards. On the board in the pony's head you will need to solder your wires into R14 ,R15, R27, and R28 R14 and R15 move the head up and down plus open and close the mouth. R27 and R28 move the head move left or right as well as move the eyes and ears. On the board in the body, you will want to solder you wires onto R10,R42 and R11,R41 R10/42 move the head left and right R11 Moves the tail (only one way) R41 bobs the head up and down at the neck (moves one way around in a circle like the tail)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Reads the state of the head up and down as well as the mouth open and closed. Listed as Wipe1 on the board 2. Reads the state of the head tilt left and right, plus the movement of the eyes and ears. Listed as Wipe2 on the board.
Image Notes 1. Solder onto the encoder rather then cutting the cable.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Solder to the pads rather then cutting the cable.
Step 15: Getting the morors and sensors connected to the arduino.
For the current code you will want to have the pins as such Resistor label --- Pin on the Arduino R14 Pin 23 R15 Pin 25 R27 Pin 27 R28 Pin 29 R10 Pin 37 R11 Pin 35 R41 Pin 31 R42 Pin 33 To get the pins connected I soldered them to the end of .1 male header.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Electrical tape so that I know what pin is connected to what motor. 2. Going to the motor control 3. Nunchuck breakout board. 4. Pull downs for the encoder. 5. Plugged into the pony's power supply. 6. Ground pin for nunchuck 7. 3.3v going to nunchuck 8. I2C pins for the nunchick
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
The mouth moves when the head is moving up and down. The ears and eyes move when the head is shaking.
File Downloads
FirePony.pde (8 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'FirePony.pde']
WiiChuck.h (6 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'WiiChuck.h']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Aluminum sheet hooked to one half of the spark generator. 2. Wire hooked to the other side of the spark generator. 3. Exit point for the fuel. 4. What happens when the plastic gets too hot.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. bowden cable 2. bowden cable 3. Plate to hold the fuel can inside the tube. 4. two bolts and a few nuts threaded into a piece of plexi glass. This let you change it slightly for variable sized fuel containers. 5. bowden cable Connecting to the chunk of plexy glass to pull/push down on the fuel. 6. this locks on ether side of the tube so that it can lock inside of the pony. 7. Slit in the side of the container so that the fuel tube can come out of the side. 8. This is just a handle to make the cable easier to pull. 9. hinge
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
Ardu-pong! the Arduino based pong console by arduino Internet PC robot kyle brinkerhoff controlled using iphone (video) by Avadhut.Deshmukh
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Wireless transmission indicator 2. Uses a Kill-a-Watt, available at many hardware or electronic stores 3. Measures up to 15A (1800 Watts!)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. XBee listens to data coming from the Kill-a-Watt measurement sensors 2. XBee wireless module in an adapter and a few passive components to keep things running smooth
Step 2: Prep
Tutorials Learn how to solder with tons of tutorials! Don't forget to learn how to use your multimeter too! Tools There are a few tools that are required for assembly. None of these tools are included. If you don't have them, now would be a good time to borrow or purchase them. They are very very handy whenever assembling/fixing/modifying electronic devices! I provide links to buy them, but of course, you should get them wherever is most convenient/inexpensive. Many of these parts are available in a place like Radio Shack or other (higher quality) DIY electronics stores. I recommend a "basic" electronics tool set for this kit, which I describe here. Soldering iron . One with temperature control and a stand is best. A conical or small 'screwdriver' tip is good, almost all irons come with one of these. A low quality (ahem, $10 model from radioshack) iron may cause more problems than its worth! Do not use a "ColdHeat" soldering iron, they are not suitable for delicate electronics work and can damage the kit (see here ) Solder . Rosin core, 60/40. Good solder is a good thing. Bad solder leads to bridging and cold solder joints which can be tough to find. Dont buy a tiny amount, you'll run out when you least expect it. A half pound spool is a minimum. Multimeter/Oscilloscope . A meter is helpful to check voltages and continuity. Flush/diagonal cutters . Essential for cutting leads close to the PCB. Desoldering tool . If you are prone to incorrectly soldering parts. ' Handy Hands' with Magnifying Glass . Not absolutely necessary but will make things go much much faster. Check out my recommended tools and where to buy.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 4: Configure
Overview OK so far you have assembled one of the XBee adapter boards and connected it to your computer using the FTDI cable. (The other adapter is for later so don't do anything with it yet!) The XBees respond to the X-CTU software and are blinking just fine. Next we will update the firmware Upgrading the firmware There's a good chance your XBees are not running the latest firmware & there's a lot of features added, some of which we need to get this project running. So next up is upgrading! Go to the Modem Configuration tab. This is where the modem is configured and updated Click Download new versions ... and select to download the latest firmwares from the Web Once you have downloaded the newest firmware, its time to upgrade! Click on Modem Parameters -> "Read " to read in the current version and settings Now you will know for sure what function set, version and settings are stored in the modem Select from the Version dropdown the latest version available Check the Always update firmware checkbox And click Write to initialize and program the new firmware in!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
That's it, now you have the most recent firmware for your modem. You should now uncheck the Always update firmware checkbox. If you have problems, like for example timing out or not being able to communicate, make sure the RTS pin is wired up correctly as this pin is necessary for upgrading. FTDI cables are already set up for this so you shouldn't have a problem Rinse & Repeat Upgrade the firmware on both of the XBees so they are both up to date At this point it might be wise to label the two XBees in a way that lets you tell them apart. You can use a sharpie, a sticker or similar to indicate which one is the receiver and which is the transmitter Configure the transmitter XBee Both XBee's need to be upgraded with the latest firmware but only the transmitter (which is going to be put inside a Kill-a-Watt) needs to be configured. The configure process tells the XBee what pins we want to read the sensor data off of. It also tells the XBee how often to send us data, and how much. Plug the transmitter XBee into the USB connection (put the receiver XBee away) and start up X-CTU or a Terminal program. Connect at 9600 baud, 8N1 parity.Then configure each one as follows: 1. Set the MY address (the identifier for the XBee) to 1 (increment this for each transmitter so you can tell them apart, we'll assume you only have one for now) 2. Set the Sleep Mode SM to 4 (Cyclic sleep) 3. Set the Sleep Time ST to 3 (3 milliseconds after wakeup to go back to sleep) 4. Set the Sleep Period SP to C8 (0xC8 hexadecimal = 200 x 10 milliseconds = 2 seconds between transmits) 5. Set ADC 4 D4 to 2 (analog/digital sensor enable pin AD4 ) 6. Set ADC 0 D0 to 2 (analog/digital sensor enable pin AD0 ) 7. Set Samples to TX IT to 13 (0x13 = 19 A/D samples per packet) 8. Set Sample Rate IR to 1 (1 ms between A/D samples) if you think there will be more XBee's in the area that could conflict with your setup you may also want to 1. Set the PAN ID to a 4-digit hex number (its 3332 by default) You can do this with X-CTU or with a terminal program such as hyperterm, minicom, zterm, etc. with the command string ATMY=1,SM=4,ST=3,SP=C8,D4=2,D0=2,IT=13,IR=1 You'll need to start by getting the modem's attention by waiting 10 seconds, then typing in +++ quickly, then pausing for another 5 seconds. Then use AT to make sure its paying AT tention to your commands Basically what this means is that we'll have all the XBees on a single PAN network, each XBee will have a unique identifier, they'll stay in sleep mode most of the time, then wake up every 2 seconds to take 19 samples from ADC 0 and 4, 1ms apart. If you're having difficulty, make sure you upgraded the firmware! Make sure to WRITE the configuration to the XBee's permanent storage once you've done it. If you're using X-CTU click the "Write" button in the top left. If you're using a terminal, use the command ATWR ! Note that once the XBee is told to go into sleep mode, you'll have to reset it to talk to it because otherwise it will not respond and X-CTU will complain. You can simply unplug the adapter from the FTDI cable to reset or touch a wire between the RST and GND pins on the bottom edge of the adapter. Now that the transmitters are all setup with unique MY number ID's, make sure that while they are powered from USB the green LED blinks once every 2 seconds (indicating wakeup and data transmit) Configure the receiver XBee Plug the receiver XBee into the USB connection (put the receiver XBee away) and start up X-CTU . If you set the PAN ID in the previous step, you will have to do the same here Set the PAN ID to the same hex number as above If you didn't change the PAN above, then there's nothing for you to do here, just skip this step Next! Now that the XBees are configured and ready, its time to go to the next step where we make the Kill-a-Watt hardware
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
supply and LEDs Datasheet: Webpage Distributor: Adafruit Qty: 1 Name: XBee module Description: We'll be using the XBee "series 1" point-to-multipoint 802.15.4 modules with a chip antenna part # XB24-ACI-001. They're inexpensive and work great. This project most likely won't work with any other version of the XBee, and certainly not any of the 'high power' Pro types! Distributor: Adafruit Qty: 1 Name: D3 Description: 1N4001 diode. Any power diode should work fine. Heck, even a 1n4148 or 1n914 should be OK. But 1N4001 is suggested and is in the kit. Datasheet: Generic 1N4001 Distributor: Digikey Mouser Qty: 1 Name: D2 Description: Large diffused LED, for easy viewing. The kit comes with green. Qty: 1 Name: C3 Description: 220uF, 4V or higher (photo shows 100uF) Datasheet: Generic Distributor: Digikey Mouser Qty: 1 Name: C4 Description: 10,000uF capacitor (wow!) / 6.3V (photo shows a mere 2200uF) Try to get 16mm diameter, 25mm long Datasheet: Generic Distributor: Digikey [Mouser] Qty: 1 Name: R4 R6 Description: 10K 1/4W 1% resistor (brown black black red gold) or 10K 1/4W 5% resistor (brown black orange gold). 1% is preferred but 5% is OK Datasheet: Generic Distributor: Mouser Digikey Qty: 2 Name: R3 R5 Description: 4.7K 1/4W 1% resistor (yellow violet black brown gold) or 4.7K 1/4W 5% resistor (yellow violet red gold). 1% is preferred but 5% is OK. Datasheet: Generic Distributor: Mouser Digikey Qty: 2 Name: Ribbon cable Description: Ribbon cable, or other flexible wire, at least 6 conductors, about 6" long Datasheet: Generic Ribbon Distributor: Digikey Qty: 6" Name: Heat shrink Description: Heat shrink! A couple inches of 1/8" and 1/16" each Datasheet: Generic It will run you about $50-$60 for each outlet
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Solder in the two 2mm 10pin female headers in the adapter kit. Be careful with the solder so that you don't accidentally fill the female header. Use a sparing amount to make sure there's a connection but its not overflowing
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
'zero'. The A/D in the XBee is 10 bits, and will return values between 0 and 1023. So, in theory, if the system is perfect the value at 'zero' should be 512. However, there are a bunch of little things that make the system imperfect and so zero is only close to 512. In this case the 'zero' calibration point is really 498. When its off there is a 'DC offset' to the Amp readings, as this graph shows: See how the Amp line (green) is steady but its not at zero, its at 0.4 amps? There is a 'DC offset' of 0.4 amps OK, open up the wattcher.py script in a text editor. vrefcalibration = [492, # Calibration for sensor #0] 492, # Calibration for sensor #1 489, # Calibration for sensor #2 492, # Calibration for sensor #3 501, # Calibration for sensor #4 493] # etc... approx ((2.4v * (10Ko/14.7Ko)) / 3 See the line that says # Calibration for sensor #1 ? Change that to 498 vrefcalibration = [492, # Calibration for sensor #0] 498, # Calibration for sensor #1 489, # Calibration for sensor #2 492, # Calibration for sensor #3 501, # Calibration for sensor #4 493] # etc... approx ((2.4v * (10Ko/14.7Ko)) / 3 Save the file and start up the script again, this time without the -d Now you'll see that the Watt draw is 2W or less, instead of 40W (which was way off!) The reason its not 0W is that, first off, there's a little noise that we're reading in the A/D lines, secondly there's power draw by the Kill-a-Watt itself and finally, the XBee doesn't have a lot of samples to work with. However <2W is pretty good considering that the full sensing range is 0-1500W Note the graph with the calibrated sensor: See how the Amps line is now at 0 steady, there is no DC offset Logging data Its nice to have this data but it would be even nicer if we could store it for use. Well, thats automatically done for you! You can set the name of the log file in the wattcher.py script. By default it's powerdatalog.csv . The script collects data and every 5 minutes writes a single line in the format Year Month Day, Time, Sensor#, Watts for each sensor.As you can see, this is an example of a 40W incandescent lightbulb plugged in for a few hours. Because of the low sample rate, you'll see some minor variations in the Watts recorded. This data can be easily imported directly into any spreadsheet program Tweeting Finally we get to the tweeting part of the tweet-a-watt. First open up the wattcher.py script and set # Twitter username & password twitterusername = "username" twitterpassword = "password" to your username and password on twitter. You can make an account on twitter.com if you don't have one. Then run the script as usual. Every 8 hours (midnight, 8am and 4pm) the script will sent a twitter using the Twitter API Then check it out at your account:
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
[518, -1, -1, -1, 492, -1], [349, -1, -1, -1, 491, -1], [199, -1, -1, -1, 491, -1], [116, -1, -1, -1, 468, -1], [108, -1, -1, -1, 492, -1], [198, -1, -1, -1, 492, -1], [335, -1, -1, -1, 492, -1], [523, -1, -1, -1, 492, -1]] }> OK now its clear whats going on here. First off, we get some data like the transmitter ID (address_16) and signal strength (RSSI). The packet also tells us how many sample are available (19). Now, the digital samples are all -1 because we didn't request any to be sent. The library still fills them in tho so thats why the non-data is there. The second chunk is 19 sets of analog data, ranging from 0 to 1023. As you can see, the first sample (#0) and fifth sample (#4) contain real data, the rest are -1. That corresponds to the hardware section where we setup AD0 and AD4 to be our voltage and current sensors. We'll tweak our code so that we can extract this data only and ignore the rest of the packet. This code creates two arrays, voltagedata and ampdata where we will stick the data. We throw out the first sample because usually ADCs are a bit wonky on the first sample and then are good to go after that. It may not be necessary tho #!/usr/bin/env python import serial from xbee import xbee SERIALPORT = "COM4" # the com/serial port the XBee is connected to BAUDRATE = 9600 # the baud rate we talk to the xbee CURRENTSENSE = 4 # which XBee ADC has current draw data VOLTSENSE = 0 # which XBee ADC has mains voltage data # open up the FTDI serial port to get data transmitted to xbee ser = serial.Serial(SERIALPORT, BAUDRATE) ser.open() while True: # grab one packet from the xbee, or timeout packet = xbee.find_packet(ser) if packet: xb = xbee(packet) #print xb # we'll only store n-1 samples since the first one is usually messed up voltagedata = [-1] * (len(xb.analog_samples) - 1) ampdata = [-1] * (len(xb.analog_samples ) -1) # grab 1 thru n of the ADC readings, referencing the ADC constants # and store them in nice little arrays for i in range(len(voltagedata)): voltagedata[i] = xb.analog_samples[i+1][VOLTSENSE] ampdata[i] = xb.analog_samples[i+1][CURRENTSENSE] print voltagedata print ampdata Now our data is easier to see: Voltage: [672, 801, 864, 860, 755, 607, 419, 242, 143, 108, 143, 253, 433, 623, 760, 848, 871, 811] Current: [492, 492, 510, 491, 492, 491, 491, 491, 492, 480, 492, 492, 492, 492, 492, 492, 497, 492] Note that the voltage swings from about 100 to 900, sinusoidally. Normalizing the data Next up we will 'normalize' the data. The voltage should go from -170 to +170 which is the actual voltage on the line, instead of 100 to 900 which is just what the ADC reads. To do that we will get the average value of the largest and smallest reading and subtract it from all the samples. After that, we'll normalize the Current measurements as well, to get the numbers to equal the current draw in Amperes. #!/usr/bin/env python import serial from xbee import xbee SERIALPORT = "COM4" # the com/serial port the XBee is connected to BAUDRATE = 9600 # the baud rate we talk to the xbee CURRENTSENSE = 4 # which XBee ADC has current draw data VOLTSENSE = 0 # which XBee ADC has mains voltage data # open up the FTDI serial port to get data transmitted to xbee ser = serial.Serial(SERIALPORT, BAUDRATE) ser.open() while True: # grab one packet from the xbee, or timeout packet = xbee.find_packet(ser) if packet: xb = xbee(packet)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
#print xb # we'll only store n-1 samples since the first one is usually messed up voltagedata = [-1] * (len(xb.analog_samples) - 1) ampdata = [-1] * (len(xb.analog_samples ) -1) # grab 1 thru n of the ADC readings, referencing the ADC constants # and store them in nice little arrays for i in range(len(voltagedata)): voltagedata[i] = xb.analog_samples[i+1][VOLTSENSE] ampdata[i] = xb.analog_samples[i+1][CURRENTSENSE] # get max and min voltage and normalize the curve to '0' # to make the graph 'AC coupled' / signed min_v = 1024 # XBee ADC is 10 bits, so max value is 1023 max_v = 0 for i in range(len(voltagedata)): if (min_v > voltagedata[i]): min_v = voltagedata[i] if (max_v < voltagedata[i]): max_v = voltagedata[i] # figure out the 'average' of the max and min readings avgv = (max_v + min_v) / 2 # also calculate the peak to peak measurements vpp = max_v-min_v for i in range(len(voltagedata)): #remove 'dc bias', which we call the average read voltagedata[i] -= avgv # We know that the mains voltage is 120Vrms = +-170Vpp voltagedata[i] = (voltagedata[i] * MAINSVPP) / vpp # normalize current readings to amperes for i in range(len(ampdata)): # VREF is the hardcoded 'DC bias' value, its # about 492 but would be nice if we could somehow # get this data once in a while maybe using xbeeAPI ampdata[i] -= VREF # the CURRENTNORM is our normalizing constant # that converts the ADC reading to Amperes ampdata[i] /= CURRENTNORM print "Voltage, in volts: ", voltagedata print "Current, in amps: ", ampdata We'll run this now to get this data, which looks pretty good, there's the sinusoidal voltage we are expecting and the current is mostly at 0 and then peaks up and down once in a while. Note that the current is sometimes negative but that's OK because we multiply it by the voltage and if both are negative it still comes out as a positive power draw Voltage, in volts: [-125, -164, -170, -128, -64, 11, 93, 148, 170, 161, 114, 46, -39, -115, -157, -170, -150, -99] Current, in amps: [0.064516129032258063, -1.096774193548387, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.096774193548387,] 0.0, 0.0, 0.0, -0.064516129032258063, 0.0, 0.0, -0.70967741935483875, 0.0, 0.0] Basic data graphing Finally, I'm going to add a whole bunch more code that will use the numpy graphing modules to make a nice graph of our data. Note that you'll need to install wxpython as well as numpy , and matplotlib ! At this point, the code is getting waaay to big to paste here so grab "wattcher.py Mains graph" from the download page! Run it and you should see a graph window pop up with a nice sinusoidal voltage graph and various amperage data. For example this first graph is of a laptop plugged in. You'll see that its a switching supply, and only pulls power during the peak of the voltage curve. Now lets try plugging in a 40W incandescent light bulb. You'll notice that unlike the switching supply, the current follows the voltage almost perfectly. Thats because a lightbulb is just a resistor! Finally, lets try sticking the meter on a dimmable switch. You'll see that the voltage is 'chopped' up, no longer sinusoidal. And although the current follows the voltage, its still matching pretty well. Graphing wattage! OK neat, its all fun to watch waveforms but what we -really want- is the Watts used. Remember, P = VI otherwise known as Watts = Voltage * Current. We can calculate total Watts used by multiplying the voltages and currents at each sample point, then summing them up over a cycle & averaging to get the power used per cycle. Once we have Watts, its easy to just multiply that by 'time' to get Watt-hours! Download and run the wattcher.py - watt grapher script from the download page Now you can watch the last hour's worth of watt history (3600 seconds divided by 2 seconds per sample = 1800 samples) In the image above you can see as I dim a 40watt lightbulb. The data is very 'scattered' looking because we have not done any low-pass filtering. If we had a better analog sampling rate, this may not be as big a deal but with only 17 samples to work with, precision is a little difficult Done! OK great! We have managed to read data, parse out the analog sensor payload and process it in a way that gives us meaningful graphs. Of course, this is great for
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
instantaneous knowledge but it -would- be nice if we could have longer term storage, and also keep track of multiple sensors. In the next step we will do that by taking advantage of some free 'cloud computing' services!
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
# add up the delta-watthr used since last reading # Figure out how many watt hours were used since last reading elapsedseconds = time.time() - lasttime dwatthr = (avgwatt * elapsedseconds) / (60.0 * 60.0) # 60 seconds in 60 minutes = 1 hr lasttime = time.time() print "\t\tWh used in last ",elapsedseconds," seconds: ",dwatthr cumulativewatthr += dwatthr # Determine the minute of the hour (ie 6:42 -> '42') currminute = (int(time.time())/60) % 10 # Figure out if its been five minutes since our last save if (((time.time() - fiveminutetimer) >= 60.0) and (currminute % 5 == 0)): # Print out debug data, Wh used in last 5 minutes avgwattsused = cumulativewatthr * (60.0*60.0 / (time.time() - fiveminutetimer)) print time.strftime("%Y %m %d, %H:%M"),", ",cumulativewatthr,"Wh = ",avgwattsused," W average") # Reset our 5 minute timer fiveminutetimer = time.time() cumulativewatthr = 0 Note that we calculate delta-watthours, the small amount of power used every few seconds. Then we can get the average watts used by dividing the watthours by the number of hours that have passed (about 1/12th). Instead of going by exact 5 minutes, I decided to only report on the 5's of the hour (:05, :10, etc) so that its easier to send all the data at once if theres multiple sensors that started up at different times. Download wattcher-5minreporter.py from the Download page. If you run this, you'll get a steady stream Near the end you can see the timestamp, the Watthrs used in the last few minutes and the average Wattage Multisensor! We have good data but so far it only works with one sensor. Multiple sensors will mess it up! Time to add support for more than one XBee so that I can track a few rooms. I'll do that by creating an object class in python, and using the XBee address (remember that from part 1?) to track. I'll replace the code we just wrote with the following: At the top, instead of the timer variables, I'll have a full class declaration, and create an array to store them: ####### store sensor data and array of histories per sensor class Fiveminutehistory: def init (self, sensornum): self.sensornum = sensornum self.fiveminutetimer = time.time() # track data over 5 minutes self.lasttime = time.time() self.cumulativewatthr = 0 def addwatthr(self, deltawatthr): self.cumulativewatthr += float(deltawatthr) def reset5mintimer(self): self.cumulativewatthr = 0 self.fiveminutetimer = time.time() def avgwattover5min(self): return self.cumulativewatthr * (60.0*60.0 / (time.time() - self.fiveminutetimer)) def str (self): return "[id#: %d, 5mintimer: %f, lasttime; %f, cumulativewatthr: %f]" % (self.sensornum, self.fiveminutetimer, self.lasttime, self.cumulativewatthr) ######### an array of histories sensorhistories = [] When the object is initialized with the sensor ID number, it also sets up the two timers and cumulative Watthrs tracked. I also created a few helper functions that will make the code cleaner Right below that I'll create a little function to help me create and retrieve these objects. Given an XBee ID number it either makes a new one or gets the reference to it ####### retriever def findsensorhistory(sensornum): for history in sensorhistories: if history.sensornum == sensornum: return history # none found, create it! history = Fiveminutehistory(sensornum) sensorhistories.append(history) return history Finally, instead of the average Watt calculation code written up above, we'll replace it with the following chunk, which retreives the object and tracks power usage with the object timers # retreive the history for this sensor sensorhistory = findsensorhistory(xb.address_16) #print sensorhistory # add up the delta-watthr used since last reading # Figure out how many watt hours were used since last reading elapsedseconds = time.time() - sensorhistory.lasttime dwatthr = (avgwatt * elapsedseconds) / (60.0 * 60.0) # 60 seconds in 60 minutes = 1 hr sensorhistory.lasttime = time.time()
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
print "\t\tWh used in last ",elapsedseconds," seconds: ",dwatthr sensorhistory.addwatthr(dwatthr) # Determine the minute of the hour (ie 6:42 -> '42') currminute = (int(time.time())/60) % 10 # Figure out if its been five minutes since our last save if (((time.time() - sensorhistory.fiveminutetimer) >= 60.0) and (currminute % 5 == 0)): # Print out debug data, Wh used in last 5 minutes avgwattsused = sensorhistory.avgwattover5min() print time.strftime("%Y %m %d, %H:%M"),", ",sensorhistory.cumulativewatthr,"Wh = ",avgwattsused," W average" # Reset our 5 minute timer sensorhistory.reset5mintimer() The code basically acts the same except now it wont choke on multiple sensor data! Below, my two Kill-a-Watts, one with a computer attached (100W) and another with a lamp (40W) Onto the database! The App Engine So we want to have an networked computer to store this data so we can share the data, but we really don't want to have to run a server from home! What to do? Well as mentioned before, you can use Pachube or similar, but I will show how to roll-your-own with Google App Engine (GAE) . GAE is basically a free mini-webserver hosted by Google, that will run basic webapps without the hassle of administrating a database server. Each webapp has storage, some frameworks and can use Google accounts for authentication. To get started I suggest checking out the GAE website, documentation, etc. I'll assume you've gone through the tutorials and jump right into designing my power data storage app called Wattcher (a little confusing I know) First, the app.yaml file which defines my app looks like this: application: wattcher version: 1 runtime: python api_version: 1 handlers: - url: /.* script: wattcherapp.py Pretty simple, just says that the app uses wattcherapp.py as the source file Next, we'll dive into the python code for our webapp. First, the includes and database index. To create a database, we actually define it -in the python file-, GAE then figures out what kind of database to create for you by following those directions (very different than MySQL where you'd create the DB separately) import cgi, datetime from google.appengine.api import users from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app from google.appengine.ext import db class Powerusage(db.Model): author = db.UserProperty() # the user sensornum = db.IntegerProperty() # can have multiple sensors watt = db.FloatProperty() # each sending us latest Watt measurement date = db.DateTimeProperty(auto_now_add=True) # timestamp We use the default includes. We have a single database table called Powerusage , and it has 4 entries: one for the user, one for the sensor number, one for the last reported Watts used and one for a datestamp Each 'page' or function of our webapp needs its own class. Lets start with the function that allows us to store data in the DB. I'll call it PowerUpdate. class PowerUpdate(webapp.RequestHandler): def get(self): # make the user log in if not users.get_current_user(): self.redirect(users.create_login_url(self.request.uri)) powerusage = Powerusage() if users.get_current_user(): powerusage.author = users.get_current_user() #print self.request if self.request.get('watt'): powerusage.watt = float(self.request.get('watt')) else: self.response.out.write('Couldnt find \'watt\' GET property!') return if self.request.get('sensornum'): powerusage.sensornum = int(self.request.get('sensornum')) else: powerusage.sensornum = 0 # assume theres just one or something powerusage.put() self.response.out.write('OK!')
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
When we send a request to do that with a GET call (ie requesting the webpage), we'll first make sure the user is authenticated and logged in so we know their name. Then we'll create a new database entry by initializing a new instantiation of Powerusage. Then we'll look the GET request for the watt data, which would be in the format watt=39.2 or similar. That's parsed for us, thankfully and we can also get the sensor number which is passed in the format sensornum=3. Finally we can store the data into the permanent database Next is a useful debugging function, it will simply print out all the data it has received for your account! class DumpData(webapp.RequestHandler): def get(self): # make the user log in if not users.get_current_user(): self.redirect(users.create_login_url(self.request.uri)) self.response.out.write('<html><body>Here is all the data you have sent us:<p>') powerusages = db.GqlQuery("SELECT * FROM Powerusage WHERE author = :1 ORDER BY date", users.get_current_user()) for powerused in powerusages: if powerused.sensornum: self.response.out.write('<b>%s</b>\'s sensor #%d' % (powerused.author.nickname(), powerused.sensornum)) else: self.response.out.write(<b>%s</b>' % powerused.author.nickname()) self.response.out.write(' used: %f Watts at %s<p>' % (powerused.watt, powerused.date)) self.response.out.write("</body></html>") This function simply SELECT's (retrieves) all the entries, sorts them by date and prints out each one at a time Finally we'll make a basic 'front page' that will show the last couple of datapoints sent class MainPage(webapp.RequestHandler): def get(self): self.response.out.write('<html><body>Welcome to Wattcher!<p>Here are the last 10 datapoints:<p>') powerusages = db.GqlQuery("SELECT * FROM Powerusage ORDER BY date DESC LIMIT 10") for powerused in powerusages: if powerused.sensornum: self.response.out.write('<b>%s</b>\'s sensor #%d' % (powerused.author.nickname(), powerused.sensornum)) else: self.response.out.write('<b>%s</b>' % powerused.author.nickname()) self.response.out.write(' used: %f Watts at %s<p>' % (powerused.watt, powerused.date)) self.response.out.write("</body></html>") Its very similar to the DataDump function but its only 10 points of data and from all users, nice to use when you just want to 'check it out' but don't want to log in Finally, we have a little initializer structure that tells GAE what pages link to what functions application = webapp.WSGIApplication( [('/', MainPage),] ('/report', PowerUpdate), ('/dump', DumpData)], debug=True) def main(): run_wsgi_app(application) if name == "main ": main() Test! OK lets try it out, first lets visit http://wattcher.appspot.com/report Remember we made it a requirement to supply -some- data. Lets try again http://wattcher.appspot.com/report?watt=19.22&sensornum=1 Yay we got an OK! Lets check out the data stored by visiting http://wattcher.appspot.com/dump There's two entries because I did a little testing beforehand but you can see that there are 2 entries. Nice! We can also visit the GAE control panel and browse the data 'by hand' Anyways, now that that's working, lets go back and add the reporting technology to our sensor-reader script Getting the report out Only a little more hacking on the computer script and we're done. We want to add support for sending data to GAE. Unfortunately right now our authentication is done through Google accounts so its not easy to run on an Arduino. To adapt it you'd have to send the username in the Report GET and hope nobody else uses the same one (unless you also add a basic password system) Anyhow, I totally ripped off how to do this from some nice people on the Internet Download appengineauth.py from the download page , and change the first few lines if necessary. We hardcode the URL we're going to and the account/password as
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
well as the GAE app name users_email_address = "myaccount@gmail.com" users_password = "mypassword" my_app_name = "wattcher" target_authenticated_google_app_engine_uri = 'http://wattcher.appspot.com/report' The real work happens at this function sendreport where it connects and sends the Watt data to the GAE site def sendreport(sensornum, watt): # this is where I actually want to go to serv_uri = target_authenticated_google_app_engine_uri + "?watt="+str(watt)+"&sensornum="+str(sensornum) serv_args = {} serv_args['continue'] = serv_uri serv_args['auth'] = authtoken full_serv_uri = "http://wattcher.appspot.com/_ah/login?%s" % (urllib.urlencode(serv_args)) serv_req = urllib2.Request(full_serv_uri) serv_resp = urllib2.urlopen(serv_req) serv_resp_body = serv_resp.read() # serv_resp_body should contain the contents of the # target_authenticated_google_app_engine_uri page - as we will have been # redirected to that page automatically # # to prove this, I'm just gonna print it out print serv_resp_body Finally, we wrap up by adding the following lines to our computer script, which will send the data nicely over to GAE! # Also, send it to the app engine appengineauth.sendreport(xb.address_16, avgwattsused) You can download the final script wattcher.py - final from the download page ! Don't forget to visit wattcher.appspot.com to check out the lastest readings
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
self.response.out.write('<form action="/config" method="get">') for sensor in sensorset: name = "" currnamequery = db.GqlQuery("SELECT * FROM Sensorname WHERE author = :1 AND sensornum = :2", users.get_current_user(), sensor) currname = currnamequery.get() # first see if we're setting it! if self.request.get('sensornum'+str(sensor)): name = self.request.get('sensornum'+str(sensor)) if not currname: currname = Sensorname() # create a new entry currname.sensornum = sensor currname.author = users.get_current_user() currname.sensorname = name currname.put() else: # we're not setting it so fetch current entry if currname: name = currname.sensorname self.response.out.write('Sensor #'+str(sensor)+': <input type="text" name="sensornum'+str(sensor)+'" value="'+name+'"></text><p>') self.response.out.write("""<div><input type="submit" value="Change names"></div> </form> </body> </html>""") Now we can have more useful data in the history dump Now we can see that Phil is mostly to blame for our power bill! Google Visualizer So we have data and we'd like to see our power usage history. Graphing data is a lot of work, and I'm lazy. So I look online and find that Google -also- has a visualization API! This means I don't have to write a bunch of graphical code, and can just plug into their system. Sweet! OK checking out the gallery of available visualizations , I'm fond of this one, the Annotated Time Line Note how you can easily see the graphs, scroll around, zoom in and out and each plot is labeled. Perfect for plotting power data! Data formatting Theres a few restrictions to how we get the data to the visualization api and our best option is JSon data. As far as I can tell, JSON is what happened when everyone said "wow, XML is really bulky and wasteful". Anyhow, theres like 4 layers of framework and interpretive data structions and in the end there was a pretty easy to use library written by the Google Visualizations team that let me 'just do it' with a single call by putting the data into a python 'dictionary' in a certain format. Lets go through the code in sections, since the function is quite long class JSONout(webapp.RequestHandler): def get(self): # make the user log in if no user name is supplied if self.request.get('user'): account = users.User(self.request.get('user')) else: if not users.get_current_user(): self.redirect(users.create_login_url(self.request.uri)) account = users.get_current_user() # assume we want 24 hours of data historytimebegin = 24 if self.request.get('bhours'): historytimebegin = int(self.request.get('bhours')) # assume we want data starting from 0 hours ago historytimeend = 0 if self.request.get('ehours'): historytimeend = int(self.request.get('ehours')) # data format for JSON happiness datastore = [] columnnames = ["date"] columnset = set(columnnames) description ={"date": ("datetime", "Date")} # the names of each sensor, if configured sensornames = [None] * 10 First up we get the user we're going to be looking up the data for. Then we have two variables for defining the amount of data to grab. One is "ehours" (end hours) and the other is "bhours". So if you wanted the last 5 hours, bhours would be 5 and ehours would be 0. If you wanted 5 hours from one day ago, bhours would be 29 and ehours would be 24. datastore is where we will corall all the data. columnnames and description are the 'names' of each column. We always have a date column, then another column for each sensor stream. We also have a seperate array to cache the special sensor names. onto the next section! Here is where we actually grab data from the database. Now app engine has this annoying restriction, you can only get 1000 points of data at once so what I do is go through it 12 hours at a time. The final datastore has all the points but its easier on the database, I guess. One thing that's confusing perhaps is each column has a name and a description. The name is short, say "watts3" for sensor #3, but the description might be "Limor's workbench". I don't even remember writing this
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
code so maybe you can figure it out on your own? # we cant grab more than 1000 datapoints, thanks to free-app-engine restriction # thats about 3 sensors's worth in one day # so we will restrict to only grabbing 12 hours of data at a time, about 7 sensors worth while (historytimebegin > historytimeend): if (historytimebegin - historytimeend) > 12: timebegin = datetime.timedelta(hours = -historytimebegin) timeend = datetime.timedelta(hours = -(historytimebegin-12)) historytimebegin -= 12 else: timebegin = datetime.timedelta(hours = -historytimebegin) historytimebegin = 0 timeend = datetime.timedelta(hours = -historytimeend) # grab all the sensor data for that time chunk powerusages = db.GqlQuery("SELECT * FROM Powerusage WHERE date > :1 AND date < :2 AND author = :3 ORDER BY date", datetime.datetime.now()+timebegin, datetime.datetime.now()+timeend, account) # sort them into the proper format and add sensor names from that DB if not done yet for powerused in powerusages: coln = "watts" + str(powerused.sensornum) entry = {"date": powerused.date.replace(tzinfo=utc).astimezone(est), coln: powerused.watt} if not (coln in columnset): columnnames.append(coln) columnset = set(columnnames) # find the sensor name, if we can if (len(sensornames) < powerused.sensornum) or (not sensornames[powerused.sensornum]): currnamequery = db.GqlQuery("SELECT * FROM Sensorname WHERE author = :1 AND sensornum = :2", account, powerused.sensornum) name = currnamequery.get() if not name: sensornames[powerused.sensornum] = "sensor #"+str(powerused.sensornum) else: sensornames[powerused.sensornum] = name.sensorname description[coln] = ("number", sensornames[powerused.sensornum]) #self.response.out.write(sensornames) # add one entry at a time datastore.append(entry) Finally at the end of all the looping, we call the magic function that turns the dictionary into JSON, wrap it in the proper Google Visualization package, then spit it out! # OK all the data is ready to go, print it out in JSON format! data_table = gviz_api.DataTable(description) data_table.LoadData(datastore) self.response.headers['Content-Type'] = 'text/plain' self.response.out.write(data_table.ToJSonResponse(columns_order=(columnnames), order_by="date")) If you were to visit http://wattcher.appspot.com/visquery.json?user=adawattz@gmail.com&bhours=1 it would output something like this:
google.visualization.Query.setResponse({'version':'0.5', 'reqId':'0', 'status':'OK', 'table': {cols: [{id:'date',label:'Date',type:'datetime'},{id:'watts1',label:'Limor',type:'number'},{id:'watts5',label:'Workbench',type:'number'},{id:'watts2',label:'Adafruit',type:'number'},{id:'watts4',label: [{c:[{v:new Date(2009,1,25,21,20,2)},{v:64.8332291619},,,{v:null}]},{c:[{v:new Date(2009,1,25,21,20,3)},,{v:230.122099757},,{v:null}]},{c:[{v:new Date(2009,1,25,21,20,3)},,,{v:65.4923925044},{v:null}]},{c:[{v:new Date(2009,1,25,21,20,4)},,,,{v:48.6947643311}]},{c:[{v:new Date(2009,1,25,21,25,3)},,{v:228.409810208},,{v:null}]},{c:[{v:new Date(2009,1,25,21,25,3)},{v:67.3574917331},,,{v:null}]},{c:[{v:new Date(2009,1,25,21,25,3)},,,{v:66.0046383897},{v:null}]},{c:[{v:new Date(2009,1,25,21,25,4)},,,,{v:47.3892235642}]},{c:[{v:new Date(2009,1,25,21,30,2)},{v:84.9379517795},,,{v:null}]},{c:[{v:new Date(2009,1,25,21,30,3)},,,,{v:99.7553490071}]},{c:[{v:new Date(2009,1,25,21,30,5)},,{v:229.73642288},,{v:null}]},{c:[{v:new Date(2009,1,25,21,30,6)},,,{v:66.6556291818},{v:null}]},{c:[{v:new Date(2009,1,25,21,35,2)},,,{v:67.3146052998},{v:null}]},{c:[{v:new Date(2009,1,25,21,35,3)},{v:96.2322216676},,,{v:null}]},{c:[{v:new Date(2009,1,25,21,35,3)},,{v:226.678267688},,{v:null}]},{c:[{v:new Date(2009,1,25,21,35,4)},,,,{v:158.428422765}]},{c:[{v:new Date(2009,1,25,21,40,3)},,{v:232.644574879},,{v:null}]},{c:[{v:new Date(2009,1,25,21,40,4)},,,,{v:153.666193493}]},{c:[{v:new Date(2009,1,25,21,40,6)},,,{v:66.7874343225},{v:null}]},{c:[{v:new Date(2009,1,25,21,40,12)},{v:95.0019590395},,,{v:null}]},{c:[{v:new Date(2009,1,25,21,40,21)},{v:95.0144043571},,,{v:null}]},{c:[{v:new Date(2009,1,25,21,40,23)},,,{v:66.8060307611},{v:null}]},{c:[{v:new Date(2009,1,25,21,45,2)},,,{v:66.9814723201},{v:null}]},{c:[{v:new Date(2009,1,25,21,45,3)},,{v:226.036818816},,{v:null}]},{c:[{v:new Date(2009,1,25,21,45,3)},{v:99.2775581827},,,{v:null}]},{c:[{v:new Date(2009,1,25,21,45,4)},,,,{v:154.261889366}]},{c:[{v:new Date(2009,1,25,21,50,4)},{v:102.104642018},,,{v:null}]},{c:[{v:new Date(2009,1,25,21,50,4)},,,,{v:155.441084531}]},{c:[{v:new Date(2009,1,25,21,50,5)},,,{v:67.0087146687},{v:null}]},{c:[{v:new Date(2009,1,25,21,50,5)},,{v:230.678636915},,{v:null}]},{c:[{v:new Date(2009,1,25,21,55,3)},{v:103.493297176},,,{v:null}]},{c:[{v:new Date(2009,1,25,21,55,3)},,,,{v:151.309223916}]},{c:[{v:new Date(2009,1,25,21,55,4)},,,{v:66.9174858741},{v:null}]},{c:[{v:new Date(2009,1,25,21,55,4)},,{v:227.765325835},,{v:null}]},{c:[{v:new Date(2009,1,25,22,0,3)},,,{v:67.0004310254},{v:null}]},{c:[{v:new Date(2009,1,25,22,0,3)},,,,{v:150.389989112}]},{c:[{v:new Date(2009,1,25,22,0,3)},,{v:230.892049553},,{v:null}]},{c:[{v:new Date(2009,1,25,22,0,4)},{v:92.2432771363},,,{v:null}]},{c:[{v:new Date(2009,1,25,22,15,3)},{v:97.5910440774},,,{v:null}]},{c:[{v:new Date(2009,1,25,22,15,3)},,,,{v:143.722595861}]},{c:[{v:new Date(2009,1,25,22,15,4)},,,{v:64.4898008851},{v:null}]},{c:[{v:new Date(2009,1,25,22,15,4)},,{v:222.357617868},,{v:null}]}]}}); Anyways, you can kinda see the data, also note its actually a function call, this stuff is really kinky! Now go to the Google Visualizations Playground and enter in that URL into the sandbox And you can see the visualization itself pop out! (this is just a screen shot so go do it yerself if you want to mess around) OK go mess around, adding and changing bhours and ehours
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Wrapping up the visualization OK we're nearly done. Now we just need to basically grab the code from the sandbox and make it a subpage in our app engine...like so: class Visualize(webapp.RequestHandler): def get(self): # make the user log in if no user name is supplied if self.request.get('user'): account = users.User(self.request.get('user')) else: if not users.get_current_user(): self.redirect(users.create_login_url(self.request.uri)) account = users.get_current_user() historytimebegin = 24 # assume 24 hours if self.request.get('bhours'): historytimebegin = int(self.request.get('bhours')) historytimeend = 0 # assume 0 hours ago if self.request.get('ehours'): historytimeend = int(self.request.get('ehours')) # get the first part, headers, out self.response.out.write( <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Google Visualization API Sample</title> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", {packages: ["annotatedtimeline"]}); function drawVisualizations() { ) # create our visualization self.response.out.write(new google.visualization.Query("http://wattcher.appspot.com/visquery.json?user= + account.email()+&bhours= +str(historytimebegin)+").send( function(response) { new google.visualization.AnnotatedTimeLine( document.getElementById("visualization")). draw(response.getDataTable(), {"displayAnnotations": true}); }); ) self.response.out.write(} google.setOnLoadCallback(drawVisualizations); </script> </head> <body style="font-family: Arial;border: 0 none;"> <div id="visualization" style="width: 800px; height: 250px;"></div> </body> </html>) The first part is pretty straight forward, get the user name or login. Then we will assume the user wants 1 last day of data, so set bhours and ehours . Then we literally just print out the code we copied from Google's Visualization sandbox, done! Viz Viz Viz The only thing I couldn't figure out is how to get 3 visualizations going on at once (last hour, day and week) with the above code. It just kinda broke. So for the triple view I had to use iframes :( class VisualizeAll(webapp.RequestHandler): def get(self): # make the user log in if no user name is supplied if self.request.get('user'): account = users.User(self.request.get('user')) else: if not users.get_current_user(): self.redirect(users.create_login_url(self.request.uri)) account = users.get_current_user() self.response.out.write( <h2>Power usage over the last hour:</h2> <iframe src ="graph?user=adawattz@gmail.com&bhours=1" frameborder="0" width="100%" height="300px"> <p>Your browser does not support iframes.</p> </iframe> <h2>Power usage over the last day:</h2> <iframe src ="graph?user=adawattz@gmail.com&bhours=24" frameborder="0" width="100%" height="300px"> <p>Your browser does not support iframes.</p> </iframe>
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
<h2>Power usage over the last week:</h2> <iframe src ="graph?user=adawattz@gmail.com&bhours=168" frameborder="0" width="300%" height="500px"> <p>Your browser does not support iframes.</p> </iframe> ) Anyhow, it works just fine. Timecodes! The final thing that wont be reviewed here is how I got the date and times to be EST instead of UTC. As far as I can tell, its kind of broken and mysterious. Check the code if you want to figure it out.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
Getting started with the Maxbotix sonar sensor - quick start guide by adafruit
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Turn up the sound and watch Lester the cat battle it out with the Bubblesteen! * No animals were harmed during testing. This project came about after playing around with pan and tilt using servos. Most of the pan and tilt senereos I saw involved using webcams or some type of camera, which pan and tilt is perfect for. There are some good instructables and how-to's on the web for this very thing. I may not have an available camera, but I did have some bubble mix :) http://bernardkatz.com/
These things I used, but are not critical. This is where your own creativity will need to come to play. 1. 2. 3. 4. 5. 6. 1 roll of perferated metal tape- any hardware store nuts and bolts of various sizes - thread count not critical :) diamond plate- local scrap yard aluminum channel- local scrap yard 1 threaded rod hanger/ plate earthquake putty or museum wax
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
7. 5 minute epoxy 8. 1/4" acrylic sheet- about 6" x 6" worth 9. acrylic adhesive The tools you need will once again depend on what you build yours out of.
Image Notes 1. This stuff is almost as good as duct tape when it comes to versitility
Image Notes 1. I highly recommend using special drill bits that are made for drilling plastic. Less chance of cracking the plastic. Can find on the web or local plastics supplier
File Downloads
bubble_servo_DCMotor_april24b.pde (1 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'bubble_servo_DCMotor_april24b.pde']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. gromet to protect servo and DC motor wires and to keep liquid from leaking to micro.
Step 5:
Tip # 2 - I used museum wax to hold the servos together. It is fairly strong, but removable in case you need the servos for something else.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. servos 2. bubble dipper and glass cup for bubble mix 3. small DC motor with propeller
Related Instructables
Arduino-based line follower robot using Pololu QTR-8RC line sensor by techbitar
JabberBot! The Arduino robot with an ATMega brain and bluetooth braun! :-) (Photos) by declanshanaghy
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Author:johndavid400
author's website I have always been one to take things apart to figure out how they work, so most of what I own has been dismantled. If it can't be taken apart or hacked, i'd rather not have it. And I like to do things the cheapest way possible, because I like to do a lot of things and I don't have a lot of money.
. I added some new code to the project that is safer, including a manual kill-switch and a Failsafe switch. To implement the Failsafe, I used another Atmega168 (or an Arduino), to control a normally-open 60amp power relay. The relay disconnects the power to the motorcontroller unless receiving a "good" signal from the 2nd microcontroller. This signal is updated 2 times every second and is either ON or OFF. If the bot gets out of range, it loses power to the motors. If I flip the kill-switch on the Transmitter, it loses power to the motors. This is also a handy way to disable it remotely if anything were to go near it that wasn't supposed to. The updated code for both microcontrollers is on the CODE page. In addition to the failsafe, I changed the way the code reads the PPM signals to make it more reliable. Also, I realized that I was only able to run the bot at 80% speed with the old code, so now it is quite a bit faster and has more power (it can carry me across the yard @ 155lb). Check out this new video of me riding the Lawnbot400, my wife driving it over a bunch of branches, then me making do some wheelies. Don't worry, the mower was turned off this time since the grass didn't need cutting, we were just having fun.
Disclaimer: DANGER!!! This is a VERY dangerous piece of equipment if not handled appropriately. Since all the electronics have been home-built and the Arduino code is new, you MUST be very careful while operating anything heavy with this code. I have had 1 or 2 times during testing - and before adding a secondary failsafe - that the main Arduino jammed up and I temporarily lost control of the mower for a few seconds!!!! Though I have added several filters to discard unwanted signals and I rarely have any issues, an un-manned lawnmower IS STILL A POTENTIAL DEATH TRAP and I assume no responsibility for anything that happens as a result of your use of this code or this tutorial. This is meant as a guide for people who not only have the ability to build such a contraption, but the responsibiltity to operate it safely as well. Any suggestions or ideas on how to make this a safer project is always gladly accepted. Having said that, it's also awesome. Background: Most R/C equipment comes packaged for a single specific use, which makes it easy to use but is very limited in what you can do with it. So using the Arduino as an interpreter between the R/C system and the motor driver, I can use any motor controller that I want (depending on the size of the motor and power required), reprogramming the Arduino to supply the required signals. What I ended up with: After successfully hacking a few R/C cars from the thrift store, I got bored driving them around the driveway and I was having a hard time convincing my wife that there was any usefulness in the revived toy car. So I decided it was time to make my biggest chore at home, a whole lot easier and actually put my Arduino to work, and thats how I ended up building an R/C lawnmower. While designing the lawnmower, I thought it would be cool to learn about the electronics that made it move, so I designed and built my own motor speed controller (or Hbridge) to power the lawnmower. I looked around at every H-bridge design I could find before deciding to go with a Mosfet h-bridge that uses both N-channel and Pchannel Mosfets. I built several different motor driver boards for this project, the first two were on Radio-Shack perf-board and the next 4 were designed using EagleCad and etched to a piece of copper-clad PCB, using the toner-transfer method. The most recent board is the one I use to mow the lawn as it has the ability to stay cool even while operating for long periods of time (30-40 mins straight) at 10-20amps and 24vdc. FWIW, I had to burn up a lot of Mosfets to find this out. If you want to see any of my other motor controllers, go to www.rediculouslygoodlooking.com and check out the Mosfet shield.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Here is what I bought already assembled: FM R/C transmitter and receiver pair from ebay = $40 Arduino = $30 I already had a used push-mower = $60 Here is what I bought and assembled into the Lawnbot400 (as I call it): (2) electric-wheelchair motors from ebay = $40 ea (2) 12v marine deep cycle batteries - Walmart - $60 ea new (used batteries might work) 36" pieces of 2" angle-iron (2) and 1" square-tubing (2) from Home Depot = $8 ea 36" pieces of 1" angle-iron (2) and 1" flat steel bar (2) from Home Depot = $5 ea (a lot) of nuts, bolts, washers, lock washers 3/8" or 1/2" with drill bit = $20 (2) caster wheels from Harbor Freight Tools = $14 ea (2) drive wheels from Harbor Freight Tools = $8 ea (36") 5/8" threaded rod with several 5/8" nuts and washers from Home Depot = $8 (2) sprockets from Allelectronics = $5 ea #25 roller chain and a few universal links from Allelectronics = $10 for 3' sprockets from Electronics Goldmine = $1.50 ea (24) mosfets from Digikey = $1 ea (there were quite a few small parts for building the H-bridge, they are listed later on)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. the front left mower deck hanger 2. the rear left mower deck hanger
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. the Triple8 motor controller with 24 mosfets, each set of 3 is bolted together and each mosfet is heatsinked. It has 3x as many Mosfets as it's little brother, but essentially the same circuit. 2. the predecessor to the Triple8, only 8 mosfets total (just enough to complete a dual h-bridge). Though it would run the Lawnbot400 around for about 10 minutes, it would end up getting hot after some use.
Image Notes 1. the 2 neutral indicator LED's (1 red and 1 yellow) hard-wired to digital pins 12 and 13. Anytime I center one of the control sticks on the lawnbot400, one of these lights turns on. 2. the female headers used to plug my R/C receiver directly onto (they use standard .1" spacing like perfboard you can buy at Radio Shack) 3. these are the breakout screw-terminals used to route the R/C receiver signals to the Atmega168. I am only using 2 of the 6 R/C channels right now, so the other 4 can be used for extra servo's or whatever else. 4. digital pins 2 and 3 of the Atmega168, used for the External Interrupts on those pins to capture the R/C signals from the receiver. 5. These are the screw-terminals for the signal wires leading to the H-bridge motor controller. I only need 4 wires to run my motor controller, but there are 3 extra digital pins that are unused by the current code.... Any ideas for their use? 6. all 6 analog pins are unused! I might add some sensors to automate the Lawnbot400 one day. 7. the Atmega168, it's reset button, and a kind-of hidden 16mHz crystal oscillator (together make a bare-bones Arduino). 8. 5-35v power terminal and onboard 5v regulator for powering the Atmega and R/C receiver. Plus a bunch of capacitors and a reverse polarity protection diode.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. this is the 2nd H-bridge, notice that the motor screw-terminals for each motor will be on opposite sides of the board. 2. This is the 1st H-bridge
Step 1: Setting up
1. Get R/C transmitter and receiver (I have tested FM and AM systems and they both work) 2. Upload code to Arduino (it is on the last page) 3. Make sure you are getting a good signal You will need an R/C radio transmitter(Tx) and receiver(Rx) pair, which is the most expensive part of the project, but can be used for every future project you might have involving R/C. I went with a 6-channel FM system, but I have tested a 27mHz AM transmitter/receiver and it works just as well. The beauty of the Arduino is that if you want to adjust the deadband or the motor-speed at turn-on, (unlike commercial ESC's) it is all easy changed in the Arduino IDE. Once you have your radio, all you need to do is upload the code to your Arduino, plug in the 2 channels that you want to use from your radio receiver into Digital pins 2 and 3 of the Arduino (these are the 2 external interrupt pins on the Arduino) and you are ready to control whatever you want. If you don't have a batter pack for the receiver, you can run jumper wires from the Arduino +5v and GND to the R/C receiever for power, you only need to supply a single channel with GND and +5v (it is not necessary to power every channel). Upload the code using the Aruino IDE (I am using version 0016 on Ubuntu). I started by controlling 3 LED's with 1 channel on a breadboard. I wired a red LED to be Forward (digital pin 9), a yellow LED for Reverse(digital pin 5), and a green LED for Neutral (digital pin 12). This allows you to adjust the code to fit the needs of your radio system. You will have smooth 0-100% PWM control of both LED's and the neutral light will turn on when the control stick is centered. If needed, you can widen the deadband for Neutral, but doing so will increase the speed at turn-on (which starts at 0%, so that would likely be desirable). See pictures. ---------------------------------------The code has 4 PWM outputs for motor control: channel 1 Forward = Arduino digital pin 9 channel 1 Reverse = Arduino digital pin 5 channel 2 Forward = Arduino digital pin 10 channel 2 Reverse = Arduino digital pin 6
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
2 outputs for Neutral indicator lights: channel 1 = digital pin 12 channel 2 = digital pin 13 The 2 INPUTS from the R/C receiver should go to: channel 1 = digital pin 2 channel 2 = digital pin 3 --------------------------------------If you are interested to see your readings, turn on your Serial Monitor in the Arduino IDE (set to 9600bps) and you can see the actual real-time pulse readings for each channel, they should read: full forward = 2000 (2 milliseconds) center = 1500 (1.5 ms) full reverse = 1000 (1 ms) These readings reflect the number of microseconds that the pulse signal from the R/C receiver stays HIGH (or at 5v). The typical Servo signal that comes from an R/C receiver is a pulse whose length varies from approximately 1 ms to 2 ms with 1.5 ms being Neutral (which should also be the position that the control stick returns to when you let it go). The transmitter reads the position of the control stick and sends that pulse length about once every 20milliseconds. So it is constantly updating for precise control (for more info, look up PPM on wikipedia). If you push the transmitter control stick forward, the reading should go up to 2000, if you push it backward it should go down to 1000. You can also use a voltage meter at this point to see that Digital Pins 5, 6, 9, & 10 will be changing from 0-5v depending on the position of the control sticks on the R/C transmitter. If you care to know, the code uses the Arduino's 2 external interrupts to capture when the Rx signal pin changes states (goes from HIGH to LOW or vice versa), when it does at the beginning of each signal, it calls the interrupt function which reads the digital state of the pin and if HIGH, it records the microseconds value on the Arduino system timer0. It then returns to the loop until the pin goes LOW, at which point it subtracts the previously recorded microsecond value from the new current microsecond value to determine how long the pulse stayed HIGH (which tells us the position of the Transmitter control stick). It then does that over and over really fast. I have the values constrained from 600-2400 in the Arduino code to keep things simple. Once it receives the signal and constrains it, it maps that value to be proportionally between 0 and 511, where 255 will be Neutral. The code then determines when the value changes and uses a function to determine the appropriate 0-255 PWM value in the appropriate direction and each direction has it's own PWM output pin to control the H-bridge. On a side note: To make things easier, I built an Arduino-based breakout board using Radio-Shack perf-board, a 28pin DIP socket, a 16mhz oscillator, and a bit of wire. I also added a set of female-headers in such a way that I can plug my R/C receiver directly onto the breakout board. For secure connections while mowing grass, I added screwterminals on each Output pin and each of the 6 channels from the receiver. It also has a built in 5v regulator to power both the Atmega168 from the Arduino and the R/C receiver (which gets power when you plug it onto the breakout board). So you just route jumper wires from the channels you want to use on the receiver, to the Atmega digital pins 2 and 3. I also added 2 LED lights that are hard wired to the digital pins 12 and 13 for the Neutral lights for each channel so I can easily see when I am in neutral. Since this bot is a Tank steer setup with 1 drive motor on each wheel, the coding is very straightforward where the left stick controls the left motor and the right stick controls the right motor. Both sticks forward means lawnmower goes straight forward, both backward and it goes in reverse. If you push the left forward and the right backward, it does a zero-turn circle. As you can imagine, mowing the grass is really fun now.
Image Notes 1. this is my receiver plugged into a breakout board I made for it using perfboard. 2. the Arduino receiving R/C servo signals and translating them into forward/reverse PWM values. 3. each set of LED's is controlled by it's own channel from the R/C receiver. Forward will turn on the green light, reverse the Red light, and neutral will light up the Yellow light. This is the easiest way to test the setup.
Image Notes 1. this is a typical R/C transmitter with 4 channels, the one I got is a knockoff of this one, but looks very similar. 2. this is a typical R/C receiver. Mine has it's connector pins on the end of the unit instead of the top, enabling me to plug my receiver directly onto the control board. 3. these are typical servo motors. They can be controlled directly by the R/C receiver and are useful for many things.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. the Atmega168 from my Arduino (I bought a few extras to use for projects like this). I remove it when I need to re-program it in the Arduino. 2. my R/C receiver plugged into the control board. Notice the green antenna coming out.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
motor controller, all you need to do is print the .brd file onto some magazine paper using a laser printer, and iron that onto a piece of clean copper-clad. Then etch it with your favorite etchant solution (I use 2 parts Hydrogen Peroxide to 1 part Muriatic Acid and it works perfectly). And remove the toner with Acetone when done etching. For ease of assembly I designed this board to be Single-sided and to use only through-hole components, no surface-mount stuff to mess with! Yay for you. You can get the .brd files for the various h-bridges at www.rediculouslygoodlooking.com
Image Notes 1. this is the 2nd H-bridge, notice that the motor screw-terminals for each motor will be on opposite sides of the board. 2. This is the 1st H-bridge
Image Notes 1. bussed resistor networks 47ohm. They have 1 input and 5 outputs, this board only uses 3 of the outputs. 2. pull up/down resistors 4.7k ohm, these keep the Mosfets turned off when not being used. 3. capacitors, I used (4) 680uF 50v, but you can substitute others that fit. 4. screw terminal connectors for motor terminals and power
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. this is 1 complete h-bridge to control 1 DC motor. The 2 smaller mosfets toward the bottom are used as signal-inverters to control the High-side pchannel mosfets. 2. each h-bridge has it's own set of direction lights to determine the direction of the current.
Image Notes 1. the Triple8 motor controller with 24 mosfets, each set of 3 is bolted together and each mosfet is heatsinked. It has 3x as many Mosfets as it's little brother, but essentially the same circuit. 2. the predecessor to the Triple8, only 8 mosfets total (just enough to complete a dual h-bridge). Though it would run the Lawnbot400 around for about 10 minutes, it would end up getting hot after some use.
Image Notes 1. R/C receiver plugged into Arduino breakout board 2. cooling fan for motor controller (h-bridge)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Atmega168 microcontroller programmed in the Arduino, then transferred to this home-made breakout board for permanent use. 2. The R/C receiver is plugged directly onto my home-made breakout board which supplies the +5v and GND needed for power as well as a breakout screwterminal for each channel. This receives the signals from the remote-control (R/C transmitter) and sends them into the Atmega168 for processing.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The bolts coming from around the axle are the 3 bolts that hold the sprocket onto the other side.
Image Notes 1. The drive sprockets are about 6.5" in diameter and had no holes to mount them. I had to drill 3 holes and mount bolts through the sprocket into the wheel. I then added a small bead of weld to keep it centered around the axle.
Image Notes 1. save a bolt on each side by using the same one that you used to bolt the frame riser brace into the frame.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. the front 1" steel square tubing that the front caster wheels attach to.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Motor controller and Arduino 2. push mower 3. (2) 12v batteries (deep cycle marine is the best) 4. electric wheel-chair motors
Image Notes 1. you need 1 nut on the inside of the frame riser bar to, and 1 on the outside to hold it securely to the axle. 2. I bolted the support bar in with the rear lawnmower-deck hangers to save a bolt on each side.
Image Notes 1. the rear bar should be the same width as the center of the rear wheels on your push-mower (must be measured before you remove the wheels). 2. the main frame bars. 3. the support brace
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. one of the main frame bars from step 1, which is 2" angle-iron. 2. the other main frame bar from step 1
Image Notes 1. the front left mower deck hanger 2. the rear left mower deck hanger
Image Notes 1. the rear bar should be the same width as the center of the rear wheels on your push-mower (must be measured before you remove the wheels). 2. the main frame bars. 3. the support brace
Image Notes 1. The drive sprockets are about 6.5" in diameter and had no holes to mount them. I had to drill 3 holes and mount bolts through the sprocket into the wheel. I then added a small bead of weld to keep it centered around the axle.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The bolts coming from around the axle are the 3 bolts that hold the sprocket onto the other side.
Image Notes 1. one of the main frame bars from step 1, which is 2" angle-iron. 2. the other main frame bar from step 1
Image Notes 1. you need 1 nut on the inside of the frame riser bar to, and 1 on the outside to hold it securely to the axle. 2. I bolted the support bar in with the rear lawnmower-deck hangers to save a bolt on each side.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
The holes drilled in the motor mount plate are just single holes for the bolt to fit through, the holes through the frame were cut with a Dremel tool with a cutoff wheel to make channels for the motor mount bolts to travel forward/backward through. You want the 2" angle-iron motor mount bracket to set as much on top of the main frame rails as possible, the bolts (which you can't see with the motors mounted) that hold the motors to the motor mount plates will keep the motor mount plate from laying flat against the frame bars. Go ahead and mount the motors loosely to the frame using 2 bolts on each. Cutting and connecting the chain: Now get your 10' of #25 chain and wrap it around the main drive sprocket on the wheel. With the motors pushed all the way toward the back of the frame (closest to the drive wheel sprockets), wrap the chain around the motor drive sprocket and mark where they overlap. You need 2 of the universal chain links from to connect the 2 loose ends. Cut the 2 pieces of chain and connect them to each side with the universal links to connect them. Tensioning the chain: Push the motor mounts forward until there is good tension with the chain, and tighten up the bolts that hold the motor mount plates to the main frame. Now you can generate electricity. Connect a voltage meter to 1 set of motor terminals and push the bot around.
Image Notes 1. notice the motor is mounted to this piece of 2" angle-iron and that is mounted to the frame with these bolts. They allow the motor to slide forward/backwards on the frame when loosened.
Image Notes 1. notice the gap between the motor mount plate and the main frame bar. This is caused by the bolts that hold the motor to the motor mount plate. 2. These are 2 unfinished holes for a 3rd mounting hole which I later deemed unnecessary.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. This is how to make the motor mount slide holes. Drill 2 holes where you want the ends of the track to be. Then use a Dremel with a cutoff wheel to cut a straight line between the tops and bottoms of each hole. They should end up looking like the ones above with bolts in them. 2. Tighten up these bolts when you get proper tension with the chain.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. the front left mower deck hanger 2. the rear left mower deck hanger
Image Notes 1. make sure to keep the old wheel shafts from touching the drive tires (leave 1/2" or so)
Image Notes 1. save a bolt on each side by using the same one that you used to bolt the frame riser brace into the frame.
Image Notes 1. adjustable total length (for different model push mowers) 2. caster wheels with 360 degree turning 3. leave a gap or the front wheels will hit the mower deck!!!
Image Notes 1. by mounting the lawn mower deck-hangers to the old wheel shafts, you can still
Image Notes 1. these are the 1" angle-iron lawnmower-deck hangers, they hold the mower-
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
adjust the mowing height of the mower deck without taking anything apart.
Image Notes 1. make sure the front caster wheels won't hit the mower deck when they swing around (leave at least 1/2" clearance)
Image Notes 1. I only installed 3 of the 4 bolts on each front caster wheel. 2. these 2 bolts on each side go through the caster wheel mounting plate AND the frame
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Motor controller and Arduino 2. push mower 3. (2) 12v batteries (deep cycle marine is the best) 4. electric wheel-chair motors
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Atmega168 microcontroller programmed in the Arduino, then transferred to this home-made breakout board for permanent use. 2. The R/C receiver is plugged directly onto my home-made breakout board which supplies the +5v and GND needed for power as well as a breakout screw-terminal for each channel. This receives the signals from the remote-control (R/C transmitter) and sends them into the Atmega168 for processing.
Image Notes 1. R/C receiver plugged into Arduino breakout board 2. cooling fan for motor controller (h-bridge)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
Lawnbot400_code.zip (152 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Lawnbot400_code.zip']
#3
#4
#5
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
How To Build A Solar Charged Remote Control Electric Lawn Electric Lawn Mower (video) by Mower by hastyhost susanta
remote start system for car truck and suv by Remote control lawnmower by lonemeno pfoglietta
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Roughly 90 feet of 30AWG Wire This is the hookup wire for all of our sensors. Radioshack ? $16 Neodymium Magnets to fit your pieces This is where the measurements from the bottoms of your chess pieces come in handy. You'll need disc magnets to fit underneath each piece. For proper strength, they should be about 1/8" think. A great source for these is K&J Magnetics . ? $55 1 Large Neodymium Magnet This magnet will be attached to the XY table underneath the board, to move each piece around. K&J Magnetics $19 Note: This was Waaaay too powerful. It would draw in pieces it shouldn't have. You'd be better off going with some smaller ceramic magnets, like you'd find at Staples or another office supply store. 2 Pairs of 24" Drawer Bearings The size of your bearings will depend on the playable area of your chess board. These allow for the stepper motors to move back and forth underneath the board. Amazon ? $30 2 Stepper Motors Stepper motors can move in very precise increments. In the late 90s they were in just about every piece of tech you could find. The best place to get these are in old dotmatrix printers. You can them at the flea market for next to nothing! 2 Vex Rack and Gear Sets The rack gears allow the stepper motors to travel on the drawer bearings. See the Step 4 for a more detailed explanation. Vex Store $40 1 Standard Hobby Servo This servo will be raising and lowering the powerful magnet below the board. You can find them at a hobby shop for ? $10, or Amazon ? $12 1 2' x 2' Perf Board The perf board is super thin and will be the mounting surface for all of our reed switches. The price will vary greatly on this one, but I got mine from Home Depot for ? $5 1 2' x 2' x 1/2" MDF Board Similar to the perf board, I got this from Home Depot for ? $5 Various lengths of scrap 1"x2" wood This wood forms the bridge between the X-Axis drawer bearings. Go behind any hardware store and you'll see dumpsters full of this stuff for totally free! 5 Minute Epoxy This stuff is a godsend. It's used for just about everything in this project, from mounting motors to attaching the rack gears. I'm in love -- and I picked mine up from Radio Shack for $3 1 Wood Saw You probably already have this one, but if you don't, I picked mine up at Ace Hardware for $10 a couple of years ago.
Image Notes 1. Standard wood saw 2. 5 minute epoxy 3. Arduino Mega 4. Arduino Uno. A Diecimila would also work. 5. 24" Drawer Bearing 6. Standard Servo 7. Two 24v 1A stepper motors. They are already mounted here. I describe the
Image Notes 1. Arduino Mega... This thing is a beast! 2. Mux Shield. This gives us an additional 46 inputs on our mega.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
process in the next step. 8. 24v 1A power supply 9. Adafruit Motor Shield 10. 1x2 lumber. Some of the better stuff I have found for free behind home depot. 11. 2' x 2' MDF 12. 2' x 2' pegboard
Image Notes 1. 24 gauge hookup wire. This stuff is pretty cheap -- a 90ft roll is about $5 2. Diagonal cutters -- these are great for clipping leads that are just a little too long. 3. Heat shrink tubing is great for cleaning up your connections. It is optional.
Image Notes 1. These are reed switches... metal encased in glass. They are a bit fragile. I would buy a few more than you need just in case.
Image Notes 1. X Axis Stepper Motor 2. This is the servo that raises and lowers a powerful neodymium magnet. 3. Y Axis Stepper Motor
Image Notes 1. X Axis Stepper 2. Y Axis Stepper 3. Servo to raise and lower magnets (pseudo z-axis)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The first digit corresponds with the x axis and the second digit with the y.
File Downloads
XY.skp (347 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'XY.skp']
Image Notes 1. There is a screw behind this bearing. My screws came with the mounting
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Go slowly or you risk chipping the wood on the other side.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. This is how the motor will fit into the rack gear once completed.
Image Notes 1. Make sure to mix this really thoroughly or it may not dry.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. These two center taps get connected. Usually they will be the same color.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Clamp this as soon as you press it together for the strongest bond.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The mux shield has resistors built in. You only need 16.
Image Notes 1. Be careful not to break the glass when bending the leads.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
I'll leave it up to the merit of my Instructable, though, to decide whether I deserve this laser, not the list of sappy thing's I'd do with it. :D Instructables and Epilog have done something great here, and the projects created by this fantastic contest will set a standard of quality for years to come. I hope you've enjoyed reading about this project as much as I enjoyed making it. Make sure to leave a comment if this has inspired you to build anything, I'd love to see what you've made!
Image Notes 1. The sensors are not completed in this photo but need to be before putting on the chess board.
File Downloads
Chess.zip (10 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Chess.zip']
Related Instructables
SteampunkHard Drive Inspired Fridge Magnet Hardware Chess by Everfalling Set (video) by sparkyrust
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
SITWAY
by mickydee on February 7, 2012
Author:mickydee
My name is Roland MacDonald, my friends call me Mac I am a retired but not bored engineer My great joy is my workshop, a two car garage with heat and air. I am a private pilot with 1800 hours flying time I have built four Kit planes and restored two Cessna aircraft My last contact with electronics was in the vacuum tube world. I am really enjoying the new transistor world.
Intro: SITWAY
You are never to old to learn and try new things. I think one of the best days in my life was the day I discovered the Instructables web site. It opened up a whole new world to me. This is my third instructable . I really enjoy building anything that I can ride on or get in to. I bought an Arduino Uno and was planning on building a balancing Robot. I was really impressed with the Balancing Skate Board that was published by Xenon John. It had most of the code that I would need to build a balancing something. That something evolved from a Robot to a Sit Down Segway clone, which I named the SITWAY. I want to at this time thank John for all the help and patience he showed me in building and testing this ible. This is my second project involving a discarded electric wheel chair. The motors have great torque and are very reliable. They use 24 volts and have great range using two U1 type garden tractor batteries. You can't go any cheaper than that. The build went pretty smoothly. Thankfully Xenon John pitched in and helped me modify his code to work with my wheel chair motors. After running all the tests I felt were needed I elected to have a young neighbor take the first ride. It turned out to be a real blast. So far eight or ten people have ridden it, the youngest being 12, and the oldest 81 (me). The training wheels limit the speed by limiting the forward tilt. I plan to keep the rear training wheels on permanently because I don't need a lot o speed going backwards. The SITWAY appears to be pretty safe, but it does not have all the built in backup systems that a real Segway has, I have only tested it on my smooth driveway at this time. I have driven over small objects, and it still stayed stable..Any one can learn to drive it in about 5 or10 minutes. With all the testing and driving we have done I have yet had to charge the batteries. The original wheel chair had a published range of 20 miles.. HAVE FUN!!!
Image Notes 1. Pivot bolt. and tapped screws to adjust micro switch contact points 2. Dead man switch 3. Adjustable front wheel 4. Main power and balance trim switches
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. -Arduino Uno and shield 2. 5 degrees of freedom IMU 3. Sabertooth 2X25 Motor Controller 4. Cable to hand controller 5. 12 VDC tap from batteries
Step 3: Build the frame and mount the wheels and motors
I guess you could make this frame out of plywood, but I like to use steel. it's a lot stronger and welding is a lot of fun. The base is a 1/2" plate measuring 12X20". The uprights and seat frame is made of 1" steel tubing. Don't forget the 45 deg. braces in the corners. the four holes in the seat braces are for mounting the plywood seat support. The holes for mounting the motors are slotted about 6" long . At this point you do not exactly know where the C.G. will be. The motors can be adjusted fore and aft to adjust the C.G.The small wheels are used as training wheels and to keep the machine from falling over when not in use. Now is a good time to paint the frame You can make the frame any size you want. I designed this one to fit through an interior door. Cut the seat from 3/4" plywood . Pad and upholster a seat cushion to be bolted to the frame uprights.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. 6" slotted holes to mount motors and adjust the C.G. 2. holes to attach seat support 3. 45 deg. braces 4. foot rest and leveling wheel 5. battery position
Image Notes 1. Pivot bolt. and tapped screws to adjust micro switch contact points 2. Dead man switch 3. Adjustable front wheel 4. Main power and balance trim switches
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 5: ELECTRONICS
The electronics consist of the following Arduino Uno Shield Sabertooth 2X25 5 Degree's of freedom IMU Asst. LED's and switches 10K pull down resistors (5) 4 conductor cable and hook up wire I don't like to solder directly to my Arduino. Instead I used a shield. This allows me to make solid solder connections instead of plugs that can come loose due to handling or vibrations. A good place to begin is to solder the (5) 10k resisters to the shield. These are the pull down resisters for the balance trim, steering, and dead man circuits. (Note) The following wires are connected to the Arduino digital pins pin 9 is for the dead man switch circuit pin 7 is for nose down trim circuit pin 6 is for nose up trim circuit pin 5 is for steer left circuit pin 4 is for steer right circuit The other end of the resisters goes to circuit ground pin 13 connects to the S1 input of the Sabertooth Motor Controller The following wires are connected to the Arduino Analog pins pin 0 to Y Rate 4.5 on the IMU pin 2 to X Rate on the IMU pin 3 to Y Rate on the IMU pin 4 to ZACC un the IMU +5 volts to he Steering controller +3.3 volts to the IMU (NOTE) do NOT apply 5 volts to the IMU GND to the IMU All the Analog connections can be soldered directly to the shield. The Digital connections can be made either by plugging directly into the headers or using a connecter. I found some in the Sparkfun catalog that fit snugly into the headers (See above pic) I found some four conductor ribbon cable at Radio Shack that worked well for me. It is stiff enough to hold it's shape, and the color coding makes life easier. You can use ribbon cable from an old computer just as well except for the color coding . Mount the IMU to a small block either wood or phenolic to the floor of the machine at approximately the center line of the axles. Be sure to mount it correctly. The factory drilled mounting hole must be pointed towards the ground The component side of the IMU must face forward If you mount the IMU incorrectly bad things will happen. The plate can be shimmed fore and aft to adjust for level balance Fashion an aluminum plate to hold the power switch, and the trim and steer switches and mount it to be reached conveniently while seated. I installed a power indicator LED (with a Pull down resister) to verify Arduino power (12 volts)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Step 6: WIRING
Generally wheelchairs operate on 24 VDC.. Main power is obtained from two U1 type lead acid batteries. They are used in lawn mower or lawn tractors. They are cheap ($40) and easy to get . There are four voltages used in this project 24 VDC for the motors 12VDC for the Arduino Uno 5 VDC for the steering and trim circuits 3.3 VDC for the IMU 24 VDC is connected to the Sabertooth 2X25 . A power switch is installed in the negative leg. Be VERY careful to maintain the correct polarity. The Sabertooth will be permanently damaged if you hook it up with the wrong polarity. The warranty will also be voided. The 12 VDC is obtained with a tap between the two batteries terminated with a plug for the Arduino power input. Do not use the USB circuit as a power source, strange things happen to the gyro when you use the USB for power. The 5VDC and 3.3VDC is obtained from the Arduino Uno. A 5 volt source powers the dead man, left and right turning, and both trim switches. 3.3 volts from the Arduino powers the IMU Bolt the Sabertooth, the IMU mounted to a block, and the Arduino Uno and it's shield to the floor of the frame Connect the motors to the Sabertooth. The left motor connects. to M1A and M1B. The right motor to M2A and M2B. S1 on the Sabertooth connects to Arduino pin 13. Connect Sabertooth ground to Arduino ground. This completes the Sabertooth wiring for now. These connections will be verified during the Motor test procedure a little later. Be sure and set the Sabertooth DIP switches for Simplified Serial operation. Set switches 1,3,5, and6 to the on position Switches 2, and 4 are set to the off position. These settings support using lead acid batteries. Route the five wires from Digital pins 4,5,,and 9 plus a 5 VDC source to the steering handle. Connect the 5 volts to one side of the two momentary on steering switches and to one side of the dead man switch. Connect the other side of the switches to the wires coming from Arduino pins 4, 5, and 9. Route the wires from Arduino pins 6, and 7 to the little plate with the trim switches. Connect one side to 5 VDC and the other to Arduino pins 6, and 7.Route the wires from the main power switch to this plate and attach them to a 40 amp SPST switch. Install a surface mounted LED indicator and power it with 5VDC to ground through a 10k resistor. Install the batteries using the battery box or covers you salvaged from the wheelchair and this pretty much completes the basic construction of the project.. If you saved the charging plug from the wheel chair, install it in a handy place and wire it up to the 24 VDC source. Pad and upholster a seat cushion to be bolted to the frame uprights.
Image Notes 1. -Arduino Uno and shield 2. 5 degrees of freedom IMU 3. Sabertooth 2X25 Motor Controller 4. Cable to hand controller 5. 12 VDC tap from batteries
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
new_motot_test.txt (5 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'new_motot_test.txt']
File Downloads
full_balance_rocker_test.txt (25 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'full_balance_rocker_test.txt']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Recent_mild_setup_code.txt (29 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Recent_mild_setup_code.txt']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
Seg...stick. by scolton
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Author:letMeBeFranks
Im a interaction designer. I work at frog design :)
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. LCD Monitor 2. Logitech Webcam 3. Halogen Lights from Ikea 4. Modified Staples Easy Button
Image Notes 1. MacBook Pro - OSX Lion 2. Arduino 3. Light Controller 4. Tripod Mount
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
When the photobooth application registers the enter key being pressed, it takes a photo. Wiring the circuit - If you do not know how to make a button circuit for an arduino, read this tutorial - http://www.arduino.cc/en/Tutorial/button Be sure to connect the button to pin 10 on your arduino. If you choose to wire your button to a different pin, be sure to change [int buttonPin = 10] in the arduino code to match the pin number you selected. Writing the code - Here is the code i wrote to send an [enter] serial command to the AAC Keys. If you are not familiar with writing arduino code, use this tutorial here. It's pretty easy once you get the hang of it. http://arduino.cc/en/Guide/HomePage const int buttonPin = 10; // the number of the pushbutton pin int buttonState = 0; // variable for reading the pushbutton status void setup() { pinMode(buttonPin, INPUT); Serial.begin(9600); // open the serial port at 9600 bps: } void loop(){ buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { Serial.println(); } else { // nothing } } Installing AAC keys - As previously mentioned, AAC keys is a free program. "That receives commands through your computer's serial port and translates them into keystrokes and mouse movements, giving you full control of your computer from another device such as an [arduino]". You can download the program here: http://www.oatsoft.org/Software/aac-keys Using AAC Keys is quite simple. Make sure you have an arduino plugged in via usb, running the code seen above. Open AAC keys application and access the applications preferences. When the dialogue appears, check to see that you have selected the serial port associated with the connected arduino (generally it's selected by default, but it is good practice to check), and that it is running at 9600 bps. If you've done this, AAC keys should be interpreting the button press from the arduino as an [enter] command on the keyboard. open a text editor and give it a shot. Type a few lines of text and press the button attached to your arduino instead of using the enter key. You can also open photobooth at this time and see that pressing the button triggers the program to take a picture.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Testing the connection between the easy button and the computer.
Image Notes 1. Rubber button which makes contact with the circuit board 2. Circuit board from the staples easy button. Inorder to use this button to trigger an arduino, Solder wires to the following locations that are labeled in this image. 3. Solder one wire here 4. Solder Another Wire here 5. Cut this resistor off the board. This prevents any errors (false trigger events) as this pathway on the circuit board is still connected to the original microprocessor (seen as the black dot in this picture)
Image Notes 1. wires soldered to the circuit board from the staples easy button. These wires lead back to the breadboard on an arduino 2. Arduino registers when the button has been pressed. It then sends a serial command to the computer. The button is connected to Pin 10 on the arduino 3. I added a quick disconnect so that i could disconnect the button from the arduino when it came time for installation.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. This is the arduino code in the editor. Click this button to send the code to the attached arduino
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
Camera.ai (1 MB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Camera.ai']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Each panel was cut out and labeled so I didn't lose it or accidentally chop it up for another project.
Image Notes 1. The holes to be cut in the back panel. Their size and placement were checked against the illustrator blueprint. 2. Originally the button was placed to the side of the screen. Unfortunately this placed an odd amount of torque on the mount when it was pressed, causing the camera to spin. It was later moved to the center, just under the screen.
Image Notes
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Surface mounting hardware is added so that the galvanized pipe has something to secure to
Image Notes 1. A hole is drilled into the galvanized pipe so that a pin can be inserted into it
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The pin is inserted into the pipe, and through the tripod tube. The entire assemble is now safe and secure
Image Notes 1. The side panels are added 2. This beam is used to give the top panel additional points to attach to
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The Back of the camera, attached to the base 2. This support raises the LCD monitor to the right height off of the base, keeping it centered in the window
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. This is the door for the front of the box. I added a beam to the top of this panel so that I can secure it to the camera box with a piano hinge.
Image Notes 1. The camera box is secured to the tripod 2. This beam provides support between the two side panels, and will also be used to secure the front panel onto via a piano hinge
Image Notes 1. The LCD is added to the Camera Box. It is secured by a few L Brackets
Image Notes 1. The L Bracket is bent at the tip to hold the LCD monitor still.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Additional shims were needed to center the screen in the cut out window. 2. Be mindeful of where the buttons on your monitor are. you will still need to be able to fit your fingers in here to turn on the screen when its ready to be used
Image Notes 1. A little note so i knew which button to press once the camera was all put together and the LCD monitor is locked in place.
Image Notes 1. The light control box is placed out of the way, and the extra cable is wound up. 2. All of the lights and the LCD monitor are mounted and working.
Image Notes 1. Halogen lights from IKEA were modified to attach to the camera box. 2. A bent L bracket is used to secure the light to the box
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The arduino Micro Controller is mounted to the side panel here 2. I needed to add a power strip 3. The Logitech Camera is mounted just above the LCD monitor 4. The MacBook Pro is positioned here. After some initial Testing, i found that it overheats when it was mounted with the lid closed. Keeping the lid open prevented the computer from overheating and shutting down. 5. In this picture, you can also see the piano hinge which secures the door to the camera box.
Image Notes 1. Here you can see the supports that hold the computer. A simple bungie cord is used to secure the computer to the supports 2. A piece of angle iron stops the computer from slipping forward 3. The webcam
Step 8: Testing
Once all of the components were added, I decided to stress test the photo booth. I wanted to see how long the device would continually run without any intervention, in conditions that it would likely encounter (sitting outside in the sun with +90 degree temperatures). Note to you - TEST OFTEN AND EARLY!! Here is a video of my early test - this is what i learned http://anotherfrog.tumblr.com/post/12445371555/photobooth Heat is an issue - After watching the computer overheat with about 15 minutes of use, I realized that heat was a big issue. I installed some old PC fans to help get rid of the heat. Mac computers heat up with the Lid closed - Even with installing the fans, the compute was getting too hot. My original mouting system secured the computer in a vibration proof rig - with the lid closed. It was only after opening the computer so that the processor fans could run unobstructed that the device no longer overheated. This discovery led to 1 more fan (in the base of the camera box) and a mount which held the computer open. The button was in the wrong place - with the button on the edge of the camera box, pressing it too hard caused the box to rock back and forth. Potentially an issue with inebriated guests, I moved the button to the center of the camera box, so that the force is directly perpendicular to the tripod.
Image Notes 1. With the button mounted on the side of the box, pressing too hard would cause the camera box to rotate back and forth
Image Notes 1. The first PC fan directs air directly across the back of the computer 2. The second PC fan directs air up from the bottom of the computer 3. This mount holds the computer open during operation - allowing the internal cooling fan to operate without obstruction
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. A little bondo and a lot of sanding to smooth out all the imperfections of plywood 2. The old button hole has been refilled and sanded smooth
Image Notes 1. This is the hole for the side mounted PC fan. It will need some type of cover. I found one at Frys Electronics for $2.
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. The final paint job with the components re-installed
Image Notes 1. I used a trick to texturize the paint - and make it look like plastic. If you put down a layer of spray glue, holding the can far away from the surface, the glue will dry before it hits the panel - allowing for a nice texture to paint over, further obscuring any imperfections in the wood
Image Notes 1. Some old photo frames were used to give the appearance of a view finder
Image Notes 1. A hat box from the craft store is used to make the settings dial 2. This plastic drum from big lots is used to make the lense - a $5 part
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. Lens with decal applied 2. Settings dial with decals applied
Image Notes 1. The drum is mounted onto the front of the camera with l brackets and small screws. This method allows the lens to be removed for travel
Image Notes 1. Close up of the l bracket 2. Here you can see the texture of the paint - achieved with a light dusting of spray adhesive before the paint and primer are applied
Image Notes 1. Locks are added to the camera door Image Notes 1. A small screw in the bucket fits perfectly into the hole in the L bracket
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Image Notes 1. A few more coats of black primer, and the lens will be finished
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
File Downloads
lens vector2.ai (915 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'lens vector2.ai']
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
Related Instructables
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/
(Photos) by nonoodlez
http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/