Raspberry PI και GPIO καρφίτσες: Ελέγχοντας ένα LED με Bash και Python

Στο προηγούμενο post που είδαμε ήταν οι ακίδες GPIO και μερικά παραδείγματα πρακτικών εφαρμογών, Σήμερα θα εστιάσουμε σχετικά με τη λειτουργία της γενικής χρήσης καρφίτσες, και μάθετε να ελέγχετε τους με τις παραγγελίες του διερμηνέα το Bash και με Python.

ΠΡΩΤΟ&οδήγησε

Θα χρησιμοποιήσετε ένα LED, μια αντίσταση των 330 ohm, σύρμα, και ένα Breadboard, ή ένα κολλητήρι και καλάι.

Θα χρειαστούμε επίσης μας Βατόμουρο έχουν ήδη Raspbian προ-εγκατεστημένο, Αν η υπόθεσή σας δεν είναι, Μπορείτε να δείτε πώς να το κάνουμε στο τα παρακάτω σύνδεσμο από το Κατάλογος.

Ιππασία στο κύκλωμα

Μπορείς να κολλήσεις άμεσα το LED σύρμα και αντίσταση όπως εσείς θα δείτε στον παρακάτω Διάγραμμα, Αν και είναι πολύ καλύτερα να χρησιμοποιήσετε ένα Breadboard; Είναι επίσης πολύ σημαντικό να εξετάσουμε καλά σε φαβορίτες, όπως και στην η “διαγώνια” στο εσωτερικό του το δίοδος LED Συνδυάζοντας τις δύο ακίδες για να μοντάρετε το κύκλωμα, ήδη που αν το βουνό προς τα πίσω δεν θα ανάψει.

Κύκλωμα συσκευή για τον έλεγχο του σχετικά διόδου LED.

Κύκλωμα που απαιτούνται για να ελέγχουν την εξουσία μια δίοδος των Οδηγήσεων.

Πάω να χρησιμοποιήσετε μία Breadboard, και θα ήθελα να συστήσω να χρησιμοποιήσετε ένα, Υπάρχουν μερικοί από περίπου €4 και μας επιτρέπουν να ξαναχρησιμοποιήσετε στοιχεία ξανά και ξανά χωρίς να χρειάζεται να κολλήσεις τους, Οι εσωτερικές διασυνδέσεις ενός Breadboard τείνουν να είναι τα εξής.

Πρωτοκον

Μια Breadboard συνδέσεις.

Οι συνδέσεις μεταξύ του Breadboard και το Βατόμουρο πρέπει να είναι όπως στο παρακάτω διάγραμμα, το GPIO Μπορείτε να φτάσετε το ζήτημα 3,3V για να αντιστοιχίσετε ένα λογικό υψηλή τιμή.

Κυκλώματος σε Breadboard.

Κύκλωμα που απαιτούνται για να ελέγχουν την εξουσία μια δίοδος των Οδηγήσεων.

Γεια σας κόσμο του την GPIO με Bash

Κάποτε μονταρισμένο κύκλωμα, Θέλουμε να κάνουμε τι καλώ ένα “Γεια σας κόσμο GPIO” σε Bash εκτελώντας τα ακόλουθα δέσμη ενεργειών.

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

Για να απενεργοποιήσετε το LED, μπορούμε να το κάνουμε με το ακόλουθο δέσμη ενεργειών.

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

Βασικά αυτό που κάνουμε με Bash είναι η δημιουργία ενός Δομή κατάλογου σε /sys/κλάση/gpio και την προσθήκη περιεχομένου σε κάθε αρχείο που θα πρέπει να αντιμετωπίζονται ως μια μεταβλητή.

ιεραρχία

Ιεραρχία μέσα στον κατάλογο /sys/class/gpio.

Εισαγωγή στην Python

Έχουμε ήδη αποδειχθεί ότι μας κύκλωμα λειτουργεί σωστά και το LED έχει απολυθεί για να δώσει μια λογική υψηλή τιμή στη μεταβλητή, Τώρα ας δούμε πώς μπορούμε να κάνουμε το ίδιο στο Python, που θα μας επιτρέψει να προγραμματίσετε μας εφαρμογές Web για τον έλεγχο των εισροών και εκροών από το GPIO από οποιαδήποτε συσκευή.

funcweb

Χρήση της εφαρμογής WEB λειτουργία.

Πριν προχωρήσετε, Θα ήθελα να συστήσω ότι βλέπετε τα κεφάλαια του το 1 να το 10 του Αυτό το εκπαιδευτικό βίντεο από Python το κανάλι της YouTube του Κωδικός διευκολύνεται, Εάν καθώς δεν έχω μεγάλη ιδέα του προγραμματισμού σε Python, Μπορείτε να έρθετε πολύ καλά να σας εξοικειώσει με τον κώδικα που πρόκειται να δείτε περισσότερο προς τα εμπρός και να κατανοήσουν.

Διαφορετικά η GPIO αντιστοιχίες ακίδων (BCM και Διοικητικό Συμβούλιο)

