An open API service indexing awesome lists of open source software.

https://github.com/bwolf/weather

Open source weather station.
https://github.com/bwolf/weather

Last synced: over 1 year ago
JSON representation

Open source weather station.

Awesome Lists containing this project

README

          

* Introduction
This is the source code for a weather station where multiple stations
send their data via wireless transmission to a dedicated base. The
hardware design is based around the Atmel ATmega88PA, Bosch BMP085
(pressure sensor), Sensirion SHT75x (high quality temperature and
humidity sensor) and a Davis rain measurement unit (0.2mm resolution).
Data transmission is driven by Nordic nRF24L01+.

Currently missing is the hardware schematic and PCB design which will
be added later to this repo. Nevertheless the hardware exists, but
just on bread boards which is less than optimal.

One of the design goals of the hardware is running ultra low power. It
would be nice if the battery of a station would last for at least six
months. The goal has been reached at the time of this writing with one
Panasonic 18650 protected cell.

The base receives all measurements from the stations and gathers them.
These data will be written as JSON to the UART. Currently a Raspberry
PI is connected to the base UART, where a separate collector program
([[https://github.com/bwolf/weather-collector]]) parses the JSON data and
stores it into a time series database. In fact the collector
normalizes the data (e.g. transform mC into plain C) and enhances it
by calculating the dew point and sun rise and set based on the
geographic location.

[[./grafana1.png]]

* License
Please refer to the file =LICENSE= for the license which applies to
the source code of this repository. The license applies to all files
if not otherwise stated in the file header.

* Building
Build either the base or the station by running:
#+BEGIN_SRC sh
./config base # or station
#+END_SRC

Now =config.h= and =Makefile= are symlinked to either the base or
station variants. Building is simply performed by =make=.

To program the µC use =make program= (a in-circuit programmer is
required, e.g. [[http://www.fischl.de/usbasp/][USBasp]]).

* Electrical characteristics
| | U min | U Max | I min/µA | I max/mA |
|---------------+-------+-------+----------+----------|
| ATmega88PA 1) | 1.8 | 5.5 | 0.9 | 2.5 |
| BMP085 | 1.8 | 3.6 | 3.0 | 0.005 |
| SHT7x 2) | 2.4 | 5.5 | 1.5 | 0.91 |
| nRF24L01+ 3) | 1.9 | 3.3 | 0.9 | 11.3 |
| MS5611 | 1.8 | 3.6 | 0.14 | 0.0125 |
| NCR18650B | 2.5 | 4.2 | | |

1) With external 32.768 kHz oscillator, which is not actually used
to drive the system clock, but it is active during power save to
drive the asynchronous timer to wake the MCU.
2) Needs voltage compensation, i.e. fixed power supply required
3) Needs 3.3V at max, also for input signals (i.e. MCU signals)