PIN Raspberry PI dan GPIO: Mengendalikan LED dari antarmuka web

Dalam posting terbaru dari seri ini, Kami melihat mereka adalah GPIO pin dan melayani, dan Bagaimana mengontrol kekuatan LED dari terminal; sebelum Anda mulai Kami telah menginstal GPIO perpustakaan untuk Python, dan sirkuit elektronik berkumpul dan bekerja.
Aplikasi web di HTML + PHP + Python untuk menangani beberapa LED melalui GPIO.

Pada kesempatan ini kita akan menginstal Apache web server, dan belajar untuk menulis kode dalam HTML dan PHP untuk mengontrol LED sama, atau beberapa, dari antarmuka web.

gpioprogramar0pngHal pertama yang harus kita lakukan adalah menginstal server web lampu, Jadi ketik perintah berikut dalam terminal:

#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

Sekarang kami akan menambahkan sebagai sudoer untuk pengguna www-data, Ini bukanlah pilihan yang lebih aman, tapi ingat bahwa kita sedang melakukan tes dalam lingkungan yang terkendali; lingkungan dalam produksi kami harus mencari cara lain untuk menjalankan script dengan python sebagai sudoer.

Untuk mengedit izin, menulis sudo visudo di terminal dan pada akhir file Menambahkan www-data sebagai sudoer, Ini harus begitu.

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

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

Untuk setiap pin GPIO Kita perlu membuat sebuah subdirektori dan tiga skrip dengan Python; satu untuk menghidupkan, lain untuk mematikan, dan akhir script untuk membuat kami LED berkedip, Berikut adalah contoh dengan PIN 4.

#!usr/bin/env/ python
## enciende.py
#Importamos la libreria y le cambiamos el nombre a GPIO
Impor RPi.GPIO sebagai GPIO
#Kami membangun sistem penomoran bahwa kita ingin, 
#dalam hal ini sistem BCM
GPIO.setmode(GPIO. BCM)
#Mengkonfigurasi GPIO pin 4 sebagai output
GPIO.setup(4, GPIO. KELUAR)
#Kami menyalakan led
GPIO.output(4, GPIO. TINGGI)
#!usr/bin/env/ python
## apaga.py
#Kita mengimpor Perpustakaan dan mengubah namanya menjadi GPIO
Impor RPi.GPIO sebagai GPIO
#Kami membangun sistem penomoran bahwa kita ingin, 
#dalam hal ini sistem BCM
GPIO.setmode(GPIO. BCM)
#Mengkonfigurasi GPIO pin 4 sebagai output
GPIO.setup(4, GPIO. KELUAR)
#Mematikan dipimpin
GPIO.output(4, GPIO. RENDAH)
#Dan kita membebaskan GPIO
GPIO.cleanup()
#!usr/bin/env/ python
## parpadea.py
#Kita mengimpor Perpustakaan dan mengubah namanya menjadi GPIO
Impor RPi.GPIO sebagai GPIO

#Diperlukan untuk penundaan
Impor waktu

#Kami membangun sistem penomoran bahwa kita ingin, 
#dalam hal ini sistem BCM
GPIO.setmode(GPIO. BCM)

#Mengkonfigurasi GPIO pin 4 sebagai output
GPIO.setup(4, GPIO. KELUAR)

#Menghidupkan dan mematikan dipimpin 5 kali
untuk saya dalam kisaran(0,5):

        GPIO.output(4, GPIO. TINGGI)
        Time.Sleep(1)(1)
        GPIO.output(4, GPIO. RENDAH)
        Time.Sleep(1)(1)

#Dan kita membebaskan GPIO
GPIO.cleanup()

Sekarang adalah waktu untuk membuat halaman rumah kami dalam HTML dan PHP, berisi tombol-tombol yang kita akan tekan untuk menjalankan script Python dari antarmuka web, kemudian kita akan melihat bagaimana hirarki akhir.

<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

?>

Saya telah mengelompokkan itu Semua pada halaman yang sama seolah-olah membuat halaman di PHP untuk setiap pilihan, untuk menjalankannya, saya dikirim ke halaman script (sebuah halaman kosong); Sekarang menjalankan kode dan tetap pada halaman yang sama.

Akhirnya Kita harus mencapai hirarki berikut dalam subdirektori dari web server /var/www.

Screenshot dari 2014-10-05 00:06:52Jika Anda suka, Anda dapat mengikuti saya di Twitter, Facebook, Google +, LinkedIn, atau berbagi dengan tombol di bawah ini publikasi, Jika Anda memiliki pertanyaan atau saran jangan ragu untuk komentar.

Membantu kami untuk menjangkau lebih banyak pembaca Share on LinkedIn
LinkedIn
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on Google+
Google +
Email this to someone
email

