Category Archives: arduino

Quasar, yet another DIY ambient orb (with wireless!)

This project has been done many times, so I won’t go into much detail. I wanted a general purpose notifier, especially once I built Laundrymon. I figured a box with a high powered RGB LED and an XBee would fit the bill. The enclosure is just a project box with a sheet of cheap copy paper shaped with some wire and hot glue. I added a photoresistor to dim the light in the bedroom at night.

I’m building a couple of these to scatter throughout the house so I always know when the laundry’s done, an email arrives, or whatever else I might want to be notified about.

Important note: I misplaced one of the capacitors when designing the board. It seems to be running well enough with a wire in its place. It’s the one on the right in the lower left corner, above the power connector.

Downloads the source and Eagle files
Buy the PCB from BatchPCB

Quasar in actionQuasar populated board

Quasar breadboard prototypeQuasar PCB design

Quasar schematic

Laundrymon, the wireless, noninvasive, Arduino-based, laundry monitor

Laundrymon populated circuit board
I always forget to set a timer when doing laundry, and the machines are in the garage so they’re hard to hear. I’ve seen a couple of approaches to remotely monitor laundry machines. Unfortunately, I am not a commerical laundromat, and the since machines belong to the landlady I can’t really open them up to hack on. I needed a non-invasive solution.

The ideal approach would be something that I could put next to the washer and dryer that would passively detect whether the machine was running. Laundry machines generally vibrate pretty much, so I decided to try to use an accelerometer to detect vibration. The Wii Nunchuk is a handy accelerometer with an I2C interface with Arduino code available. So I bought an adapter, wrote a basic logging sketch, and taped a Nunchuk to the side of the washer to see what would happen.

Laundrymon graph

Hey, looks like this might actually work!

It turns out that even if you pay the full retail price of $20, the Nunchuk is still pretty much the cheapest accelerometer you can buy once it’s broken out from a tiny surface mount package. I needed two Nunchuks — one for the washer and one for the dryer. Normally, it’s easy to have multiple I2C devices connected together, but the Nunchuk has the slave address hard coded. That’s easily solved with a few transistors.

Time to put it all together. While the Nunchuk adapters are great for prototyping, they don’t really give a solid connection, so I swapped the cable for some network cable I had lying around. I started with a basic breadboard Arduino tutorial, and added an XBee for wireless and the nunchuk circuitry. I used the excellent BatchPCB for fabrication. Even though the final board doesn’t looks much like an Arduino, it’s based on at Atmega168, so I can still use the Arduino IDE to develop the firmware.

Right now, all it does it play a sound on my home theater PC. My next project is to make a bunch of blinkie notifiers to scatter throughout the house.

Download the source and Eagle files
Buy the PCB from BatchPCB

Full Laundrymon setupNunchuk hang off of the dryer

Laundrymon schematicLaundrymon circuitboard design

Arduino IR transmitter

A while back, I bought a universal remote for the entertainment system. I chose one fancy enough to have learning capability, but not fancy enough to be programmed with a computer.

Annoyingly, the factory and universal remote only had a button to toggle through the various inputs. This gets tedious quickly when you have a few video game consoles. I knew that the TV had discrete codes, which would take you directly to a selected input. But I didn’t have a way to program the remote with these codes.

So I wrote an IR transmitter for Arduino. Then I could use the Arduino to program the remote, and have nice discrete component access straight from the remote that I’m already using. My TV is a Samsung, which uses the . It’s a pretty simple protocol consisting of two address bytes and two command bytes, with a 9 ms burst ahead of it. Ones and zeros are encoded as different pauses after a short burst at 38 kHz. My previous IR project was very helpful for debugging timing issues.

Download the code. The only hardware required is an IR LED attached to pin 13.