SAGA: Semi-Automatic Gmail Assistant

My friend Rob is a smart engineer, and throughout the course of a work week he receives dozens of requests for his assistance on various projects.  He’s such a positive and helpful person that he finds it difficult to say “No.” to any of these requests.  I’ve helped him out by making a USB device that can provide a clear and simple email response to some of these requests.  SAGA, or Semi-Automatic Gmail Assistant, is approximately the size of a mouse, and plugs into a computer just like any mouse or keyboard would.  Here is the first prototype:

SAGA comes complete with a key lockout feature that prevents accidental activation. Once a worthy email request has been received, Rob can calmly make the call whether or not to arm SAGA by inserting the key, and rotating it clockwise 90 degrees.  After rotating the key, an octagon of LEDs lights up around the chrome button, enticing Rob to press it.  The extra illumination from the LEDs also further highlights the artfully coiled wiring that fills the prototype SAGA.  When the button is pressed, SAGA sends the keyboard shortcut to respond to the email and types out “Go F*** Yourself.” at a respectable and slightly humorous 200 wpm.  After waiting a half second for dramatic effect, SAGA automatically sends the email.  Note that there is a 1% chance that SAGA will instead respond “That’s a Great idea, I’ll get right on it!”

SAGAis powered by a Teensy 2.0 and $15 of electronics parts.  SAGA appears to the computer as a standard keyboard, and some helpful startup hints I followed appear on RasterWeb! and here.  One enabling trick was using a 2n2222 NPN transistor to drive 140 mA into the eight LEDs (connected in parallel), as this value exceeds the current available from any one of the Teensy’s outputs.  Note that keyboard shortcuts must be enabled in Gmail settings, and that Yahoo! Mail is also SAGA compatible. Upon moving an internal jumper, SAGA is probably compatible with some versions of Outlook (although installation of service pack 3.0 may be required).

Due to popular request by the few folks who have seen SAGA in action, I’ve built up a few, and they are for sale now on Etsy.  Check out the aesthetically pleasing, high gloss powder coated aluminum enclosure! Here is SAGA in high-speed yellow:

Alternate colors are available too – Just follow this link to Etsy!  

Arduino-Powered Surround Sound Synthesizer

The Makerspace Eight Speaker Super Surround Sound System(MESSSSS) has been supplying music to the Makerspace for quite a while now, but I identified a problem even before the system was fully installed.  Stereo recordings played back on two speakers are great if you’re in the “sweet spot.” If not, traditional approaches to 5.1 audio improve things, but all rely on there being a single “front of the room.” Unfortunately, it’s not clear which side of the 3000 square foot Makerspace shop is the front, and with four pairs of speakers in the room, even stereo imaging is difficult.

Fortunately, I’ve just completed the Makerspace Eight Speaker Super Surround Sound System’s Enveloping Surround Sound Synthesizer (MESSSSSESSS).  The MESSSSSESSS takes stereo recordings and distributes sound to the eight speakers in an entirely fair and user configurable way, thereby eliminating the need for a “front of the room.” Now listeners can be arbitrary distributed throughout a room, and can even be oriented in random directions, while still receiving an enveloping surround sound experience!

The MESSSSSESSS user interface is somewhat simpler than most surround sound processers, as it consists of only four switches and one knob.  Somewhat inspired by StrobeTV, the simplest mode references questionable quadraphonic recordings, in that the music travels sequentially from speaker to speaker, chasing around the room either clockwise or counterclockwise at a rate selected by the knob. With the flip of a switch, sound emanates from the eight speakers in a random order. Things get considerably less deterministic after flipping the Chaos Switch, adjusting the Chaos Knob, and entering Turbo Mode:  Its best to visit Milwaukee Makerspace to experience the madness for yourself.  I’m legally obligated to recommend first time listeners be seated for the experience.

The MESSSSSESSS is powered entirely by an Arduino Uno’s ATmega328 that was programmed with an Arduino and then plugged into a socket in a small, custom board that I designed and etched at the Makerspace.  The ATmega328 outputs can energize relays that either do or don’t pass the audio signal to the four stereo output jacks.  Care was taken to use diodes to clamp any voltage spikes that may be created as the relays switch, thus preventing damage to the ATmega328 outputs.

As shown by the minimal part count above, using the ATmega328 “off the Arduino” is quite easy:  Just connect pins 1 (The square one), 7 and 20 to 5 volts, and connect pins 8 and 22 to ground.  Then, add a 22uF cap and small bypass cap between power and ground, and a ceramic resonator to pins 19 and 20.  You can even use an old cellphone charger as the power supply.  Boom.  That’s it.  The real benefits of making your own boards are having a well integrated system, and cost, as the Atmel chip is $4.50 while a whole Arduino is $30.  Also visible in the photo are a programming header and the two ribbon cables that route all the signals to and from the board.

