Malina PI i GPIO pins: Kontrolowanie LED z basha i Pythona

W poprzednim poście, widzieliśmy były Piny GPIO oraz przykłady praktycznych zastosowań, Dziś skupimy się na działania ogólnego przeznaczenia szpilki, i nauczyć się kontrolować je z zamówienia tłumacza Bash i z Python.

proto&LED

Będzie używać LED, odporność 330 Omów, drutu, i jeden Deska do krojenia chleba, lub do lutowania i Lutownica.

Będziemy również potrzebować naszych Malina mają już Raspbian Wstępnie zainstalowane, Jeśli nie jest w stanie, Widać jak to zrobic Poniższy link z Katalogu.

Jazda konna obwodu

Można lutować bezpośrednio LED drutu i odporność jak zobaczymy poniżej Schemat, Mimo że jest dużo lepiej używać Deska do krojenia chleba; To jest również bardzo ważne, aby wyglądać dobrze na baki, Podobnie jak w “ukośne” wewnątrz Dioda LED łącząc dwa kołki do montażu układu, już że jeśli zamontować go do tyłu nie włącza się.

Obwodu urządzenie do kontroli na diody LED.

Obwód potrzebne do sterowania zasilaniem diod LED.

Mam zamiar użyć jednego Deska do krojenia chleba, i zaleca, aby używać, Istnieją pewne od około 4 € a oni pozwalają na ponowne wykorzystanie komponentów w kółko bez konieczności lutowania je, wewnętrzne połączenia jednego Deska do krojenia chleba Oni wydają się być następujące.

protocon

Deska do krojenia chleba połączeń.

Połączenia między Deska do krojenia chleba i Malina musi być jak na poniższym rysunku, The GPIO Można dotrzeć do problemu 3,3V Aby przypisać wartość logiczna wysokiej.

Obwód na makiet.

Obwód potrzebne do sterowania zasilaniem diod LED.

Witaj świecie GPIO z Bash

Raz zainstalowany układ, Mamy zamiar zrobić to, co nazywam “Witaj świecie GPIO” w Bash uruchomione następujące czynności skrypt.

#!/bin/bash
#Exportamos el puerto GPIO 17 
echo 17 > /sys/class/gpio/export 
#Lo configuramos como salida 
echo out > /sys/class/gpio/gpio17/direction 
#Encendemos el LED asignandole 1 como valor lógico
echo 1 > /sys/class/gpio/gpio17/value

Aby wyłączyć LED, możemy to zrobić z następujących skrypt.

#!/bin/bash
#Apagamos el LED asignandole 0 como valor lógico
echo 0 > /sys/class/gpio/gpio17/value  
#Eliminamos la entrada del puerto GPIO 17 
echo 17 > /sys/class/gpio/unexport 

W zasadzie to, co robimy z Bash jest stworzenie Hierarchii katalogów w /sys/class/gpio i Dodaj zawartość do każdego pliku, który będzie następnie traktowana jako Zmienna.

hierarchii

Hierarchia w katalogu PIN.

Wprowadzenie do Python

Już udowodniliśmy, że nasz układ pracuje poprawnie i LED został on zwolniony dać logiczną wysoką wartość do zmiennej, Teraz zobaczmy, jak możemy zrobić to samo Python, które pozwolą nam zaplanować nasz Aplikacje sieci Web do kontroli wejść i wyjść z GPIO z dowolnego urządzenia.

funcweb

Operacji przy użyciu aplikacji sieci WEB.

Przed przystąpieniem, Polecam, że widzisz w rozdziałach 1 do 10 z Ten samouczek wideo z Python kanał YouTube z Kod ułatwione, Jeśli nie mają wiele idei programowania w Python, To może przyjść do Ciebie bardzo dobrze, aby zapoznać się z kodem, który będziemy bardziej przed Tobą i zrozumieć, to.

Różnych styków GPIO (BCM i zarządu)

