Pubblicato il

Come fare un proprio WEB server LAMP (Linux-Apache-Mysql-Php-Python) e muovere le Porte GPIO

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.