סיכות פאי פטל ו- GPIO: שליטה ה-LED מתוך ממשק אינטרנט

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

בהזדמנות זו שאנו נתקין שרת האינטרנט apache, ללמוד לכתוב קוד ב- PHP ו- HTML כדי לשלוט ה-LED באותו, או כמה, מתוך ממשק אינטרנט.

gpioprogramar0pngהדבר הראשון שעלינו לעשות הוא התקנת שרת האינטרנט המנורה, אז הקלד את הפקודות הבאות בטרמינל:

#Actualizamos los repositorios y el software de la pi
usuario@maquina:~$ sudo apt-get update && sudo apt-get upgrade

#Instalamos LAMP
usuario@maquina:~$ sudo apt-get install apache2
usuario@maquina:~$ sudo apt-get install php5 libapache2-mod-php5
usuario@maquina:~$ sudo service apache2 restart

עכשיו נוסיף כ sudoer למשתמש www-נתונים, . זו לא האפשרות יותר מאובטח אך יש לזכור כי אנחנו עושים מבחן בסביבה מבוקרת; עבור סביבה בייצור אנחנו צריכים לחפש דרך נוספת להפעלת קבצי script פייתון כמו sudoer.

כדי לערוך הרשאות אלה, כתב sudo visudo בטרמינל ובסופו של דבר של הקובץ הוסף לנתונים-www/sudoer, זה חייב להיות כך.

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
www-data ALL=(ALL) NOPASSWD: ALL

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

#!usr/bin/env/ python
## enciende.py
#Importamos la libreria y le cambiamos el nombre a GPIO
ייבוא RPi.GPIO כמו GPIO
#אנו להקים מערכת מספור שאנו רוצים, 
#במקרה זה המערכת BCM
GPIO.setmode(GPIO. BCM)
#קביעת התצורה של ה-pin GPIO 4 כפלט
GPIO.setup(4, GPIO. .)
#הפנינו עורף הובילה
GPIO.output(4, GPIO. גבוהה)
#!usr/bin/env/ python
## apaga.py
#אנחנו לייבא את ספריית ושנה את שמה ל- GPIO
ייבוא RPi.GPIO כמו GPIO
#אנו להקים מערכת מספור שאנו רוצים, 
#במקרה זה המערכת BCM
GPIO.setmode(GPIO. BCM)
#קביעת התצורה של ה-pin GPIO 4 כפלט
GPIO.setup(4, GPIO. .)
#תכבה הנורית
GPIO.output(4, GPIO. נמוך)
#נוכל לשחרר את GPIO
GPIO.cleanup()
#!usr/bin/env/ python
## parpadea.py
#אנחנו לייבא את ספריית ושנה את שמה ל- GPIO
ייבוא RPi.GPIO כמו GPIO

#צורך העיכובים
מועד ייבוא

#אנו להקים מערכת מספור שאנו רוצים, 
#במקרה זה המערכת BCM
GPIO.setmode(GPIO. BCM)

#קביעת התצורה של ה-pin GPIO 4 כפלט
GPIO.setup(4, GPIO. .)

#להדליק ולכבות הובילה 5 פעמים
עבור אני בטווח(0,5):

        GPIO.output(4, GPIO. גבוהה)
        time.sleep(1)(1)
        GPIO.output(4, GPIO. נמוך)
        time.sleep(1)(1)

#נוכל לשחרר את GPIO
GPIO.cleanup()

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

<html>
 <head>
                        <!--index.php--> 
 </head>
 <body>

  <!--GPIO17--> 
  <form action="" method="post">
   GPIO 17&nbsp;<input type="submit" name="encender17" value="Encender">
   <input type="submit" name="apagar17" value="Apagar">
   <input type="submit" name="parpadear17" value="Parpadear">

 <br></br>

  <!--GPIO27--> 
  <form action="" method="post">
   GPIO 27&nbsp;<input type="submit" name="encender27" value="Encender">
   <input type="submit" name="apagar27" value="Apagar">
   <input type="submit" name="parpadear27" value="Parpadear">

 <br></br>

  <!--GPIO4--> 
  <form action="" method="post">
   GPIO 04&nbsp;<input type="submit" name="encender4" value="Encender">
   <input type="submit" name="apagar4" value="Apagar">
   <input type="submit" name="parpadear4" value="Parpadear">

 <br></br>

  <!--GPIO22--> 
  <form action="" method="post">
   GPIO 22&nbsp;<input type="submit" name="encender22" value="Encender">
   <input type="submit" name="apagar22" value="Apagar">
   <input type="submit" name="parpadear22" value="Parpadear">

 </body>