76 Thoughts on"PIN Raspberry PI dan GPIO: Mengendalikan LED dari antarmuka web

  1. Bagus, Setelah melihat Internet solusi rumah otomatisasi, Diputuskan oleh sistem Anda, tampaknya juga terkena.
    Meskipun demikian dan karena pengalaman saya nol di lembut. keraguan saya, Saya berharap Anda bisa memecahkan mereka, Saya telah melakukan banyak tes dan tidak ada, Aku tidak mengerti….:)
    melakukan semua langkah-langkah yang menjelaskan dan mengelola gpio dari terminal dengan putty, Tapi karena web tidak dapat mengaktifkan python script.
    Saya perlu melakukan halaman di /val/www dengan html (index.html) Jadi melayani saya apache. Dengan menempatkan website Anda di sini jika tombol Tinggalkan, tetapi tidak melaksanakan naskah php. Di halaman index.php, tidak akan dimasukkan dalam.
    Maaf atas ketidak-nyamannya dan terima kasih.

      • Terima kasih untuk menanggapi begitu cepat, Ya saya lakukan langkah untuk memberikan izin dalam file yang Anda masukkan, Saya bingung dengan halaman index.php, Anda menggantung direktori GPiO, hanya melihat tombol di web jika aku meletakkannya di /val/www….dalam html!…index.html, tetapi tidak melaksanakan naskah PHP. Yang harus meletakkan index.php yang menggantung direktori GPIO?

        • Jika Anda melihat dari dekat, index.php /var/www/leds 🙂 hang jika masih tidak bekerja, Komentar artikel ini dan melihat.

          Jika /var/ www/index.php cuelgas akan melihatnya dalam arah ini, tetapi itu tidak akan berhasil apapun:

          http://ipdelapi

          Jika menggantung /var/www/leds/will bekerja dengan baik tapi karena rute ini:

          http://ipdelapi/leds

          Saya harap ini memecahkan keraguan Anda dan bahwa Anda dapat pindah ke dunia ini begitu menarik.

          • Bagus, Saya memiliki masalah yang sama seperti orang di atas.

            Index.php saya menggantung dari /var/www/html/index.html
            , Jika saya mendapatkan html indeks dari sana tidak ditampilkan, tapi saya tidak punya masalah di sana, Masalah saya datang ketika pulsa tombol dan tidak berjalan saya uang kertas.

            PD: Aku memberinya segalanya dan izin

            Terima kasih atas jawaban Anda.
            Pesan pembuka

            J.G.

  2. Bagus, pekerjaan Anda adalah melayani saya banyak, Anda adalah mesin!
    Saya mencoba untuk membuat sistem otomatisasi untuk mengontrol beberapa LED dari web tetapi saya punya masalah Anda tidak dapat meringankan.
    Tema ini bahwa saya telah diaktifkan GPIO saya perlu, Saya mengaktifkan mereka dan menonaktifkan dari terminal, Menghubungkan PC yang lain terhubung pada jaringan yang sama untuk 192.168.X.X/leds/ dan situs web terlihat baik, menu untuk mengontrol rumah tampak sempurna, Tapi LED tidak merespon, Saya sudah mencoba oleh aktif dan pasif, sesuatu yang saya lakukan salah…
    Satu-satunya hal yang bisa saya katakan adalah bahwa Anda menampilkan kode sumber halaman dan hanya menampilkan kode html, PHP tidak muncul, tidak akan jika itu harus atau tidak.
    Saya pikir itu mungkin sesuatu PHP tapi aku tidak sangat yakin karena saya mencoba tes PHP dan itu baik, Aku putus asa lol

    • Hi John,

      Saya alegro banyak yang mungkin kegunaan 🙂 artikel saya selalu adalah menyambut komentar positif.

      Semua kode PHP dalam browser ditampilkan sebagai HTML, Karena fungsi PHP pada waktu dan secara dinamis membuat halaman web yang dilayani di dalam browser.

      Menjalankan skrip Python langsung jika LED menyala? hal yang benar akan mulai pengujian dari sini dan maju.

  3. Terima kasih untuk menjawab dengan cepat!
    Akhirnya format raspberry lagi, Aku mengikuti semua langkah lagi dan semuanya bekerja dengan indah, tidak menjadi yang bisa gagal.
    Anyway terima kasih untuk perhatian.
    Pesan pembuka

    • Terima kasih untuk berbagi keraguan, Saya senang bahwa itu akhirnya telah mengatur.

      Anda telah mengubah sesuatu dalam Raspberry Anda serta format, sebagai misalnya microUSB transformator?

      • Ya, Ketika saya membelinya aku meletakkan wastafel ke mikro untuk dia dan sehingga akan bekerja lebih cepat kecepatan, tetapi juga tidak ada perubahan yang sangat nyata.
        Itu adalah satu-satunya hal yang mengubah Anda untuk ditaburi parutan.

        • Hi John, Saya senang membaca Anda lagi di sini.

          Pada prinsipnya tidak memiliki yang mempengaruhi Overclock dalam aspek ini, tapi mungkin telah konfigurasi apapun; Sekarang bahwa Anda bekerja dengan pembersihan Raspbian yang kembali untuk memberikan masalah setelah produksi, Sekarang jika yang akan merekomendasikan Anda untuk menemukan akar masalah.

          Perubahan Overclock Anda akan melihat dalam sesuai dengan tugas-tugas tertentu yang membutuhkan banyak daya komputasi, tapi beberapa faktor seperti Ethernet port akan terus menurut leher botol yang menggunakan.

          Anda dapat melihat review saya lakukan Raspberry PI B model, B + dan B2 di link berikut, dengan kinerja penuh pengujian:

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

          Saya berharap Anda akan berguna, melihat Anda segera 🙂

  4. Halo, Aku punya sedikit pertanyaan/masalah. Saya ingin menghubungkan Bel bukan dipimpin, tapi saya ingin mencoba pertama dengan led untuk belajar. Hal ini diperlukan untuk membuat index.html dan .php lainnya?
    Aku punya dipimpin terhubung ke gpio4, dan aku punya script on.py dan off.py lain di dalam folder 4. Konsol bekerja sempurna.
    dan tidak dapat menempatkan index.html karena itu tidak akan membiarkan saya, tapi hanya untuk memimpin fungsi 4.

    Saya berharap bahwa Anda dapat membantu saya, Saya telah mengunjungi profil facebook Anda dan saya berharap suatu hari nanti kedua Raspberry Pi seperti yang Anda tahu. Salam dan terima kasih.

  5. Web di PHP mungkin mengandung HTML oleh yang hanya perlu index.php

    Jika Anda memasukkan perintah PHP untuk menjalankan skrip python dalam HTML file, tidak akan berjalan.

    Sekarang bahwa terminal bekerja, Anda dapat hanya menyalin index.php tutorial ini, menghilangkan GPIO lain dan hanya menyisakan 4 Itulah apa yang Anda gunakan; dan itu harus bekerja.

    Jika Anda tidak dapat mengedit file di/var/www pasti akan terjadi dengan izin, Dalam tutorial ini adalah solusi dan harus bekerja, Jika itu tidak komentar dan saya akan mencoba untuk memberikan Anda sebuah bantuan.

  6. Halo, Aku akan mengambil untuk menempatkan pertanyaan lain di sini, Jika Anda atau seseorang yang bisa membawa kabel. Aku punya script ini dan ingin untuk menghapus folder dengan tanggal sekali reboot, dan apa yang menarik minat saya, tahu bagaimana melakukan itu ketika datang ke x-ukuran jumlah hasil tangkapan, Semua dihapus atau restart RPi. Ucapan terima kasih.

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

    # Beberapa hal yang selalu menjalankan
    #sentuhan /var/lock/motionStartup
    logger - s “Script disebut motionStartup”

    # Melaksanakan fungsi-fungsi khusus bila diminta oleh sistem
    kasus “$1” dalam
    Mulai)
    logger - s “Skrip motionStartup mulai”
    TIMESTAMP = $(tanggal + %m %d %H %M %S dan % | SED's / / / g') # Tidak ada ruang
    logger - s “Skrip motionStartup $TIMESTAMP”
    sudo mkdir/motiontmp / $TIMESTAMP || logger - s “Mkdir kesalahan mulai”
    menemukan/motiontmp/gerakan /. -tipe f - ukuran 0 -print0 - menghapus
    menemukan/motiontmp/gerakan /. -MaxDepth 1 -tipe f | \
    XARGS - SAYA '{}’ sudo mv {} /motiontmp / $TIMESTAMP
    ;;
    Stop)
    logger - s “Skrip motionStartup berhenti”
    ;;
    *)
    echo “Penggunaan: /etc/init.d/motionStartup {Mulai|Stop}”
    keluar 1
    ;;
    ESAC

    keluar 0

  7. Jika Anda tambahkan baris ini pada awal skrip, setiap kali Anda menjalankan script sebelum Anda melakukan apapun Anda akan menghapus semua folder dalam motiontmp /

    sudo rm - rf/motiontmp / *

    Berkaitan dengan menghapus file ketika Anda mencapai ukuran tertentu, Anda bisa mencoba menggabungkan perintah df - h menampilkan penggunaan disk direktori, atau partisi:

    DF - h /motiontmp

    Dengan perintah lain seperti wc atau sed sehingga itu hanya membaca kalimat mengacu MB atau GB di