De Web3 Pi UPS is een gespecialiseerde onderbrekingsvrije voeding (DC UPS) voor de Raspberry Pi 5, ontwikkeld om 24/7 uptime te garanderen voor kritieke toepassingen zoals Ethereum-nodes. In tegenstelling tot traditionele UPS-systemen vermijdt dit ontwerp inefficiënte AC-naar-DC conversies en maakt het geen gebruik van GPIO-pinnen, waardoor het compatibel blijft met standaardbehuizingen.
De belangrijkste kenmerken zijn:
- Flexibele stroomvoorziening: Het systeem accepteert input via USB-C PD, een DC barrel jack of hot-swappable Sony NP-F batterijen.
- Slimme communicatie: Via een USB-C datalink kan de UPS real-time telemetrie verzenden en het besturingssysteem een signaal geven voor een graceful shutdown bij een kritiek batterijniveau.
- Geavanceerde hardware: De UPS maakt gebruik van een RP2040 voor de gebruikersinterface (met OLED-display) en een CH32X035 RISC-V MCU voor het USB-PD beheer.
- Open-source ontwerp: Zowel de firmware als de hardware (PCB-bestanden en 3D-printbestanden voor de behuizing) zijn open-source beschikbaar onder respectievelijk GPL-3.0 en CERN-OHL-S v2 licenties.
Web3 Pi UPS: Open-source DC UPS voor Raspberry Pi 5
Voor het draaien van een Ethereum-node is een uptime van 24/7 vereist. Een stroomuitval onderbreekt niet alleen de service, maar kan ook de database van de node corrumperen, wat uren of zelfs dagen aan her-synchronisatie vereist. Voor solo-stakers betekent downtime misgelopen attestaties en directe financiële boetes. Er was behoefte aan een UPS die daadwerkelijk past bij de vormfactor van de Raspberry Pi; toen deze niet te vinden was, is deze zelf gebouwd.
Waarom geen bestaande UPS?
Traditionele UPS-units zijn massief in vergelijking met een Raspberry Pi. Ze zetten netspanning (AC) om naar DC om een batterij op te laden, om dit vervolgens weer om te zetten naar AC voor de output, waarna de voeding van de Raspberry Pi het opnieuw moet omzetten naar DC. Elke conversie verspilt energie en genereert warmte.
UPS-boards in HAT-stijl voor de Raspberry Pi worden via de GPIO-pinnen opgestapeld. Dit maakt ze incompatibel met de meeste behuizingen en verhoogt de mechanische complexiteit.
De Web3 Pi UPS hanteert een andere aanpak. Het apparaat bevindt zich tussen de lader en de Raspberry Pi en is verbonden via één enkele USB-C-kabel. Geen GPIO, geen stapeling en geen conflicten met de behuizing. Het is een echte DC UPS: de stroom vloeit van de input naar de batterij en vervolgens naar de output, zonder AC-conversie. Dit maakt het systeem compact, stil en efficiënt.
Belangrijkste kenmerken
Drie onafhankelijke stroombronnen
De UPS accepteert stroom uit drie bronnen; elke individuele bron is voldoende om de output actief te houden:
- USB-C PD input (12-20V, 27W+): De primaire voeding via een USB-C PD-lader.
- DC barrel jack (9-24V): Een alternatieve input voor standaard DC-voedingen.
- Sony NP-F batterij: Reservevoeding wanneer beide externe bronnen wegvallen.
De stroomweg schakelt naadloos en onmiddellijk tussen bronnen zonder onderbreking. Wanneer externe stroom aanwezig is, wordt de batterij opgeladen. Zodra de externe stroom wegvalt, neemt de batterij het over zonder haperingen of glitches.
Sony NP-F Batterij-ecosysteem
Er is gekozen voor het Sony NP-F batterijsysteem omdat deze Li-ion cellen wereldwijd een van de populairste standaarden zijn, veelgebruikt in fotografie- en videografieapparatuur. Ze zijn breed verkrijgbaar in verschillende capaciteiten:
| Batterij | Typische capaciteit | Geschatte runtime* |
| NP-F570 | 2900 mAh | Kortste runtime, meest compact |
| NP-F770 | 5200 mAh | Middenklasse |
| NP-F970 | 6600 mAh | Langste runtime |
\De runtime is afhankelijk van de werklast van de Raspberry Pi en de aangesloten randapparatuur.*
De batterijen zijn hot-swappable: ze kunnen worden vervangen terwijl het systeem draait, mits er externe stroom is aangesloten. Hierdoor is er geen downtime of shutdown nodig. Ook kunnen verschillende NP-F formaten worden gecombineerd, afhankelijk van het gebruiksscenario.
Enkele USB-C-kabel voor voeding en communicatie
De USB-C-poort op de Raspberry Pi 5 is niet alleen bedoeld voor stroom, maar ondersteunt ook USB-datatransfer (indien geactiveerd in config.txt). De Web3 Pi UPS maakt hier gebruik van: één USB-C-kabel verzorgt zowel de Power Delivery als het datakanaal tussen de UPS en de Raspberry Pi.
Deze datalink maakt het volgende mogelijk:
- Gecontroleerde uitschakeling (Graceful shutdown): Wanneer de batterij een kritiek niveau bereikt, geeft de UPS het besturingssysteem een signaal om netjes af te sluiten, wat corruptie van het bestandssysteem en de database voorkomt.
- Real-time telemetrie: Batterijniveau, laadstatus, inputbron, voltage, stroomsterkte en temperatuur zijn direct toegankelijk vanaf de Raspberry Pi.
- Remote monitoring: De UPS-status kan worden geïntegreerd in monitoring-stacks (zoals Grafana of eigen scripts).
Ingebouwde gebruikersinterface
De UPS is voorzien van een OLED-display (SSD1306) en twee tactiele knoppen voor lokale statusmonitoring en configuratie. Hierdoor is het niet nodig om via SSH in te loggen om het batterijniveau te controleren. Een ingebouwde buzzer geeft hoorbare meldingen bij stroomgebeurtenissen.
USB-C PD Output
De output-poort ondersteunt USB Power Delivery met meerdere voltageprofielen:
- 5V, 5.1V, 9V, 12V, 15V — tot maximaal 27W (5A bij 5.1V).
- Volledig compatibel met de stroomvereisten van de Raspberry Pi 5.
- Werkt ook met andere USB-C PD-apparaten.
Slim batterijbeheer
De ingebouwde lader (MP2762A) regelt het laden van de 2S Li-ion batterijen, met temperatuurmonitoring via een LM75B-sensor. Het beheer van de stroomweg vermindert slijtage aan de batterij door het laden te beperken zodra de batterij vol is, wat de levensduur over honderden cycli verlengt.
Een Raspberry Pi voor de Raspberry Pi
De UPS maakt gebruik van een Raspberry Pi RP2040-microcontroller voor het UI-paneel en de systeemmonitoring. Het is dus een apparaat aangedreven door een Raspberry Pi, gebouwd voor de Raspberry Pi. De hoofdvoedingskaart gebruikt een CH32X035 RISC-V MCU met een ingebouwde USB-PD 3.0 PHY voor de afhandeling van de Power Delivery-onderhandelingen.
Technische samenvatting
| Parameter | Specificatie |
| Output | USB-C PD: 5V, 5.1V, 9V, 12V, 15V (max 27W) |
| Input 1 | USB-C PD (12-20V, 27W+) |
| Input 2 | DC barrel jack (9-24V) |
| Input 3 | Sony NP-F batterij (Li-ion, 2S) |
| Batterij | Sony NP-F serie — NP-F570 / NP-F770 / NP-F970 |
| Hot-swap | Ja (bij aangesloten externe voeding) |
| Communicatie | USB-data via dezelfde USB-C voedingskabel |
| Display | SSD1306 OLED |
| Bediening | 2 tactiele knoppen + buzzer |
| MCU (stroom) | CH32X035F8U6 (RISC-V, USB-PD 3.0 PHY) |
| MCU (UI) | Raspberry Pi RP2040 |
| DC-DC | TPS55289 buck-boost (bereik 3-30V) |
| Lader | MP2762A (2S Li-ion, temperatuurbeheerst) |
| Behuizing | 3D-geprint (FDM), snap-fit assemblage |
Hardware-details
Elektronica
- Main Board: Een 4-laags PCB met USB-PD controller, lader, DC-DC converter en NP-F batterijconnector.
- UI Panel: Een 2-laags PCB met SSD1306 OLED-display, twee tactiele knoppen en een RP2040-controller.
Behuizing
De behuizing is ontworpen voor FDM 3D-printen. Het is een multi-part assemblage met een snap-fit batterijvergrendeling. De onderdelen bestaan uit: Enclosure Main, Enclosure Bottom, Side Cover, Buttons, Lock, Press Lock Button en OLED Dimmed Window.
- Volledige STEP-assemblage:
hardware/enclosure/Web3PiUPS_3DPrinted.step
Structuur van de repository
firmware-ch32x/: CH32X035 firmware — USB-PD bron, stroombeheer.
firmware-rp2040/: RP2040 firmware — OLED UI, statusdisplay, knoppen.
service/: Linux systeemservice (gepland).
hardware/:
electronics/:
main-board/: Hoofdvoedingskaart — schema, STEP, Gerber, BOM, PnP.
ui-panel/: OLED + knoppen paneel — schema, STEP, Gerber, BOM.
enclosure/: 3D-geprinte behuizing — STEP-assemblage, STL-onderdelen.
docs/images/: Renders en foto's.
Bouwen
CH32X035 Firmware
Vereist de MounRiver Studio toolchain of riscv-none-embed-gcc.
RP2040 Firmware
Vereist PlatformIO. Bouwen en uploaden via:
cd firmware-rp2040
pio run -t upload
Links
Licenties
Dit project maakt gebruik van een dubbele licentiestructuur:
| Component | Licentie | Bestand |
firmware-rp2040/, firmware-ch32x/, service/ | GPL-3.0 | LICENSE-SOFTWARE |
hardware/ | CERN-OHL-S v2 | LICENSE-HARDWARE |
Disclaimer: Raspberry Pi is een handelsmerk van Raspberry Pi Ltd. Sony NP-F is een handelsmerk van Sony Corporation. Het gebruik van deze handelsmerken is uitsluitend bedoeld voor beschrijvende doeleinden.
Web3 Pi UPS: Open-source DC UPS voor Raspberry Pi 5
Voor het draaien van een Ethereum-node is een uptime van 24/7 vereist. Een stroomuitval onderbreekt niet alleen de service, maar kan ook de database van de node corrumperen, wat uren of zelfs dagen aan her-synchronisatie vereist. Voor solo-stakers betekent downtime misgelopen attestaties en directe financiële boetes. Er was behoefte aan een UPS die daadwerkelijk past bij de vormfactor van de Raspberry Pi; toen deze niet te vinden was, is deze zelf gebouwd.
Waarom geen bestaande UPS?
Traditionele UPS-units zijn massief in vergelijking met een Raspberry Pi. Ze zetten netspanning (AC) om naar DC om een batterij op te laden, om dit vervolgens weer om te zetten naar AC voor de output, waarna de voeding van de Raspberry Pi het opnieuw moet omzetten naar DC. Elke conversie verspilt energie en genereert warmte.
UPS-boards in HAT-stijl voor de Raspberry Pi worden via de GPIO-pinnen opgestapeld. Dit maakt ze incompatibel met de meeste behuizingen en verhoogt de mechanische complexiteit.
De Web3 Pi UPS hanteert een andere aanpak. Het apparaat bevindt zich tussen de lader en de Raspberry Pi en is verbonden via één enkele USB-C-kabel. Geen GPIO, geen stapeling en geen conflicten met de behuizing. Het is een echte DC UPS: de stroom vloeit van de input naar de batterij en vervolgens naar de output, zonder AC-conversie. Dit maakt het systeem compact, stil en efficiënt.
Belangrijkste kenmerken
Drie onafhankelijke stroombronnen
De UPS accepteert stroom uit drie bronnen; elke individuele bron is voldoende om de output actief te houden:
- USB-C PD input (12-20V, 27W+): De primaire voeding via een USB-C PD-lader.
- DC barrel jack (9-24V): Een alternatieve input voor standaard DC-voedingen.
- Sony NP-F batterij: Reservevoeding wanneer beide externe bronnen wegvallen.
De stroomweg schakelt naadloos en onmiddellijk tussen bronnen zonder onderbreking. Wanneer externe stroom aanwezig is, wordt de batterij opgeladen. Zodra de externe stroom wegvalt, neemt de batterij het over zonder haperingen of glitches.
Sony NP-F Batterij-ecosysteem
Er is gekozen voor het Sony NP-F batterijsysteem omdat deze Li-ion cellen wereldwijd een van de populairste standaarden zijn, veelgebruikt in fotografie- en videografieapparatuur. Ze zijn breed verkrijgbaar in verschillende capaciteiten:
| Batterij | Typische capaciteit | Geschatte runtime* |
| NP-F570 | 2900 mAh | Kortste runtime, meest compact |
| NP-F770 | 5200 mAh | Middenklasse |
| NP-F970 | 6600 mAh | Langste runtime |
\De runtime is afhankelijk van de werklast van de Raspberry Pi en de aangesloten randapparatuur.*
De batterijen zijn hot-swappable: ze kunnen worden vervangen terwijl het systeem draait, mits er externe stroom is aangesloten. Hierdoor is er geen downtime of shutdown nodig. Ook kunnen verschillende NP-F formaten worden gecombineerd, afhankelijk van het gebruiksscenario.
Enkele USB-C-kabel voor voeding en communicatie
De USB-C-poort op de Raspberry Pi 5 is niet alleen bedoeld voor stroom, maar ondersteunt ook USB-datatransfer (indien geactiveerd in config.txt). De Web3 Pi UPS maakt hier gebruik van: één USB-C-kabel verzorgt zowel de Power Delivery als het datakanaal tussen de UPS en de Raspberry Pi.
Deze datalink maakt het volgende mogelijk:
- Gecontroleerde uitschakeling (Graceful shutdown): Wanneer de batterij een kritiek niveau bereikt, geeft de UPS het besturingssysteem een signaal om netjes af te sluiten, wat corruptie van het bestandssysteem en de database voorkomt.
- Real-time telemetrie: Batterijniveau, laadstatus, inputbron, voltage, stroomsterkte en temperatuur zijn direct toegankelijk vanaf de Raspberry Pi.
- Remote monitoring: De UPS-status kan worden geïntegreerd in monitoring-stacks (zoals Grafana of eigen scripts).
Ingebouwde gebruikersinterface
De UPS is voorzien van een OLED-display (SSD1306) en twee tactiele knoppen voor lokale statusmonitoring en configuratie. Hierdoor is het niet nodig om via SSH in te loggen om het batterijniveau te controleren. Een ingebouwde buzzer geeft hoorbare meldingen bij stroomgebeurtenissen.
USB-C PD Output
De output-poort ondersteunt USB Power Delivery met meerdere voltageprofielen:
- 5V, 5.1V, 9V, 12V, 15V — tot maximaal 27W (5A bij 5.1V).
- Volledig compatibel met de stroomvereisten van de Raspberry Pi 5.
- Werkt ook met andere USB-C PD-apparaten.
Slim batterijbeheer
De ingebouwde lader (MP2762A) regelt het laden van de 2S Li-ion batterijen, met temperatuurmonitoring via een LM75B-sensor. Het beheer van de stroomweg vermindert slijtage aan de batterij door het laden te beperken zodra de batterij vol is, wat de levensduur over honderden cycli verlengt.
Een Raspberry Pi voor de Raspberry Pi
De UPS maakt gebruik van een Raspberry Pi RP2040-microcontroller voor het UI-paneel en de systeemmonitoring. Het is dus een apparaat aangedreven door een Raspberry Pi, gebouwd voor de Raspberry Pi. De hoofdvoedingskaart gebruikt een CH32X035 RISC-V MCU met een ingebouwde USB-PD 3.0 PHY voor de afhandeling van de Power Delivery-onderhandelingen.
Technische samenvatting
| Parameter | Specificatie |
| Output | USB-C PD: 5V, 5.1V, 9V, 12V, 15V (max 27W) |
| Input 1 | USB-C PD (12-20V, 27W+) |
| Input 2 | DC barrel jack (9-24V) |
| Input 3 | Sony NP-F batterij (Li-ion, 2S) |
| Batterij | Sony NP-F serie — NP-F570 / NP-F770 / NP-F970 |
| Hot-swap | Ja (bij aangesloten externe voeding) |
| Communicatie | USB-data via dezelfde USB-C voedingskabel |
| Display | SSD1306 OLED |
| Bediening | 2 tactiele knoppen + buzzer |
| MCU (stroom) | CH32X035F8U6 (RISC-V, USB-PD 3.0 PHY) |
| MCU (UI) | Raspberry Pi RP2040 |
| DC-DC | TPS55289 buck-boost (bereik 3-30V) |
| Lader | MP2762A (2S Li-ion, temperatuurbeheerst) |
| Behuizing | 3D-geprint (FDM), snap-fit assemblage |
Hardware-details
Elektronica
- Main Board: Een 4-laags PCB met USB-PD controller, lader, DC-DC converter en NP-F batterijconnector.
- UI Panel: Een 2-laags PCB met SSD1306 OLED-display, twee tactiele knoppen en een RP2040-controller.
Behuizing
De behuizing is ontworpen voor FDM 3D-printen. Het is een multi-part assemblage met een snap-fit batterijvergrendeling. De onderdelen bestaan uit: Enclosure Main, Enclosure Bottom, Side Cover, Buttons, Lock, Press Lock Button en OLED Dimmed Window.
- Volledige STEP-assemblage:
hardware/enclosure/Web3PiUPS_3DPrinted.step
Structuur van de repository
firmware-ch32x/: CH32X035 firmware — USB-PD bron, stroombeheer.
firmware-rp2040/: RP2040 firmware — OLED UI, statusdisplay, knoppen.
service/: Linux systeemservice (gepland).
hardware/:
electronics/:
main-board/: Hoofdvoedingskaart — schema, STEP, Gerber, BOM, PnP.
ui-panel/: OLED + knoppen paneel — schema, STEP, Gerber, BOM.
enclosure/: 3D-geprinte behuizing — STEP-assemblage, STL-onderdelen.
docs/images/: Renders en foto's.
Bouwen
CH32X035 Firmware
Vereist de MounRiver Studio toolchain of riscv-none-embed-gcc.
RP2040 Firmware
Vereist PlatformIO. Bouwen en uploaden via:
cd firmware-rp2040
pio run -t upload
Links
Licenties
Dit project maakt gebruik van een dubbele licentiestructuur:
| Component | Licentie | Bestand |
firmware-rp2040/, firmware-ch32x/, service/ | GPL-3.0 | LICENSE-SOFTWARE |
hardware/ | CERN-OHL-S v2 | LICENSE-HARDWARE |
Disclaimer: Raspberry Pi is een handelsmerk van Raspberry Pi Ltd. Sony NP-F is een handelsmerk van Sony Corporation. Het gebruik van deze handelsmerken is uitsluitend bedoeld voor beschrijvende doeleinden.