IoT Industrial Scale!

finalscale2-v2

 

What does a baby elephant weigh?* How much impact force does a jump have?? How can you tell if a rain barrel is full without looking inside??? Answer all these questions and more by building your very own Internet of Things (“IoT”) industrial scale using the SparkFun OpenScale board!

This project is intended for folks with a lil’ bit of background using Arduino or other microcontrollers. But, whether this is your first or 137th project, check out the links in the Suggested Reading section below (and throughout the tutorial) or leave a comment if you have any questions!

Read time: ~ 15 min.

Build time: Approx. 2 – 3 hours

*To weigh a baby elephant, you might need to be a zookeeper or otherwise have an elephant friend.. but you could always weigh Fido and/or kitty!

For all you visual learners, check out a video of the project below:

 

Materials!


To follow along and build your own scale, all the parts used are listed below.

Electronics

To make the system wireless:

All these parts can be found in the wish list here.

Scale and Casing

  • Terminal blocks (5)
  • Three (3) M3 screws per load cell (total of 12)
  • One (1) project case (to protect the electronics)
  • One (1) base board, and one (1) top board (for the scale platform)
    • My base board was ~ 16″ x 16″ and my top board was ~ 12″ x 14″.
    • Both boards should be sturdy and not flex or dent.
  • Wood slats to frame the sides of the top board to hold it in place.
  • Four (4) feet for base

 

But wait! There’s some background reading..


First of all, how do we measure weight??
Strain gauges!

Also called load sensors, strain gauges measure electrical resistance changes in response (and proportional) to, well, strain! Strain is how much an object deforms under an applied force, or pressure (force per area). Check out this super awesome tutorial for more info on how strain gauges work.

Usually what you’ll find in a bathroom scale is a load cell, which combines four strain gauges in a wheatstone bridge. This project uses four disc compression load cells rated at 200 kg.

Here’s some additional background material to learn more about the components and tools used in this project:

  1. Serial Terminal Basics
  2. OpenScale Applications and Hookup Guide
  3. Getting Started with Load Cells
  4. Photon Development Guide

As usual, don’t forget to read the Datasheet for the Load Cells and any other components you with to use in your project.

Build the Electronics! Pt. 1


industrialscale-schematicv2

Connect the Load Cells!

Load cells have four signal wires:

  • Red: Excitation+ (E+) or VCC
  • Black: Excitation- (E-) or ground
  • White: Output+ (O+), Signal+ (S+)+ or Amplifier+ (A+)
  • Green (or blue): Output- (O-), Signal- (S-), or Amplifier (A-)

They also have bare (or yellow) grounding wires to block outside (electromagnetic) noise.

Connect all five load cell wires in parallel to the OpenScale terminal blocks with the corresponding labels. You might need to switch the green and white load cell wires – check this by adding weight to the load cells. If the weight is decreasing, switch the wire orientation.

The OpenScale terminal blocks are a bit cramped with four load cells, so I used the terminal blocks pictured above. If you have a case for the electronics, remember to put the connectors INSIDE the case before connecting them to the load cells (not speaking from experience or anything..).

 

Build the Electronics! Pt. 2


Connect the OpenScale to a data logger!

In addition to printing, reading, and gathering data from the Arduino serial monitor (see “Reading Load Cells!”), we can add a Photon microcontroller to connect to WiFi and upload the measurements to the Internet!

Connect the OpenScale “Serial Out” ground (“GND”) port to the Photon GND, and the OpenScale “TX” port to the Photon “RX” port. If your data logger needs power, connect the OpenScale 5V port to the data logger Vin port. That’s it!

 

Build the Base & Case!


1. Plan out, measure, and mark location of load cells.

Load cells should be at least 1″ in from the top platform board sides and installed equidistant and on the same plane (aka same height) with each other.

Each load cell needs three M3 type screws, which requires fairly precise measurements. I opted for a quick & easy solution: make a plastic stencil that marks the load cell outline and the location of the screw holes. The plastic I used was cut from a discarded strawberry container (yay, free and upcycled!).

2. Drill holes for load cell screws and attach load cells to base board.

3. Attach feet to base.

4. Secure the scale platform.

Place platform on top of the load cells. Attach wood slats to sides of base with wood glue and/or screws to secure the platform in place laterally, but not vertically. AKA, be sure that there is no resistance to the board pushing downward.

Add brackets on opposite sides for a more secure hold.

5. Place electronics into project box container (or tupperware) and drill holes for cables.

6. Admire your handiwork!

 

Connect the OpenScale!


One of the awesome features of the OpenScale program is that it outputs data to the Arduino IDE serial monitor (9600bps). All we need to do is plug in our OpenScale via USB, select the appropriate board (Arduino Uno) and port, and you can read the load cell data directly from the Arduino Serial Monitor. More info on how to do this here.

Enter ‘x’ to bring up the OpenScale settings menu. Entering ‘x’ again leaves the menu and the OpenScale will start printing data!

arduinoserialmonitor-fullmenu2_labeled

We also need to remove the serial trigger from the OpenScale. Do this by going to the menu, inputting ’t’, and turning the serial trigger to OFF.

You can change various other settings on the OpenScale using the serial monitor, including units (lbs/kg), print rate, decimal places, etc. You can adjust, or peruse, the entire OpenScale program by downloading it from GitHub!

Note: If you are connected to another microcontroller, the OpenScale does not send data when in the menu mode.

 

Tare & Calibrate the OpenScale


Tare!

We’ll need to tare the OpenScale each time it is powered up. To tare the scale, remove all weights from the scale and open the OpenScale settings menu. Input ‘1’ in the OpenScale menu, wait for it to finish taring, then exit the menu and check that the output is close to zero (+/- 5 lbs). If the reading is still off, taring again should fix the problem – if not, check that the load cell grounding wires are properly connected to ground.

Calibrate!

We also need to calibrate the OpenScale to get accurate measurements. It’s also recommended to re-calibrate the system every few weeks (or days) to avoid creep (slow change in reading over time).

To calibrate the scale:

  1. Remove all weights (except the platform).
  2. Open the OpenScale menu and select ‘2’ to open the calibration setting.
  3. Place a (known) weight on the scale and adjust the calibration factor using ‘+’ and ‘-’ until the scale reads out the calibration weight within a reasonable margin in error.*

