Projet IMA3 P6, 2015/2016, TD2
Projet IMA3-SC 2015/2016 : Régulation de température
Cahier des charges
OBJECTIFS
Notre projet en système communicant va consister en la réalisation d'un objet connecté. Nous avons comme objectif au cours de ces séances de réaliser un système permettant de réguler à distance la température d'une pièce. Celui-ci permettrait de voir et régler la température sur un site WEB mais aussi d'afficher la température sur des afficheurs 7-segment. Pour simuler l'augmentation de température, on utilisera une résistance chauffante et ainsi pouvoir chauffer en cas de perte de température dans la "pièce". De plus, un ventilateur permettra de diminuer la température.
MATERIEL
Pour ce faire, nous avons besoin de :
- une Raspberry PI
- un capteur de température
- 2 afficheurs 7-segments
- une led pour faire le °
- une Nanoboard
- une résistance chauffante
- ventialteur
Séance 1
Partie électronique
Nous avons dans un premier temps résolu le problème de régulation de température : nous utiliserons un ventilateur pour refroidir et une résistance chauffante pour chauffer. Chacun de ces deux composants sera alimenté via un transistor.
Voici une ébauche de ce à quoi ressemblera notre système final :
Nous avons ensuite pris en main la NanoBoard en faisant en guise d'exercice le tutoriel fourni.
Partie informatique
Du coté informatique, nous avons naturellement voulu commencer par s'imprégner du langage Arduino, afin de pouvoir créer une maquette de notre projet. Le langage Arduino étant assez proche du langage C, la tâche aura été assez rapide.
Dans un second temps,nous nous sommes attelés à la réalisation de la maquette. Pour ce faire, nous avons utilisé deux LEDs pour symboliser le ventilateur et la résistance, ainsi qu'une sonde de température DS18B20 et 4 afficheurs 7-Segments. Le montage aura été assez simple à réaliser, comme le montre la photographie suivante.
Nous avons utilisé deux LEDs, la rouge, branchée sur le port 7 de la RedBoard, représente le ventilateur, la jaune, branchée sur le port 6 de la RedBoard, représente la résistance.
Afin de vérifier que la maquette fonctionne, nous avons aussi évidemment besoin d'un programme Arduino que nous écrirons à la prochaine séance.
Séance 2
Partie électronique
Partie informatique
Lors ce cette seconde séance, nous avons crée le programme Arduino permettant de régir notre maquette. La principale difficulté que nous avons rencontré à résidé dans le fait que la valeur envoyée de la liaison série vers le programme Arduino n'est pas réceptionnée de la même manière lorsqu'on utilise le moniteur série du programme Arduino, ou lorsqu'on utilise le WebSocket. Nous avons donc choisi dans un premier temps de coder une fonction lisant de manière convenable les informations venant du moniteur série, puis nous avons changé une petite partie du programme pour que celui-ci puisse recevoir les consignes de température de la part d'un utilisateur sur internet. Il est important de noter que le programme Actuellement implémenté dans la carte RedBoard est le programme permettant de converser avec un utilisateur via le WebSocket !
On a ici deux fonctions : l'une permet de récupérer la valeur de température et de la convertir en °C, la seconde est la partie principale de notre programme, l'autre permettant de lire la consigne sur la liaison série, puis d'activer l'un ou l'autre des actionneurs en fonction de celle-ci. (Cliquez pour agrandir)
Après la création du programme Arduino, l'étape suivante à consisté à initialiser la Raspberry Pi de manière à pouvoir l'utiliser en réseau depuis n'importe quel poste de la salle de projet. Nous avons tout d'abord connecté le Raspberry Pi à l'ordinateur fixe via un câble série afin de configurer sa carte Ethernet. On utilise le logiciel minicom pour accéder à la Raspberry et l'éditeur de texte nano pour copier les lignes de code suivantes dans le fichier /etc/network/interfaces :
auto eth0 iface eth0 inet static
address 172.26.79.9 netmask 255.255.240.0 gateway 172.26.79.254
On indique aussi le serveur DNS dans le fichier /etc/resolv.conf :
nameserver 193.48.57.34
Nous pouvons maintenant accéder à notre Raspberry Pi via un câble ethernet branché sur le réseau de la salle de projet et la commande ssh pi@172.26.79.5 sur la console de l'ordinateur. On installe ensuite le package libwebsockets-dev qui contient une bibliothèque C de WebSocket qui sera utile par la suite pour la configuration du WebSocket ainsi que le package apache2 qui permet de créer un serveur HTTP sur Raspberry.Dans le répertoire /var/www, nous copions la fichier HTML de notre page web. Le fichier C du WebSocket se trouve /pi/home. On télécharge aussi la bibliothèque Web 2.0 jquery.js sur le site http://jquery.com/ afin de faciliter l'écriture du programme WebSocket.c. On constate que le test effectué avec les fichier donnés en exemple dans le sujet fonctionnent bien. On compile et on exécute le fichier C et on tape l’adresse 172.26.79.5 dans un navigateur web pour accéder à l'interface web. Tout fonctionne correctement, nous pourrons utiliser la Raspberry avec notre WebSocket et notre interface web. La commande d'exécution du serveur WebSocket devra être écrite dans le fichier /etc/rc.local pour qu'il s'exécute automatiquement au démarrage du Raspberry.