Malina PI a GPIO pinů: Ovládání LED s Bash a Pythonu

V předchozí post, co jsme viděli bylo GPIO piny a některé příklady praktických aplikací, Dnes se zaměříme na fungování univerzální kolíků, a Naučte se ovládat je interpret příkazů Bash a s Python.

proto&vedl

Použije LED, odpor 330 Ohm, drát, a jeden Prkénko na krájení, nebo pájky a pájecí železa.

Budeme také potřebovat naši Malina mají již Raspbian předinstalovaná, Je-li váš případ není, Můžete vidět, jak to udělat v následující odkaz z Adresář.

Jízda na okruhu

Můžete zapájení přímo LED dráty a odporu jako vy uvidíte v následujícím diagram, Ačkoli to je mnohem lepší použít Prkénko na krájení; Je také velmi důležité vypadat dobře na kotlety, stejně jako v “diagonální” uvnitř dioda LED Diakritické znaménko dvě piny pro připojení okruhu, již že pokud připojíte ji dozadu nejde zapnout.

Okruh potřebných k řízení zapalování LED dioda.

Okruh se musel ovládat sílu LED dioda.

Já jsem chtěl použít jeden Prkénko na krájení, a doporučuji používat, Tam jsou některé od cca 4 EUR a umožňují nám znovu a znovu opakovaně komponenty bez nutnosti pájení je, vnitřní spojení jedné Prkénko na krájení mají tendenci být následující.

protocon

Prkénko připojení.

Propojení mezi Prkénko na krájení a Malina musí být v následujícím diagramu, v GPIO Lze dosáhnout vydání 3,3V přiřazení logické vysoké hodnoty.

Okruh na prkénko na krájení.

Okruh se musel ovládat sílu LED dioda.

Hello World GPIO s Bash

Jednou jízdní okruh, Budeme dělat, co já nazývám “Hello World GPIO” v Bash spuštění následující skript.

#!/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

Chcete-li vypnout LED, můžeme to udělat s následujícími skript.

#!/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 

V podstatě to, co jsme se provádějí s Bash je vytvoření Hierarchie adresářů v /sys/třída/gpio a přidávání obsahu do každého souboru, který bude považováno Proměnná.

hierarchie

Hierarchie v rámci adresáře /sys/class/gpio.

Úvod do Pythonu

Jsme již prokázaly, že náš obvod pracuje správně a LED to byl propuštěn dát vysokou hodnotu proměnné, Teď uvidíme, jak můžeme udělat totéž Python, To umožní nám plánovat naši webové aplikace k řízení vstupů a výstupů GPIO z libovolného zařízení.

funcweb

Operace pomocí webové aplikace.

Než budete pokračovat, Doporučuji, uvidíte kapitoly 1 Chcete-li 10 z Tento video tutoriál od Pythonu kanál YouTube z Kódu usnadňuje, Pokud jako já nemám moc představu o programování v Python, To může přijít k vám velmi dobře seznámit vás s kódem, který budeme vidět více dopředu a pochopí to.

Různé vývodům GPIO (BCM a desky)

Existují dva typy pin číslování, fyzické číslování nebo režim DESKA, a číslování čip SoC Broadcom ovládání je, Budeme používat pinout v režimu BCM, Ale podívejme se na rozdíl.

BCMvsBOARD

Hello World GPIO, s Python

Po shlédnutí videa, a různé vývodům lze již pochopili základní kód, aby “Hello World GPIO” v Python.

Nejprve musíme stáhnout vše, co potřebujete k ovládání GPIO s Python, v Raspbian jsou již nainstalovány Python a knihovny GPIO, ale budeme instalovat další balíčky a aktualizovat systém na nejnovější verzi.

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

Aktualizován jednou, Uvidíme, jak se obrátit LED s následujícími skript, Můžete například volat enciende.py, a můžeme ji spustit jako root příkazem “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) 

S tím můžeme vypnout jej, například volání 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() 

A s tímhle zavoláme vám parpadea.py, Bude blikat 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() 

Pokud neimportujete knihovna “čas“, nelze přidat “spánek“, a pokud nebyla přidána “spánek” sekundy mezi a vypnutí, Je docela možné, že nebudete vnímat naše oko blikat.

