Inhoudsopgave:

Uitschakelknop voor Raspberry Pi - Ajarnpa
Uitschakelknop voor Raspberry Pi - Ajarnpa

Video: Uitschakelknop voor Raspberry Pi - Ajarnpa

Video: Uitschakelknop voor Raspberry Pi - Ajarnpa
Video: Raspberry Pi Pico for Robotics 2024, December
Anonim
Uitschakelknop voor Raspberry Pi
Uitschakelknop voor Raspberry Pi

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

Elektronische schakeling
Elektronische schakeling
Elektronische schakeling
Elektronische schakeling
Elektronische schakeling
Elektronische schakeling

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

Python-code
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

Het script automatisch starten na de opstartprocedure
Het script automatisch starten na de opstartprocedure
Het script automatisch starten na de opstartprocedure
Het script automatisch 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:

  1. 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.
  2. 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.
  3. 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: