Projet IMA3 P1, 2017/2018, TD2
Sommaire
Projet IMA3-SC 2017-2018
Projet informatique
Cahier des charges
Serre automatisée
Description du système
Afin d'utiliser un serveur web hébergé par Raspberry Pi3 et connecté à un Arduino, nous allons créer une serre autonome. Celle-ci pourra être commandée à partir de l'application web. On pourra alors vérifier que le micro climat de la serre est correct et ainsi intervenir sur les différents actionneurs présents à l'intérieur de la serre.
Matériel nécessaire
- Raspberry Pi 3
- Arduino
- capteur de température/hygrométrie
- caméra Raspberry pi
- Résistance chauffante ?
- Électrovanne
- Capteur de luminosité
- Bande LED
- Afficheur LCD arduino
- Capteur Hydrométrie ?
- Boite
- Ventilateurs
Séance 1
- Mise en place du projet
Au début de la séance, nous nous sommes mis d'accord pour réaliser une serre autonome. Nous avons alors réfléchi aux capteurs que nous pourrions utiliser, ainsi qu'à la répartition du travail.
- Partie Arduino/FPGA
Dans un premier temps, nous nous sommes familiarisé avec Altium en suivant un tutoriel pouvant générer un compteur allumant des Leds.
Nous avons alors décidé, en remarquant la complexité de programmer en FPGA, de d'abord nous attarder sur la partie Arduino pour réaliser dans un second temps certaines commandes en FPGA.
Nous avons alors cherché les différents capteurs disponibles pour réaliser notre serre. Ainsi nous avons pu trouver un ventilateur fonctionnel, un capteur de luminosité, et un capteur 2 en 1 d'humidité et de température. Après avoir fait un bref essai sur le ventilateur, nous nous sommes attardés sur le capteur HTU21D-F (humidité/température).
Nous avons donc étudié la Data Sheet afin de comprendre son fonctionnement
Enfin, nous avons téléchargé une librairie nous permettant de coder très facilement son utilisation.
- Partie Raspberry Pi 3
La séance a été consacré a l'installation de Raspbian ainsi que la configuration du système. Pour cela, la suppression du paquet systemd nous a posé problème car il fallait exécuter une commande non-renseigné sur le wiki. Ceci étant certainement du a la nouvelle version de raspbian qui a apporté des conflits entre les paquets. En poursuivant dans la configuration de la Raspberry. Au redémarrage, le système à refuser de démarrer. Il a donc fallu réinstaller le système complètement et ainsi perdre plus d'une heure de travail. Au second paramétrage, le redémarrage s'est correctement effectué. Le hot-spot wifi apparaît bien. Il reste cependant a configurer le serveur DHCP afin d'autoriser la raspberry Pi a gérer son réseau en attribuant des adresses IP aux différents clients ainsi que l'installation du serveur Web permettant d’héberger l'interface utilisateur qui permettra à l'utilisateur de communiquer avec l'Arduino.
Séance 2
- Arduino
Lors de cette séance, nous avons terminé de coder sur Arduino la récupération des informations des capteurs de température/humidité et de luminosité. De plus, nous avons réalisé le câblage du panneau d'affichage. Ayant quelques problèmes avec la reconnaissance du capteur de température/humidité, nous avons pu afficher uniquement les valeurs du capteur de luminosité, que nous avons d'ailleurs converti directement en Lux.
Le but est désormais de finir le contrôle de l'électrovanne ainsi que du ventilateur grâce à des transistors. Nous aimerions également commencer à s'attarder sur la partie FPGA.
- Raspberry
Lors de la deuxième séance, nous avons continué l'installation de la raspberry qui avait échoué due à l'absence d'une commande dans la documentation. La réinstallation et la configuration se sont ensuite passés sans problème.
Pendant la dernière heure, nous avons essayé d'utiliser les différentes commandes comme l'arrêt du système mais également le redémarrage de la rasberry qui est maintenant possible depuis la page web.
La configuration de la communication série a permis la commande de l'arduino par la raspberry via une interface web. Il est maintenant possible d'utiliser le service web pour allumer les différents services de la serre comme le chauffage, l'arrosage... La commande des actionneurs est alors possible. Cependant, différents problèmes sont parvenus comme la récupération d'informations de la raspberry permettant, entre autres d'afficher la température et l'hygrométrie.
Séance 3
Durant cette séance, nous nous sommes focalisés sur la partie FPGA. L'objectif était de contrôler la vitesse de rotation du ventilateur.
Nous avons donc pensé à utiliser la méthode PWM (Pulse Width Modulation): A fréquence fixe, on modifie la valeur moyenne du signal de sortie en changeant le rapport cyclique (plus le rapport cyclique est grand, plus la valeur moyenne sera grande). On est donc capable de faire varier la tension de sortie et ainsi de choisir une vitesse de rotation.
Dans un premier temps nous avons utilisé le bloc modélisant la PWM disponible sur Altium afin de réaliser les premiers tests. Nous nous sommes alors rendus compte que la tension délivrée par ??? était trop faible : pas plus de 5V alors que le ventilateur tournait entre 5 et 12V. De ce fait, nous avons réalisé en parallèle un circuit électronique capable d'amplifier la tension de sortie tout en respectant la commande.
VOIR PHOTO
Dans un second temps, nous avons essayé de créer un bloc PWM équivalent au bloc déjà existant.
Pour cela, on génère un signal d'horloge qu'on relie à un compteur. On compare cette valeur à une consigne (sur 8 bits). Tant que la valeur est inférieure à la consigne, le signal de sortie est à 1. Dès qu'elle la dépasse, le signal passe à 0. Cela permet de créer un signal dont le rapport cyclique est déterminé par la consigne (utilisateur).
Par exemple, en envoyant 1000 0000 (128) en consigne, on a un rapport cyclique de 128/255 soit environ 50%.
*
On a notamment pu faire quelques tests et constater la variation du rapport cyclique sur un oscilloscope. En l'associant au montage électronique, on a ainsi pu voir que les variations de vitesse du ventilateur.
On aurait pu optimiser notre tension de sortie en la filtrant, afin un signal de sortie lissé (moins de changements brusques de tension).
Pour une sortie petite on obtient un rapport cyclique petit :
Pour une sortie où la moitié des ports est à 1, on obtient un rapport cyclique de 0.5 :
De la même manière, pour une sortie grande on obtient un grand rapport cyclique :