Skip to the content
PCBKitNew board
2 layers13 × 37 mmSolarRadiationShield, the printed circuit board in 3D

SolarRadiationShield

Abdenry/sensorHubProject

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

2

README

README.md

Sensor Hub

weatherStation

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.

nrf24WeatherStationDiagram4

Wiring Diagram

circuitDiagram3

CAD Model

weatherStationCAD

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.

windVane

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.

anemometer

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.

dashboard successfulTransmission

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.

dropOuts

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
QtyValueFootprintReferences
1AHT20Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalAHT20
1INSIGConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalINSIG1
1LPS331APConnector_PinHeader_2.54mm:PinHeader_1x09_P2.54mm_VerticalLPS331AP1
1lpsExtraFuncConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticallpsExtraFunc1

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 mmWindVane, the printed circuit board in 3D

    WindVane

    Abdenry/sensorHubProject

    IOT Sensor Hub using RF communications between sensors

    28 parts
  • 2 layers43 × 20 mmPowerSystem, the printed circuit board in 3D

    PowerSystem

    Abdenry/sensorHubProject

    IOT Sensor Hub using RF communications between sensors

    11 parts
  • 2 layers35 × 65 mmArduino, the printed circuit board in 3D

    Arduino

    Abdenry/sensorHubProject

    IOT Sensor Hub using RF communications between sensors

    8 parts
  • 2 layers22 × 12 mmAnemometer, the printed circuit board in 3D

    Anemometer

    Abdenry/sensorHubProject

    IOT Sensor Hub using RF communications between sensors

    4 parts

Similar boards

  • 4 layers68.1 × 66 mmAmbient, the printed circuit board in 3D

    Ambient

    lab11/signpost

    Exploring what happens when you put computers on sign posts.

    63 parts97Apache-2.0
  • 4 layers30 × 50 mmWireless logger, the printed circuit board in 3D

    Wireless logger

    bnahill/wireless_logger

    A compact wireless inertial logging and processing hardware platform

    155 parts7
  • 2 layers38.1 × 69.9 mmThunderstorm RevA, the printed circuit board in 3D

    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 mmKicad project, the printed circuit board in 3D

    Kicad project

    rflab/NixieClock_3

    nixie clock ver.3

    115 parts
  • 2 layers80 × 129.1 mmSmart Plant, the printed circuit board in 3D

    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 mmOEM ECU, the printed circuit board in 3D

    OEM ECU

    aeonSolutions/AeonLabs-AI-Volvo-MKII-Open-Hardware

    Volvo MKII Open Hardware

    296 parts161CC0-1.0
  • 4 layers154.5 × 112.9 mmLibrePLC32, the printed circuit board in 3D

    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 mmLabathome pcb, the printed circuit board in 3D

    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