Accueil > GNU/LINUX & RASPBERRY PI > 1ère partie. Commande PIFACE DIGITAL via interface web [Raspberry PI + (...)

1ère partie. Commande PIFACE DIGITAL via interface web [Raspberry PI + lighttpd + CGI + python]

samedi 5 décembre 2015, par thebault

PIFACE DIGITAL

La carte PIFACE DIGITAL se branche sur le connecteur GPIO des cartes Raspberry Pi et offre 8 entrées (dont 4 avec interrupteur) et 8 sorties à collecteur ouvert via ULN2803. On trouve aussi 2 relais avec contacts NO NC reliés sur les 2 première sorties.
La communication entre le Raspi et la PIFACE DIGITAL se fait via le bus SPI
On utilisera un raspberry de type B pour avoir l’accés réseau ethernet.

Montée sur un RASPBERRY PI B, cela donne :

1ère Partie. Installer un serveur WEB sur la carte.

Le serveur lighttpd est plus léger que le traditionnel serveur Apache et offre une interface pour les scripts CGI.

Installation

$ sudo apt-get install lighttpd

Configuration du serveur pour intégrer les scripts python CGI avec "leafpad" ou "nano"

$ sudo nano /etc/lighttpd/lighttpd.conf


OU

$ sudo leafpad /etc/lighttpd/lighttpd.conf

Ajouter "mod_cgi" dans la liste des "server.modules" ainsi que la ligne suivantes :
"cgi.assign = ( ".py" => "/usr/bin/python")"

Exemple de fichier de config :

Texte - 1.1 ko
lighttpd.conf

Pour redémarrer le serveur WEB :

$ sudo /etc/init.d/lighttpd restart

Taper l’adresse du Raspi dans un navigateur pour vérifier le fonctionnement du serveur (la page d’index par défaut s’affiche)

2ème Partie. Donner les droits sur le GPIO et SPI au serveur web

Le serveur web est lancé avec l’uid www-data. Il faut donc que l’utilisateur www-data appartiennent aux groupes "spi" et "gpio" pour que les scripts puissent accéder à l’interface PIFACE.

$ sudo gpasswd -a www-data spi

$ sudo gpasswd -a www-data gpio

Redémarrer le serveur web pour que ces changements soient pris en compte :

$ sudo /etc/init.d/lighttpd restart

3ème partie. L’interface WEB

Dans cette exemple, elle est très simple :

  • Un bouton (flèche gauche) qui commande le relais 1 lorsque l’on appuie sur le bouton de la souris
  • Un bouton (flèche droite) qui commande le relais 0 lorsque l’on appuie sur le bouton de la souris
  • lorsque l’on relache le bouton de la souris, les relais repassent à 0

L’interface sera la suivante :

Il faut maintenant placer le fichier index.html qui définit l’interface dans le répertoire "/var/www".

Ce fichier utilise du code javascript afin de prendre en compte les actions de l’utilisateur (cliques sur la souris).

Le fichier index.html :

Texte - 516 octets
index.html

Il faut maintenant créer le répertoire "/var/www/cgi-bin" dans lequel on placera les 3 scripts "gauche.py", "droite.py" et "stop.py".
Ces trois fichiers doivent être exécutables. Depuis le répertoire "/var/www/cgi-bin" :

sudo chmod 755 *

Les scripts python :


gauche.py

  1. #!/usr/bin/python
  2. import pifacedigitalio as p
  3. p.init()
  4. p.digital_write(1,1)
  5. print "Status: 204 No Content"
  6. print "Content-type: text/plain"
  7. print ""

Télécharger


droite.py

  1. #!/usr/bin/python
  2. import pifacedigitalio as p
  3. p.init()
  4. p.digital_write(0,1)
  5. print "Status: 204 No Content"
  6. print "Content-type: text/plain"
  7. print ""

Télécharger


stop.py

  1. import pifacedigitalio as p
  2. p.init()
  3. p.digital_write(0,0)
  4. p.digital_write(1,0)
  5. print "Status: 204 No Content"
  6. print "Content-type: text/plain"
  7. print ""

Télécharger


Ces 3 programmes contiennent les lignes suivantes. Ce lignes permettent de ne pas modifier l’interface lorsque l’on clique et que les scripts python sont exécutés.

print "Status : 204 No Content"
print "Content-type : text/plain"
print ""

C’est prêt à fonctionner !!

4ème partie. Défaut.

Il y a un laps de temps entre l’action de l’utilisateur (le clique) et l’action sur le PIFACE. Cela vient peut être de CGI qui relance python à chaque appel. Fast CGI améliore peut être le fonctionnement car il ne relance pas python à chaque script mais le garde actif.

AMELIORATION AVEC FASTCGI  : voir l’article "2ème partie. Commande PIFACE DIGITAL via interface web [Raspberry PI + lighttpd + fastcgi + python]"

SPIP | | Plan du site | Suivre la vie du site RSS 2.0
Habillage visuel © digitalnature sous Licence GPL