Υπάρχουν δύο τύποι pin αρίθμηση, η φυσική αρίθμηση ή λειτουργία ΔΙΟΙΚΗΤΙΚΌ ΣΥΜΒΟΎΛΙΟ, και η αρίθμηση των τσιπ SoC Broadcom ελέγχοντας τους, Εμείς πρόκειται να χρησιμοποιήσετε το pinout σε λειτουργία BCM, αλλά ας δούμε τη διαφορά.

BCMvsBOARD

Γεια σας κόσμο του την GPIO με την Python

Μετά βλέποντας το βίντεο, και διαφορετικές αντιστοιχίες ακίδων ήδη να καταλάβετε το βασικό κώδικα για να το “Γεια σας κόσμο GPIO” σε Python.

Πρώτον, πρόκειται να κατεβάσετε ό, τι χρειάζεστε για τον έλεγχο της GPIO με Python, σε Raspbian τώρα έρχονται εγκατασταθεί Python και τις βιβλιοθήκες GPIO, αλλά πρόκειται να εγκαταστήσετε ένα πρόσθετο πακέτο και επικαιροποίηση του συστήματος να έχω την τελευταία έκδοση.

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

Εκσυγχρόνισα κάποτε, Ας δούμε πώς μπορείτε να ενεργοποιήσετε το LED με τα ακόλουθα δέσμη ενεργειών, Για παράδειγμα μπορείτε να καλέσετε enciende.py, και μπορεί εμείς να το εκτελέσετε ως root με την εντολή “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) 

Με αυτό μπορούμε να απενεργοποιήσετε το, για παράδειγμα, καλέστε 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() 

Και με αυτό θα σας καλέσουμε parpadea.py, Θα κάνουμε αναβοσβήνει η 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() 

Εάν δεν εισάγετε τη βιβλιοθήκη “χρόνος“, δεν μπορείτε να προσθέσετε το “ύπνου“, και εάν δεν προσθέσετε το “ύπνου” του δευτερολέπτου μεταξύ επάνω και μακριά, Είναι αρκετά πιθανό ότι το μάτι μας δεν θα αντιλαμβάνονται τρεμοπαίζει.

Είναι πολύ σημαντικό να μην προσθέσετε ειδικούς χαρακτήρες σε τα δέσμες ενεργειών σε Python, για το λόγο αυτό, τα σχόλια δεν φέρουν εμφάσεις, Δεδομένου ότι έδωσε χαρακτήρα σφάλμα δεν είναι έγκυρη.

Στην ακόλουθη καταχώρηση Θα δούμε πώς να κάνει ένα απλό Εφαρμογή Web μας επιτρέπουν να εκτελέσει αυτά δέσμες ενεργειών, να είναι σε θέση να ελέγξει από οποιαδήποτε συσκευή με πρόγραμμα περιήγησης Web.

Εάν θέλετε, μπορείτε να με ακολουθήσουν σε Πειραχτήρι, Facebook, Google +, LinkedIn, ή να μοιραστείτε με τα κουμπιά κάτω από την παρούσα δημοσίευση, Εάν έχετε οποιεσδήποτε ερωτήσεις ή προτάσεις μην διστάσετε να σχολιάσει.