Random Find: The Avago/HP HDLG-2416

Anyone who’s ever visited Makerspace knows that the ‘Library’ is home to tons and tons of stuff.  Component parts, IC chips, belts, pulleys, batteries, etc.  Occasionally I lose myself in there for a few hours and just explore the shelves.  This is a post about one of my more interesting discoveries.


I came across a whole bag of these in the LED bins.  They’re 1″ wide, four-digit alphanumeric displays.  Each character consists of a 5 mm tall, 5×7 LED dot matrix display.  The device comes complete with on-board RAM and an ASCII decoder capable of displaying up to 128 different characters.  It’s even possible to dim the brightness.  I’m also partial to the color green.

The major drawback I’ve found is the number of pins required for use.  The thing has seven data pins and the extended features for writing/reading/displaying require a ton of connections.  I used all but four of my Arduino Uno’s I/O pins while tinkering with it.  You’re probably better off using a LCD display or something with serial data support, but these are still small and numerous in our ‘Space so they’re worth toying with.  Also there’s been a few other people who played with these and posted their findings online. I’m seriously considering building a small desk clock around one or two of these in the future.

If you’re interested in using one of these displays on your next project, I’d suggest reading the blogs by these fine folks here:

http://buzzdavidson.com/?p=148

http://dorkbotpdx.org/blog/wardcunningham/yow_revisited_in_txtzyme

http://gorgusgfx.se/?page_id=62 (I think this is in Swedish, but the code still works!)

 

Android Blue or iOS Purple? Update on the OOMA project

The Object Of My Affection Lamp   I thought I would jump in and blog on my current progress at the Makerspace with a lamp called OOMA, or The Object Of My Affection. It’s a lamp that is shaped like a GPS Navigation pin that rotates to always points toward the one you love… as long as they allow you access to their Google Latitude account :). I am finalizing hardware designs and now moving into writing the software and how it talks to the Internet.

Initially I would have waived it off as using WiFi, or Ethernet, but work on another project (Marco) has illuminated several obstacles over multiple use cases (configuring Wi-Fi, closed networks, IP addresses); instead I think the approach will be to opt over USB (via Arduino Leonardo). I figure, if people will load up a coffee cup heater or foam missile launcher to USB, than there is no issue with port scarcity.

It’s not a lamp without light, and at some point OOMA will light up in either Android Blue, or iPhone Purple. Lighting the lamp will, however, have to relegated to a v.2 build, due to some complexity in the diffusion of light in such a cramped space. Additionally, I’d like to investigate EL panels to light it up.

Finally, I am coming up on the decision to be a DIY offering, or to design it to be marketable – do I build as a one off and just offer the blueprints to others or build an end-to-end consumer solution complete with potentially an NFC tag to tap and pair a user and their lamp.

How do you make the BADASS more badass?

Simple.  Add lasers.

Video of Vectorized Laser PCB Fabrication

The next generation BADASS board was too big to fit through the card laminator, so I figured I’d try my hand at Tom’s laser etching method.  By using the trace program included with CorelDraw I was able to make a vectorized path for the board.  One pass takes about 5 min at 50% speed.

Runner’s Odometer

Runners's Odometer: Tracey's Miles as of December 25, 2011

Tracey, my wife, runs a lot. This year she is already over 2000 miles logged. She runs marathons and ultra-marathons and crazy things like 50 mile runs. We have long joked together that she clocks more miles running in a year than i put on my beloved 1999 Chevy Prism driving it to the train station and back. This made me think that i should make an odometer for her. I decided to do this for real a couple of weeks ago and had a prototype ready for her to open on Christmas morning.

Her immediate reaction? “You got me a box of wires and stuff?!” Once i explained it to her and showed it in action, she thought it was a lot of fun.

I initially wanted to use a real car odometer, but i didn’t have one handy. I went over to the fantastic American Science and Surplus and looked for some counters or an odometer there. While i didn’t find an odometer, they did have some 24v industrial counters from Durant. These are nice little counters that were (are?) made in Watertown, WI, not too far from our space. They are super simple devices. 6 geared dials have the numbers 0-9 on them. A solenoid ticks the rightmost number with each pulse of voltage it receives. When the dial on the right rolls over from 9 to 0, the next gear is ticked up by one and so on. These counters are not resettable or reversible, except by some manual intervention. I took the little guy apart and cranked the wheels over to where i wanted them.