Istnieją dwa rodzaje numerów pin, fizyczne numerowanie lub tryb ZARZĄD, i numeracja chip SoC Broadcom kontrolowanie ich, Mamy zamiar użyć wyprowadzeń w trybie BCM, ale spójrzmy na różnicę.

BCMvsBOARD

Witaj świecie GPIO z Python

Po obejrzeniu filmów, Wyprowadzenia styków różnych już zrozumieć podstawowe kod aby “Witaj świecie GPIO” w Python.

Najpierw chcemy pobrać wszystko, co potrzebne do sterowania GPIO z Python, w Raspbian są już zainstalowane Python i bibliotek GPIO, ale mamy zamiar zainstalować dodatkowy pakiet i aktualizacji systemu do najnowszej wersji.

usuario@maquina:~$ sudo apt-get install python-dev
usuario@maquina:~$ sudo apt-get install python-rpi.gpio
usuario@maquina:~$ sudo apt-get update && sudo apt-get upgrade

Aktualizowane raz, Zobaczmy, jak włączyć LED z następujących skrypt, Na przykład można nazwać enciende.py, i można go uruchomić jako root za pomocą polecenia “sudo Python enciende.py”.

#!usr/bin/env/ python
#enciende.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico alto para encender el LED
GPIO.output(17, GPIO.HIGH) 

Z tym będziemy mogli go wyłączyć, na przykład wywołanie apaga.py

#!usr/bin/env/ python
#apaga.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM
GPIO.setmode(GPIO.BCM)  
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico bajo para apagar el LED
GPIO.output(17, GPIO.LOW) 
#Finalmente liberamos todos los pines GPIO, es decir, los desconfiguramos)
GPIO.cleanup() 

I z tym będziemy nazywać Cię parpadea.py, Będziemy się miga LED.

#!usr/bin/env/ python
#parpadea.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Importamos la libreria time
import time 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Queremos que lo que contenga el for i in range se repita 5 veces
for i in range(0,5): 
        #Asignamos valor logico alto para encenderlo
               GPIO.output(17, GPIO.HIGH) 
        #Esperamos un segundo
               time.sleep(1)
        #Asignamos valor logico bajo para apagarlo
         GPIO.output(17, GPIO.LOW) 
        #Esperamos un segundo
         time.sleep(1) 
#Una vez termina las 5 repeticiones, liberamos el pin GPIO utilizado; en este caso el 17
GPIO.cleanup() 

Jeśli nie należy importować biblioteki “czas“, nie można dodać “sen“, a jeśli nie dodać “sen” sekundy między i wyłączanie, Jest całkiem możliwe, że nasze oko nie będzie postrzegał migotanie.

Jest to bardzo ważne nie dodać znaki specjalne w skrypty w Pythonie, z tego powodu komentarze nie posiadają akcenty, Od tego czasu dał znak błąd nieprawidłowy.

W następujący wpis Zobaczymy jak zrobić prosty Aplikacja sieci Web pozwalają nam zrealizować te skrypty, Aby móc sterować z dowolnego urządzenia z przeglądarką Www.

Jeśli chcesz, możesz się do mnie na Twitter, Facebook, Google +, LinkedIn, lub podzielić się nim z przycisków w tej publikacji, Jeśli masz jakiekolwiek pytania lub sugestie prosimy o komentarz.

