

SolarRadiationShield
IOT Sensor Hub using RF communications between sensors
- Size
- 13 × 37 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 4
- Nets
- 9
- Pads
- 22
- Tracks, vias
- 127, 7
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 23 Sep 2024
- Updated
- 26 Jul 2025
Overview
SolarRadiationShield is an open-source printed circuit board by Abdenry, from the Abdenry/sensorHubProject repository on GitHub. It is a 2-layer board of 13 × 37 mm with 4 parts on 9 nets, routed with 127 tracks and 7 vias.
It is built around the AHT20 and LPS331AP. It belongs with the home automation and IoT and sensors and measurement boards of this library.
Main components
2README
README.mdSensor Hub
A small, portable, self-sustaining weather station built to provide data to an external web interface hosted with Grafana via a Raspberry Pi Zero 2 W. This station is able to collect various metrics from on board sensors such as temperature, humidity, heat index, wind speed, and wind direction. A DHT22 sensor is used to collect relative humidity and temperature metrics with an accuracy of +-2% and +-0.5C, while metrics such as wind speed and wind direction are collected with custom built sensors. The heat index is calculated in software using the DHT-sensor-library.
Communication is handled through the NRF24l01 radio modules in a mesh configuration. The mesh routing of data packets is automatically managed with RF24.h, RF24Network.h, and RF24Mesh.h provided by the RF24 library, specifically chosen for its meshing capabilities. It provides dynamic configuration of the NRF24l01 modules, meaning that in the scenario where the weather station loses connection with the Raspberry Pi for any reason (power down, range lost, etc.), it can automatically reconfigure and connect to the Raspberry Pi given its under normal operable condition (i.e. has power and is in range). This allows additional stations to be installed with potentially different purposes with all metrics collected to be routed back to the Raspberry Pi. Alternatively, if the distance between the Raspberry Pi and the weather station is much greater than the range of a single NRF24l01 module, an additional node can be configured and placed in between the weather station and Raspberry Pi acting as a range extender. The RF24 library will automatically handle the routing and pass the data collected from the weather station to the Raspberry Pi via that additional node. There is no limitation that prevents an additional station from also being a range extending node.
Wiring Diagram
CAD Model
Sensor Design
The following sensor assemblies were all 3D printed out of white PET-G filament for its UV resistance, and to reflect as much heat as possible to avoid compromising the temperature and humidity readings of the DHT22 sensor.
Solar Radiation Shield
The DHT22 sensor used to collect temperature and humidity data was housed in a solar radiation shield. This is necessary to prevent direct sunlight from heating the sensor over time creating higher than ambient temperature readings, simultaneously it protects the sensor from rainfall, which would also cause a higher than ambient humidity reading if it gets wet.
Wind Vane
Wind direction was measured using eight AH180 omni-polar hall effect sensors and a magnet on the underside of the vane. Each hall effect sensor acts as one of the four cardinal or ordinal directions (North, North East, East, etc.) which is activated only in the presence of the magnet. The vane will point in the direction the wind is blowing from. With limited IO available on the Arduino Nano/ATmega328p the SN74HC175N Parallel In Serial Out (PISO) Shift Register was used to reduce the eight outputs of the wind vane to one output + three inputs, halving the total amount of connections to the Arduino Nano/ATmega328p.
Anemometer
Wind speed was measured using two magnets and a single US1881 latching hall effect sensor connected to the Arduino Nano D2 pin which corresponds to the ATmega328p external interrupt pin 0 (PD2). The magnets attached to the underside of the anemometer rotate over the US1881 sensor triggering either a high or low state depending on the magnets polarity, generating an interrupt which increments a revolution counter. The getWindSpeed() function is called periodically to calculate the wind speed using the amount of revolutions counted within that period, resetting the revolution counter once calculation has completed, and repeats this process. This assembly was tested by having the anemometer attached externally to a moving car, logging its calculated wind speed and comparing it to that the vehicles actual speed. It proved accurate to +-2 km/h with a vehicle speed of 80 km/h.
Grafana Dashboard
The Grafana dashboard conveniently displays historical readings for temperature, humidity, wind speed, and direction. It also provides an updated reading of the stations current temperature, humidity, and calculated heat index. The dashboard has been configured to retain this information for up to two weeks however this can be further increased if desired.
Power Supply and Challenges Faced
Power for the station comes from a 1100 mAh LiPo battery, supported by four 1W solar panels connected in parallel. A solar power manager with Maximum Power Point Tracking (MPPT) is implemented to maximise the efficiency of the solar panels, switching between charging the station and its battery based on sunlight availability. It ensures that the battery remains charged during daylight hours, with enough capacity to keep the station operational overnight. After optimisations, the weather station consumes approximately 0.021 A at 3.72 V, providing an estimated 52 hours of operation without any solar input.
Prior to optimising power consumption, a major challenge faced during development was the intermittent loss of communications particularly over night.
Initially, it was suspected that the issue was not related to power due to the assumption that the 4 watt solar panel array was capable of powering and charging the station which had a measured active consumption of 0.24W (65mA @ 3.7V). After investigating the issue for a significant period of time, no definitive answer could explain the intermittent communication loss overnight other than insufficient solar power. To prove this was the root of the problem the station was connected to a bench top power supply with a constant 3.7V over night. This resulted in no communication drop outs over night nor for the next couple of days as the battery was sufficiently charged from the constant 3.7 V provided by the power supply. Optimisations for the code then proceeded to lower the active consumption.
Optimisations
The first optimisation was replacing the software timer used to intermittently send weather metrics to the Raspberry Pi to a Watchdog Timer. This did not directly improve the power consumption of the station, however, it would allow the station to wake up from a power down mode, which was the second optimisation performed.
Entering the Arduino Nano/ATmega328p into a power down mode and only powering up after the Watchdog Timer expired directly reduced power consumption from 0.24W (65mA @ 3.7V) to 0.208W (56mA @ 3.7V), a 13% power efficiency improvement.
This was further improved by 64% by powering down the NRF24l01 radio module when not in use. This lowered the active consumption of the station to just 0.0744W (20mA @ 3.7V). This is a total 69% improvement from the initial 0.24W (65mA @ 3.7V) observed prior to optimising.
With the stations active power consumption optimised, the 4W solar panel array was able to sufficiently charge and power the station eliminating the intermittent communication loss.
Future Improvements
- This station could be improved in the future with the inclusion of a rainfall sensor to collect metrics on the volume and rate of rainfall. One possible design for this sensor could involve a tipping bucket mechanism, where a known volume of rain causes a bucket to tip, triggering a hall-effect sensor to log the event. By counting the frequency of tipping, the system could accurately measure rate and cumulative rainfall over time.
- Improvements could also be made to the assembly of the custom sensors to be more accessible for servicing as the current design is finicky to put together, not suitable for consistently taking apart and putting back together.
- The internal wiring of the station could also be significantly improved by switching the single core wire used for each connection, to a multi-core cable. This could make the internal wiring much tidier and easier to access/service.
Parts
4| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | AHT20 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | AHT20 |
| 1 | INSIG | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | INSIG1 |
| 1 | LPS331AP | Connector_PinHeader_2.54mm:PinHeader_1x09_P2.54mm_Vertical | LPS331AP1 |
| 1 | lpsExtraFunc | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | lpsExtraFunc1 |
Questions
How big is the SolarRadiationShield PCB?
It measures 13 × 37 mm and has 2 copper layers, 1.6 mm thick.
What parts does the SolarRadiationShield use?
4 parts, built around the AHT20 and LPS331AP. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the SolarRadiationShield KiCad files?
From the Abdenry/sensorHubProject repository on GitHub, at the commit this page was made from: the board is CAD/kiCAD/solarRadiationShield/solarRadiationShield.kicad_pcb and its schematic CAD/kiCAD/anemometer/anemometer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the SolarRadiationShield design in my own project?
Its repository states no licence, so its author keeps all rights: ask Abdenry before reusing the design.
More from Abdenry/sensorHubProject
4- 2 layers31 × 4 mm

