Strumenti Utente

Strumenti Sito


raspberry:gpio

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
raspberry:gpio [2017/01/22 21:48]
stefano creata
raspberry:gpio [2023/04/17 14:25] (versione attuale)
Linea 1: Linea 1:
 +===== prima esperienza =====
 Far lampeggiare un led\\ Far lampeggiare un led\\
 collegare un filo al pin nr.6 e un'altro filo al pin nr.7\\ collegare un filo al pin nr.6 e un'altro filo al pin nr.7\\
 +Al pin numero 7 corrisponde il GPIO 4 e via di seguito. comunque su internet troviamo le corrispondenze\\
 alle estremità dei fili un semplice led\\ alle estremità dei fili un semplice led\\
 si potrebbe benissimo usare una bredboard\\ si potrebbe benissimo usare una bredboard\\
Linea 25: Linea 27:
  </file>  </file>
  
 +eseguire lo script:\\
 +  python codice.py
 +
 +Pazzesco\\
 +installiamo:\\
 +  apt-get install apache2 php5
 +il python l'abbiamo installato prima e anche il modulo per il gpio\\
 +di seguito una pagina in php provvisoriamente in spagnolo ma da perfezionare per attivare un'interfaccia per poter gestire l'accensione o lo spegnimento dei led\\
 +Però ATTENZIONE, per poter ottenere tutto ciò si deve modificare un file che crea una grande vulnerabilità che consente all'utente di apache di eseguire degli script in python\\
 +Se si stanno facendo prove o si è in una rete interna bene, ma attenzione a esporre questa cosa sul web.\\
 +modificare con il seguente comando il file /etc/sudoers
 +  visudo
 +verrà editato il file ed in fondo vanno aggiunte le seguenti righe\\
 +  pi ALL=(ALL) NOPASSWD: ALL
 +  www-data ALL=(ALL) NOPASSWD: ALL
 +
 +ora procediamo con la scrittura dei file\\
 +<file php index.php>
 +<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="Accendi">
 +   <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/html/accendi.py");
 +   echo $a;
 +  }
 +
 +  if ($_POST[apagar4]) {
 +   $a- exec("sudo python /var/www/html/spegni.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
 +
 +?>
 +</file>
 +
 +Naturalmente vengono richiamati dei file in python simili a quello fatto all'inizio\\
 +
 +<file py accendi.py>
 +#!usr/bin/env/ python
 +#Importiamo la libreria e le cambiamo  il nome a GPIO
 +import RPi.GPIO as GPIO
 +
 +#Stabiliamo il sistema di numerazione che vogliamo,
 +#in questo caso il sistema BCM
 +GPIO.setmode(GPIO. BCM)
 +
 +#Configurare il pin GPIO 4 come uscita
 +GPIO.setup(4, GPIO.OUT)
 +
 +#Si accende il led
 +GPIO.output(4, True)
 +</file>
 +
 +ecc..\\
 +<file py spegni.py>
 +#!usr/bin/env/ python
 +#Importiamo la libreria e le cambiamo  il nome a GPIO
 +import RPi.GPIO as GPIO
 +
 +#Stabiliamo il sistema di numerazione che vogliamo,
 +#in questo caso il sistema BCM
 +GPIO.setmode(GPIO. BCM)
 +
 +#Configurare il pin GPIO 4 come uscita
 +GPIO.setup(4, GPIO.OUT)
 +
 +#spengo il led
 +GPIO.output(4, False)
 +</file>
 +
 +ovviamente questi file dovranno essere esposti su un server web ad esempio apache nella cartella /var/www/html \\
 +==== WEBIOPI ====
 +Attenzione, non sono sicuro di questa guida...\\
 +
 +scaricare \\
 +  wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
 +decomprimere \\
 +  tar -xzvf WebIOPi-0.7.1.tar.gz
 +entrare nella directory \\
 +  cd WebIOPi-0.7.1
 +scaricare eventuale patch per il RP3 \\
 +  wget http://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.pathc
 +eseguire la patch \\
 +  patch -p1 -i webiopi-pi2bplus.patch
 +lanciare il setup\\
 +  ./setup.sh
 +e se raspbian è stato installato attraverso il NOOBS fare anche questo:\\
 +  wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service
 +  systemctl start webiopi
 +  systemctl enable webiopi
 +
 +
 +Sito di riferimento:\\
 +http://webiopi.trouch.com/INSTALL.html \\
 +oppure
 +https://github.com/doublebind/raspi \\
 +
 +Per federe se funziona il tutto si dovrebbe eseguire webiopi indicando il file di configurazione ad es:\\
 +  webiopi -d -c /etc/webiopi/config
 +
 +poi si accede con il browser sulla porta 8000\\
 +nome utente: webiopi e la password: raspberry\\
 +il problema è che in questo modo la consolle rimane attiva e vengono visualizzati i messaggi.\\
 +
 +Poi ad un certo punto dopo aver riscontrato tutti questi problemi ho seguito le istruzioni qui:\\
 +https://github.com/thortex/rpi3-webiopi/wiki/HowToBuild \\
 +
 +  sudo dpkg --purge python2-webiopi
 +  sudo dpkg --purge python3-webiopi
 +  find /usr | grep -i webiopi  | sort > ~/webiopi.old.files
 +  tar cjvf ~/webiopi.old.tbz --files-from ~/webiopi.old.files 
 +  cat ~/webiopi.old.files | sort -r | sed -e 's/^/sudo rm -f /;' |  sh 2>/dev/null
 +  cat ~/webiopi.old.files | sort -r | sed -e 's/^/sudo rmdir /;' | sh 2>/dev/null
 +  
 +  git clone https://github.com/thortex/rpi3-webiopi.git
 +  cd rpi3-webiopi
 +  cd dev
 +  ./01_setup-required-packages.sh 
 +
 +  ./03_install_python_dev.sh
 +
 +  ./10_make_deb.sh
 +  
 +Note that remove official WebIOPi python codes/modules/eggs from your system before installing Yet Another WebIOPi+ debian package. You can install either the official WebIOPi or YA-WebIOPi+. \\
 +
 +If you want install WebIOPi+ for python3, select python3 for webiopi daemon/command: \\
 +
 +  webiopi-select-python 3
 +  sudo systemctl daemon-reload
 +  sudo systemctl restart webiopi
 +
 +If you don't have systemd, init.d command is available to start/stop/restart WebIOPi daemon: \\
 +
 +  sudo /etc/init.d/webiopi restart
 +
 +Per disinstallare \\
 +
 +  sudo dpkg --purge python2-webiopi
 +e / o \\
 +
 +  sudo dpkg --purge python3-webiopi
 +
 +===== seconda esperienza =====
 +Prima di iniziare è necessario abilitare le funzioni del gpio tramite il configuratore del raspberry\\
 +  raspi-config
 +abilitare il gpio\\
 +Usare il python per gestire il gpio e i device ad esso collegati\\
 +installare prima di tutto il gestore dei pacchetti del python \\
 +  apt-get install python-pip
 +
 +Poi dovremo installare gli strumenti di sviluppo. Qui installo quelli di Python 3, se preferite Python 2 togliete il 3 dal comando che segue: \\
 +
 +  apt-get install python3-dev
 +
 +Infine, installiamo tramite pip due pacchetti che ci servono: distribute e RPi.GPIO:\\
 +
 +  pip install distribute
 +  pip install RPi.GPIO
 +  
 +  
 +===== terza esperienza =====
 +L'esperienza con NODE-RED è moto bella graficamente ma da approfondire.\\
 +
 +===== altre info =====
 +per il discorso dell'utilizzo del gpio con bash e altro controllare questi due siti:\\
 +http://www.gandotech.net/raspberry-pi-usare-le-linee-gpio/ \\
 +http://www.engeene.it/la-porta-gpio-della-raspberry-pi-1/ \\
raspberry/gpio.1485118113.txt.gz · Ultima modifica: 2023/04/17 14:25 (modifica esterna)