Inhoudsopgave:
- Stap 1: Elektronisch circuit
- Stap 2: Python-code
- Stap 3: Hoe het script automatisch te starten na de opstartprocedure
Video: Uitschakelknop voor Raspberry Pi - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
De Raspberry Pi is een zeer nuttig computerplatform waarmee verschillende IoT/robotica/smart-home/… projecttoepassingen kunnen worden gemaakt. Het enige dat het echter niet heeft, in vergelijking met een normale computer, is een uitschakelknop. Dus hoe kunnen we er zelf een maken? Oké, laten we het samen doen!
Voor deze tutorial heb je het volgende nodig:
- 1 Raspberry Pi al geconfigureerd en klaar voor gebruik
- 1 breadboard of iets waarmee je het elektronische circuit kunt maken
- 1 drukknop
- 2 jumperdraden
Als je nog nooit een Raspberry Pi hebt gebruikt, kun je mijn tutorial bekijken over hoe en wat je moet doen om hem te configureren:
www.instructables.com/How-to-Setup-a-Raspberry-Pi-and-Start-Using-It/
Stap 1: Elektronisch circuit
Niets super ingewikkeld hier, het is een vrij eenvoudig circuit. De 2 foto's hierboven leggen de opbouw van het circuit uit. U kunt elke gewenste GPIO-pin gebruiken voor de invoer van de knop, u moet er alleen voor zorgen dat u de code bijwerkt om dat weer te geven.
Laten we snel uitleggen hoe dit gaat werken:
- de RODE draad neemt de 3,3V naar het ene uiteinde van de drukknop.
- de ZWARTE kabel verbindt het andere uiteinde van de drukknop met een Pi GPIO die als invoer zal worden gebruikt.
- standaard is de knop open, dus er gaat geen spanning doorheen. Dus de ZWARTE kabel staat op 0V als de knop niet wordt ingedrukt. Dit betekent dat de logische status van de Pi GPIO-ingang 0 is.
- wanneer de knop wordt ingedrukt, gaat de spanning er doorheen en wordt de ZWARTE kabel gekoppeld aan de 3,3V. De Raspberry Pi ziet dan een spanning van 3,3 V aan zijn ingang, wat overeenkomt met een logische status van 1.
Stap 2: Python-code
Nu het circuit klaar is om te worden gebruikt, moeten we de code schrijven die het zal uitvoeren, en ik gebruik Python hier in een PyCharm-omgeving. Ik heb de knop geconfigureerd om de Raspberry Pi alleen uit te schakelen als deze langer dan 3 seconden wordt ingedrukt. De reden waarom ik dit doe, is dat het heel gemakkelijk is om er per ongeluk op te drukken, en je wilt je Pi niet per ongeluk afsluiten.
De bovenstaande printscreen is afkomstig uit mijn PyCharm-omgeving en de code is de volgende (met een klein verschil op regel 26 die is gekoppeld aan een ander project maar hier niet vereist):
# Dit is een code om de Raspberry Pi uit te schakelen wanneer een gedefinieerde knop ingedrukt wordt gehouden# Externe module importeert import RPi. GPIO als GPIO import timeimport os# Raspberry Pi pin & variabelen definities &hold_time = 3 # Hold time in sec to poweroffbutton_poweroff = 1 # Drukknop om Raspberry PiGPIO.setwarnings(False)GPIO.setmode(GPIO. BCM) uit te schakelen # Broadcom pin-numbering schemeGPIO.setup(button_poweroff, GPIO. IN, pull_up_down=GPIO. PUD_DOWN) # Knop ingesteld als inputwhile True: GPIO.wait_for_edge(button_poweroff, GPIO. RISING) start = time.time() time.sleep(0.2) # Switch debounce while GPIO.input(button_poweroff) == 1: time.sleep(0.01) lengte = time.time() - start als lengte > hold_time: os.system ("sudo poweroff")
Als je de drukknop op een andere GPIO hebt aangesloten, is het eerste wat je moet doen om regel 11 op bovenstaande printscreen te updaten met de relevante GPIO-ingang:
button_poweroff = GPIO_X # Update met de juiste GPIO die op je circuit wordt gebruikt
Met de variabele hold_time kunt u ook de wachttijd wijzigen die ervoor zorgt dat de Pi wordt uitgeschakeld.
Stap 3: Hoe het script automatisch te starten na de opstartprocedure
Nu we de code gereed hebben, hoeven we deze alleen nog maar uit te voeren. Maar het zou handig zijn als we dit script elke keer dat de Pi opstart, automatisch kunnen laten uitvoeren, zodat de knop zou werken zonder dat we het script elke keer zouden uitvoeren. Er zijn veel manieren om dit te doen. Ik heb hier een regel toegevoegd aan het bestand rc.local dat zich in de map /etc/ van je Pi bevindt. Het wordt uitgevoerd als onderdeel van de opstartvolgorde.
U moet een opdrachtregel openen en de volgende opdrachten typen (1e printscreen hierboven):
cd /
cd etc sudo nano rc.local
Het eerste commando brengt je van je /home/pi directory naar de root, dat is /.
Het tweede commando brengt je dan naar de /etc/ directory.
Ten slotte zal de derde het rc.local-bestand openen als een supergebruiker, met volledige bewerkingsrechten, die u nodig hebt om het bestand te wijzigen.
Eenmaal in het bestand, hoeft u alleen maar een regel toe te voegen aan het einde ervan, maar vóór de exit 0-instructie (2e printscreen hierboven):
# Voeg deze regel toe aan het rc.local-bestand om het script te starten
sudo python /home/pi/Documents/shutdown_with_hold.py &
Er zijn een paar dingen waar je op moet letten, hier:
- de naam van uw bestand: in de bovenstaande regel ga ik ervan uit dat het bestand shutdown_with_hold.py is. Maar het kan zijn wat je wilt, update gewoon de naam met die van jou.
- waar je je bestand hebt opgeslagen: in de regel hierboven ga ik ervan uit dat het is opgeslagen in je /home/pi/Documents directory. Maar nogmaals, het kan overal zijn. Je moet er alleen voor zorgen dat je het absolute pad naar je bestand hier plaatst.
- het "&"-teken aan het einde ervan: dit is belangrijk en zorgt ervoor dat deze opdracht op de achtergrond kan worden uitgevoerd
En dat is het! Dus nu wordt het script elke keer uitgevoerd als je Pi AAN staat, en je hoeft alleen maar meer dan 3 seconden op de knop te drukken om hem uit te schakelen.
Aanbevolen:
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: 8 stappen
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: deze instructable legt uit hoe u uw eigen externe Bluetooth-compatibele GPS voor uw telefoon kunt maken, wat dan ook voor ongeveer $ 10. Materiaallijst: NEO 6M U-blox GPSHC-05 bluetooth-module Kennis van interface Blutooth Low energy-modulesArdui
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Systeem voor het bewaken van de luchtkwaliteit voor fijnstofverontreiniging: 4 stappen
Systeem voor monitoring van luchtkwaliteit voor fijnstofverontreiniging: INTRO: 1 In dit project laat ik zien hoe ik een deeltjesdetector bouw met dataweergave, databack-up op SD-kaart en IOT. Visueel geeft een neopixels ringdisplay de luchtkwaliteit aan. 2 Luchtkwaliteit is een steeds belangrijker zorg t
Relaisbord voor Arduino voor minder dan $8: 5 stappen
Relaisbord voor Arduino voor minder dan $8.: Hallo vrienden, vandaag ga ik je vertellen hoe je een relaisbord voor Arduino maakt voor minder dan $8. In dit circuit gaan we geen IC of transistor gebruiken. Dus laten we het doen
3.3V Mod voor ultrasone sensoren (bereid HC-SR04 voor 3.3V Logic op ESP32/ESP8266, Particle Photon, enz.): 4 stappen
3.3V Mod voor ultrasone sensoren (bereid HC-SR04 voor 3.3V Logic op ESP32/ESP8266, Particle Photon, enz.): TL;DR: Knip op de sensor het spoor naar de Echo-pin en sluit het opnieuw aan met een spanningsdeler (Echo trace -> 2.7kΩ -> Echo pin -> 4.7kΩ -> GND). Bewerken: Er is enige discussie geweest over de vraag of de ESP8266 daadwerkelijk 5V-tolerant is op GPIO in