The Electronic Nag

Build a Notification Alert Generator that pesters you to do your chores.

BY GEORGE TEMPESTA

image

Gregory Hayes

MATERIALS

See makeprojects.com/v/30 for suppliers, part numbers, prices, and other sourcing information.

Arduino Uno microcontroller

ChronoDot real-time clock module

Wave Shield for Arduino kit

MakerShield kit Maker Shed #MSMS01 (makershed.com)

Audio speaker, 8Ω, about 2" diameter

LCD display, 20×4 characters

Proximity sensor, passive infrared (PIR)

Resistor, 220Ω

Power supply, 9V

Shield stacking headers for Arduino

Jumper wires

Cable, IDE 40-wire ribbon

Machine screws, #4-40 pan-head, ¼" (14)

Nuts, #4-40 (8)

Machine screws, #0-80 pan-head, ½", with matching nuts (2)

Standoffs, #4-40 threaded, ": F-to-F (3), M-to-F (4)

Rubber feet (2)

Nail, "

Project enclosure, about 8"×6"×3"

For custom laser-cut case instead of generic enclosure:

Machine screws, #4-40 pan-head, ½", with matching nuts (20)

Acrylic, "×12"×24"

TOOLS

Computer with internet connection

USB cable, Standard-A to Standard-B

Solderless breadboard

Soldering iron and solder

Wire cutters and wire strippers

Screwdriver

