Far lampeggiare un led
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
si potrebbe benissimo usare una bredboard
installare il python
apt-get install python
e installare il python rpi gpio
apt-get install python-rpi.gpio
ora editare uno script come di seguito:
#!/usr/bin/python import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) while 1: GPIO.output(4, True) time.sleep(1) GPIO.output(4, False) time.sleep(1)
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
<html>
<head>
<!--index.php-->
</head>
<body>
<!--GPIO17-->
<form action="" method="post">
GPIO 17 <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 <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 <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 <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
?>
Naturalmente vengono richiamati dei file in python simili a quello fatto all'inizio
#!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)
ecc..
#!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)
ovviamente questi file dovranno essere esposti su un server web ad esempio apache nella cartella /var/www/html
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
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
L'esperienza con NODE-RED è moto bella graficamente ma da approfondire.
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/