Also, the load cell output varies with temperature (‘cause heat causes expansion), so we need to keep the system at a constant temperature (or use different calibration factors at different temperatures.

*My experimental uncertainty was about +/- 5 lbs.

 

Program the Photon!


Write a program for the Photon that will read in the serial output data from the OpenScale and push it to the IoT platform of your choice. Or you can use/modify my code 🙂

Here’s the GitHub repository for the IoT scale.

This program reads data from the OpenScale and pushes it to ThingSpeak (also prints it to the Photon serial monitor). ThingSpeak is super easy (and free!) to set up, the only downside is that it only allows data to be posted every 15s.

What you need to do to make the program work for your setup:

programcode-whattochange_labeled

  1. Include your WiFi SSID (network name) and your WiFi password in lines 53 & 54, and lines 69 & 70.
  2. Set up a ThingSpeak channel!  thingspeak-channelsetup
    1. Name the channel and write a brief description.
    2. Include at least one field name. If you want to push more data, like temperature or a timestamp, include those corresponding fields.
    3. Save the channel!
  3. Copy the “Channel ID” number and the “Write API Key” and input them into lines 84 & 85.thingspeak-apikeys_labeled

Read through the comments in the program code for more information on how the program works.

 

Test & Refine!


Prototype complete! Have your favorite human or animal stand (or awkwardly lay..) on the scale to check that it works as expected.

Check thoroughly to see if there is anything that needs to be fixed, secured, and/or improved. During my build process I noticed that a lot of the wood I was using to test would get dented by the load cells, resulting in inaccurate readings.

 

Lessons Learned & Next Steps!


My initial goal for this IoT scale was to gather data on the forces due to jumping (specifically in parkour). Alas, the OpenScale is intended for constant loads and the fastest print rate is 505 ms, which is too slow to get accurate readings on impact force.

Fortunately, we can still use the scale to gather general data and use this design as a foundation for future versions. Some quick and well-timed preliminary testing by a professional jumper (~165 lbs) resulted in the readings plotted below:

data-jumptest3

It shows a single jump, where the landing corresponds to the highest reading (~ 230 lbs), and the point just before that (~ 135 lbs) is when his feet were in the air. (The weight decrease + little blip after the the peak is when he was stepping off the scale.)

In addition to an updated program to print data faster, I’ll need waaay more data and a consistent, controlled procedure to determine any kind of reasonable relationship between impact force, jump height, and weight. Also, the top platform was a bit dented after these tests, so I’ll need a sturdier wood, or metal, scale platform.

Overall, this was a cool proof-of-concept and an informative preliminary test! Plus, there are tons of other practical uses for this simple Internet-connected scale!

 

Education Extension & Beyond!


Beyond being a great hands-on project for computer science, engineering, and electronics courses, this is a handy experimentation tool for physics classrooms! Use it to illustrate the difference between weight and mass, demonstrate how acceleration relates to force, or use the on-board temperature sensor to estimate the mathematical relationship between thermal expansion and load cell output.

Other Applications:

  • Use the system to measure the weight of a rain barrel and notify you when it is full.
  • Make a bathroom scale that keeps track of your weight (or your animal’s weight).
  • Monitor the weight of your Halloween candy to be sure that no one is sneaking some from under your nose.

Happy Building!

Interactive Survey Game!

A survey questionnaire come to life! Use (nearly) any object to gather helpful data through an interactive, engaging, and fun multiple-choice survey.

This project uses the Makey Makey microcontroller in combination with a Raspberry Pi computer to read in participants’ survey choices and save the results in a text file.

Planning & Design!

This general design is easily customized to fit a different theme. The only crucial design requirement is to use materials that conduct electricity for the survey pieces, or wrap non-conductive materials in aluminum foil.

Suggestions:
Prototype, prototype, prototype! Build different versions and test them on family, friends, co-workers, or (ideally) your target audience. Observe how folks interact with your survey, then use that to make it better! And always remember to keep it simple 🙂

Materials

Makey Makey Kit
– Computer: Raspberry Pi

– One (1) ground piece, five (5) survey response pieces, one (1) submit piece, and two (2) yes/no pieces*

22 Gauge (stranded) Wire — five (5) 10 – 16″ strips and three (3) 6″ pieces (ends stripped)

– Container:

— Wood Box (12.5″ x 12.5″)
— Plexliglass.(“12 x 12”)
— Three (3) 2″ x 2″ wood panels

* Specific materials used in this design are detailed with the corresponding procedure, although customization is encouraged!

Tools

Safety goggles, woo!
Multimeter
— Optional: Soldering iron, solder& desoldering wick
— Ruler (or calipers)
Drill w/ both drill and driver bits
Flat wood file (to prevent splinters!)
Hot glue gun
— Epoxy (permanent)
– Pliers

Reprogram the Makey Makey

To reprogram the Makey Makey, you’ll need to have the Arduino IDE with Makey Makey drivers installed. Here’s a thorough tutorial on how to do this.


1. Plug Makey Makey into computer and open the Arduino IDE.

2. Open (or copy) Makey Makey source code:
Here’s the GitHub page for the Makey Makey.
Here’s a direct link to download the full program. This is a .zip file, so be sure to extract all the files.

3. Reprogram the “click” key into an “enter” key.
For a thorough overview of how to do this, check out this tutorial.

4. Change the following keys:
These two keys are mapped in the survey program, but can be left as-is or you can choose to switch other keys (e.g. the arrow keys). Just be sure to change the mapping in the program.

A. Change the “g” into an “n”.
B. Change “space” key into “y”.

Build the Survey Response Pieces!

Specific materials used in this design:

– Two (2) wood blocks, two (2) golf balls, and one (1) jar lid.
– Aluminum foil
Unistrut 1/2″ Channel Nut with Spring
– Ten (10) 1/2″ washers
– Plexiglass [or wood] (12″ x 12″)

Procedure:

1. Wrap each of the survey response pieces at least 2 – 3 times with foil, hot gluing each layer.

2. For unistrut spring pieces, hot glue (or epoxy) the top of the spring to the bottom of each survey response piece — be sure that the metal of the spring is touching the foil of the survey piece.

3. Attach the survey pieces to plexiglass.

Determine location of survey response pieces and mark with tape. Drill a hole at each point.

Place a washer on either side of the hold and screw bolt into unistrut spring about 3 turns.

4. Connect a wire to each of the unistrut spring pieces.

Wrap wire around base of bolt (between washer and plexiglass). Hand tighten the bolt to secure wire without squishing it

Build the Ground Piece!

Specific materials used in this design:
– Styrofoam ball
– Metal pipe
– Flange stand for pipe
– Aluminum foil
– Twelve (12) washers
– 4 wood screws
– Wood panel (2″ x 2″)

Procedure

1. Build a stand for the styrofoam ball — use conductive materials or wrap pieces in foil.

2. Wrap styrofoam ball in aluminum foil, leaving a “tail” of foil. Place ball on stand and push the foil tail against the inside of  Hot glue pieces together.

3. Cover the exposed end of the ground wire (24″) to the inside, or bottom, of base and adhere with tape or epoxy.

5. Add a layer of two (2) washers under base to avoid squishing the wire, then connect base to wood pane via screws or epoxy.

Build the Enter Key!

Specific materials used in this design:

– Clothespin
– Wood panel (2″ x 2″)
– One (1) wood screw + one (1) washer

The screw should be about 1/4″ longer than the wood thickness.

– Aluminum foil

Procedure:

1. Wrap one of the handles of the clothespin in foil.

2. Remove clothespin spring clamp, align other side of the clothespin on wood panel, and drill in a screw and washer.

Foil on the other side of the clothespin should make contact with the washer + screw when closed.

3. Reconnect spring clamp and other side (may need pliers). Epoxy bottom of clothespin to wood panel.

4. Use alligator clip or wrap wire around screw and secure with hot glue.

Make the Yes and No Keys! 

Specific materials used in this design:
– Two (2) plastic container lids
– Two (2) wood panels (2″ x 2″)
– Two (2) wood screws and washers

Each screw should be about 1/4″ longer than the wood thickness.

– Aluminum foil


Procedure

1. Cut circle out of container lids. Wrap in foil.

2. Align lids on wood panels and drill in a wood screw with washer on top — be sure the screw slightly pokes through the back of the wood panel.

3. Use alligator clip or wrap wire around screw and secure with hot glue. 

Connect Pieces to Makey Makey

1. Connect ground piece lead to Makey Makey ground pads.

2. Connect survey game pieces to the first five (5) Makey Makey back header pins on the left: “w”, “a”, “s”, “f”, and “d”.

3. Connect the no button to the last (6th) back header pin, “g”

4. Connect the yes button to the “space” pads.

5. Connect the submit piece to the “click” pads.



Load the Survey Program!

Using a Raspberry Pi computer means that all of the electronics can fit into the game box! Write up a program in Python to cycle through a series of survey questions and five possible choices that map to the survey response pieces.

Here’s my code:
GitHub page!
Python program only.

Final Touches & Case!

This case is designed to withstand high traffic, experimentation, and children — and to be easily (and cheaply) fixable and adjustable. Use this design or customize your own!

Materials:
12.5″ x 12.5″ wood box
1″ x 10 ” wood panel

Procedure:
1. Epoxy wood panel onto front of box.

2. Drill the submit, yes, and no keys into the wood panel.


Recommended to put the “submit” button on the far right (switched this after further testing and feedback).

 

3. Drill hole large enough to fit an HDMI port in the back panel of the box.

I used two 3/8″ bits and filed down the hole until the HDMI port fit.

4. Label the survey game pieces and the submit, yes, and no keys.

Test, & Install!

Connect the Raspberry Pi to a monitor, keyboard, and the Makey Makey. Test the program and double check all the keys. Once everything is up and running, remove the keyboard (and mouse if connected).

Load the python program, stand back, and let passersby have a blast participating in a survey!

Sound Reactive EL Wire Costume

Bring science fiction to life with a personalized light-up outfit! EL wire is a delightfully futuristic-looking luminescent wire that has the added benefit of staying cool, making it ideal for wearable projects. Combining sensors and a microcontroller with EL wire allow for a wide range of feedback and control options.

This project uses the SparkFun sound detector and the EL Sequencer to flash the EL wire to the rhythm of ambient sound, including music, clapping, and talking.

Materials

Electronics

 

El Wire comes in a variety of colors, so pick your favorite(s)!

Costume

  • Article(s) of clothing

For a Tron-esque look, go for stretchy black material. Yoga pants and other athletic gear work great!

  • Belt
  • Old jacket with large pocket, preferably zippered or otherwise sealable.

The pocket will house the electronics. If you intend to wear the costume outdoors in potentially wet weather, choose a pocket that is waterproof (i.e. cut a pocket from a waterproof jacket).

  • Piece of packing foam or styrofoam (to insulate the sound detector).

Tools

Build it! Pt. 1

CAUTION: Although it is low current, EL wire runs on high voltage AC (100 VAC). There are exposed connections on the EL Sequencer board so BE CAREFUL when handling the board. Always double (and triple) check that the power switch is OFF before touching any part of the board. For final projects, it is recommended to coat all exposed connections in epoxy, hot glue, electrical tape, or other insulating material.

1. Test EL Sequencer with EL Wire.
Connect the inverter, battery, and at least one strand of EL wire to the EL Sequencer. (Note that the two black wires of the inverter correspond to the AC side.)
Be sure that the EL Wire lights up and blinks when you power the EL Sequencer on battery mode.

2. Solder header pins onto 5V FTDI pinholes on the EL Sequencer and onto the VCC, ground, and A2 input pins.

3. Solder header pins to the sound detector.

4. Connect sound detector to EL Sequencer via female-to-female breadboard wires (or solder wire onto header pins).
Connect the sound detector VCC and ground pins to the VCC and ground pins on the EL Sequencer. Connect the sound detector gate output to the A2 input pin on the EL Sequencer. If you are using the envelope and/or audio output signals, connect these to pins A3 and A4 on the EL Sequencer (more on this in the Program It! section).

Build it! Pt. 2

1. Make a protective casing for the sound detector using packing foam or styrofoam to prevent jostling or other physical vibrations (aka collisions) from triggering it.

Place sound detector on top of foam, outline the board with a pen, and cut out a hole in the foam for the detector to fit snugly inside. Also recommended to epoxy the wires onto the foam (but not the sound detector board).

2. Cut out a pocket from the jacket and sew onto the belt.

3. Put belt on, connect EL Wire to EL Sequencer, and place EL Sequencer in pocket pouch. Determine approximate placement of each EL wire strand based on location of electronics.

Build it! Pt. 3

1. Mark and/or adhere the base of the EL wire JST connector onto clothing, allowing the full length of the connector to flex. Be sure that the JST connector can easily reach the EL Sequencer.

2. Starting at the basse of the JST connector, attach EL wire strands to your chosen article of clothing.

Sew EL wire onto clothing using strong thread or dental floss, or use an appropriate fabric adhesive.
Prior to adhering the EL wire, it is recommended to use safety pins to determine placement of the EL wire on each article of clothing while you are wearing it. EL wire is flexible but not so stretchy, so give yourself some wiggle room.

It is also recommended to use separate EL wire strands on different articles of clothing to facilitate the process of taking it on/off.

Program it!  

1. Connect EL Sequencer to computer via 5V FTDI BOB or cable. 

2. Program the EL Sequencer using the Arduino platform; the EL Sequencer runs an ATmega 328p at 8 MHz and 3.3V.

3. Determine how you want to use the sound detector output(s) to control the EL wire. The sample program below utilizes the gate channel output to turn on the EL wire if there is a sound detected.

Sample Program:

// Sound Activated EL Wire Costume<br>// Blink EL Wire to music and other ambient sound.
//JenFoxBot
void setup() {
  Serial.begin(9600);  
  // The EL channels are on pins 2 through 9
  // Initialize the pins as outputs
  pinMode(2, OUTPUT);  // channel A  
  pinMode(3, OUTPUT);  // channel B   
  pinMode(4, OUTPUT);  // channel C
  pinMode(5, OUTPUT);  // channel D    
  pinMode(6, OUTPUT);  // channel E
  pinMode(7, OUTPUT);  // channel F
  pinMode(8, OUTPUT);  // channel G
  pinMode(9, OUTPUT);  // channel H
//Initialize input pins on EL Sequencer
  pinMode(A2, INPUT);
}
void loop() 
{
  int amp = digitalRead(A2);
    
  //If Gate output detects sound, turn EL Wire on
  if(amp == HIGH){
    
    digitalWrite(2, HIGH); //turn EL channel on
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    delay(100);
  }
  
    digitalWrite(2, LOW); //turn EL channel off
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  
}

This program is just one example of what is possible with the SparkFun sound detector. Depending on your needs, different responses can be achieved by using the “envelope” and “audio” outputs of the sound detector. The EL Sequencer can individually control up to 8 different EL wire strands using the three sound detector output signals, so there are tons of possiblities to customize your sound-activated outfit!

More information about the sound detector output signals:
The gate channel output is a digital signal that is high when a sound is detected and low when it is quiet. The envelope channel output traces the amplitude of the sound, and the audio output is the voltage directly from the microphone.

In the photo provided, the red trace corresponds to the gate signal output, the light green trace corresponds to the envelope signal output, and the dark green trace corresponds to the audio signal output.

Test, Secure, & Show Off!

Connect all components to the EL Sequencer (inverter, battery, sound detector) and place in belt pouch. Turn the system on, make some noise (e.g. clapping, snapping, or music) and check that the EL wire flashes when there is a sound.

If the outfit works as expected, secure all connections by coating them in a (thin) layer of epoxy. Let dry for at least 24 hours. Epoxy is a very permanent adhesive, so if you want to reuse any of the components, try other adhesives like hot glue or electrical tape (less secure, but adjustable and removable).

You can reduce the overall strain on individual connections by ensuring that wires are securely fastened to the belt and/or pouch approximately one inch (1″) from all connections. The goal is to allow the EL wire to flex while keeping electrical connections rigid, as the connections are the most likely point of breakage.

Wear your one-of-a-kind, high-tech outfit and go show it off to the world!

EL Wire Light Up Dog Harness

Whether it’s to keep Fido (or in my case, Marley) visible on an adventure or as an awesome all-year-round costume, a light up dog harness is an excellent accessory for your favorite pup.

EL wire is a great option for wearable lights. It stays cool, is flexible, and comes in lots of different colors. This design uses the SparkFun EL Sequencer to automatically turn on EL wire when it is sufficiently dark outside so you don’t have to worry
about locating Mr. Dog to turn the system on.

Here’s a video tutorial for this project.

Recommended Reading

If you are new to electronics, EL wire, or the EL Sequencer, or would like more information on the main components in this project, check out this tutorial.As this design also uses a lithium ion battery, I also recommend reading this tutorial to give you an overview on proper care and handling of lithium batteries.

Materials

Electronics

  • EL Wire
    • EL wire comes in variety of colors, pick your favorite!

Harness Materials

  • Dog harness
    • A vest or backpack will also work.
  • Waterproof jacket with pocket(s)
  • Optional: Tupperware or other sealable plastic container

Tools

  • Safety goggles
  • Soldering Iron
  • Wire Cutter/Stripper
  • Epoxy (waterproof)
  • Scissors
  • Needle + thread OR fabric adhesive
  • Optional: Velcro

Build it! Pt. 1

**CAUTION:** Although it is low current, EL wire runs on high voltage AC (100 VAC). There are exposed connections on the EL Sequencer board so BE CAREFUL when handling the board. Always double (and triple) check that the power switch is OFF before touching any part of the board. For final projects, it is recommended to coat all exposed connections in epoxy, hot glue, electrical tape, or other insulating material.

1. Test the EL Sequencer with EL wire.
Connect EL Wire, inverter, and battery to EL sequencer.
Turn on power switch and check that the EL wire turns on (should be blinking). You can connect, and control, up to 8 different strands of EL wire.

2. Solder header pins onto 5V FTDI pinholes on the EL Sequencer.

 
3. Solder header pins to the “GND,” “VCC,” and “A2” pinholes EL Sequencer (right side).

4. Solder male end of breadboard wires to ambient light sensor. Coat exposed metal on the sensor in epoxy (do not coat actual sensor).

Note: Recommended to solder the pins on the bottom of the sensor so that the sensor can more easily be attached to the harness (found this out the hard way..).

 

 

 

 

Build it! Pt. 2 

1. Attach EL Wire to harness.
Sew EL wire onto harness with dental floss for a strong, durable bond. Can also use an appropriate fabric adhesive.For straps/buckles: leave about 1″ of unattached EL wire on either side of the strap/buckle.You can either wrap the ELwire for its entire length, or cut it and insulate the ends.2. Make a durable pouch for the electronics.
For a waterproof pouch, cut out a pocket in a waterproof jacket. I also included a small tupperware container to house the electronics in the pouch to further insulate and protect them from weather and dog conditions.

Build it! Pt. 3

1. Attach electronics pouch to harness.
Sew pouch onto top side of harness, or wherever is comfortable and practical for your pup. Recommended to put harness on dog to find a suitable location for the pouch.

2. Cut small holes on underside of pouch for the EL wire JST connector and the light sensor wires.

3. Attach and secure light sensor to harness. Recommended to put harness on your dog and mark location for light sensor so that it faces upward.
There was an ideal flap in the rainjacket pocket for me to cut a hole, push the sensor through, and epoxy the other side. You can also use velcro or sew the light sensor onto the pocket or harness, just be sure that it stays stationary and won’t get covered when the dog is moving.

4. If using tupperware, cut or drill holes in tupperware for EL wire JST connector and light sensor wires.
If you are not using tuperware, it is recommended to cushion the electronics and/or epoxy all connections (except the JST connectors) to protect them from your dog’s antics.

5. Connect EL wire and light sensor to EL Sequencer (through holes in the tuperware), then epoxy the holes to keep wires in place and maintain a waterproof seal.

Program It!

1. Connect EL Sequencer to computer via 5V FTDI BOB or cable. 

2. Program the EL Sequencer using the Arduino platform; the EL Sequencer runs an ATmega 328p at 8 MHz and 3.3V. 


3. Write a program to read in the analog value of the ambient light sensor, turn on the appropriate EL wire channels at a value that corresponds to low light, and turn off once the light sensor value is above the low light threshold.Here’s a sample program with a preset light threshold:

// EL Wire Dog Harness Program
// Turn EL wire on when ambient light is low.
// JenFoxBot
// Based on test sketch by Mike Grusin, SparkFun Electronics
void setup() {
  Serial.begin(9600);  
  // The EL channels are on pins 2 through 9
  // Initialize the pins as outputs
  pinMode(2, OUTPUT);  // channel A  
  pinMode(3, OUTPUT);  // channel B   
  pinMode(4, OUTPUT);  // channel C
  pinMode(5, OUTPUT);  // channel D    
  pinMode(6, OUTPUT);  // channel E
  pinMode(7, OUTPUT);  // channel F
  pinMode(8, OUTPUT);  // channel G
  pinMode(9, OUTPUT);  // channel H
  // We also have two status LEDs, pin 10 on the EL Sequencer, 
  // and pin 13 on the Arduino itself
  pinMode(10, OUTPUT);     
  pinMode(13, OUTPUT); 
  pinMode(A2, INPUT);  
}
void loop() 
{
  int x,status;
  
  //If ambient lighting is too low, turn on EL wire
  if(analogRead(A2) < 50){
    digitalWrite(2, HIGH); //turn EL channel on
    delay(1000); //wait 1 second
    
    //Keep EL wire on until light sensor reading is greater than 50
    if(analogRead(A2) > 50){
      digitalWrite(2, LOW); //turn EL channel off
      delay(10);
    }
    
    Serial.println(analogRead(A2)); // Use this to check value of ambient light 
    
    digitalWrite(10, status);   // blink both status LEDs
    digitalWrite(13, status);
  }
}

4. Check that the EL wire turns on when the ambient light is low, and turns off in bright light. 

Test it and Put it to Work!

Place EL Sequencer, inverter, and battery inside the pouch (and tupperware). Connect all components to the EL Sequencer and turn it on using battery power. Test it in low and bright light to ensure that it functions properly.

If system works as expected, put on dog and go exploring!As an added bonus, you can use the electronics pouch to store other small, non-magnetic items. Enjoy!

Raspberry Pi Irrigation Controller

F7PVGADHZV3TCB3.LARGEGardening improves health and quality of life, connecting us to our local environment. Plus, you can eat organic fruits and veggies at very little cost. Alas, remembering to water can sometimes take a backseat to our busy lives. Fortunately, home automation is easier than ever with inexpensive and accessible microcontrollers like the Raspberry Pi 2 Model B and Arduino.

This tutorial details the construction process for a remotely controlled solenoid irrigation valve. In other words, a home computer controls the water flow of an outdoor hose spigot, or bib. The materials cost is about $30-40, excluding the Raspberry Pi (RPi). Cheaper parts can be found with patience and creativity.

The design is intended as a simple introduction to building a complete, personalized home irrigation system. It is also intended to encourage simple DIY solutions to everyday problems. Make modifications and upgrades to suit your needs, resources, and skill level. To conserve water, include drip irrigation and a soil moisture sensor.

Note: This project involves high voltage which requires extreme caution. Always check power connections before touching exposed wires.

Materials

FA20S0WI0LCOO0B.LARGE

Raspberry Pi, GPIO Cable, GPIO cable adapter + breadboard

This tutorial assumes the RPi has all GPIO libraries. To install outdoors, the RPi also needs a WiFi adapter and to be accessible by SSH or other remote login.

Solenoid Irrigation Valve
This tutorial uses a 24 VAC solenoid for a 3/4″ hose spigot.
Some background: there are two main types of solenoids: AC or DC.

  • An AC solenoid valve turns water on when voltage is applied, and turns it off when the power is off. The drawback is that it uses AC voltage, requiring an adapter to convert the wall voltage, 120 VAC, into the 24 VAC voltage needed to trigger the valve. Outdoor Installation likely requires an extension cord.
  • A DC solenoid valve allows for a battery powered system. It can easily be modified to be wireless and powered by renewable energy using a medium solar panel (~10 W). However, most DC irrigation valves are latching solenoids and require switching the valve lead polarity to turn water on and off.

I chose an AC valve for the first prototype because I already had a few parts.. and adequate rechargeable batteries can be expensive.

— Solid State Relay
The Solid State Relay, or relay, is the intermediary switch between the RPi and the solenoid valve. This tutorial uses a Crouzet Model OAC5-315; its input is 3 – 8 VDC and its output is between 24 – 120 VAC at 1A.

N3904 Transistor

4.7 kOhm Resistor

PCB Board
Sized to fit the relay, GPIO pins, transistor and resistor.

AC Power Adapter (120 VAC to 24 VAC)
Use an extension cord and/or longer leads to install outdoors.

— 22-gauge stranded wire (insulated), min. 10 feet

— Waterproof container
I used a leftover project box wrapped with waterproof tape. Cheap/free containers are easy to find; Talenti ice cream containers are an example, and also happen to contain delicious ice cream. With small containers, be sure exposed AC connections are completely covered in epoxy to protect the RPi.

— Optional: Waterproof connectors, waterproofing tape/lots of duct tape

FQ7ILN7I0LCOO0E.LARGETools

Soldering iron, solder, solder sucker

Wire strippers

Epoxy
Check that it is safe for outdoor use. Marine-grade epoxy may be best for long-term outdoor installation.

— Screwdriver

— Optional (but highly recommended): Multimeter

— Depending on your system container, a drill might also be useful.

Build It!

FE74HWMI0LCOO0F.LARGEHardware Intro: Solenoid Setup

  1. Add wire leads to the AC power adapter (if there are none); use at least 3-4 ft of wire.
    This AC power adapter has screw-type connectors. Recommended to coat these in epoxy.
  2. Verify that the solenoid works by connecting the leads to the power adapter.
    The valve makes a “clicking” sound when it is turned on.
    For thorough testing, repeat with the valve connected to the hose spigot.
  3. F5HUWP0I0LCOO0H.LARGEOptional: Extend solenoid valve leads using the waterproof connectors.
    Twist wires together inside the connectors, check the connection (aka continuity), then epoxy the openings.


    Remember, never touch exposed wires when power is on. Always double-check power connections.

Hardware Pt. 1

F55BJ37I0PYY1SJ.LARGE

If the schematic makes sense, skip the next three hardware steps (Hardware Pts 1 – 3).

FH4GQX8I0LCOSVB.LARGEPay attention to the layout of the PCB pads and use them to make connections simpler and more direct. Plan where components are connected prior to soldering. It may be easier to solder components in a different order.
1. Solder the relay to the PCB board.
The labels on the relay tell you the function of each pin. Here’s the datasheet for further reference.
1.a. Solder a wire lead to each relay pin, leaving 6 in. or more for the AC leads. 

F788JF3I0PZ2MGQ.LARGE2. Solder the RPi GPIO pin 18, 3.3 VDC pin, and ground pin to PCB board pads.

3. Solder the transistor to the PCB board, keeping each of the legs electrically insulated.

4. Solder one end of the resistor to the middle transistor leg (base pin) and the other end to GPIO pin 18.
Any other available GPIO pin works as long as you change the code to correspond to your chosen pin.
For best results, use one 4.7 kOhm resistor and connect as shown in the photo to the left.

FP5I646I0PZ2ONK.LARGEHardware Pt. 2 

  1. Connect the RPi ground pin to transistor pin 1, or emitter pin.
    Connect from the flat side of the transistor with a wire, the PCB pads, or a combination. For stranded wire, it helps to twist the ends before pushing them through the PCB holes.
  2. Connect transistor pin 3, or collector pin, to the negative DC relay pin.
  3. Connect the RPi 3.3 VDC pin to the positive DC relay pin. 


Hardware Pt. 3

  1. FESTW3ZI0PZ38JX.LARGEConnect one valve lead to one AC power source lead.
    Twist wires together and coat in solder. AC current alternates directions, so either lead will work for both the valve and AC power source.FHUMWX2I0PZ38IE.LARGE
  2. Connect the remaining valve lead to one of the relay AC output pins.
  3. Connect the remaining AC power source lead to the other relay AC output pin.
  4. Check all electrical connections with a multimeter.
    If available, check continuity. Otherwise, plug in the AC power source and check that there is ~ 24 VAC across the relay AC pins.
    A friendly reminder: Never touch exposed AC connections when the power source is plugged in.
  5. Coat all exposed AC connections in epoxy, including the relay AC pins.
    For safety purposes and to adhere connections.

Software

The software program turns the valve on and off by applying a voltage across the DC terminals of the relay.

1. With that basic principle in mind, here’s a simple code to get you started:

#Import the necessary libraries
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM) 
#Setup pin 18 as an output
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT) 
#This function turns the valve on and off in 10 sec. intervals. 
def valve_OnOff(Pin):
    while True:
        GPIO.output(18, GPIO.HIGH)
        print("GPIO HIGH (on), valve should be off") 
        time.sleep(10) #waiting time in seconds
        GPIO.output(18, GPIO.LOW)
        print("GPIO LOW (off), valve should be on")
        time.sleep(10)