</html>

<?php

// Funciones PHP del pin GPIO 17

  if ($_POST[encender17]) { 
   $a- exec("sudo python /var/www/leds/gpio/17/enciende.py");
   echo $a;
  }

  if ($_POST[apagar17]) { 
   $a- exec("sudo python /var/www/leds/gpio/17/apaga.py");
   echo $a;
  }

  if ($_POST[parpadear17]) { 
   $a- exec("sudo python /var/www/leds/gpio/17/parpadea.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 17


// Funciones PHP del pin GPIO 27

  if ($_POST[encender27]) { 
   $a- exec("sudo python /var/www/leds/gpio/27/enciende.py");
   echo $a;
  }

  if ($_POST[apagar27]) { 
   $a- exec("sudo python /var/www/leds/gpio/27/apaga.py");
   echo $a;
  }

  if ($_POST[parpadear27]) { 
   $a- exec("sudo python /var/www/leds/gpio/27/parpadea.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 27


// Funciones PHP del pin GPIO 4

  if ($_POST[encender4]) { 
   $a- exec("sudo python /var/www/leds/gpio/4/enciende.py");
   echo $a;
  }

  if ($_POST[apagar4]) { 
   $a- exec("sudo python /var/www/leds/gpio/4/apaga.py");
   echo $a;
  }

  if ($_POST[parpadear4]) { 
   $a- exec("sudo python /var/www/leds/gpio/4/parpadea.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 4


// Funciones PHP del pin GPIO 22

  if ($_POST[encender22]) { 
   $a- exec("sudo python /var/www/leds/gpio/22/enciende.py");
   echo $a;
  }

  if ($_POST[apagar22]) { 
   $a- exec("sudo python /var/www/leds/gpio/22/apaga.py");
   echo $a;
  }

  if ($_POST[parpadear22]) { 
   $a- exec("sudo python /var/www/leds/ejecgpio/22/parpadea.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 22

?>

יש לקבץ את זה הכל על אותו גל כאילו יצירת עמוד ב PHP עבור כל אפשרות, כדי להפעיל אותו, נשלחתי אל הדף התסריט (דף ריק); עכשיו להפעיל את הקוד ונשאר באותו עמוד.

סוף סוף אנחנו חייבים להשיג בהיררכיה הבאה בתוך ספריית המשנה של שרת האינטרנט /var / www.

Captura דה pantalla דה 2014-10-05 00:06:52אם אתה רוצה אתה יכול סע אחריי טוויטר, פייסבוק, גוגל +, LinkedIn, או לשתף אותו עם הלחצנים תחת פרסום זה, אם יש לך שאלות או הצעות אנא אל תהססו להגיב.

לעזור לנו להגיע יותר לקוראים Share on LinkedIn
LinkedIn
Share on Facebook
פייסבוק
Tweet about this on Twitter
טוויטר
Share on Google+
גוגל +
Email this to someone
דוא

76 מחשבות על"סיכות פאי פטל ו- GPIO: שליטה ה-LED מתוך ממשק אינטרנט

  1. טוב, לאחר שצפה על ידי אוטומציה ביתית של פתרונות אינטרנט, החלטתי על-ידי המערכת שלך, נראה טוב חשוף.
    למרות זאת, בזכות הניסיון אפס בתים. אני מתעוררות שאלות, הלוואי שאתה יכול לפתור אותם, עשיתי בדיקות רבות ושום דבר, אני לא מבין זה….:)
    בצע את כל השלבים להסביר, לנהל את gpio מטרמינל עם מרק, אך מאז האינטרנט לא לקבל להפעיל את קובץ ה-script פיתון.
    אני צריך לעשות עמוד ב / ואל / www עם html (index. html) אז מגישים אותו אני אפאצ'י. על ידי הצבת האתר שלך כאן, אם אני משאירה אותם כפתורים, אבל אינו מבצע סקריפט php. ב- index. php דף, לא זה לשים בפנים.
    מצטער על אי הנוחות, ותודה.

      • . תודה שהגעתם כל כך מהר, כן עשיתי את הצעד של לתת הרשאות בקובץ זה שמת, . אני מבולבל עם דף index. php, את הספריה GPiO דה cuelgas, לראות רק את הלחצנים ברשת האינטרנט אם הכנסתי אותה /val/www….ב- html!…index. html, אבל אינו מבצע סקריפט PHP. זה אמור להביא את index. php אשר לתלות GPIO מדריך?

        • אם תסתכל מקרוב, index. php /var/www/leds 🙂 נתקע אם עדיין לא עובד, תגובה שוזה נראה.

          אם cuelgas של / var / www/index.php זה יראה בזה כתובת אבל לא עובד כלום:

          http://ipdelapi

          אם העיקרון של /var/www/leds/will עובד כראוי, אבל מאז המסלול הזה:

          http://ipdelapi/leds

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

          • אני שמח שזה עבדת, בסופו של דבר זה היה הנתיב של קובץ ה-script?

            תודה על 🙂 ההערה שלך

          • טוב, יש לי את אותה בעיה כמו הבחור הנ.

            Index. php שלי תולה /var/www/html/index.html
            , אם אקבל את html אינדקס מתוך שם לא מוצג, אבל יש לי בעיה לעשות את זה שם, הבעיה שלי מגיע דופק לחצן ומתי לא יפעל לי את המרשם.

            PD: . נתתי לו הכל והיתרים

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

            J.G.

  2. טוב, לי משרת את רוב העבודה שלך, אתה מכונת!
    אני מנסה להפוך את המערכת אוטומציה כדי לשלוט נוריות מרובים מהאינטרנט אבל יש לי בעיה. אתה לא יכול להקל.
    הנושא הוא כי יש הפעלתי את GPIO אני צריך, להפעיל אותם ולבטל ממסוף, לחבר מחשב אחר המחובר באותה רשת כדי 192.168.X.X/leds/, האתר נראה טוב, התפריט עבור הפקד של הבית נראה מושלם, אבל הנוריות אינם מגיבים, ניסיתי על ידי פעיל ולא סביל, . אני עושה משהו לא בסדר…
    הדבר היחיד שאני יכול להגיד זה שאתה מציג את קוד המקור של הדף רק מציגה את קוד ה-html, ב php לא מופיע, לא להיות אם זה כן או לא.
    לדעתי זה יכול להיות משהו PHP אבל אני לא משוכנע מאוד כי ניסיתי מבחן PHP והוא עושה את זה טוב, . אני נואש חחח

    • היי ג ' ון,

      לי alegro הרבה שלא בהכרח התועלת 🙂 מאמרים שלי תמיד הם בברכה תגובות חיוביות.

      כל קוד PHP בדפדפן מוצג כ- HTML, מאז הפונקציה PHP הוא באותו הזמן, באופן דינמי ליצור דפי אינטרנט המקבלים בדפדפן.

      הפעלת קבצי script פיתון ישירות אם הנוריות מוארים? הדבר הנכון להיות התחלה בדיקות מכאן, קדימה.

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

    • . תודה לך השאלות שלך במשותף, אני שמח שזה סוף סוף אירגן.

      האם שינית משהו בפטל שלך בנוסף לתבנית, כמו למשל microUSB שנאי?

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

        • היי ג ' ון, אני שמחה לקרוא אותך שוב כאן.

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

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

          אתה יכול לראות את הביקורת שעשיתי דגמים B פאי פטל, B + ו- B2 בקישור הבא, עם בדיקות ביצועים מלאים:

          http://www.peatonet.com/raspberry-pi-y-los-pines-gpio-controlando-el-led-desde-una-interfaz-web/

          אני מקווה שתהיה שימושית, נתראה בקרוב 🙂

  4. שלום, יש לי שאלה/בעיה קטנה. אני רוצה להתחבר זמזם במקום לד, אבל אני רוצה לנסות את הראשון עם led כדי ללמוד. יש צורך להפוך של index. html .php אחרים?
    יש לי הובילה מחובר את gpio4, ואין לי on.py התסריט ו off.py אחרים בתוך התיקיה 4. לנחם את העבודה בצורה מושלמת.
    ואני לא יכול לשים את index. html כי היא לא תאפשר לי, . אבל יש רק את הפונקציונליות של כדי הובילה 4.

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

  5. אינטרנט ב- PHP יכול להכיל HTML על-ידי אשר רק צריך של index. php

    אם תשים את הפקודות PHP כדי להפעיל את קבצי ה-script פייתון בקובץ HTML, לא יפעל.

    עכשיו זה עובד מסוף, אתה יכול פשוט להעתיק את index. php של ערכת לימוד זו, לחסל את GPIO אחרות ולהשאיר רק 4 . זה מה אתה משתמש; צריך לעבוד.

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

  6. שלום, אני הולכת לשים עוד שאלה כאן, אם אתה או מישהו אוכל לקחת כבל. יש לי קובץ script זה ועוד כזה למחוק את התיקיה עם התאריך זמן אתחול, מה שמעניין אותי, יודעת איך לעשות את זה. כשזה מגיע לגודל x כמות תופס, נמחק כל או שתפעיל מחדש את rpi גבוהה. תודה ברכה.

    #! /bin/sh
    # /etc/init.d/motionStartup
    #

    # דברים תמיד בורחים
    #/var/lock/motionStartup מגע
    לוגר - s “התסריט motionStartup התקשר”

    # לבצע פונקציות ספציפיות כאשר תתבקש על ידי המערכת
    התיק “$1” ב
    התחל)
    לוגר - s “התסריט motionStartup התחיל”
    חותמת זמן = $(תאריך + %m %d בניתוק %M %S ו- % | של SED / / / g') # ללא רווחים
    לוגר - s “התסריט motionStartup $TIMESTAMP”
    הפקודה mkdir sudo / motiontmp / $TIMESTAMP || לוגר - s “הפקודה Mkdir להתחיל שגיאה”
    למצוא/motiontmp/תנועה /. -סוג f-גודל 0 -print0 - למחוק
    למצוא/motiontmp/תנועה /. -MaxDepth 1 -סוג f | \
    XARGS - אני '{}’ sudo mv {} /motiontmp / $TIMESTAMP
    ;;
    . תפסיק)
    לוגר - s “התסריט motionStartup עצר”
    ;;
    *)
    אקו “השימוש: /etc/init.d/motionStartup {התחל|. תפסיק}”
    יציאה 1
    ;;
    ESAC

    יציאה 0

  7. אם אתה מוסיף את הקו הזה בתחילת התסריט שלך, בכל פעם שתפעיל את התסריט לפני שאתה עושה משהו ימחק את כל התיקיות בתוך/motiontmp /

    sudo rm-rf / motiontmp / *

    טפשמל עגונה לכב של מחק את הקבצים כאשר מגיע לגודל נחוש, אתה יכול לנסות שרשור הפקודה df-h המציגות את השימוש בדיסק של ספריה, או מחיצה:

    df-h /motiontmp

    עם אחר הפקודה שרותים או sed אז שקוראות רק הביטוי הנוגעים להם מגה-בתים או GB בשימוש, סוף סוף עם אם אתה יכול לתכנת החלק כי אם התוצאה תהיה גדול מ- N, הפעל את הפקודה שתוארו לעיל rm.

    • כדי למחוק את התיקיות מושלם, אבל אז…
      מצטער אבל זה כי אני די חדש, הפסדתי, כפי שזה יהיה לדוגמה עבור מתי להגיע אל הספריה / motiontmp / תנועה / 5 גיגס? . ברכות. תודה.

  8. מצטער על כך הודעות רבות עקב אבל אני מגלה על עדכון. משהו וכך יוכל לפעול?

    #! /bin/sh
    # /etc/init.d/motionStartup
    #

    גודל = דו - sh /motiontmp

    לקרוא “גודל”

    אם [ “$גודל” > “2048000K” ]; לאחר מכן

    sudo rm-rf / motiontmp / *

    אחר

    לוגר - s “התסריט motionStartup התקשר”

    # לבצע פונקציות ספציפיות כאשר תתבקש על ידי המערכת
    התיק “$1” ב
    התחל)
    לוגר - s “התסריט motionStartup התחיל”
    חותמת זמן = $(תאריך + %m %d בניתוק %M %S ו- % | של SED / / / g') # ללא רווחים
    לוגר - s “התסריט motionStartup $TIMESTAMP”
    הפקודה mkdir sudo / motiontmp / $TIMESTAMP || לוגר - s “הפקודה Mkdir להתחיל שגיאה”
    למצוא/motiontmp/תנועה /. -סוג f-גודל 0 -print0 - למחוק
    למצוא/motiontmp/תנועה /. -MaxDepth 1 -סוג f | \
    XARGS - אני '{}’ sudo mv {} /motiontmp / $TIMESTAMP
    ;;
    . תפסיק)
    לוגר - s “התסריט motionStartup עצר”
    ;;
    *)
    אקו “השימוש: /etc/init.d/motionStartup {התחל|. תפסיק}”
    יציאה 1
    ;;
    ESAC

    יציאה 0

    fi

  9. שלום זה כזה חבר, מצטער בעקבותייך, הובילה דולקת, אין בעיה, אך כאשר אתה לוחץ על הלחצן לבטל, הבזקים לד, כבר בדוק את הקודים והכל נכון :/ יש לך מושג זה יכול לעשות טעות?

    • שלום Fco, תודה על ההערה שלך.

      ב- web, ישנם שלושה לחצנים:

      הפעל, לכבות, ומהבהבים.

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

      נתראה בקרוב.

  10. שוב שלום לכולם, ספק עוד יותר כדי להוסיף חחח.

    לפני שאני שם ברקע, . זה כדי להפעיל את צליל באזר (באזר) זה צריך להיות לולאה לשים pin 1 ו- a 0 כל הזמן, לא כמו led באותו זמן 1 ובכל זאת.
    הבעיה היא איך לעצור את הלופ הזה להשתמש בו ב- php אינטרנט, מכיוון מסוף על-ידי הוספת בסוף השיחה script & פועל בדירה השנייה ומשאיר את מסוף חופשי להתקשר לקובץ ה-script זה נגמר, דוגמה:

    sonar.py פייתון sudo &

    אלה הם שני תסריטים, מה שהופך את הצליל הזה וזה הופך את מפלזה סונאר:

    מועד ייבוא
    ייבוא RPi.GPIO כמו gpio

    GPIO.SetWarnings(שווא)
    GPI.setMode(GPIO. לוח)
    GPIO.Setup(7,GPIO. .)

    GPIO.output(7,1)
    time.sleep(1)(.3)
    GPIO.output(7,0)
    time.sleep(1)(.3)

    את מפסק:

    מועד ייבוא
    ייבוא RPi.GPIO כמו gpio

    GPIO.SetWarnings(שווא)
    GPI.setMode(GPIO. לוח)
    GPIO.Setup(7,GPIO. .)

    GPIO.output(7,0)
    GPIO.cleanup()

    אבל פשוט כדי לשבש את הראשון עבד. תודה ברכה.

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

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

  12. אם עם Ctrl + C סוגר במסוף, אבל אני מנסה ליישם את זה דרך PHP כמו נוריות פוסט שלך, ואז יהיה חייב להיות דרך אחרת לומר לי.

    • למעלה יש לי את הפתרון להרוג את התהליך שלך עם בש, מציאת שלך PID מן השם של קובץ; אתה רק צריך לשלב אותו באתר PHP עם “exec”.

  13. שלום.
    תודה על ההדרכה.

    יש לי בעיה, אינו מבצע את התסריט, אם בכוונתך להפעיל אותן מהמסוף, אבל מאחר שהדף לא, אני לא יודע שזה יכול להיות. . עשיתי מה התגובה של
    “כתיבה visudo sudo בתחנת האוטובוסים, בסוף הקובץ להוסיף לנתונים-www כמו sudoer, זה חייב להיות כך.”

    אבל שום דבר. מה עוד אני יכול להסתכל?

    Saludos.

  14. שלום, בוקר טוב,
    על כלום, תודה.

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

    איגנסיו מבלגיה