Raspberry Pi: slimme aan/uit-knop: Een oplossing voor de Raspberry Pi tot aan model 4
op

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.

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.
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.

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.

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.

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.
Discussie (0 opmerking(en))