valve_OnOff(18)
GPIO.cleanup()

F6I6KS9I0PZ38QU.LARGE2. Run the code in the terminal window of the RPi using the following:

sudo python FileName.py

3. Run the program before connecting the AC power source.
Use a multimeter to check that the voltage across the DC relay pins fluctuates from ~ 0VDC to ~ 3.3 VDC in ten second intervals.

4. Plug in the AC power source and run the program again. Listen for the solenoid to click on and off.

Waterproofing

  1. Double and triple-check all your connections with a multimeter.
  2. FRLCNBBI0PYXZIF.LARGECoat remaining exposed connections in epoxy
    Give yourself a way to remove the RPi + GPIO cable from the rest of the circuit so the RPi can be used for future projects (if so desired).
  3. Place the RPi and PCB board components in a waterproof container.
    Find a way to seal the external power cables. The first prototype uses waterproof tape to cushion wires and seal the box. Drilling holes in the box and sealing with epoxy is another quick and easy option.. get creative!
  4. Optional: To organize loose wires, twist insulated wires around each other, use zip ties or innovate another method.

Test & Improve!

That’s it! Rewrite the program to water your garden as needed. The easiest way is to keep the program as a timer. Change the program to increase the watering time to suit your plant needs and the wait time to >12 hours (>43,200 s).