- 2 layers43 × 20 mm

- 2 layers35 × 65 mm

- 2 layers22 × 12 mm

Similar boards
- 4 layers68.1 × 66 mm

Ambient
lab11/signpost
Exploring what happens when you put computers on sign posts.
63 parts97Apache-2.0 - 4 layers30 × 50 mm

Wireless logger
bnahill/wireless_logger
A compact wireless inertial logging and processing hardware platform
155 parts7 - 2 layers38.1 × 69.9 mm

Thunderstorm RevA
M2I-HABET/Project-Thunderstorm
Project Thunderstorm aims to launch high altitude balloons into thunderstorms in order to collect data. Multiple balloons will be launched to take data points at different points in the thunderstorm and to use a mesh…
25 parts1 - 2 layers100 × 102 mm

- 2 layers80 × 129.1 mm

Smart Plant
JGAguado/Smart_Plant
The Smart Plant is a board that can be plugged directly on the soil, close to the plant, that allows the measurement of the environment (soil moisture, environment temperature & illuminance), and presents the…
75 parts303 - 2 layers168.9 × 123.3 mm

OEM ECU
aeonSolutions/AeonLabs-AI-Volvo-MKII-Open-Hardware
Volvo MKII Open Hardware
296 parts161CC0-1.0 - 4 layers154.5 × 112.9 mm

LibrePLC32
AndreiVladescu/LibrePLC32
The goal of the project is to create a compact, hackable, and well-documented PLC platform for industrial automation experiments, prototyping, education, and open hardware development.
295 parts14CERN-OHL-P-2.0 - 4 layers100 × 100 mm

Labathome pcb
klaus-liebler/labathome
Der kleine Bruder von lab@home. Ermöglicht das Experimentieren mit PT1...PTn-Gliedern, die intern als RC-Kombination (entkoppelt über Operationsverstärker) ausgeführt sind.
292 parts5MIT