Daily Reminder Button / Calendar With Arduino

by defwheezer in Circuits > Arduino

1069 Views, 1 Favorites, 0 Comments

Daily Reminder Button / Calendar With Arduino

daily_minder_title.png

Multi-colored LED Arcade switches to record activity for each day of the week.

Supplies

The following times will be needed:

  1. Arduino Pro Mini (5v) microprocessor
  2. RBG addressable LEDs (Neopixels)
  3. Lighted arcade buttons like these.
  4. 7-Segment display w/I2C backback
  5. Chronodot (or similar) real-time-clock (RTC)
  6. Enclosure (I used a wooden one from a thrift store, but 3D-printing would provide many more options!)
  7. Arduino code: Github

Note, many of these items can be purchased on eBay for just a few $ if you are willing to wait 4-8 weeks for delivery.

daily_minder_idea.png

General idea was to make an interactive (multicolored LED) wall hanging daily reminder thingus using some nice mechanical arcade-style pushbuttons.

Basically, every day a corresponding button would be indicated (by color) if the daily activity was done or not. Manually reset lights each week.

daily_minder_parts.png

First, we need to gather our parts. Many of the small things (wires, resistors, capacitors, reset switches) should be available in your misc drawer, if not, then now is as good a time as ever to stock up.

For this project, I made a custom carrier board for the Arduino and Chronodot, but this is totally optional and I will not cover the etching process in this Instructable.

wiring_diagram.png

The basic wiring is shown in the picture.

bread-board.png

Bread-board is wired up with all the Neopixels and buttons. This really helps to make sure that everythign works before you start soldering, but also once it is all working, you can transfer each component one-at-a-time to the soldering station for the final 'Kragle'.

bread-board_chronodot.png

Adding the Chronodot RTC and 7-Segment LED to the bread-board (note most of the Neopixels have been soldered up already). Both the Chronodot RTC and 7-Segment LED are controlled via I2C, so both of them only take up two wires total on the Arduino: the SDA and SCL lines (pins A4 and A5 on the Pro Mini).

carrier-board.png

For a slightly cleaner final interior, I made a carrier board for the Chronodot and Arduino.

switch_exploded.png

An exploded view of the lighted arcade switch. We need to replace the white LED with our fancy addressable Neopixs!

Daily-Minder_dyasofweek.png

Each button will get a custom mask to indicate the day fo the week. These are simply made by laser printing onto clear sheets (I double them up to make the black background darker). I have included a sample mask you can use as is, or use the dimensions for your own design.

RGB_LED.png

Each Neopixel is soldered with yellow (data in), green (data out), red (5V), and black (gnd). The Neopixel is then mounted in the switch housing (see exploded switch diagram in Step 5) that had the original white LED in it.

transfer-compenents.png

Each Neopixel and capacitor is wired up from the breadboard starting from the far end and working back. Neopixels are "daisy-chained" such that the data IN line from the first LED comes from Arduino, the data OUT line then goes to the data IN line of the next LED, and so on. The last LED just leaves the data OUT line NC (not connected).

switch-assemble-wires.png

Close up of one full assembly before putting the button housing on.

switche_covers2.JPG
dimensions_box.JPG
IMG_4666.JPEG

The first image shows the front assemblies of the switches with corresponding day mask added.

These are then mounted on the enclosure (I was aiming for around 12" Tall by 3" Wide by 2.5" Deep to accommodate the 7 buttons and display). The wired-up switch/Neopixel assemblies simply twist-snaps onto the front assemblies.

board_tucked-inside.JPG

The final interior is still a bit of a rats nest, but the carrier board, 7-segment display, power in and reset button all fit!

Final-enclosure.png

The final thingus worked out pretty well!

animation.gif

Final working thingus! The 7-segment display is only displaying the current date (month and day), though it can alternate between that and the time of day easilly enough, or even to display additional info on button pushes.

I have the color set so that the current day is orange, when pressed on that day it turns blue, and when pressed for previous days it is green (if not pressed on that day it stays off, not light).

Since each button can display virtually any color, they could be programmed for multiple pushes per day, for instance.