Skip to the content
PCBKitNew board
2 layers43 × 20 mmPowerSystem, the printed circuit board in 3D

IOT Sensor Hub using RF communications between sensors

Size
43 × 20 mm
Copper layers
2
Thickness
1.6 mm
Parts
11
Nets
5
Pads
23
Tracks, vias
36, 0
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
23 Sep 2024
Updated
26 Jul 2025

Overview

PowerSystem is an open-source printed circuit board by Abdenry, from the Abdenry/sensorHubProject repository on GitHub. It is a 2-layer board of 43 × 20 mm with 11 parts on 5 nets, routed with 36 tracks and 0 vias.

It belongs with the home automation and IoT and sensors and measurement boards of this library.

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

11
QtyValueFootprintReferences
10Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalP1, P2, P3, P4, PMI1, PMO1, SDI1, SDI2, SDO1, SDO2
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalSIGOUT1

Questions

How big is the PowerSystem PCB?

It measures 43 × 20 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PowerSystem use?

11 parts. 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 PowerSystem KiCad files?

From the Abdenry/sensorHubProject repository on GitHub, at the commit this page was made from: the board is CAD/kiCAD/powerSystem/powerSystem.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 PowerSystem 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 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
  • 2 layers13 × 37 mmSolarRadiationShield, the printed circuit board in 3D

    SolarRadiationShield

    Abdenry/sensorHubProject

    IOT Sensor Hub using RF communications between sensors

    4 parts

Similar boards

  • 2 layers60 × 30 mmController, the printed circuit board in 3D

    Controller

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    11 parts3kApache-2.0
  • 2 layers103 × 30.5 mmTS Front Endcap, the printed circuit board in 3D

    TS Front Endcap

    EEVengers/ThunderScope

    ThunderScope GitHub Repo

    11 parts1.3kMIT
  • 2 layers26 × 30 mmExpansion Card, the printed circuit board in 3D

    Expansion Card

    FrameworkComputer/ExpansionCards

    Reference designs and documentation to create Expansion Cards for the Framework Laptop

    11 parts1.1kCC-BY-4.0
  • 2 layers53.9 × 23.2 mmBuffer, the printed circuit board in 3D

    Buffer

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    11 parts1kGPL-3.0
  • 2 layers10 × 20 mm2 connector Sensor Board, the printed circuit board in 3D

    2 connector Sensor Board

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    11 parts915
  • 2 layersFet module, the printed circuit board in 3D

    Fet module

    ByteWelder/Decktility

    A handheld PC

    11 parts855CC-BY-SA-4.0
  • 2 layers47 × 33 mmSevensegment led display module, the printed circuit board in 3D

    Sevensegment led display module

    tardate/LittleArduinoProjects

    a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

    11 parts803MIT
  • 2 layers42.5 × 36.8 mmDevboard, the printed circuit board in 3D

    Devboard

    basilfx/TRADFRI-Hacking

    Hacking IKEA TRÅDFRI products, such as light bulbs, window blinds and other accessories.

    11 parts743CC-BY-4.0