ValveFinalPhoto2

ValveFinalPhoto

This system was originally designed to be controlled by a RPi-powered soil moisture sensor. To combine the two projects, copy the valve function into the soil moisture sensor program. Update the valve function to turn on if the soil moisture reading is below a certain threshold. Follow the hardware setup as outlined in the soil moisture sensor tutorial. Connect components to the existing PCB board if there is enough space, otherwise get another PCB board for the soil moisture sensing circuit.

Now that you understand the fundamentals, customize and upgrade the system to suit your own needs! Possible extensions include monitoring and/or controlling the system with your phone, or using renewable energy technology for power (e.g. photovoltaics + battery).

Raspberry Pi Soil Moisture Sensor

Conserving freshwater is one of those seemingly constant struggles, especially with a human population exceeding seven billion. In the United States, between 80 – 90 % of freshwater is consumed by agriculture, making it the perfect industry to implement more efficient ways of using water! Installing a soil moisture sensor is one way to optimize irrigation systems and reduce water consumption. Soil moisture sensors measure the amount of water in the soil so that your plants get water only when needed.

The following tutorial is a simple capacitive soil moisture sensor that uses a co-planar capacitor from the Zero Characters Left blog. The sensing circuit can be constructed for less than $25.00 w/ little or no prior experience in hardware or software prototyping. Experiment with and modify the system to create a version that suits your own needs!

