====== 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 "" > /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)
{{ :documentation:MaisonLego1.jpg?200 |}}
==== Raspberry Pi ====
Pour les branchements, un breadboard est utilisé :
{{ :documentation:MaisonLego2.jpg?200 |}} {{ :documentation:MaisonLego3.jpg?200 |}}
Le schéma du montage est le suivant :
{{ :documentation:maison_lego_connectee_bb.png?200 |}}
===== 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.
{{ :documentation:MaisonLego4.jpg?200 |}}
==== 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)