Βοηθήστε μας να προσεγγίσουν περισσότερους αναγνώστες Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 σκέψεις για"Raspberry PI και GPIO καρφίτσες: Ελέγχοντας ένα LED με Bash και Python

  1. Έχω μια ερώτηση από newbie…
    επειδή η αντίσταση του 330 ω και όταν υπάρχει που να το χρησιμοποιήσετε?

    Χρησιμοποιούνται πάντα για 330 Όταν δουλεύουμε με RPI, ή μπορεί να ποικίλλει?

    Ένα blog greeting και εξαιρετική!!!

  2. Γεια σου δεν τα έργα μου, και στη συνέχεια ακολουθήστε τα βήματα στην επιστολή με την python, έχετε να δώσετε δικαιώματα στο αρχείο της python?

    • Γεια σου Peter,

      Καταρχήν θα πρέπει να λειτουργούν, σφάλμα μόνο έχει δώσει δικαιώματα για μερικούς ανθρώπους, αλλά τρέχει από την εφαρμογή web, Δεδομένου ότι το www-δεδομένα χρήστη από προεπιλογή δεν έχετε τέτοια δικαιώματα.

      Ακριβώς σε περίπτωση δοκιμάστε να τρέξετε “sudo chmod + x script.py” για να επιστρέψετε το εκτελέσιμο, Αν και όχι έτσι θα πρέπει να λειτουργεί μόνο από τερματικό; μπορεί να μου διδάξει Εάν επιστρέφει κάποιο σφάλμα στον τερματικό σταθμό για την εκτέλεση της δέσμης ενεργειών;?

      Πολλές ευχαριστίες για το σχόλιό σας.

  3. Καλό, Όταν εισάγετε το script σε python, μου λέει ότι το arroba είναι ένα σφάλμα σύνταξης τι μπορεί να είναι? Ευχαριστίες και χαιρετισμούς.

    • Μου είναι πολύ παράξενο, Δεδομένου ότι στη δέσμη ενεργειών υπάρχει δεν @, θα μπορούσε να σας δώσει περισσότερες λεπτομέρειες του σφάλματος?

      Τα λέμε σύντομα, και ευχαριστώ για το σχολιασμό.

  4. Γεια σου,
    Προσπαθώ να ενεργοποιήσετε ένα LED μέσω python μετά οδηγός δείγματα, αλλά μου δίνει το ακόλουθο μήνυμα λάθους κατά την εκτέλεση του κώδικα το:

    Εισαγωγή RPi.GPIO ως GPIO

    Σφάλμα:
    -Bash: εισαγωγή: η εντολή δεν βρέθηκε

    Ξέρετε γιατί είναι αυτό το σφάλμα?

    Σας ευχαριστώ και συγχαρητήρια για το blog σας εξυπηρετεί πολύ!

    • Γεια σας νανο, Ευχαριστώ για το σχολιασμό.

      Φαίνεται ότι ο κώδικας είναι να ερμηνευθεί από Μπας και όχι από την Python.

      Εκτελείτε τη δέσμη ενεργειών, ή τις γραμμές κώδικα στο τερματικό απευθείας?

        • Είμαι ευτυχής που είναι έχει λυθεί!!!

          Ευχαριστώ για το σχολιασμό, μην διστάσετε να κάνουμε, αν έχετε οποιαδήποτε αμφιβολία; μεταξύ τους αναγνώστες και θα χάσετε ένα χέρι.

  5. Και πάλι καλή,
    κάτι που δεν καταλαβαίνω είναι η πρώτη γραμμή του κώδικα: #!usr/bin/env/python
    Τι είναι?
    Βλέπω ότι λειτουργεί εξίσου με ή χωρίς

    • Γεια σας νανο, Καλώς ήρθατε και πάλι.

      Η γραμμή που το σχόλιο είναι η δήλωση που είναι συνήθως περιλαμβάνει το σπίτι του μια δέσμη ενεργειών για σας δείχνουν να είναι το τερματικό, όπου είναι ο διερμηνέας που πρέπει να περάσει σε σας τους παραγγελίες, σε αυτή την περίπτωση, Python; για bash θα είναι τα εξής:

      #!/bin / bash

      Σε αυτή την περίπτωση λειτουργεί με τη δήλωση και δεν είναι από το αρχείο έχει επέκταση .py, αλλά είναι καλή πρακτική να πάντα να προσθέσετε το.

      Ελπίζω να εκκαθαριστεί αμφιβολίες σας, ξανά εδώ όποτε θέλετε και σας ευχαριστώ πάρα πολύ για σας σχόλιο 🙂

  6. Ευχαριστούμε, το φροντιστήριο είναι εξαιρετική, αλλά έχω μια αμφιβολία:

    Αφήνω τα ακόλουθα σφάλματα:

    γραμμή 12 εισαγωγή:δεν βρέθηκε
    γραμμή 14 Συντακτικό σφάλμα: απροσδόκητη λέξη (περιμένουμε “)”)

    Ο κωδικός μου είναι:

    #GPIO-setup.py
    ### ΑΡΧΊΣΤΕ INIT INFO
    # Παρέχει: GPIO-setup.ch
    # Απαιτείται έναρξη: $remote_fs $syslog
    # Απαιτείται-Stop: $remote_fs $syslog
    # Προεπιλογή έναρξης: 2 3 4 5
    # Προεπιλογή-Stop: 0 1 6
    # Σύντομη περιγραφή: Ρύθμιση gpio λειτουργία
    # Περιγραφή: Ρύθμιση gpio 22/27/17/4 έξω λειτουργία
    ### ΤΈΛΟΣ INIT ΠΛΗΡΟΦΟΡΊΕΣ

    Εισαγωγή RPi.GPIO ως GPIO
    #Μπορούμε να ορίσουμε τη λειτουργία BCM
    GPIO.setmode(GPIO. BCM)
    #Μπορούμε τώρα να ορίσουμε τις ακίδες εξόδου GPIO
    GPIO.setup(4, GPIO. ΑΠΌ)
    GPIO.setup(17, GPIO. ΑΠΌ)
    GPIO.setup(27, GPIO. ΑΠΌ)
    GPIO.setup(22, GPIO. ΑΠΌ)

    Οποιαδήποτε ιδέα???

    • Γεια σας Leoctam, Ευχαριστώ για το σχολιασμό.

      Οι πρώτες γραμμές να δώσει να καταλάβει ότι προσπαθείτε να δημιουργήσετε ένα σύστημα δαίμονα, αλλά να σχολιάζονται, έτσι ώστε δεν θα να ληφθεί υπόψη.

      Από την άλλη, ο κωδικός που χρησιμοποιείτε για να αλληλεπιδράσετε με τον GPIO είναι Python, έτσι θα πρέπει να μείνετε σε μια δέσμη ενεργειών .py που θα κληθεί από το δαίμονα του συστήματος, ή χρησιμοποιήστε το Bash να πράξει όπως στο πρώτο παράδειγμα σε αυτό το σεμινάριο.

Αφήνω μια απάντηση