Also, you can power this entire system using a portable solar USB charger.. 🙂

Materials

IMG_4855

— Raspberry Pi Microcontroller

  • This tutorial is based on a fully set-up Raspberry Pi, including GPIO libraries + GPIO cable w/ breadboard connector.I also recommend setting it up for wireless + SSH

1 MegaOhm resistor

  • This resistance was the best for my system, but a different resistor value might work better for your own setup. Experiment w/ different value resistors and see what happens!

— Co-Planar Capacitor (here)

— Solid core or stranded 22-gauge wire

  • Recommended to get stranded wire b/c conducts better & is less likely to break.

— Breadboard, breadboard wires + GPIO breadboard converter

  • This is the bare minimum needed to built the system. I recommend that you use better/more permanent connections once you have tested the system and made sure that it all works as expected.

Tools

IMG_4854

— Soldering iron, solder & solder-sucker (or solder wick)

  • A soldering iron is (almost) essential for this project, especially for attaching wire leads to the co-planar capacitor. You can purchase a soldering iron, solder and solder wick (removes solder) for ~ $20-30, or find a local makerspace/hackerspace that will let you come in and use an on-site soldering iron.

— Wire Strippers
— Epoxy
— Optional (but highly recommended): Multimeter (for testing and debugging!)

Operational Principles

  1. Soil is made up of four main components: organic matter, sand, silt, and clay. Between these are air gaps that can be filled with water. Here’s a diagram of different soil water contents:soilsaturation
  2. Water conducts electricity better than air. This information allows for tons of different types of soil moisture sensors. This design uses a capacitive sensor: the capacitance of the sensor changes based on the amount of water in the soil.

