1
0
mirror of https://github.com/taigrr/arduinolibs synced 2025-01-18 04:33:12 -08:00
arduinolibs/doc/alarm-clock.dox
2012-06-18 11:02:28 +10:00

142 lines
6.2 KiB
Plaintext

/*
* Copyright (C) 2012 Southern Storm Software, Pty Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/**
\file alarm-clock.dox
\page alarm_clock Alarm Clock
\section clock_features Features
The alarm clock described on this page is a large example application that
uses many of the classes in the provided libraries: LCD, Form,
Field, SoftI2C, DS1307RTC (or DS3232RTC), Melody and
\ref power_save "PowerSave". The clock has the following features:
\li Displays both the time and date.
\li 12 hour and 24 hour time display modes.
\li Up to 4 configurable alarm times, plus a snooze alarm.
\li Three alarm sounds to choose from, plus an option to use a radio alarm.
\li Configurable alarm timeout between 2 and 10 seconds.
\li Alarms can be configured to only sound on Monday to Friday
or on Saturday and Sunday.
\li Single button to activate the back light and/or stop the alarm.
\li Up, down, left, and right buttons to change clock settings.
\li MOSFET that controls the power to a separate radio circuit.
\section clock_main_circuit Main circuit
The main clock circuit consists of an Arduino Uno compatible board, a 16x2
LCD module, a realtime clock chip, a piezo buzzer for the alarm, and a
MOSFET for controlling the radio:
\image html alarm_circuit.png
Some of the components can be purchased ready-made as the
<a href="http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide">Freetronics
16x2 LCD Shield</a> and the <a href="http://www.sparkfun.com/products/99">SparkFun
Realtime Clock Module</a>. I used the ready-made realtime clock module,
but made my own equivalent to the LCD shield from parts to aid in spacing
out the LCD and pushbuttons on the exterior of the box. The value of the 33R
resistor may need to be adjusted for different types of back light LED's.
See \ref clock_ds3232 "below" for information on using a DS3232-based
clock module instead of a DS1307-based module.
The whole circuit is built on a prototyping shield, with ribbon cables
connecting to the LCD. The Stop Alarm button, piezo buzzer, and radio
controller are not shown in this picture and some of the components are
soldered to the bottom of the shield:
\image html clock_shield.jpg
The clock module is based on the DS1307 chip and has an on-board coin battery
to keep the time and date ticking over even if the main circuit loses power.
The chip is I2C-based and has an auxillary SQW output that can be configured
to provide a 1 Hz squarewave signal. This signal is used by the software
running on the Arduino to detect when a new time or date is available for
display on the LCD. The DS1307RTC class takes care of the details of
talking to the chip via I2C.
\section clock_arduino_board Arduino board
To keep power consumption low, say for being powered by batteries, we don't
need a full Arduino Uno or similar board. The USB interface is unnecessary,
as is the on-board power supply if there is an external source of 5 volt power.
We also don't want the power and D13 status LED's to be draining power.
Therefore, a cut-down version of the Arduino is recommended. We used the
<a href="http://www.freetronics.com/collections/arduino/products/kitten">KitTen</a>
kit from <a href="http://www.freetronics.com/">Freetronics</a>, and didn't
solder up anything that wasn't strictly necessary. A
<a href="http://www.freetronics.com/ftdi-cable">5v FTDI USB-to-Serial cable</a>
is necessary for programming. Similar minimalistic built-it-yourself
Arduino designs should also work.
\image html kitten_minimal.jpg
\section clock_radio Controlling a radio
The MOSFET connected to D11 can be used to control the power supply to a
separate radio circuit so that the radio can be used as an alarm. In the
following circuit, RadioV+ is the radio's power supply voltage (which may
be the Arduino's 5V supply if the radio can run off 5V):
\image html radio_controller.png
The output of the MOSFET can be used to control almost any kind of
circuit; for example an extremely loud mechanical alarm bell. It doesn't
have to be a radio. A 2N7000 or equivalent MOSFET is suitable for light
loads up to 200mA. For larger currents, a higher-rated MOSFET should be
used instead.
Double-tapping the Stop Alarm button will turn the radio on. Single-tapping
the Stop Alarm button will turn the radio off. A settings field can also
be used to turn the radio on and off.
\section clock_ds3232 Using DS3232 instead of DS1307
For clock modules based on the DS3232 chip, such as the
<a href="http://www.freetronics.com/products/real-time-clock-rtc-module">Freetronics Real Time Clock Module</a>, change the \c Clock typedef
in <tt>Clock.h</tt> to the following:
\code
typedef DS3232RTC Clock;
\endcode
The pads on the Freetronics module should be connected to the Arduino
as follows:
\li VCC and GND connected to 5V and GND on the Arduino.
\li SQI connected to A3.
\li SDA connected to A4.
\li SCL connected to A5.
\li BAT, 32K, and RST left unconnected.
\section clock_completed Completed Clock
The following picture shows the completed clock prototype, built into a
UB1 jiffy box with the radio. Being the prototype, it is a little rough
and ready, but rugged enough to take a pounding each morning as a bedside
alarm clock:
\image html alarm_clock.jpg
*/