A quick rummage through the hack rack turned up an 18V wall wart that we clipped the plug off of and used for our power source. Royce helped me out with this and with his help and a couple of alligator clips we proved that the 18V was enough to activate the solenoid and tick the counter up by 1. This particular counter moves 1 tick regardless of how long the voltage is applied. To crank up multiple ticks, i need to cycle the power on and off. I had an Adafruit MotorShield lying around that had all of the necessary high-voltage gear on it and we got the device up and running pretty quickly with it. I did not have time to build a circuit board just for this device, so the MotorShield is what is being used for the working device now. That wrapped up a quick night of experimentation at the space and at the end of it i had a working counter and the Arduino code to control it!

My next task was to integrate it with DailyMile, the social networking site that Tracey uses to log her runs and connect with her running friends locally and around the country. Thankfully, DailyMile has a nice little REST+JSON API that made it super easy to snag all of Tracey’s details. I used their ruby client, but will probably switch my app over to Python because i have been doing more Python development lately. The API returns a simple JSON structure for all logged activities and i simply snag that data and store it locally in a pretty-printed JSON file. A sample activity record and URL look like this:

Edited response from https://api.dailymile.com/people/tmgessner/entries.json?page=5

{"entries":[
{"id":10441284,
"url":"http://www.dailymile.com/entries/10441284",
"at":"2011-10-16T14:34:34Z",
"message":"My legs felt a little bit tired today but my lungs felt GOOD! I tried to stay relaxed and just enjoyed the feeling of breathing in and out. Really, a lovely Sunday morning.",
"comments":[...],
"likes":[],
"geo":{
"type":"Point",
"coordinates":["-87.8961323","42.9935854"]},
"location":{"name":"Milwaukee, WI"},
"user":{
"username":"tmgessner",
"display_name":"Tracey G.",
"photo_url":"http://s1.dmimg.com/pictures/users/9744/1322699474_avatar.jpg",
"url":"http://www.dailymile.com/people/tmgessner"
},
"workout":{
"activity_type":"Running",
"distance":{
"value":7.1079,
"units":"miles"
},
"felt":"good","duration":3968}},
...
]}

I save all of the activity events locally, but for this odometer, i am only interested in the “Running” events.

The ruby application runs forever and polls the DailyMile API every minute for new data and stops paging through the results if it finds entries that it has seen before. If any new runs are found, the app figures out how many miles are missing from the odometer and sends that value along as a byte to the arduino over the serial port using the serialport gem and waits for a successful response.

If you would like to build a version of this yourself, you can download the code used from http://code.google.com/u/jason.gessner/p/runners-odometer/.

The device and code work right now, but the presentation leaves a lot to be desired, though, so i am working on a version with a more lovely display. I like the analog odometer feel and I think the next step will be to make some larger gears for this project on the CNC router at the space and build a bigger version. I’d also like to work with my father on a nice wooden case for the display and the gear.

The more immediate next steps will be to make a smaller circuit for this that doesn’t need a full arduino and a motor shield. I can control the solenoid with a transistor (like we did for the Beer Project). The bigger challenge will be to make the connectivity to the data from the API more compact. I would love for this device to be wireless, but i need to figure out how much i want it to cost. This would be a fun project to offer as a kit or for sale, but i don’t want it to cost close to 100 dollars, so i’ll be doing some more prototyping to make it a bit more standalone. The other challenge i have is that Tracey typically only uses her laptop, so there is no desktop machine sitting around that she would hook this up to so it will constantly update. I do have some new Xbee gear that might work, but i think the trickiest thing to design will be the standalone version that doesn’t need a computer connected to it.

Runner's Odometer: The Motor Shield Powering the Counter

Project Roundup 2011-01-27

Here’s a brief synopsis of two projects currently underway.

Ron is leading the construction of a CNC router.  A workpiece will rest on two platforms, salvaged from a defunct laser cutter, and stepper motors will drive them in the X and Y-axes.  Another stepper motor will move the a router up and down in the Z-axis from a mount above the work.  When complete, the device will be able to produce 3-D objects out of wood and some light metals.  So far, the two heavy platforms have been installed on a wooden frame and Ron is busy working on a carriage that the router will mount to so it can travel in the Z-axis.

Here we see Adam testing his latest creation.  Using an Arduino board, he has built a device that registers a ‘hit’ whenever a magnetic pellet strikes a sensor. The ultimate goal is to build a vest of sensors, lights, and buzzers that airsoft enthusiasts can wear.  Whenever a gamer is shot, it will light up and make noise.  Other possibilities include real-time score keeping and ways of recording who shot who, where, and how often during games.

More next time!