Brigadoon - An Occasional Corner on the Internet
Arduino Based Weather Station
Designed by Mark Little
This project is to develop an Arduino based home weather station by the sequential development of sensors. Below is a list of sensors and support hardware were added as the development progressed.
The project's software and software documentation along with addition information relating to the connection of the sensor hardware to the Arduino is automatically generated by the Doxygen documentation tool as the software development continues and can be found here.
The software is modularised so that if a sensor is not being used, the sensor's software can be excluded from the build, to save the limited program and memory space during execution.
Tipping Bucket Rain Gauge
The Tipping Bucket Rain Gauge consists of one or two small buckets that catch water collected in a funnel. When the bucket fills, it tips over letting the water escape. Each tip of the bucket is detected and the program records the number of bucket tips. If the amount of rain needed to fill the bucket to tipping is known, the amount of rain can be calculated.
(Wet Leaf) Rain Sensor
The (Wet Leaf) Rain Sensor will detect water at much lower concentrations than the rain gauge and can be used to determine if there was dew overnight, mist or light rain that would not be detected by the rain gauge.
The Arduino measures the electrical conductivity of the sensor and detects if it increases due to water droplets between the fingers.
Atmospheric Temperature and Humidity
The HDT11 sensor provides a low resolution measurement of Air Temperature and Relative Humidity (RH).
The sensor measures the temperature with a resolution of 1°C and 1% RH. Although the temperature resolution is low, it is adequate for gauging the local environment. A higher resolution temperature reading can be obtained from the home weather station.
The Radiation Monitor was added because it provides a similar output to the tipping bucket rain gauge, not because there are elevated levels of local radiation. It is expected that the counter will normally only be monitoring background radiation.
Because it outputs a pulse like the rain gauge, the software was easily modified to count the output pulses from the Geiger Counter kit supplied by Oatley Electronics.
Air Quality Sensor
This sensor is suitable for detecting NH3,NOx, alcohol, Benzene, smoke, CO2, etc. This makes it a good sensor for gaining an indication of the of the local air quality.
As more pollutants are detected, the output of the sensor rises and this is measured by the Arduino's Analogue to Digital Converter (ADC).
Real Time Clock
Because the Arduino does not possess a Real Time Clock (RTC) of its own, an external RTC based on the DS1302 was added.
Due to issues with reliably reading the time from the units purchased, the software will retry reading the RTC multiple times until it reads the date and time correctly.
This RTC is used to set the Arduino's internal software clock at boot time and once per day after that, to ensure that the date time remains accurate.
The Arduino UNO only has 1024 bytes of internal EEPROM that can hold data when the power is lost or it is rebooted.
To extend the amount of data that can be recorded by the weather station, four (4) 24256 EEPROM chips were added to provide an additional 128k of non-volatile memory that can be used to record data.
Two-Line LCD Display
Although the Weather Station communicates with a parent computer via the USB Serial Port, it also has a local interface that allow the sensor readings to be viewed on a two-Line LCD Display.
The LCD display operates independently to the serial port, so that readings can be viewed while the weather station is communicating with its host computer.
To allow the user to select what information should be shown on the LCD display, a 16-key keypad is provided.
In addition to selecting the sensor to be displayed, the keypad allows limited control of some items such as the relays that can be used to control a watering system.
A capacitive ground moisture sensor is used to detect the amount of moisture in the ground surrounding the probe. This senor is used to return a ground moisture reading.
The sensor reading is also used in the watering system to trigger a watering event by turning on a relay which will open a valve to start the water flow.
Ground and/or Pool Temperature
Up to ten (10) DS18B20 waterproof temperature sensors can be connected to the weather station to provide ground temperatures down to 900mm and pool temperatures also down to 900mm.
The standard temperatures are 0cm (surface), 10cm, 20cm, 50cm and 90cm, but this can be easily changed to whatever depth you want (as long as the length is not too long to prevent the sensor from working).
Two Control Relays
The weather station is equipped with two relays that can be used to control equipment such as watering system valves or lights.
The relays are controlled by the host computer connected via the serial port, but can be over-ridden by the keypad by the local operator.