====== 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)