Drill and drill bits (#50, ", ¼", ), flush cutter, and file (for generic enclosure) or laser cutter (for custom enclosure)

It’s been said that “necessity is the mother of invention.” It’s also been said (at least by me) that “forgetting to take out the garbage after a splendid seafood dinner is the mother of an angry spouse.”

Hence the need for the NAG (Notification Alert Generator), which you can strategically mount on a wall near the bedroom to remind you of important upcoming events and tasks, such as taking out the festering garbage.

The NAG was my first real foray into building one of the crazy devices I’ve come up with over the years. Luckily a friend of mine who is a developer clued me into microcontrollers, and then I did some research and learned about the Arduino, its many shields, and the Wave Shield kit from the fabulous Adafruit Industries (adafruit.com), which stores WAV audio files that your Arduino can play.

When it comes to nagging, timing is everything, so this project uses a real-time clock (RTC) chip, which also contains a calendar. It also includes an LCD, proximity sensor, and a case to house the whole mess.

I’ll assume the reader has the prerequisite knowledge to build and modify an Arduino project and associated sketches. If not, head over to makezine.com/arduino to get started.

In my circuit (Figure A), many of the Arduino’s limited number of I/O pins are used by the LCD and clock. The Wave Shield needs pins 2, 3, 4, and 5, but the Arduino LiquidCrystal code library lets you reassign LCD pins. So I made room for the Wave Shield by moving the pin assignments in the library, from LiquidCrystal lcd(12, 11, 5, 4, 3, 2); to LiquidCrystal lcd(9, 8, 7, 6, 15, 14);.

image

NOTE: Digital I/O pin 0 (RX) on the Arduino is reserved for uploading sketches from your computer, so don’t use it.

The purpose of the NAG is to nag someone as they walk by, instead of just throwing out reminders at predetermined times, unheard. To achieve this, I used a cheap infrared proximity sensor, the output of which I connected to the Arduino’s analog input pin 2.

START

1. RECORD AUDIO NOTIFICATIONS

This is an opportunity to get the whole family involved in the project. We fired up my laptop with its built-in microphone and held a recording session: “It’s trash night, Daddy!” and “It’s recycle night, Daddy!” and so on, saving the snippets as WAV files formatted to Adafruit’s specification. To cover as many bases as possible, we recorded notifications for all the hours of the day, and anything else I felt could come into play down the road.

image TIP

Record as many sound files as possible in a single session, because this keeps the ambient sound and overall quality the same. Then scale back as needed.

1. ASSEMBLE THE SHIELDS AND LCD

The 2 shields come as kits, so you need to assemble them. With the MakerShield, do not solder on the short-lead 4- and 8-pin headers; these will hold the Chronodot. And with the Wave Shield, substitute shield stacking headers for the included male headers, to let the MakerShield stack on top (Figure B). Solder an 8" length of speaker wire from the speaker to the 2 audio out holes behind the jack on the Wave Shield (Figure C). Lastly, connect the LCD pins and test that it works, following Adafruit’s tutorial.

image
image

2. WIRE AND TEST THE CIRCUITRY

Before committing to solder, build your circuit on a solderless breadboard. Stack the Wave Shield onto the Arduino and wire the LCD and Chronodot to their pins. Then connect the PIR sensor with the included cable assembly.

With the Arduino 0023 IDE installed (1.0 is not supported yet), download the project code Clock_WAV_Motion_Time_Set.pde and Adafruit AF_Wave library from makeprojects.com/v/30. Install the library in your Arduino directory. Read the comments in the Arduino code to change some values for testing, then upload it to your Arduino and test.

Once it checks out on a breadboard, cut off a 16-pin strip of male headers (from the Wave Shield) and cut the short-lead 8-pin header (from the MakerShield) into a 4-pin header. Transfer the wiring onto the shield, including the 16-pin header for the ribbon cable and the two 4-pin headers for the Chronodot (Figure D). Plug in the Chronodot (Figure E) and solder everything down, solder-bridging the header pins to their adjacent wires (Figure F).

image
image
image

Stack the MakerShield onto the Wave Shield. Attach the LCD via ribbon cable, making sure it connects to the same pins at both ends (Figures G and H). Connect the PIR sensor to the MakerShield via its included cable.

image
image

3. ENCASE THE PROJECT

At makeprojects.com/v/30 you can download a template for turning a RadioShack project enclosure into a case for the NAG, and also DWG files for laser-cutting a custom NAG case out of acrylic. With the RadioShack box, center-punch and drill the holes, then use a flush cutter and a file to smooth the edges (Figures I and J). Mount the LCD using male-to-female standoffs and 4-40 screws and nuts; the PIR sensor with 0-80 screws and nuts; the speaker with 4-40 screws and nuts; and the Arduino using 4-40 screws, standoffs, and nuts.

image
image

We fired up my laptop with its built-in microphone and held a recording session: “It’s trash night, Daddy!”

With either the RadioShack enclosure or the laser-cut acrylic box, add rubber feet to the bottom corners where they will rest against the wall. You can hang the NAG on a nail.

4. CUSTOMIZE THE SKETCH

My Arduino sketch assigns the proximity sensor pin as an input and tells the Arduino what to do when it sees someone walk by. It also triggers actions based on the time or date.

Of course, you can customize the sketch however you want. Tuesday is trash night, so mine nags whenever somebody walks by between 7 and 11 p.m. But it would be quite annoying if it did this every time, so it waits 20 minutes between nags, except for scheduled nags at 5 minutes after 7, 8, 9, and 10 p.m.

Wednesday follows the same nagging protocol as Tuesday, but with a different WAV file: “It’s recycle night, Daddy!” In addition to playing proximity-triggered messages, the sketch announces the hours between 7 and 10 p.m. and 8 and 10 a.m., and on the LCD it displays messages such as “Thirsty Thursday” and “T.G.I.F.” Upload your custom sketch to the Arduino, using Arduino IDE 0023, and congratulations, you’re now being NAGed.

GOING FURTHER

I hope to enhance the NAG with a touchscreen so it’s easy to add new events such as meetings, birthdays, and sports events. (“Don’t forget to take an apple for the teacher today.”) Once the touchscreen programming is working, I’ll add more functionality. Just wait till the next version! Images

George Tempesta ([email protected]) is a forgetful, loving husband and the proud father of three beautiful little girls. He has always had to learn how everything works.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.137.185.180