The placstic outdoor thermometer has gone with the wind some day. The double sided scotch became too weak on the sunlight to hold the thermometer on the window. Today anyone can look for the current weather conditions and forecast in the Internet, but sometimes the simple outdoor thermometer is more convenient. And the people that likes the arduino controller colld build own outdoor sensor!
The algorithm of the thermometer is very simple. It has no menu or buttons, only display and sensors. Watchdog timer wakes up every 8 seconds, every 5-th time the information from the sensors read and print on the display. The external sensor installed to the small box to keep it dry in case of the rain. The external sensor is small and heats not much on the direct sunlight.
Step 1: Life on the Batteries
You can use arduino pro mini running on the two AA size batteries.The main problem is the power consumption of this board. The battery life is about one week. No one likes changing the battery so often. This article describes how to run the arduino pro mini on batteries for long time. It is easy to use sleep mode with watchdog timer, but you need to shut down the green power led that consumes about 10 mA. After the second pro mini board was destroyed in attempt to cut the led wire, i have decided to find out another solution to decrease the power consumption.
The idea is to build own arduino without any led! Here is the good tutorial about building own arduino on the breadboard. The only thing you need is atmeta328p-pu micro controller. Second, you can decrease the controller frequency to decrease power consumption a little bit more. This tutorial is about building own arduino controller running at 1 MHz. The power consumption of this system is about 5 micro Amps!
Step 2: The Battery Level
The thermoterer is powered by 2 AA size batteries. The fuse settings of the atmega controller disable the voltage limit so the thermometer can run on the batteries for long time. In many devices that run on batteries there is an indicator of the remaining battery capacity. This thermometer implements this feature also. To check the current battery voltage the reference voltage required. The ams1117-adj voltage regulator is used to provide reference voltage of 1.24v to the pin A1. The readings from A1 pin depends on the main battery voltage.
Step 3: The Sensors
The main criteria for the sensor was the accuracy. Playing with the sensors i have found the couple of high accuracy sensors that can be recommended. Si7021 - the great temperature/humidity sensor. It has high accuracy, small form factor and implements i2c bus. This sensor can be connected to the thermometer by the long wire and placed outside. Another sensor, bme280, is used to measure the pressure. It is not necessary to put this sensor outside, because the pressure is the same.
Step 4: The Display
The main criteria for the display is low power consumption to make battery life longer. The 0.96" oled display looked nice especially in the dark, but it ate the battery in one week! Old nokia 5110 display is the good choice. It is a little bigger than oled display so more easy to read and it requires less power (without backlight). The u8glib library (https://github.com/olikraus/u8glib) is used to show the information on the display.
Step 5: Build the Thermometer
Here is the component list for the project:
- atmega 328p-pu chip
- BMP 280 pressure sensor
- SI7021 temperature/humidity sensor
- ams 1117-adj adjustable voltage regulator
- 1k resister
- 10k resister
- 100 nF ceramic capacitor
- 100 uF 16v capacitor
- 2x AA batteries holder
- pin headers male and female
- push button and 220 Ohm resister (optional, if you do want to switch on the backlight)
Now it is time to build the thermometer using the schematics shown above. The central unit of the thermometer is atmegs328-pu chip. This IC should be flashed with the correct bootloader as guided in this tutorial.The outdoor sensor, si7021 can be connected via long cable (1-2m works fine) and put into some little case to prevent the sensor from rain and another weather issues.
As was stated before, the ams1117-adj power regulator allows the thermometer to measure the battery capacity. The supplied voltage to the controller can change while the battery depletes, but the voltage on the pin A1 remains 1.24v.
The code can be download from github repository.