Building the ChronoDot Calendar Reminder Being very forgetful and married is not a good combination. Luckily my wife comes up with solutions and suggested that we make some sort of reminder that would be able to tell me about specific events such as trash or recycling night. A normal calendar or alarm on a phone wouldn t cut it so we decided that this reminder would be able to detect when someone approached and would deliver a message to an individual rather than just putting it out there at pre- determined times. Basically it s a motion triggered calendar. The ChronoDot keeps track of the time/date/day and the motion sensor triggers when someone walks by. If there is an event set up, it will display a message or play a specific WAV file. There are several different types of events available in the Arduino sketch such as alarm events that trigger at a certain time/date, proximity events that trigger if a person approaches in a time window (i.e. 7-10PM on Thursday). The proximity events have a timer so they don t trigger every time someone walks by. That would be a little too much of a NAG. There are also display only events that can be set up to make statements about what day it is or if someone has a birthday or anniversary. I am going to assume a certain amount of prerequisite knowledge and skill such as soldering and working with Arduino. If these skills are not present, there are several websites dedicated to getting people started. Start out by assembling the WAV Shield and the ChronoDot. Once that is taken care of, break out the schematic and put all of the components on a bread board so you can verify that everything works together before soldering onto a proto- shield, or prototyping circuit board. I used a regular prototyping board as I didn t have a proto- shield handy when I built ours.
After assembling the WAV shield, solder wires to the breakout pins that will be used, 6-9&13 as well as A0, A1, A2, A4, A5, +5v and finally GND.
This allows for easier bread boarding and soldering when you re ready to put the final version together. I usually prefer to make everything modular by using stackable headers and such, in case an individual component goes bad, but in the interest of laziness and to save time and space, I just hard wiring everything. Now connect the individual components. Start with the LCD display The LCD shown in the pictures is a 16x2, but the wiring is the same as a 20x4 and the sketch is written for a 20x4, so I recommend using a 20x4 unless you fiddle with the sketch and reconfigure it for the 16x2. There are usually tutorials out there from the supplier of your particular LCD. Most of the tutorials I have seen out there use different pins. Make sure you follow this schematic and guide because I needed to use different pins for compatibility with the WAV shield. Ground pins 1, 5 and 16 on the LCD. Connect pin 2 on the LCD to +5v. Pin 15 on the LCD goes to +5v through a 220Ω resistor. This resistor acts to limit the current to the LCD backlight LED. The 10K potentiometer gets wired with one side +5v and the other side GND. Then connect the wiper (usually the center) to pin 3 on the Arduino. The data pins on the LCD at 14, 13, 12 & 11 go to the Arduino pins A0, A1, 6 and 7 respectively. Finally pin 4 on the LCD (RS) and pin 6 on the LCD (EN) go to the Arduino pins 9 and 8 respectively.
Now move on to the ChronoDot. Connect the ChronoDot VCC to +5v and ground the GND. SDA goes to the Arduino pin A4 and SCL goes to A5.
Now connect the final component, the proximity sensor. Connect the +5v to +5v and GND to GND. The plug that came with my sensor wasn t keyed, so pay attention to which way you connect it or you may burn it out. The signal wire (OUT) goes to pin A2 on the Arduino. This wire goes HI when proximity is detected and is the key to the NAG triggering as someone approaches.
Once all of the components are connected on the bread board, upload the sketch and test this mess out. If you have wired everything up correctly, you should see the time and date displayed along with a daily message such as Monday s Rock or Thirsty Thursday depending on what day of the week it is. As I mentioned earlier, the pictures show a 16x2 display, so don t pay attention to the output in the pictures.
If all is well so far, make your individual recordings for your events. I used 16KHz, 16- bit, mono PCM but the WAV shield will support up to 22KHz, 16- bit, mono PCM. Make sure you keep in mind that the WAV shield does not support long file names, so use all CAPS and keep them to 8 characters or less. Try to record all of your WAVs in one session so that the ambient sound and the recording levels are all the same. Otherwise, you could have some really loud or really low level recordings. Once you have all of your recordings, copy them to an SD card and move it over to the WAV shield. I tried to comment the sketch well enough that it makes sense so it would be easier to customize it for your individual display messages and events. The first time you fire up your NAG, you should set the correct time and date. You will see a line on the forth tab that says // initchrono():. Remove the // and change the values of the time, date and day variables above that line to the current time/date and day of the week (Sunday is day 1). Upload the code and this should set the ChronoDot for you. You will need to edit the file again and Re- remark the initchrono(): line again by adding the // back in front. This will prevent the NAG from resetting the time/date every time you disconnect the power, or reset the device. Take a good look at the first tab as this is where you will create your custom events and recordings. You can copy and paste existing events and then edit them for your specific time/date and WAV file. After mapping out and making all of your recordings, select a suitable proto shield or prototyping circuit board and map out where the individual components will reside. I used a regular prototyping board and bent the stacking header pins to fit the non- standard pin spacing on the UNO. I soldered the stacking
headers and the ChronoDot directly to this board. Once it is all soldered up, trim off any of the excess board so you have more room in the case. Make cutouts in the case for the display, speaker and PIR motion sensor. You can also make cutouts on the side for the Arduino SD card, power, USB and WAV shield volume control. This will allow programming the Arduino without having to open the case up every time. This can also give you access to the SD card for the same reason.
Mount all the components to the case and close it up. Pick a suitable mounting location such as a hallway or corridor which gets a lot of foot traffic. We positioned our NAG in the hallway that leads to the bedrooms so I won t forget the trash and recycling as I am headed to bed. The fact that I used my young daughter s voices for the reminder recordings prevents me from getting mad when I hear the messages!
I am working on incorporating an acknowledgement button to stop the individual reminders once the task is complete. You can see this in the pictures so don t think you missed a step! I don t have it working yet so I didn t cover it in this writing.