Sensor & Circuit Design

An RC circuit provides a quick & simple way to measure changes in the sensor capacitance due to changes in soil water content.
A little bit of jargon: “RC” stands for Resistor Capacitor. An RC circuit generates a time-varying current depending on the initial voltage, the initial current, and the circuit resistance and circuit capacitance. AKA: the output of the RC circuit depends on how much power you put into it and on the resistors and capacitors in the circuit.. which makes sense as that’s all there is in the circuit!RN_TimeConstant
Every RC circuit has an associated time constant, which is the time it takes the capacitor to reach ~ 63% of its maximum charge.  The time constant equals the total circuit resistance times the circuit capacitance:  τ = R * C
The graph on the right shows how the voltage across the capacitor changes over time.

The time constant is used to measure changes in the sensor capacitance. As the capacitance changes, so does the time constant. The equation above tells us that the time constant is directly proportional to capacitance, i.e. the time constant increases as the capacitance increases, and vice versa.

In this system, the co-planar capacitor is the soil moisture sensor (or SMS). Theoretically, when the sensor is in air or dry soil, the time constant is small b/c the capacitance is low. In water or saturated/wet soil, the time constant is larger b/c the capacitance is higher.

Here’s the circuit schematic:

SMS_SchematicV2

If you want to boost or lower the signal, change the value of the resistor to increase/decrease the magnitude of the sensor output.An Odd Observation: When the sensor was in dryish/damp soil and not registering, touching the resistor leads caused the sensor to output a reasonable signal. It also was sensitive to changes in light. These phenomena could be due to finicky connections & exposed wires; RC circuits tend to be sensitive to changes.

Build It!