Pomóż nam dotrzeć do czytelników więcej Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 myśli na"Malina PI i GPIO pins: Kontrolowanie LED z basha i Pythona

  1. Mam pytanie od newbie…
    ponieważ odporność 330 omów i gdy ma, że go używać?

    Zawsze są używane do 330 Kiedy pracujemy z RPI, lub może się różnić?

    Pozdrowienia i Fantastyczny blog!!!

    • Witam Peter,

      W zasadzie powinno działać, błąd ma uprawnienia tylko do niektórych ludzi, ale działa z aplikacji sieci web, jako użytkownik www-data domyślnie nie ma już tych uprawnień.

      Tylko w przypadku spróbuj uruchomić “sudo chmod + x script.py” Aby uczynić go wykonywalnym, Chociaż nie tak to powinno działać tylko z terminalu; Możesz mnie nauczyć, jeśli zwraca błąd, w terminalu, aby uruchomić skrypt??

      Dziękuję bardzo za komentarz.

  2. Dobry, Kiedy wprowadzić skrypt w języku python, mówi mi, że arroba jest SyntaxError, co może być? Dzięki i pozdrowienia.

  3. Cześć,
    Próbuję włączyć LED za pomocą Pythona po przewodnik próbek, ale to daje mi następujący błąd, gdy uruchamiam kod to:

    importu RPi.GPIO jako GPIO

    Błąd:
    -bash: importu: zamówienia nie został znaleziony.

    Czy wiesz, dlaczego jest ten błąd?

    Dziękuję i gratulacje na blogu służy mi dużo!

    • Witam nano, Dzięki za komentowanie.

      Wydaje się, że kod jest interpretowane przez Bash, a nie przez Python.

      Czy jest uruchomiony skrypt, lub linii kodu, w terminalu bezpośrednio?

  4. Dobra jeszcze raz,
    co nie rozumiem jest to pierwsza linia kodu: #!usr / bin / env / python
    Co to?
    Widzę że działa jednakowo z lub bez niego

    • Witam nano, Zapraszamy kolejny raz.

      Linii, że komentarz jest instrukcja, która jest zwykle należą do domu skrypt dla wskazania do terminali gdzie jest jest interpretera, do którego należy przekazać Ci ich zamówienia, w tym przypadku Python; dla bash będzie w następujący sposób:

      #!/skrzynia/waln¹æ

      W tym przypadku to działa z deklaracją i bez niego ponieważ plik ma rozszerzenie .py, ale jest to dobra praktyka dodać, to zawsze.

      Mam nadzieję, że zostały wyczyszczone swoje wątpliwości, tutaj z powrotem w każdym przypadku, gdy chcesz i bardzo dziękuję za Twój komentarz 🙂

  5. Dziękuję, tutorial jest Fantastyczny, ale mam wątpliwości:

    Zostawiam następujące błędy:

    Linia 12 importu:nie znaleziono
    Linia 14 błąd składni: nieoczekiwane słowa (Spodziewając się “)”)

    Mój kod jest:

    #GPIO-setup.py
    ### ROZPOCZĄĆ INIT INFO
    # Zapewnia: GPIO-setup.ch
    # Wymagane Start: $remote_fs $syslog
    # Wymagane Stop: $remote_fs $syslog
    # Domyślne Start: 2 3 4 5
    # Domyślne Stop: 0 1 6
    # Krótki opis: Ustawienia trybu gpio
    # Opis: Ustawienia gpio 22/27/17/4 Tryb
    ### KONIEC INIT INFO

    importu RPi.GPIO jako GPIO
    #Możemy zdefiniować tryb BCM
    GPIO.setmode(GPIO. BCM)
    #Możemy teraz zdefiniować dane wyjściowe kodów PIN GPIO
    GPIO.setup(4, GPIO. NA ZEWNĄTRZ)
    GPIO.setup(17, GPIO. NA ZEWNĄTRZ)
    GPIO.setup(27, GPIO. NA ZEWNĄTRZ)
    GPIO.setup(22, GPIO. NA ZEWNĄTRZ)

    Wszelki idea???

    • Witam Leoctam, Dzięki za komentowanie.

      Pierwszej linii dają do zrozumienia, że próbujesz utworzyć demony systemowe, ale one są skomentował, więc nie bierze pod uwagę.

      Z drugiej strony, kod, który jest używany do interakcji z GPIO jest Python, więc musi pozostać w .py skrypt, który zostanie wywołany z Twojego systemu demona, lub użyj Bash, aby zrobić tak jak w pierwszym przykładzie, w tym samouczku.

Dodaj komentarz