Het succes en de populariteit van de Raspberry Pi-boards is zeker verdiend, maar gaandeweg ergerden veel gebruikers zich aan het ontbreken van een aan/uit-knop. Uiteindelijk deed de gewenste knop zijn intrede in het nieuwe Raspberry Pi 5 model, maar voor bezitters van eerdere modellen is dit project wellicht nuttig.

Raspberry Pi smart power button main
Raspberry Pi slimme aan/uit-knop project.

Eenvoudige bedrading

Accessoires die de Raspberry Pi voorzien van een aan/uit-knop zijn niet nieuw. Er zijn zowel commerciële als dhz-oplossingen, van een eenvoudige kabel met een schakelaar tot geavanceerde HAT's (Hardware Attached on Top). De oplossing die ik voorstel heeft echter het voordeel van een vrij eenvoudig bedradingsschema en vereist geen programmeren of installeren van scripts of automatische opstartservices.

Met een paar componenten en drie regels extra tekst in het bestand config.txt kun je je Raspberry Pi-board met een druk op de knop inschakelen, het besturingssysteem correct afsluiten (zelfs bij headless systemen) en automatisch de voeding van het board loskoppelen zonder de usb-stekker eruit te trekken, om het stroomverbruik tot nul te reduceren.

Inschrijven
Schrijf u in voor tag alert e-mails over Raspberry Pi!

Pinnen configureren

De schakeling, geïllustreerd in figuur 1, moet geïnstalleerd worden tussen een standaard voeding en het Raspberry Pi-board, en ook verbonden worden met twee beschikbare generieke GPIO-pinnen op de 40-pins header. Voordat je de schakeling aansluit, moet je het gedrag van deze twee pinnen definiëren via een functie die is geïntroduceerd in de meest recente versies van Raspberry Pi OS.

Rpi power button fig1
Figuur 1: Schema van de slimme aan/uit-knop.

Deze functie staat bekend als device tree overlays, waarmee instructies voor het gebruik van hardware in tekstvorm kunnen worden toegevoegd aan het bestand config.txt. Dit bestand (dat bij elke start van het besturingssysteem wordt geladen) bevindt zich in de partitie bootfs van de micro SD-kaart van het besturingssysteem. Het is gemakkelijk toegankelijk, zelfs vanuit Windows, en is te bewerken met een willekeurige teksteditor. De volgende drie instructies moeten aan het einde van het bestand worden toegevoegd:

gpio=23=op,dh

 

Dit maakt van GPIO23 een uitgang die is ingesteld op 1 (hoog).

 

dtoverlay=gpio-poweroff,gpiopin=23,active_low,active_delay_ms=10000

 

Dit zet GPIO23 laag wanneer het veilig afsluiten voltooid is.

 

dtoverlay=gpio-shutdown,gpio_pin=24,active_low=1,gpio_pull=up,debounce=3000

 

Dit zet een veilige shutdown in gang als GPIO24 langer dan 3 seconden laag wordt gehouden. GPIO24 is ingesteld als een ingang met pull-up.

Zie figuur 2 voor een voorbeeld van een aangepast config.txt-bestand, inclusief commentaar.

Rpi power button fig2
Figuur 2: Voorbeeld van gewijzigd config.txt-bestand, inclusief commentaar.

De schakeling

Nu wordt de werking van de schakeling duidelijker. Door de knop SW1 ingedrukt te houden, wordt MOSFET Q1 (P-kanaal) ingeschakeld. Deze voorziet het Raspberry Pi-board van stroom en start het besturingssysteem. Binnen ongeveer 1 seconde wordt GPIO23 hoog, gaat de blauwe led branden, gaat MOSFET Q2 (N-kanaal) aan en houdt Q1 aan, en de knop kan worden losgelaten.

Als je de Raspberry Pi afsluit vanuit het startmenu op het bureaublad van het besturingssysteem, zal aan het einde van het proces (safe shutdown) GPIO23 laag worden, de blauwe led, Q1 en Q2 zullen uitgaan en de stroom naar het board zal worden afgesloten. Je krijgt hetzelfde effect door de knop langer dan 3 seconden ingedrukt te houden. Na deze tijd activeert GPIO24 de procedure safe shutdown zonder dat de gebruiker het besturingssysteem hoeft te openen, wat erg handig is bij headless systemen.

Rpi power button fig3
Figuur 3: Componentzijde (boven) en soldeerkant (onder) van het prototype, opgebouwd op een klein soldeerbaar breadboard.

Om verder te gaan met de beschrijving van het schema: C1 en R1 voorkomen dat Q1 wordt ingeschakeld als de voeding is aangesloten. D1 en D2 beschermen GPIO24 tegen de 5V-spanning die aanwezig is op de gate van Q1 (via R1) als Q2 wordt uitgeschakeld. R4 is de pulldown-weerstand van Q2's gate en R2 en R3 beschermen de GPIO's tegen overstroom. MOSFET Q1 werd gekozen voor zijn lage inschakelweerstand (ongeveer 16 mΩ @VGS = -4,5 V) om de spanningsval en het vermogensverlies te minimaliseren.

Het voltooide prototype is te zien in figuur 3. Het is opgebouwd op een klein stukje soldeerbaar breadboard dat dicht bij je Raspberry Pi-board past.


Noot van de redactie: Dit artikel (240546-03) zal verschijnen in de Elektor Circuit Special 2025.


Inschrijven
Schrijf u in voor tag alert e-mails over Circuits & Circuit Design!