You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.0 KiB
79 lines
3.0 KiB
# Weather station with ModBus over RS-485
|
|
|
|
## Abstract
|
|
|
|
A weather station build around a SparkFun Weather Meter Kit (SEN-15901). The temperature, humidity and pressure are measured with I2C sensors housed in an RS1 Passive Radiation Shield from Garni. The data can be retrieved via an RS485 ModBus RTU interface. The main processor is an Arduino Pro Mini (ATmega328P 5V@16MHz)
|
|
|
|
![SparkFun Weather Station](./images/SparkFun-Weather_Meter.jpg "SparkFun Weather Station")
|
|
SparkFun SEN-15901 Weather Station
|
|
|
|
![Garni RS1 Passive Radiation Shield](./images/garni_rs1.jpg "Garni RS1 Passive Radiation Shield")
|
|
Garni RS1 Passive Radiation Shield
|
|
|
|
## Sensors
|
|
|
|
- SparkFun SEN-15901 Weather Station (wind speed, wind direction and rain fall)
|
|
- Silicon Labs Si7021 (humidity and temperature)
|
|
- Bosch BMP280 (pressure)
|
|
|
|
## Measurements
|
|
|
|
- Wind direction
|
|
- Wind speed (average of last 10 minutes)
|
|
- Wind gust (last 10 minutes)
|
|
- Rain fall (last hour)
|
|
- Rain fall (last 24 hours)
|
|
- Temperature
|
|
- Humidity
|
|
- Atmospheric pressure
|
|
|
|
## ModBus
|
|
|
|
- RS485 transceiver
|
|
- ModBus address: 14 (fixed in software)
|
|
|
|
### Input registers
|
|
|
|
The measurments and order of the measurements are the same as for APRS weather reports. But ofcourse we use SI units.
|
|
|
|
| Address | Description | Units |
|
|
|---------|-------------------------------------|-----------------------|
|
|
| 30001 | Wind direction | degrees |
|
|
| 30002 | Wind speed (average of 10 minutes) | m/s * 100 |
|
|
| 30003 | Wind gust (peak of last 10 minutes) | m/s * 100 |
|
|
| 30004 | Temperature | degrees Celcius * 100 |
|
|
| 30005 | Rain last hour | l/m2 * 100 |
|
|
| 30006 | Rain last 24 hours | l/m2 * 100 |
|
|
| 30007 | Rain since midnight | NOT IMPLEMENTED |
|
|
| 30008 | Humidity | percent * 100 |
|
|
| 30009 | Barometric pressure | hPa * 10 |
|
|
|
|
The ModBus registers are 16 bit wide. For better precision, some units are scaled by a factor of 100. This way, values with up to two decimal points can be stored as 16 bit integer values. Just divide by 100 to get the floating point values.
|
|
|
|
## Dependencies
|
|
|
|
- Arduino IDE
|
|
|
|
### Arduino libraries
|
|
|
|
- https://github.com/sparkfun/SparkFun_Weather_Meter_Kit_Arduino_Library
|
|
- https://github.com/orgua/iLib
|
|
- https://github.com/epsilonrt/modbus-arduino
|
|
- https://github.com/epsilonrt/modbus-serial
|
|
|
|
Libraries are included with the source code of this project
|
|
|
|
## License
|
|
|
|
Copyright (C) 2023, 2024 M.T. Konstapel
|
|
|
|
### Software
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
### Hardware and documentation
|
|
|
|
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
|
|
|