To je velmi důležité, aby přidat speciální znaky v skripty v Pythonu, z tohoto důvodu nepřenášejte komentáře akcenty, Vzhledem k tomu, že to dalo charakter chyba neplatný.

V následující položce Uvidíme, jak udělat jednoduchý Webová aplikace Dovolte, abychom Toto provedení skripty, umět se ovládat z libovolného zařízení s prohlížečem Www.

Pokud jste jako vy se mnou na Twitter, Facebook, Google +, LinkedIn, nebo jej sdílet s tlačítky v této publikaci, Pokud máte jakékoliv dotazy nebo návrhy prosím neváhejte se vyjádřit.

Pomozte nám dostat více čtenářů Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 myšlenky na"Malina PI a GPIO pinů: Ovládání LED s Bash a Pythonu

  1. Mám dotaz od Nováček…
    protože odpor 330 Ohm a kdy ji použít?

    Se vždy používají pro 330 Když pracujeme s RPI, nebo se může lišit?

    Pozdrav a vynikající blog!!!

    • Ahoj Peter,

      V zásadě by to mělo fungovat, Chyba pouze udělena oprávnění pro některé lidi, ale běží z webové aplikace, jako uživatel www-data ve výchozím nastavení již nemá tato oprávnění.

      Jen v případě zkuste běh “sudo chmod + x script.py” aby byl spustitelný, Ačkoli není tak by to mělo fungovat jen z terminálu; Můžete mě naučit Pokud vrátí chybu v terminálu spustit skript??

      Velice Děkuji za váš komentář.

  2. Dobrý den,
    Já se snažím zapnout LED prostřednictvím Pythonu po průvodce vzorky, ale to mi dává následující chyby, když jsem spustit kód, který je:

    importovat RPi.GPIO jako GPIO

    Chyba:
    -bash: importovat: příkaz nebyl nalezen

    Víte, proč je tato chyba?

    Děkuji a gratuluji k blog slouží mi moc!

    • Nano Hello, Vítejte znovu.

      Řádek, který jste zmínil, je prohlášení, která je často uvedena na začátku skriptu, sdělit terminálu, kde byste měli Interpret, který nařizuje projít, v tomto případě, Python; pro bash by takto:

      #!/bin/bash

      V tomto případě to funguje s deklarací a bez ní, vzhledem k tomu, že soubor má příponu .py, ale je to dobré praxe vždy přidat.

      Doufám, že jste zrušili své pochybnosti, tady vždy, když chcete a Děkujeme vám za váš komentář 🙂

  3. Děkuju, kurz je vynikající, ale mám pochybnosti:

    Nechávají mě s následujícími chybami:

    čára 12 importovat:nebyl nalezen.
    čára 14 Chyba syntaxe: Slovo neočekávaný (očekává “)”)

    Můj kód je:

    #GPIO-setup.py
    ### BEGIN INIT INFO
    # Poskytuje: GPIO-setup.ch
    # Požadováno Start: $remote_fs $syslog
    # Požadovaných Stop: $remote_fs $syslog
    # Výchozí Start: 2 3 4 5
    # Výchozí Stop: 0 1 6
    # Krátký popis: Nastavení režimu gpio
    # Popis: Instalace gpio 22/27/17/4 režim
    ### KONEC INIT INFO

    importovat RPi.GPIO jako GPIO
    #Definujeme BCM režim
    GPIO.setmode(GPIO. BCM)
    #Jsme nyní definovat výstupních pinů GPIO
    GPIO.setup(4, GPIO. VÝSTUP)
    GPIO.setup(17, GPIO. VÝSTUP)
    GPIO.setup(27, GPIO. VÝSTUP)
    GPIO.setup(22, GPIO. VÝSTUP)

    Jakýkoliv idea???

    • Dobrý den Leoctam, Díky za komentáře.

      První linie dodají pochopit, že se snaží vytvořit démon systému, ale jsou vedena není co se bude mít v účtu.

      Na druhou stranu, Python je kód, který používáte k interakci s GPIO, Takže musíte zůstat v .py skript, který bude vyvolán od systémového démona, nebo používat Bash k tomu jako v prvním příkladu v tomto kurzu.

Napsat komentář