Hardware:

  1. IMG_4838Solder wire leads onto the soil moisture sensor pads. Test connection w/ multimeter. If the sensor is electrically connected, coat in epoxy & let dry before continuing.
    If you’re using stranded wire + a breadboard, you’ll need to find a way to connect the stranded wire to the breadboard (b/c trying to shove it into the breadboard holes will make you want to pull your hair out). I stripped two breadboard wires and soldered them to the sensor leads. My connections were stil a bit finicky. Try different methods and see what works best. Use available materials and keep it simple!
    For the remaining hardware steps, reference the schematic and the picture below.IMG_4835
  2. Connect the RPi GPIO pins to the breadboard. Connect the 3.3 V output pin to the “+” column along the side of the breadboard.
  3. Connect the GPIO ground pin to the “-” column.
  4. Connect one resistor end to the 3.3 V output (any of the holes in the “+” column). Connect the other end to any of the breadboard rows. Orientation of the resistor leads doesn’t matter.
  5. Connect GPIO pin 14 to the same breadboard row as the resistor. You can use a different GPIO pin, but remember to change it in the software program.
  6. Connect one of the soil moisture sensor leads to the same breadboard row as the resistor + probe. Connect the other lead to ground (any of the holes along the “-” column). It doesn’t matter which lead goes where.
    Here’s a photo of the breadboard setup (3.3 V connection is hidden by GPIO cable):
    IMG_4862

    Software:

  7. Write a code to measure the capacitance of the sensor! Use the fact that the time constant changes depending on the medium in which the sensor is installed (capacitance is much larger in water than in air).
    Or you can just use mine 🙂
    Keep in mind that is a basic program and doesn’t include a GUI. All commands are run on the Pi’s terminal window (LXTerminal). The program prints the raw time constant, which is correlated to soil water content, a time stamp. If the reading is too low, the program also prints a reminder to water the plants. It also stores the raw data in a text file. To end the program, use “Ctrl + Z” or “Ctrl + C”.
    Modify and improve the program based on your own skills/needs. Remember to change the watering threshold based on your own experimental discoveries!
  8. Test the code and determine your ideal threshold.
    a) Test the sensor in water and air first; this provides the upper and lower bounds on the sensor output. If you find that the sensor is not reading in either of these mediums, change the value of the resistor until you get a reasonable signal. Be sure to record the reading for at least 5 – 10 minutes. It is helpful to plot the results in a program like Excel or R.
    b) Place the sensor in a cup of dry soil. Add a small amount of water and measure changes in sensor output over time (wait at least 5 – 10 minutes).
    c) If you are not getting a reading in either medium, try checking the electrical connections on the sensor.
  9. Fix the program as necessary.
    Your signal will likely be different than mine due to minor differences in your sensor and general setup. Use your findings from 8.a) & b) to find an approximate value at which your soil is too dry.
  10. Run the program & use it to maintain consistent watering of your beloved plants! 😀

Optional extension of the project: Making it survive outdoors!

IMG_1201Coat everything (except the sensor) in epoxy! .. Ok, so maybe not. Although, honestly it might work if you’re careful. Otherwise, you’ll want to scrap the breadboard for a PCB board + more 22-gauge wire. Molex connectors or something similar are a handy feature for the sensor.

Build process:

  • Solder the resistor & the sensor leads to the PCB board.
    • Your PCB may have copper lines connecting various pads; use this pattern on the PCB board to your advantage!
    • If your PCB board does not have any pads connected, an easy way to connect components is to run wires along the bottom.
  • Test the system w/ a multimeter or by running the code to be sure that it works as expected.
  • NOW coat it all in epoxy!
  • (Gently) shove the sensor circuit + RPI system into a waterproof container. My mom collects Talenti ice cream containers and they are super awesome for projects like this. Plus it’s a great excuse to eat a container of ice cream 🙂

If you run into any problems or you’re struggling with a particular step, please leave a comment & we can troubleshoot together! And we can help save the world by reducing our personal water consumption, yay!

Blinking Light(s) with the Raspberry Pi!

Welcome to the wonderful world of controlling physical objects with software! This tutorial is a complete beginners introduction to the Raspberry Pi computer, covering the basic features and functions to help you bring your ideas to life!

IMG_4140

Blinking a light using the Raspberry Pi’s General Purpose Input and Output (“GPIO”) pins is the hardware equivalent of a “Hello World” software program.

  1. First, gather the following materials:
    Breadboard (or wires/alligator clips)
    Two (2) Breadboard wires (Male-to-female are ideal)
    One (1) (or more!) LED (Light Emitting Diode)
    One (1) 330 Ohm resistor
    And the rest of the normal stuff to set up the RPi (SD card, power cord, keyboard + mouse (or just keyboard), HDMI cable and monitor.)
  2. Wire up the breadboard!IMG_4146
    Pick a GPIO pin. Attach the female end of one breadboard wire to the GPIO pin, and the male end
    Connect the other breadboard wire from ground on the RPi (third down on exterior side) to negative slot on the breadboard.
    Connect the resistor from the positive series of holes to an open row on the breadboard (I picked row 10).Connect the long side of the LED to the same row the resistor is in. Connect the short side to the negative slot.
    Make sure nothing explodes (just kidding that probably won’t happen 🙂 )
  3. Write a quick Python program.
    The program switches the GPIO pin between on and off, turning the LED on/off as it switches. Save the program somewhere easy, like the Desktop.
    Here’s my code if you need some assistance:

    import RPi.GPIO as gpio
    import time

    #SEtup pin 18 as an output
    gpio.setmode(gpio.BCM)
    gpio.setup(18, gpio.OUT),/span>

    #define data to be the value of pin 18
    #data = GPIO.IN0(18)

    #Make an LED flash on and off
    while True:
    gpio.output(18, gpio.HIGH)
    print(‘Light is on.’) #Optional printout of status
    time.sleep(1) #changing the number increases/decreases length of signal
    #print(data)
    gpio.output(18, gpio.LOW)
    print(‘Light is off.’) #Optional printout of status
    time.sleep(1)
    #print(data)

  4. Run the program!

IMG_4144In the terminal window, go to the folder where you saved your program. The command cd + the directory name (ex. /home/pi/Desktop) will take you there.
Run the program by typing sudo python “ProgramTitle”.py
As long as everything is connected and the program does what you think it does, the LED will flash.
That’s it! Super simple, and it means that this little RPi computer just controlled a physical object wooooo!!!
Optional fun:
– Change the timing of the blink.
– Connect a couple more LEDs the same way you connected the first (these will be in parallel with each other).
– Connect additional GPIO pins to more LEDs and change the timing (remember to also add in the appropriate code).

Helpful info:

www.atariarchives.org
www.atariarchives.org


As shown in the photo to the right, breadboards usually have columns for positive and negative (red and black, respectively) that are connected electrically all the way down the board.  Each row contains 5 holes that are also connected.

The resistor needs to go in between the LED and the power source to limit the amount of current, or electricity, flowing through the LED. The LED would be brighter w/out the resistor, but it will probably burn up super quick.

Happy building!

IMG_4150

Setting up a Raspberry Pi to Control Physical Objects, Pt. 2

What cool things can you do with the Raspberry Pi?

Source: http://www.aoakley.com
Source: http://www.aoakley.com

Welcome back to exploring the Raspberry Pi! There are tons of awesome things you can do with the Raspberry Pi — (pretty much) everything that you would do on a normal computer, like word processing, surfing the internet, streaming videos, etc.

You can write programs on it using the Idle software (Python language), Scratch, or Linux. This might seem mundane, but keep in mind that you bought this lil’ computer for only $30 dollars (+shipping and handling). If you have kids, this is a fantastic option for a first computer! The RPi naturally teaches and encourages hardware and software programming. Plus, you won’t mind as much when the kids spill apple juice all over it (or if you’re like me and still spill apple juice on computers, this is a great option for a backup computer..).

 

You can print this GPIO Leaf and stick in on the board!
You can print this GPIO Leaf and stick in on the board!

GPIO Pins!
By far the coolest way to use the Pi is to interface w/ the real world using the GPIO pins (that row of 26 pins adjacent to the RCA video port, or the yellow port). The GPIO pins have different functions as shown in the photo below: 17 of the 26 total pins are actual GPIO pins, while the rest are either ground, a power source (5 VDC or 3.3 VDC) or labeled “DNC” for “Do Not Connect”/”N/C” for “Not Connected” (connecting to these pins may short the Pi, so it is recommended to avoid these).

