The monitor is powered with a 1000mAh rechargeable lithium battery and can be left running for several weeks before it needs recharging via
its own internal USB/5v lithium charger.
It incorporates an internal digital temperature sensor but an external sensor can be plugged into a 3.5mm jack socket to provide remote
temperature measuring. Two alarm setpoints can be set with either an audible or a visual alarm if the measured temperature goes out of the
The interval between temperature measurements can be adjusted from once every couple of seconds to once every four minutes. The longer the delay,
the longer the battery will last between charges. Temperature can be measured & displayed in Fahrenheit or Celcius; changing between scales will automatically re-calculate the two setpoint temperatures.
The Main Screen
Switching the unit on displays the main screen shown on the left.
The current temperature is shown
in a larger font at the top of the screen, the up arrow indicating that the last change in temperature was rising (a down arrow would
indicate a falling temperature). If the current temperature
reading is the same as the previous one, the up (or down) arrow will still be shown but an '=' sign will also be displayed.
This is useful
when the temperature changes only very slowly but it's important to know if it's rising or falling (measuring the temperature inside a fridge, for example).
The maximum and minimum measured temperatures are
also shown (Not to be confused with the High and Low alarm setpoints described below).
The battery voltage is shown at the bottom left of the screen. To protect the battery from over-discharging, the software will shut the monitor down so that it takes only microAmps of current when the voltage falls below 3.1 volts.
The monitor 'sleeps' in very low power mode for much of its time, waking briefly once a second to update the countdown timer shown
at the bottom right of the screen. When the countdown timer reaches zero seconds, the monitor will measure the temperature and update the
The sleep time can be adjusted
in the Setup menu (see below) from 240 seconds (4 minutes) to always awake, in 1-second increments.
To take a temperature measurement
immediately, the DOWN button can be pressed, which will over-ride the sleep timer, wake up the monitor and update the display immediately.
The Alarm Setpoints Screen
Two alarm setpoints can be set. Each setpoint can be enabled and disabled individually
(by setting the 'Y' or 'N'). The alarm can be either a buzzer or the display backlight can flash. This option is set
in the Setup Menu shown below.
To display the Alarm Setpoints screen, the centre of the 5-way navigation switch is
pushed once. The arrow at the left of the screen indicates whether the High or Low setpoint is to be adjusted. The
UP and DOWN buttons on the navigation switch selects High, Low or Save & Exit.
The Navigation switch's RIGHT and LEFT buttons adjust the appropriate setpoint value up and down respectively. The
values change in 0.5 °C increments.
PUSH the centre button on the navigation switch to toggle the setpoint alarm between Enabled (Y) and Disabled (N). When an alarm is sounding (or the screen backlight is flashing), pressing the PUSH button while the main screen is displayed will silence the alarm but an asterisk (*) will
appear to the right of the Max or Min value on the main screen (to show which value has been exceeded) until the value is once again within the setpoint
limits. The setpoint alarm will still be enabled so the alarm will sound again the next time the temperature goes out of bounds.
The Setup Screen
The Setup menu is accessed by holding down the 5-way navigation switch's centre
PUSH button while turning on the power. Here the contrast of the display, the delay between temperature readings and the type of
setpoint alarm can be selelcted.
Select the option using the UP and DOWN buttons and change the value of an option
with the RIGHT and LEFT buttons. The Sleep setting can be adjusted from 0 to 240 seconds. If set to 0, the display
will update as fast as the temperature can be read - approximately every 2 seconds - but the monitor will never go into power-saving sleep mode
(except in the case of a low battery voltage as noted above). With settings greater than 0, the unit enters a low power, sleep, mode between each
reading so don't take more frequent readings than necessary so as to preserve battery life.
The display can be switched between Fahrenheit and Celcius (using the RIGHT and LEFT buttons) and automatically converts the alarm setpoints to the appropriate scale. As the
values are rounded to the nearest 0.5°, there will be some accumulated error in the values if the Scale is switched back and forth.
When displaying either the Setup menu or the Alarm Setpoint menu, the monitor cannot go into power-saving mode so it will automatically
switch to the main screen if no button is operated for 60 seconds.
The circuit is fairly straightforward. The 5-way navigation switch is connected to the ATmega328 digital pins D2, D3, D4, D7 and D8.
Those pins were mostly chosen for convenience in the printed circuit board layout except that PUSH and DOWNmust be
connected to digital pins D2 and D3 respectively. As the software puts the ATmega328 into low power sleep mode for much of the time, the alarm setpoint
menu, the audible alarm 'accept' signal and the LCD backlight on/off have to be accessed using interrupts to wake the ATmega328 from its sleep.
The PUSH button, connected to digital pin D2, invokes interrupt 0 (INT 0) (to display the setpoint menu or silence the alarm) and the DOWN button on digital pin D3 invokes interrupt 1 (INT 1) to toggle the LCD backlight and to take an immediate temperature reading.
The audible alarm buzzer is connected to digital pin D6. I used a 6 volt miniature buzzer as it provided good volume. A miniature speaker of the type used to provide the beeps as a PC powers up can be used
instead of the buzzer as D6 is a PWM-capable pin and the software switches the pin's output with a 50% mark-space output. However, I found the speaker's volume to be much less than the buzzer.
I used software SPI to connect the Nokia 5110 LCD display, mainly for convenience in laying out the PCB.
A Maxim (Dallas) DS18B20 temperature sensor is connected to the ATmega328 digital pin D10. The external sensor connects via a 3.5mm audio jack.
When the jack plug is removed an internal sensor is connected instead.
The DS18B20 sensors are wired in parasitic mode so
only two wires (Data and Ground) are needed to the external probe.
There is enough space in the enclosure that I used for a 1000mAh lithium-polymer rechageable battery so I included a 03962A charger
module. This module (supposedly) protects the battery from excessive discharge but it's cut-off voltage is 2.4 volts -- way below the
recommended 3.1 volts for lithium cells so, as noted above, the software switches to very low power mode when the voltage falls below 3.1 volts. The battery I used actually has its own internal protection hardware so that may well cut in anyway, ahead of the software protection.
Normally, it's not good practice to simultaneously charge a lithium battery and draw current from it because the charger IC won't stop
charging while it's supplying current - it has no way of knowing whether it's charging the battery or supplying current to the downstream
Typically, charger ICs expect the charge current to drop to less than 10% of the rated charge current before terminating
the charge. In the 03962A charger module, the rated
current is 1000mA and the cut-off current is around 100mA. As this circuit draws less than 8mA when it's reading the temperature and less than
1mA when it's asleep, there's no risk of the charger failing to cut out when the battery is fully charged.
These modules are generally listed on eBay as "TP4056 Battery protection LIPO Charger Module" or "TE420." There's an in-depth review of the 03962A charger module on Julian Ilett's
You Tube page.
The power on/off switch disconnects the battery from both the main circuit and the 03962A charger module. This was more convenient for the PCB layout but
has the advantage that the switch isolates the battery completely from all the electronics. As with all my projects which use a lithium battery,
I included a resettable polyfuse.
The Printed Circuit Board
Note: There are several different pinouts on the Nokia 5110 LCD displays. This PCB is designed
for the type with parallel tracks as shown here. Although most pins are accessed through the software and are, therefore, interchangeable to some extent, Vcc, GND and the LED backlight's series resistor are hardware-connected and the PCB would need some modification to accomodate other
Nokia 5110 displays.