Conoscenze richieste:
- Una buona conoscenza di Php e Mysql
- Le Basi della programmazione Python e le librerie GPIO
- Linux
Premessa
Abbiamo visto nelle lezioni precedenti come lanciare web server non scritto da noi. Webiopi è un buon inizio per chi volesse cominciare a muovere da remoto i propri pin GPIO, ma qualora volessimo fare un progetto più personalizzato ad esempio muovere un robot creando la propria pulsantistica remota oppure disegnare la piantina di casa sul server APACHE e aggiungere un bottone sulla immagine che permette di accendere una luce oppure alzare tapparelle o altre mille idee che passano per la mente questa è la guida che fa per voi. Questo tutorial vi permetterà di avere quindi una guida completa su come alzare un server e fare una applicazione che farà interagire i vostri programmi python con php e html.
LISTA DEI MATERIALI:
Installare e configurare il Web Server LAMP
Prima di tutto accendere la vostra raspberry pi connettetevi alla rete utilizzando o il cavo ethernet o la penna wi-fi. Collegare tutte le periferiche accertatevi che sia tutto pronto e installare la versione occidentalist come distro —> per come fare seguira la sezione apposita sulle guide. Ok una volta svolte le funzioni di routine dovrete aprire il terminale e da riga di comando scrivere:
sudo apt-get update
sudo apt-get install apache2
sudo apt-get install php5
La prima istruzione serve per lanciare il nostro server e la seconda installa il compilatore php sul server quindi nella Rasby.
Semre da shell digitate:
sudo visudo
Si aprirà un file dove dentro dovrete copiare ciò che trovate sotto riportato.
pi ALL=(ALL) NOPASSWD: ALL
apache ALL=(ALL) NOPASSWD: ALL
www-data ALL=PYTHON,NOPASSWD: ALL
Per essere più precisi copiare a fine file il tutto. Ciò servirà per i permessi e non avere problemi di privilegi e far eseguire i vostri script-programmi python senza che viene richieste una password.
ora dirigetevi nella cartella www del vostro sever apache lanciato.
sudo cd /var/www
Come detto sopra qui trovate il file index.html e sempre qui dovremmo aggiungere i nostri file python.
Una volta trovati sotto la directory rinominiamo il file index.html a index.php con questo comando:
sudo mv index.html index.php
Poi usiamo il comando sudo touch led.py per creare la pagina dove andremo a realizzare il nostro programma python per l accensione di un led dalla porta GPIO del raspberry pi.
chmod +x led.py lo trasforma in eseguibile potrebbe essere non necessario
Quindi ricapitolando dovremo avere sotto la directory /var/www due file chiamati index.php e led.py.
Software per accendere e spengere led dalla raspberry pi tramite Server apache
sudo nano index.php – permette di aprire il file
inserite nella pagina aperta il codice sottoriportato:
Vedi pagina index.php:
La pagina index.php permette di creare un bottone tramite html e con un form passare il valore del form alla pagina stessa. l’istruzione if verifica se è stato premuto il bottone entrando nel ciclo che permetterà tramite la funzione shell_exec di eseguire il programma python.
sudo nano led.py inserite questo nella pagina:
#!/usr/bin/env python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO #serve per importare la libreria GPIO import time #importa libreria time per lo sleep di 1 secondo GPIO.setmode(GPIO.BCM) #imposta la modalità per il processore in uso BCM2835 GPIO.setup(7, GPIO.OUT) #imposta la direziona della porta OUT per mandare dati in uscita GPIO.setwarnings(False) #disabilita avvertimenti errori while True: #crea un ciclo infinito GPIO.output(7, True) #imposta livello logico della porta a vero e il led si accende break
Errori che si possono verificare
Una volta copiato i contenuti nei due rispettivi file controllare con precisione il programma led.py se i spazi di tabulazione sono dati con il tasto tab ad esempio nel nostro caso while True: per indentare dovete usare il tasto tab altrimenti dà un sintax error poi ha inizio file di led.py sono necessarie le due istruzioni iniziali che iniziano con # una serve per non avere problemi di riconoscimento dei caratteri ascii e l altra per forza l esecuzione in python.
Ora da qualsiasi pc sotto la vostra rete domestica inserite l indirizzo ip della vostra raspberry pi per chi non conosce l indirizzo da terminale della rasp digitate sudo ifconfig nel nostro caso e 192.168.1.5 vi apparirà la pagina index.php con il vostro bottone premetelo e vedrete accendere il led sulla porta gpio del Raspberry Pi. Vedere sezione progetti trovate la lezione 0 per come collegare hardware.
Il nostro programma permette di accendere solo il led tramite la gpio 18. Ora per spengere aggiungete un altro bottone con il nome spento nella index.php e nella directory /var/www aggiungere un nuovo file con il nome che preferite es. led1.py e impostate la gpio 18 livello low quindi false e tramite la pagina php richiamate la funzione shell_exec per eseguire il vostro programma python.
Buon progetto.