סיכות פאי פטל ו- GPIO: שליטה LED עם Bash, פיתון

בפוסט הקודם שראינו היו סיכות GPIO ומספר דוגמאות של יישומים מעשיים, היום נתמקד הפעולה של סיכות למטרות כלליות, ללמוד לשלוט בהם עם ההזמנות של המתרגם בש ועם פיתון.

פרוטו&הוביל

ישתמש LED, התנגדות של 330 אוהם, תיל, ואחד בממרח, או הלחמה, עבודה עם מלחם.

אנחנו גם צריכים שלנו פטל יש כבר Raspbian מותקן מראש, אם המקרה שלך הוא לא, אתה יכול לראות כיצד לעשות את זה להלן הקישור מדריך.

רכיבה על המעגל

אתה יכול הלחמה ישירות LED חוט והתנגדות כמוך יראו בקישורים הבאים דיאגרמה, למרות שזה הרבה יותר לשימוש בממרח; זה גם מאוד חשוב להסתכל גם על פאות, כמו “אלכסוני” בפנים דיודה LED שילוב של שני הפינים כדי לטעון את המעגל, כבר כי אם אתה טוען שזה הפוך לא יפעיל את.

מעגל צריך לשלוט את ההצתה של דיודות LED.

המעגל צריך לשלוט בכוח של דיודות LED.

אני הולך להשתמש באחת בממרח, ואני ממליץ לך להשתמש, ישנם כמה כ 4 € הם מאפשרים לנו לעשות שימוש חוזר ברכיבים שוב ושוב ללא צורך לכל אותם, החיבורים הפנימיים של אחד בממרח הם נוטים להיות הבאות.

protocon

חיבורים בממרח.

הקשרים בין בממרח ו פטל . הם בטח כמו בתרשים הבא, את GPIO תוכלו להגיע אל הנושא 3,3V כדי להקצות ערך לוגי גבוה.

מעגל על בממרח.

המעגל צריך לשלוט בכוח של דיודות LED.

שלום עולם GPIO עם בש

מעגל פעם נטענים, אנחנו הולכים לעשות את מה שאני מכנה “שלום עולם GPIO” ב בש הפעלת הבאות התסריט.

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

בעצם מה שאנחנו עושים עם בש היא ליצור שטח הירארכיית תיקיות ב /sys/מחלקה/gpio ולהוסיף תוכן כל קובץ זה יהיה כאל אז משתנה.

הירארכיה

ההיררכיה בתוך הספריה /sys/class/gpio.

מבוא פיתון

אנחנו כבר הוכיחו כי מעגל שלנו פועל כראוי את LED זה פוטר לתת ערך לוגי גבוה המשתנה, עכשיו בוא נראה איך אנחנו יכולים לעשות את אותו הדבר פיתון, זה יאפשר לנו לתזמן שלנו יישומי אינטרנט כדי לשלוט על התשומות והתפוקות של GPIO מכל מכשיר.

funcweb

באמצעות יישום האינטרנט של הפעולה.

לפני שתמשיך, אני ממליץ כי אתה רואה הפרקים של 1 כדי את 10 של זו הדרכה וידאו של פייתון הערוץ של YouTube של קוד הקל, אם כיוון שאין לי הרבה מושג של תכנות ב- פיתון, . אתה יכול לבוא טוב לך להכיר הקוד כי הולכים לראות יותר קדימה ויש מבין אותו.

Pinouts שונים של GPIO (BCM, לוח)

ישנם שני סוגים של pin מספור, הפיזי מיספור או מצב לוח, והמספור של השבב ברודקום SoC שולט בהם, אנחנו הולכים להשתמש את pinout במצב BCM, אבל הבה נבחן ההבדל.

BCMvsBOARD

שלום עולם GPIO עם פיתון

לאחר צפייה בסרטונים, pinouts שונים כבר ויכול להבין את הקוד הבסיסי כדי להפוך “שלום עולם GPIO” ב פיתון.

קודם אנחנו הולכים להוריד כל מה שאתה צריך כדי לשלוט GPIO עם פיתון, ב Raspbian . עכשיו בוא המותקנים פיתון את ספריות 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, נוכל להריץ אותו כמו השורש באמצעות הפקודה “sudo 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() 

אם אתה מייבא ספריית “זמן“, באפשרותך להוסיף “שינה“, אם תוסיף “שינה” של שניה בין לסירוגין, לא מן הנמנע כי העין שלנו לא תבחיני להבהב.

חשוב מאוד לא להוסיף תווים מיוחדים ב- סקריפטים פייתון, מסיבה זו דבריו אינם נושאים מבטא, מאז זה נתן שגיאה תו לא חוקי.

בערך הבא אנחנו נלמד איך להכין פשוטה יישום אינטרנט מאפשרים לנו לבצע את אלה סקריפטים, כדי להיות מסוגל לשלוט בזה מכל מכשיר עם דפדפן אינטרנט.

אם אתה רוצה אתה יכול סע אחריי טוויטר, פייסבוק, גוגל +, LinkedIn, או לשתף אותו עם הלחצנים תחת פרסום זה, אם יש לך שאלות או הצעות אנא אל תהססו להגיב.

