A l'occasion des 80 ans de la libération de Rennes, (re)découvrez l'ensemble des
contributions autour de la Seconde Guerre mondiale et de la libération sur Wiki-Rennes.
Fabrication d’une station connectée pour l’observation des oiseaux
Reliée à internet, cette mangeoire prend en photo les oiseaux qui viennent se nourrir, et alimente une base de données permettant de recueillir des informations sur la biodiversité.
Le projet viabird a été imaginé lors de l'événement Europe Remix, un marathon créatif de 2 jours à la maison des associations de Rennes.
Puis le système a été développé par Emilien et Rémi, étudiants d'Epitech, avec le LabFab de Rennes.
Site internet et tutoriel du projet : viabird.eu
Préparation du matériel
Le labfab de Rennes a publié les plans d'une mangeoire en bois pour la découpe laser. Or Thibault Ayache, designer de ces plans, m'indique que la LPO l'a informé d'un problème : les planches de contreplaqué ne sont pas adaptées à une mangeoire à oiseaux, car elles comportent de la colle.
Nous avons donc envisagé de construire la mangeoire avec des planches de bois brut. Nous aurions pu adapter les plans pour faire la découpe avec une CNC, mais nous avons préféré la bonne vieille méthode de nos papis, et faire tout ça à la scie et à la perceuse.
Au niveau des composants, voici la liste :
- raspberry pi 4 model B - 2Go, avec carte micro-SD 32 Go
- détecteur de mouvement MH-SR602 MINI
- Pi caméra 5MP version 1.3
- Pi Hat POE (pour alimenter le raspberry en POE par un cable RJ45)
- Adaptateur d'alimentation POE RJ45
Attention à la caméra ! Clairement nous n'avons pas acheté la bonne. La caméra du raspberry pi est faite pour prendre des photos entre 1m et +. Or nous avons besoin de prendre en photo les oiseaux qui se trouvent à 20cm ! Il existe une technique pour régler le focus de la caméra, en retirant la colle et en tournant la bague, ce qui permet d'avoir une meilleure mise au point. Mais même avec cela, le résultat n'est pas idéal : l'angle de prise de vue est trop serré, le zoom trop avancé... Nous allons essayer de rajouter une lentille devant l'objectif, mais si cela n'est pas mieux nous chercherons une caméra compatible raspberry pi qui soit prévue pour des prises de vue proches.
Jeudi 20 août 2020
On s'attaque à la fabrication en bois. Après la découpe des planches, Bruno et Hector reportent les centres des trous ronds sur les différentes planches pour le perçage des ouvertures.
Perçage : à chacun sa technique. Pierro puis Bruno : le retournement de la pièce à mi-perçage donne une meilleure finition, pas d'éclats de bois. Mais le forêt ne permet pas d'avoir un résultat propre. Deuxième technique à la scie cloche, les résultats sont "nickels".
Les petites mains utilisent la râpe avec énergie pour lisser les trous.
L'idée d'utiliser des tourillons pour fixer les planches entre elles est parfaite ! En plus d'être rapide à mettre en place, cette technique permet de démonter les planches si besoin (et vu le nombre de manipulations et de tests à effectuer sur le raspberry, le démontage a été nécessaire plusieurs fois !)
On s'attaque ensuite à l'installation de Raspbian puis viabird, sur le raspberry pi. En suivant le tuto viabird, aucun problème pour l'installation. Par contre l'exécution du programme renvoyait une erreur. Après plusieurs échanges par mail avec Emilien, développeur de Viabird, le problème a été corrigé et la correction publiée sur github : https://github.com/DunZzzz/viabird.
Jeudi 27 août 2020
Nous avons effectué de nouveaux perçages sur les parois de la mangeoire. En effet, les tests de prises de photos nous ont montré qu'il n'y avait pas assez de lumière qui entrait dans la mangeoire.
Puis nous avons installé le POE Hat. Il s'agit d'une carte qui vient se brancher sur les ports GPIO du Raspberry. Dès le premier test, cela fonctionne ! Nous pouvons maintenant alimenter le raspberry pi directement avec le cable RJ45. Le problème, c'est que les ports GPIO ne sont plus accessibles. On ne peut plus brancher le détecteur de mouvement ! On trouve une solution en rajoutant entre le raspberry et le POE Hat des connecteurs avec des broches plus longues. Ainsi, le dépassement de ces broches permet de brancher les cables du détecteur de mouvement. Il a fallu également remplacer les entretoises entre le raspberry et le POE Hat, car l'espace entre les cartes était plus important.
Finalisations
Accès ssh
Nous avons activé le ssh afin de pouvoir prendre le contrôle du raspberry pi à distance. : https://raspberry-pi.fr/connecter-ssh-raspberry-pi/
Attention, il faut modifier le mot de passe par défaut afin de se protéger contre les éventuelles intrusions : dans le terminal, taper la commande "passwd". Il sera demandé d'entrer le mot de passe actuel (par défaut sur Raspbian, le mot de passe est "raspberry"), puis d'entrer deux fois le nouveau mot de passe
Accéder à viabird depuis l'extérieur
Pour rendre accessible l'application viabird depuis l'extérieur (internet). :
- définir une ip locale fixe pour le raspberry : https://raspberry-pi.fr/ip-locale-fixe/
- sur le routeur, faire une redirection de port depuis un port au choix (on choisit 4000 car le port 80 est déjà utilisé) vers l'adresse ip du raspberry, port 80
- dans la zone dns de notre nom de domaine mqlt.fr, configurer une redirection SRV sur un sous-domaine pour le faire pointer vers le port 4000 de notre box.
- si nous avons tout bien réglé, vous pouvez aller voir nos photos sur viabird.mqlt.fr
Mercredi 7 octobre 2020
Le capteur de mouvement choisi n'a pas de réglage et donc il n'est pas a priori possible - niveau électronique - de régler simplement la sensibilité. Pour l'instant, il est assez sensible et se déclenche quasi en permanence, ce qui rend la solution inopérable et charge inutilement le raspberry.
Pour avancer vers une solution fonctionnelle, nous avons opté pour opérer quelques petites modifications dans un premier temps :
- diminuer la taille des images des captures : au lieu de prendre des pleines résolutions (5 millions de pixel), nous prenons comme choix de prendre des images à 400x300 pour l'instant. Nous pourrions revenir sur ce choix dans un second temps. Pour ce faire, nous modifions le script "tools/picture.sh" en rajoutant "-w 400 -h 300" dans les paramètres de raspistill Cela permet de faire améliorer très grandement le temps de chargement de la page principale des images, sans impacter le reste du code.
- augmenter le temps de latence entre 2 mouvements détectés. Il était réglé sur 3 secondes. Le système pouvait donc prendre jusqu'à 20 images par minutes en cas de détection de mouvements permanents. Nous l'avons porté arbitrairement à 20 seconds en modifiant la variable MOTION_ALARM_DELAY dans "tools/pir.py"
Ces légères modifications permettent d'avoir un fonctionnement amélioré mais il reste encore trop d'images ne correspondant pas à un "vrai" mouvement.
Pour viser une solution pérenne, nous avons prévu de tenter de rajouter un script de reconnaissance d'image (utilisant TensorFlow/OpenCV4) adapté au Raspberry, comme utilisé dans cette solution (et inspiré de cette solution, comme indiqué dans les commentaires), et de passer chaque image capturé par un filtre qui détecterait ou non la présence d'un oiseau. On ne garderait que les images avec des oiseaux repérés par la solution.
Jeudi 8 octobre 2020
Nous avons avancé en rajoutant comme envisagé un "filtre" qui détecte la présence d'un oiseau dans l'image et ne garde que ces images.
Et cela a fonctionné :-)
Le code source de la modification sera bientôt disponible sous github (en lien avec le projet viabird)
Problèmes rencontrés, développement futurs
Les étudiants qui développent le projet vont continuer à le faire évoluer. Dans le futur, il y aura un lien entre le raspberry et le serveur du site viabird.eu avec la carte des mangeoires connectées, la reconnaissance des espèces prises en photo, etc...
Suite à la fabrication et à l'utilisation de cette mangeoire, nous avons aussi quelques suggestions. Et comme on ne sait pas utiliser github, on écrit tout ça ici :
Supprimer des photos
Le programme viabird n'est pas équipé d'une fonction pour supprimer les photos prises. Et pourtant, on a besoin de supprimer toutes les photos test prises lors de l'installation ! En naviguant dans le dossier, on ne peut pas supprimer car les fichiers appartiennent au root. On utilise donc la commande sudo pcmanfm pour ouvrir le gestionnaire de fichiers avec les droits super-admin. On peut alors supprimer les images. Est-il possible de rajouter cette fonctionnalité dans l'application ?
Par exemple, la page des photos pourrait être chargée automatiquement, et les fonctionnalités de suppression ne seraient accessibles que si on s'identifie.
Autre idée : les photos ont comme propriétaire "root". Est-ce qu'elles peuvent être enregistrées avec le propriétaire "pi", ce qui permettrait de supprimer les photos via ftp par exemple ?
Régler la sensibilité du capteur de mouvement
Il semble qu'une photo soit prise à chaque fois que quelqu'un passe devant la mangeoire, ou s'il y a un changement de luminosité. Nous testons en modifiant l'emplacement du capteur, mais est-il possible de régler cela de manière logicielle ?
Améliorer le chargement des pages
Notre mangeoire est accessible à distance via l'adresse viabird.mqlt.fr. Or, le temps de chargement est très long. D'une part, la page d'identification charge une image qui pèse 2.5Mo ! d'autre part, toutes les photos prises par la mangeoire sont chargées à pleine résolution, en une seule fois. Serait-il possible de :
- générer des vignettes, par exemple de 200px de large, qui seraient chargées dans la page des photos, avec un lien pour ouvrir chaque photo en pleine résolution ?
- organiser un affichage multi-pages, pour n'afficher par exemple que les 20 dernières photos, avec des numéros en bas de page pour pouvoir passer aux pages suivantes.