https://github.com/nliaudat/weatherstation
3d printed diy weather station with anemometer and direction vane
https://github.com/nliaudat/weatherstation
anemometer esphome magnetometer openscad weather
Last synced: 4 months ago
JSON representation
3d printed diy weather station with anemometer and direction vane
- Host: GitHub
- URL: https://github.com/nliaudat/weatherstation
- Owner: nliaudat
- License: mit
- Created: 2021-07-05T13:13:51.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-11-09T06:51:20.000Z (over 4 years ago)
- Last Synced: 2025-07-30T11:59:31.314Z (11 months ago)
- Topics: anemometer, esphome, magnetometer, openscad, weather
- Language: OpenSCAD
- Homepage:
- Size: 47.2 MB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Weatherstation
A 3d printed diy weather station with anemometer and direction vane. Others sensors will be available soon...

## Abstract
Yet another weather station, but that one use a magnetometer for the direction vane and a rotary encoder with an IR optocoupler for the anemometer.
It runs with an ESP board and [Esphome software](https://esphome.io/)
## Direction Vane
The direction vane use an 1.2$ HMC5883L or QMC5883L Magnetometer and a magnet. The simplest is the best !
I've made a [precise calibration script](https://github.com/nliaudat/magnetometer_calibration) if needed to correct hard & soft iron effects with ellipsoid fitting.

## Anemometer
The anemometer use a rotary encoder with an 0.6$ IR optocoupler.
The openscad script (all parametric) output all needed informations to calculate the wind speed except the correction/friction factor which depends on your ball bearing. (mine is 5 and it's a good starting point for futher calibration)
```
[Wind speed in m/s] = 2PI * [anemometer mid cup to axle lenght in m] * [revolution per seconds] * [unknown correction factor]
anemometer mid cup to axle lenght = 72.5 mm => 72.5/1000 = 0.0725 m for R
rotary encoder pulse per revolution : 36
revolution per seconds = pulses /36 /60
S = 2PI * 0.0725 * pulses /36 /60 = 0.00021089395
Speed m/s => Km/h : *3.6 => 0.00075921822
[unknown correction factor or friction] : mine is ~5 => 0.00075921822 *5 = 0.0037960911
You must paste that value in "pulse_meter" section of esphome.yaml
filters:
- multiply: 0.0037960911
```