GPIO pins can be used as an input or an output. As an input, the pin can distinguish between two values: HIGH*  and LOW. As an output, you can send an ON, or HIGH signal (3.3 VDC), or an OFF, or LOW signal (0 VDC). These pins can be used for tons of physical tasks, like turning on/off lights (Christmas light choreography, anyone??), controlling motors, reading sensors, and honestly pretty much anything you can conceive, as long as you build a proper circuit.

Some of the GPIO pins also have more specific functions, such as SDA (data line), SCL (clock), etc.; if you’re reading this as a beginner don’t worry about these just yet. When you find a project you’re excited about you’ll naturally learn these functions as necessary.
*High input threshold is a signal of ~ 1.8 VDC, although it can vary between 0.8 – 2.0 VDC. This means that any signal coming in to your GPIO pin that is above 0.8 VDC may be read as “HIGH” by the RPi.

Advanced users will be happy to know that you can modify many of the GPIO characteristics from software (this link also has the robust GPIO electrical specifications).

For absolute beginners, here are some helpful things to know about the GPIO pins:
ac-dc-voltageGPIO pins operate on Direct Current (DC) voltage. Unless you want to see smoke come out of the RPi, do NOT input Alternating Current (AC) signals, like the one that comes out of the wall.
Be very careful about what you connect to the GPIO pins. You will not be able to control a motor directly from a GPIO pin; in this instance, the GPIO pin functions as a switch, rather than the actual power for the motor. Here’s a great tutorial on how to control a small motor.

Looking for more inspiration? Here’s a general list of 25 cool things to do w/ your RPi! You can also Google “Raspberry Pi projects” or browse the Instructables website for RPi projects.

The next post will cover a simple circuit you can build and control w/ the RPi.

Setting up a Raspberry Pi to Control Physical Objects, Pt. 1

RaspberryPiLogosmallThere are a slew of relatively simple systems to control physical objects w/ software. The most popular options are Arduino, the Raspberry Pi, and BeagleBoard. I’m an avid Raspberry Pi advocate, so let’s start with that!

The RPi is a simple & inexpensive computer that has general purpose input and output (GPIO) pins that interface w/ the real world.

(This tutorial assumes you are a beginner, but some technical jargon is included. Please feel free to comment if a term or phrase is not clear.)

What is a Raspberry Pi?RaspiModelB-1024x902

The Raspberry Pi is a credit-cared sized computer created by the Raspberry Pi Foundation, an educational charity based in the UK. It is designed to promote programming, computing, and interfacing with the physical world. It can control pretty much anything you are capable of conceiving.

There are two versions of the Pi:

  • Model A is cheaper w/ fewer features; 256 MB of RAM, one USB port and no Ethernet port.
  • Model B is more expensive, but has 512 MB of RAM, two USB ports, and a 100mb Ethernet port.

Where to purchase:

You can buy a Raspberry Pi from a variety of distributors. Model B from Adafruit is $40 (+ shipping & handling).

Other supplies:

RaspPiStarterKitThe Pi is literally just a computer. You’ll need a few additional supplies to set it up and use it (unless you’re a wizard). Think of it like a puzzle: collect the remaining pieces to customize an inexpensive interactive computer! To make the process easier, here’s a list of parts w/ explanations (you probably already have some):

  1. Power Cord
    The Pi runs on a micro-USB power supply, similar to many phone chargers. More specifically, the Pi needs 5 VDC and at least 700 mA. The Pi Foundation recommends a power supply that can provide 1200 mA. You can get one for less than $10, best values ~ $5, if you’re crafty you can find cheaper (or free). Here’s a google search for some that meet the best specs. Take note of where the power cord plugs into: wall socket, USB, etc.
  2. SD Card
    The Pi needs an SD card for physical memory storage (it doesn’t have a built-in hard drive or solid state drive). For ~ $6, you can buy an SD card with a pre-installed operating system and necessary software from the Pi Foundation’s Swag store here.
    With slightly more effort, you can buy any generic SD card and download the software here. This is fairly easy with a Mac system; if you chose to go down this route, here’s a great tutorial.
  3. Monitor & Display cable: HDMI/DVI cable or RCA composite video lead.
    Most modern monitors and TVs have HDMI ports for video (you can connect your RPi to your TV, woo!!). If you don’t already have one lying around, HDMI cables are found at RadioShack, Best Buy, Amazon, Ebay, etc. You can also get a HDMI converter cable for monitors or TVs w/ different ports. Older monitors are easy to find for free; many places of business, colleges/universities, and friends are happy to part with old monitors, or you can check out e-waste recycling bins.
  4. USB Keyboard & mouse (easiest way to set up).
    Any keyboard and mouse w/ a USB connection will work w/ the Pi.

Optional Supplies:

  1. Raspberry-Pi-Geek-Cases-1Ethernet Cable  (easiest way to connect to the Internet for Model B).

    Usually blue and lying around in some pile of cords you know are important. You can also buy them at places like Radio Shack, Best Buy, Amazon, etc.
  2. USB WiFi chip.
    Getting a USB WiFi “dongle” (yes, that is actually what it is called..) will allow you to connect to the Internet w/out an Ethernet cable. This requires some fairly involved setup, but it is completely doable for a RPi user of any experience level. Here are two methods:
    –Using wicd-curses,
    –Using GUI application
  3. Audio Lead (if not using HDMI)
    To get sound w/out an HDMI cable, you’ll need a standard 3.5mm jack to connect to speakers or headphones.
  4. Case
    The Raspberry Pi is designed to be a bare-bones computer to reduce cost as much as possible. However, cases are helpful protection from inevitable accidents and improve the mechanical connection of cables. There are TONS of awesome cases made specifically for the Raspberry Pi, although feel free to get creative and make your own!

Basic Setup:

raspberry_pi_iphone

  1. Insert SD card. Plug the RPi into a monitor & connect the keyboard and mouse via USB. An Ethernet cord is also recommended as it makes installing software on the RPi much easier.
  2. Plug the power cord into the RPi. Make sure you see a light turn on. (Yes, I honestly needed to include this step because this is an all too frequent problem for me.)
    Always do this after everything else is plugged in.
  3. If everything has been connected properly, you will see a start-up window. Every operating system (OS) will be different, but initial setup is simple and manageable.
    If you have a pre-loaded RPi-specific OS, or you have Raspbian or Adafruit’s OS, here’s a super straightforward tutorial on how to fully configure the RPi.Changing a few basic settings will definitely make life easier. From personal experience, if you have an SD card larger than 2 MB it’s useful to initially expand root partition to use the full SD capacity. If you want to avoid a command line window, you can specify Desktop launch whenever you power up the RPi.The default username is “pi” and the password is “raspberry”.Note: Since every OS is different, if your Pi doesn’t launch into the startup window, if you are still on the terminal window type “startx” into the command line. If that doesn’t work, leave a comment and we can troubleshoot together!
  4. Essentially that’s it! Once you’re at the desktop, you can use the Pi much like any other computer! Some basic programs: Midori is a simple Internet browser, Leafpad is a word processing program, Idle is a Python programming environment, and Scratch is kid-friendly programming language.

I will add more on how to set up the wireless, or other topics as requested.