Maison Lego connectée
But du projet
Le but de ce projet est de créer une maison en Lego avec laquelle on peut interagir via une interface web.
Les fonctionnalités souhaitées sont les suivantes :
- Allumer/éteindre une lampe (LED jaune)
- Régler l'intensité d'un feu de cheminé (LED jaune)
- Activer/désactiver une alarme, avec témoin d'activation (LED verte + LED rouge)
- Détecter l'ouverture d'une porte et déclencher l'alarme (Buzzer), si celle-ci est activée
Matériel utilisé
Le matériel suivant sera utilisé :
- Des Legos
- Un Raspberry Pi 2 avec carte MicroSD et clé USB WiFi
- Un clavier, une souris et un écran qui seront branchés au RaspBerry Pi (nécessaire uniquement au début de l'installation)
- Les composants électroniques suivants :
- 4 LEDs (1 verte, 1 rouge et 2 blanches)
- 5 résistances (1 de 1kΩ, 4 de 220Ω)
- 1 buzzer actif
- 1 transistor PNP (8550)
Installation
La première étape sera d'installer et configurer le système d'exploitation Raspbian sur la carte MicroSD.
Installation de Raspbian
Depuis un PC sous Linux, on va copier la dernière version de Raspbian Jessie sur la carte MicroSD, après l'avoir téléchargée et décompressée depuis la page https://www.raspberrypi.org/downloads/raspbian/ :
dd bs=4M if=/home/freddy/Téléchargements/2016-02-26-raspbian-jessie.img of=/dev/sdd
Une fois la carte prête, on va l'insérer dans le Raspberry Pi et le démarrer, après avoir branché tous les périphériques (Clavier, souris, écran et clé USB WiFi)
Configuration de Raspbian
La configuration de Raspbian s'effectue via le menu Preferences/Raspberri Pi Configuration :
- Dans l'onglet System, on va cliquer sur le bouton Expand filesystem
- Dans l'onglet Localisation, on cliquera sur les boutons suivants et on sélectionnera les options adéquates :
- Set Locale :
- Language : Fr (French)
- Country : FR (France)
- TimeZone :
- Europe/Paris
- Wifi Country Code :
- FR France
- TimeZone :
- Europe/Paris
On redémarre ensuite le système et on se connecte au réseau WiFi
On notera l'adresse IP obtenue (192.168.1.23) pour faire le reste de l'installation à distance (Sans clavier/souris/écran branché au Raspberry Pi)
Mise à jour de Raspbian
On se connecte en ssh au Raspberry Pi avec le compte pi (mot de passe raspberry) :
ssh pi@192.168.1.23
On installe ensuite toutes les mises à jour de Raspbian
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
Installation d'Apache
On installe ensuite Apache :
sudo apt-get install apache2
Puis on corrige les droits de la racine du site web :
sudo chown -R www-data:pi /var/www/html/ sudo chmod -R 770 /var/www/html/
On vérifie enfin qu'Apache fonctionne en affichant la page web http://192.168.1.23 depuis le PC Linux (Une page “Apache2 Debian Default Page” s'affiche)
Installation de PHP
On installe PHP :
sudo apt-get install php5
On corrige la page par défaut du site web :
sudo rm /var/www/html/index.html sudo echo "<?php phpinfo(); ?>" > /var/www/html/index.php
Et on vérifie sur la page web http://192.168.1.23 que PHP fonctionne (Une page “PHP Version 5;6;17-0+deb8u1” s'affiche)
Installation de WiringPi
La prochaine étape est d'installer la bibliothèque WiringPi permettant de contrôler les ports GPIO du Raspberry Pi :
git clone git://git.drogon.net/wiringPi cd wiringPi ./build
puis de vérifier que celle-ci est bien installée (on doit obtenir la version de gpio et un tableau listant les ports GPIO du Raspberry Pi) :
gpio -v gpio readall
Copie des fichiers sources
Les fichiers sources (scripts et interface web) sont disponibles ici : https://git.maylug.org/freddy/Maison_Lego_connectee
On copie l'ensemble des fichiers dans les répertoires respectifs /home/pi et /var/www/html (mot de passe “raspberry” lors de la copie)
scp Maison_Lego_Connectee/pi/*.* pi@192.168.1.23:/var/www/html/ scp Maison_Lego_Connectee/html/*.* pi@192.168.1.23:/home/pi/
Montage
Maison
4 diodes sont disposées dans la maison, grâce aux trous des pièces de Lego, qui ont le diamètre adéquat :
- Une Led verte et une Led rouge en façade
- Une Led blanche dans le plafond (éclaire mieux qu'une Led jaune)
- Une Led blanche dans la cheminée (La teinte orange est donnée par des pièces de Lego transparentes)
Raspberry Pi
Utilisation
Lancement des scripts
Depuis une connexion en ssh, on lance le script de l'alarme et celui de la cheminée
python alarme.py & python cheminee.py &
Affichage de l'interface web
Depuis n'importe quel PC sur le même réseau que le Raspberry Pi, on affiche l'interface web en accédant à l'adresse http://192.168.1.23/maison.php depuis un navigateur internet.
Utilisation des boutons
Lorsque l'on clique sur les boutons, cela déclenche les actions suivantes :
- Bouton Lampe : la lampe de la maison s'allume ou s'éteint
- Bouton Alarme : l'alarme s'active (Led rouge qui clignote) ou se désactive (Led verte allumée)
- Bouton Température - : le clignotement de la cheminée s'affaiblit
- Bouton Température + : le clignotement de la cheminée devient plus fort
Test de l'alarme
Lorsque l'alarme est activée, le Led rouge doit clignoter plus vite et le buzzer sonner lorsque l'on appuie sur le bouton (simulation de l'ouverture de la porte)