לעזור לנו להגיע יותר לקוראים Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 מחשבות על"סיכות פאי פטל ו- GPIO: שליטה LED עם Bash, פיתון

  1. . יש לי שאלה של טירון…
    בגלל ההתנגדות של 330 אוהם, ואם יש זה להשתמש בו?

    תמיד משמשים 330 כאשר אנו עובדים עם rpi גבוהה, או זה עשוי להשתנות?

    בלוג ברכה, מעולה!!!

    • הי, פדרו,

      באופן עקרוני זה אמור לעבוד, רק les נתן שגיאה על-ידי הרשאות יש אנשים אבל בודקים את זה מהאינטרנט יישום, כמשתמש www-נתונים כברירת מחדל אינו כולל הרשאות אלה.

      ב מקרה לנסות לרוץ “sudo chmod + x script.py” כדי להפוך אותו הפעלה, אם לא אז זה אמור לעבוד רק ממסוף; אתה יכול ללמד אותי אם מחזירה לך שגיאה בטרמינל כדי להריץ את הסקריפט??

      תודה רבה על ההערה.

  2. טוב, כאשר אני מזין את התסריט פייתון, אומר לי arroba הוא SyntaxError מה יכול להיות? תודה וברכות.

    • תמצא לי. זה מאוד מוזר, מאז בקובץ ה-script יש לא @, אתה יכול לתת עוד פרטים על השגיאה?

      נתראה בקרוב, ותודה על הוספת הערות.

  3. שלום,
    אני מנסה להפעיל LED דרך פייתון בעקבות המדריך דוגמאות אבל זה נותן לי את השגיאה הבאה כאשר אני מפעיל את הקוד זה:

    ייבוא RPi.GPIO כמו GPIO

    שגיאה:
    -בש: ייבוא: הצו לא נמצאה

    ? אתה יודע למה זו שגיאה?

    תודה רבה ומזל טוב על הבלוג אני משרת של הרבה!

    • שלום ננו, תודה על הוספת הערות.

      נראה כי הקוד להיות מפורש על ידי Bash ולא על ידי פיתון.

      אתה רץ את התסריט, או את שורות הקוד בתוך הטרמינל ישירות?

        • אז אני שמח. כי הוא פתר!!!

          תודה על הוספת הערות, אל תהססו לעשות זאת. אם יש לך שאלות כלשהן; אני בין הקוראים תוכלו לפספס יד.

  4. שוב טוב,
    מה שאני לא מבין הוא השורה הראשונה של קוד: #!usr / bin / env / פיתון
    מה זה?
    אני רואה שזה עובד רק עם או בלי זה

    • שלום ננו, ברוך הבא שוב.

      הקו שאתה מזכיר הוא ההצהרה אשר נכלל לעתים קרובות בתחילת קובץ script לספר הטרמינל איפה המתרגם אילו הזמנות שאתה צריך לעבור, במקרה זה, פיתון; עבור bash יהיה כדלקמן:

      #!/bin/bash

      במקרה זה, זה עובד עם ההכרזה ובלי זה מאז הקובץ כולל את סיומת .py, אבל זה תרגול טוב כדי להוסיף אותו.

      אני מקווה שניקית את הספקות שלך, vuelve por aquí cuando quieras y muchas gracias por tu comentario 🙂

  5. תודה, ההדרכה היא מעולה, אבל יש לי ספק:

    הם עוזבים אותי עם השגיאות הבאות:

    קו 12 ייבוא:לא נמצא
    קו 14 שגיאת תחביר: Word לא צפוי (מצפה “)”)

    הקוד שלי הוא:

    #GPIO-setup.py
    ### בגין INIT פרטי
    # מספק: GPIO-setup.ch
    # נדרש-התחלה: $remote_fs $syslog
    # נדרש-Stop: $remote_fs $syslog
    # ברירת המחדל-התחלה: 2 3 4 5
    # ברירת המחדל-Stop: 0 1 6
    # תיאור קצר: הגדרת מצב gpio
    # תיאור: הגדרת gpio 22/27/17/4 את מצב
    ### מידע אתחול הקצה

    ייבוא RPi.GPIO כמו GPIO
    #אנו מגדירים את מצב BCM
    GPIO.setmode(GPIO. BCM)
    #עכשיו אנו מגדירים אותם pin GPIO פלט
    GPIO.setup(4, GPIO. .)
    GPIO.setup(17, GPIO. .)
    GPIO.setup(27, GPIO. .)
    GPIO.setup(22, GPIO. .)

    יש לך מושג???

    • שלום Leoctam, תודה על הוספת הערות.

      הקווים הראשון נותן להבין כי אתה מנסה ליצור בשרת daemon של המערכת, אבל הם נמצאים הגיב אז זה לא יילקחו בחשבון.

      מצד שני, הקוד שבה אתה משתמש כדי לקיים אינטראקציה עם GPIO הוא פיתון, אז אתה חייב להישאר ב- .py ה-script שתופעל מ daemon המערכת שלך, או להשתמש באש כדי לעשות זאת כמו בדוגמה הראשונה במדריך זה.

תשאיר הודעה