IMA3/IMA4 2020/2022 P7
Sommaire
Présentation générale
Introduction
Notre projet de mangeoire connectée s’insère dans une optique d’observation et d’étude de la faune aviaire. Une mangeoire classique permet simplement d’observer à un moment précis les animaux, par le biais de nourriture qui permet de les attirer. Notre projet de mangeoire connectée, permettra à ses utilisateurs de visualiser en continu, l’activité extérieure et journalière de ces petits mammifères locaux. Elle permettra également de récolter des données afin d’en apprendre plus sur le mode de vie des animaux sauvages.
Ce projet se déroule pendant les deux premières années de notre cycle ingénieur en Systèmes Embarqués. Il nous permettra de mieux appréhender les travaux de groupes à venir lors de notre stage, ou encore lors de notre carrière professionnelle.
Notre projet se découpe en 2 axes distincts. Premièrement, la partie conception et réalisation de la mangeoire, en prévoyant des espaces de stockage conséquents pour l’eau, la nourriture ainsi que les composants. Deuxièmement, une partie informatique qui regroupe la réalisation d’une IA qui permettra de reconnaître les oiseaux qui se présenteront via leurs aspects physiques, ainsi qu’une partie programmation de cartes électroniques (Arduino et Raspberry Pi) qui commanderont les capteurs.
Contexte
Réalisation d’une mangeoire connectée pour un particulier, capable de fournir des photos et des enregistrements sonores des oiseaux, ainsi que des statistiques de la mangeoire et une détection des niveaux d'eau et de nourriture restants. Ce projet rentre dans le cadre de nos études de par le fait de la partie programmation et réalisation. De plus, la partie supplémentaire concerne l’installation de panneaux solaires permettant de rendre autonome la mangeoire. Ce projet nous permet de nous investir dans de nombreux domaines qui sont : la programmation informatique, l’organisation d’un projet de groupe, l’étude des oiseaux dans leur milieu naturel, la réalisation de différents prototypes, l’étude de différentes solutions.
Description des fonctionnalirés
- Prise de photos et de vidéos (caméra infrarouge 180° pour RaspBerry Pi) - Enregistrement des chants d’oiseaux (micro pour RaspBerry Pi) - Détection du niveau d’eau (sonde de niveau) et de nourriture dans la mangeoire (capteur laser) - Pesée des oiseaux pour évaluer leur état de santé et de potentiellement permettre de différencier les individus (capteur de poids arduino) - Température et humidité (capteur de température et d’humidité) - Utilisation de panneaux solaires pour alimenter les éléments (panneaux solaires) - Reconnaissance des espèces d’oiseaux
Les données seront récupérées au travers d’un réseau wifi puis stockées dans une base de données accessible via le web ou peut être une application. La base du projet sera sur une Raspberry pi.
Matériel
- Un capteur de température qui permettra de recevoir la température ainsi que le niveau d’humidité. Il fonctionne en 3.3V ou 5V et il nécessite une pin de DATA pour transmettre l’information à l'arduino et il fonctionne à l'aide d’un programme coder en C.
- La carte arduino est un des composants majeurs pour notre projet car elle permet grâce à ses ports et son microprocesseur de faire fonctionner les capteurs à l'aide d’un programme codé en C plus précisément en langage arduino. Les fonctionnalités de l’arduino nous permettront d’utiliser les capteurs spécifiques à arduino comme le capteur de pression, les capteurs infrarouge,...
- Une caméra infra-rouge qui fonctionne avec une raspberry. Elle possède une résolution HD. Cette caméra de vision nocturne Raspberry Pi est capable d’obtenir des images statiques de 2592 x 1944 pixels, et prend également en charge l’enregistrement vidéo 1080p 30 images par seconde, 720p 60 images par seconde et 640x480p.
- Des capteurs infrarouge qui permettent de détecter des objets ou des obstacles quand ils passent devant les capteurs. Il fonctionne en envoyant un rayon grâce au transmetteur, renvoyé quand il est confronté à un obstacle vers un récepteur. En fonction du temps d’attente pour recevoir le rayon on peut calculer la distance.
- Un capteur de mouvement PIR qui nous permettra de détecter les mouvements et ce bloque pendant 15 secondes une fois un objet détecté.
- Un capteur de niveau d’eau qui permet lorsqu’il est en contact de l’eau d'envoyer un signal qui mesure l'humidité ainsi que la température ce qui nous permettra de savoir s’il y a de l’eau dans le réservoir. Le capteur fonctionne avec arduino et nécessite une pin analogique.
- La carte Raspberry Pi est également un élément majeur du projet car elle va avoir la même utilité que la carte arduino mais elle utilisera elle d’autres capteurs propre à raspberry, et servira également à la reconnaissance faciale des oiseaux avec une IA.
Travail effectué au S6
Conception informatique
1. Calibrage des différents capteurs sur Arduino
Notre arduino et son code comportent pour le moment 5 capteurs dont deux principaux. Un capteur PIR détecteur de mouvement et un capteur de proximité. Nous avons pour le moment décider de travailler par scrutation. Nous avons essayé de travailler par interruption et avec une fonction d'économie d'énergie sleep. Mais n'ayant pas réussi, nous approfondirons ultérieurement pour la réalisation finale du projet. Nous avons articulé ces capteurs grâce à un code arduino avec la logique suivante (cette structure de code et sa logique nous permettra par la suite de travailler plus facilement par interruption) . Nous savons que lorsque le capteur infrarouge PIR capte un mouvement, il lui faut 15 secondes pour qu’il puisse être réactivable et qu’il est capable de détecter un mouvement jusqu’à 7 m. Ne voulant détecter que les oiseaux qui entrent dans la mangeoire pour cela nous avons couplé ce détecteur à un capteur de distance. Lorsque le détecteur de mouvement reçoit un signal, nous testons pendant 15 secondes si le capteur de distance capte un objet à moins de 15 cm. Si c’est le cas alors nous envoyons sur le port série l’ordre de prendre des photos et d’envoyer les différentes valeurs de nos capteurs (température , humidité, luminosité), et nous vérifions le niveau d’eau et de nourriture .
2. Communication entre raspberry Pi et arduino et prise de photos
La communication entre la raspberry Pi et l’arduino se fait via l’un des ports USB. C Tout d’abord nous importons les bibliothèques qui nous seront utiles. Puis nous configurons et initialisons plusieurs variables que nous utilisons dans la suite du programme. Nous avons firebaseConfig qui nous permet de nous connecter à une base de données en ligne, nous permettant de stocker toutes les informations de chaque oiseau et de chaque capteur en temps réel. Nous initialisons aussi la caméra ainsi que toutes les variables permettant de récupérer les données de l’arduino. “ser” nous permettra de lire sur le port USB.
Ensuite, nous entrons dans une boucle infinie, permettant au programme de tourner en continu. Nous récupérons le nombre d’oiseaux dans la base de données pour rendre tout cela dynamique et pour renommer les photos. Puis nous attendons que l’arduino nous envoie l’information “Photo”, nous permettant de savoir qu’un oiseau s’est posé sur la mangeoire. Nous récupérons les données envoyées par l’arduino, la date et l’heure actuelle et nous prenons une photo avec la caméra qui elle est sauvegardée dans le répertoire courant.
Une fois la photo prise, nous l’enregistrons dans la base de données, dans une partie qui s’appelle “storage” où nous pouvons stocker n’importe quel fichier. Nous récupérons ensuite le lien de la photo et nous créons une variable data contenant les informations de l’oiseau que nous envoyons sur la base de données et que nous retrouverons sur l’application. Pour finir, nous faisons le même processus pour les données des capteurs.
3. Communication entre la raspberry Pi et l’utilisateur
L’utilisateur aura accès aux photos et informations de la mangeoire via une application. Pour faire cela, nous avons décidé d’utiliser Android Studio permettant de créer des applications facilement et d’avoir un accès à une base de données gratuite (firebase).
Voici à quoi ressemble l’application. Pour l’instant, nous pouvons y voir les photos des oiseau, les détails de chaque oiseau et les statistiques de la mangeoire (température, nombres d’oiseaux passés, …), Le but étant à l’avenir d’améliorer cette application avec la mangeoire pour avoir plus de fonctionnalités comme des statistiques plus poussées ou des détails plus précis sur les oiseaux.
4. Lancement automatique
Afin de rendre la mangeoire autonome, nous avons automatisé le lancement de nos programmes. Nous avons utilisé “crontab” qui permet de lancer des programmes automatiquement à un moment précis. Dans notre cas, nous avons lancé le programme 1 minute après le démarrage de la Raspberry Pi afin de lui laisser le temps de se connecter au wifi.
Nous avons donc ajouté cette commande :
@reboot sleep $((60)); /home/pi/.local/lib/python3.7/site-packages python3.7 /home/pi/Desktop/img/envoie_donnee_database.py > /home/pi/logs/logs.txt 2>&1
En cas d’erreur, nous enregistrons les messages dans le fichier logs.txt.
Conception du modèle de mangeoire
1. Maquette 3D sur SketchUp
- Recherche de la disposition optimale
Notre réflexion sur la disposition de chaque élément à débuté par des recherches internet afin d’observer les différentes dispositions déjà réalisées. Après avoir analysé de nombreux projets, nous avions tous en tête quelque chose de relativement concret et similaire : un objet relativement grand pour faciliter la disposition de tous les éléments, nos capteurs et caméra disposés au centre de la mangeoire et face à la zone de breuvage et d’alimentation pour avoir la meilleure visibilité possible. Les réservoirs d’eau et de graines seront donc disposés à gauche et à droite de la mangeoire, les composants auront un espace dédié et relativement éloigné de la réserve d’eau. Le principe de toit s’ouvrant sur le devant et permettant d’une part de remplir les réservoirs mais également d’atteindre l’emplacement des composants. L’utilisation de plexiglas nous permettra de récupérer un maximum de luminosité sur l’objectif de la caméra mais également d’avoir une meilleure visibilité des réservoirs d’eau et de graines.
- Dimensionnement
Dans un premier temps, nous avons commencé par des schémas sur papier libre avec des dimensions qui nous semblaient raisonnables. Celles-ci étaient donc relativement raisonnables étant donné l’utilisation de notre mangeoire. En effet, notre mangeoire sera utilisée dans un jardin de campagne, cela implique qu’il n’y aura que des oiseaux de petites tailles qui viendront se nourrir et s’abreuver. C’est donc pour cela que nous avons revu à la baisse.
En résumé, la base de notre mangeoire mesure 40cm * 50cm. Celle-ci mesure également 30cm de hauteur. Nous avons décidé de réaliser des parois permettant de séparer chaque compartiment : eau, graines, composants et cartes électroniques. Les capteurs sont placés à distances égales afin de rendre plus esthétique visuellement notre mangeoire. La capacité maximum de notre réservoir d’eau sera de 2.6 dm3 et il sera possible de mettre plusieurs kilogrammes de graines dans le réservoir opposé.
2. Réalisation d’une maquette en carton à taille réelle
L’utilisation de bois et de plexiglas nous permettra de réaliser la mangeoire finale. Pour le moment nous avons réalisé, à taille réelle, une mangeoire avec des feuilles de plastique permettant de remplacer le plexiglas. De même pour le carton qui remplace le bois. Ce prototype nous permettra de confirmer nos plans, de vérifier si la visibilité de la caméra est bonne mais également peut-être de réaliser un test par beau temps, pas de pluie pour ne pas abîmer le carton. Afin de faire tenir au mieux chaque pièce de notre mangeoire, nous avons utilisé un pistolet à colle mais également du scotch double face.