Tout a commencé par « Papa, il y a une mésange sur la mangeoire ! »
Nous avons une petite mangeoire accrochée à une fenêtre.
Peu fréquentée… Avec des chats dans la maison, les oiseaux ne doivent pas forcément considérer l’endroit comme le plus sûr du quartier.
Mais hier, notre fiston a vu une mésange venir s’y poser.
Il fallait enquêter.
J’avais sous la main un Raspberry Pi 3 avec sa caméra CSI OV5647.
J’ai demandé à Claude de me bricoler un bout de code.
J’ai imprimé un support.
J’ai râlé un peu sur les dépendances Python.
Et hop.
En trois heures, nous avions une caméra automatique pour photographier les oiseaux de la mangeoire.
Bon, naturellement, depuis que le système est en place, Madame Mésange ne vient plus.
Donc j’ai fait les tests avec un faux oiseau au bout d’un manche à balai.
C’est moins élégant que David Attenborough, mais assez efficace pour débugger.


Fabriquer une caméra automatique pour mangeoire
L’idée est simple : - la caméra surveille la mangeoire ; - dès qu’il y a du mouvement, elle prend une photo ; - un petit modèle de reconnaissance d’image essaye de savoir s’il y a un oiseau ; - les photos sont classées dans une galerie web ; on peut consulter tout cela depuis un ordinateur ou un téléphone. Au départ, je voulais uniquement prendre une photo quand un oiseau était reconnu... mais c'est rapide un oiseau. Résultat : la photo arrivait trop tard. Donc j’ai changé l’approche : mouvement détecté → photo immédiate → petite rafale → reconnaissance ensuite → classement bird_ ou motion_ On garde toutes les photos déclenchées par le mouvement, et on tague celles où la reconnaissance pense avoir vu un oiseau.
Ingredients
- Raspberry Pi - j'ai un modèle 3 B
- caméra CSI OV5647 - (qui se connecte directement sur la carte raspberry)
- carte microSD
- alimentation pour Raspberry Pi
- mangeoire
- un faux oiseau sur un manche à balai pour les tests
Instructions
Le Raspberry Pi
Le Raspberry Pi tourne avec Raspberry Pi OS / Debian.
Premier piège : La caméra est une caméra CSI OV5647, donc il ne faut pas la traiter comme une webcam USB : fswebcam ne fonctionne pas correctement.
La commande fiable pour vérifier la caméra est plutôt :
rpicam-still -o /tmp/rpicam-test.jpg
Une fois l’image validée, on peut passer au vrai script Python avec Picamera2.

La détection de mouvement
Le script ne fait pas de reconnaissance d’oiseau en permanence.
Ce serait trop lourd pour un Raspberry Pi 3.
Il fait donc d’abord une détection de mouvement simple :
image précédente
→ image actuelle
→ différence entre les deux
→ si ça bouge assez : déclenchement
Cela fonctionne très bien, sauf quand il y a :
- des feuilles qui bougent ;
- des reflets sur la vitre ;
- un chat qui passe ;
- un papa qui teste le système avec un faux oiseau au bout d’un manche.
Ce qui, reconnaissons-le, est exactement l’usage prévu.
La reconnaissance d’oiseau
Pour éviter les complications avec TensorFlow Lite sur Debian Trixie et Python 3.13, j’ai fini par utiliser OpenCV DNN avec un modèle MobileNet SSD.
Le modèle ne reconnaît pas les espèces, il dit simplement :
bird
Ce qui est déjà pas mal.
Les photos sont ensuite renommées automatiquement :
bird_20260510_153012_burst0_motion8420_conf0.72_bestbird.jpg
Autrement dit :
bird_: il y avait du mouvement et l’IA pense avoir vu un oiseau ;motion_: il y avait du mouvement, mais pas d’oiseau reconnu.
Cela permet de garder tous les essais, tout en repérant rapidement les images intéressantes.
Le support imprimé en 3D
Il fallait simplement tenir la caméra en face de la mangeoire, avec un angle correct, sans que le câble nappe CSI soit trop contraint, fixé par deux ventouses que j'avais en stock.

La galerie web
Comme je me suis très rapidement lassé de récupérer les images à la main en SSH à chaque fois, j’ai ajouté une petite galerie web en Flask.
Elle affiche :
- toutes les photos ;
- leur tag
bird_oumotion_; - le score de confiance ;
- le meilleur objet reconnu (des fois qu'une trottinette volante apparaisse en face du troisième étage)
La galerie tourne directement sur le Raspberry Pi.
Depuis le réseau local, on peut ouvrir :
http://mangeoire-pi.local:5000
Et si Tailscale est installé, on peut même consulter la galerie à distance avec l’adresse Tailscale du Raspberry Pi.

Le code
Le code est disponible ici :
https://github.com/fxfnet/raspberry-pi-birdcam
Il contient :
birdcam_motion.py → détection de mouvement + reconnaissance
gallery/app.py → galerie web
scripts/ → scripts d’installation
systemd/ → services pour lancement automatique
Le projet démarre automatiquement au redémarrage du Raspberry Pi grâce à deux services systemd :
birdcam
birdcam-gallery
Le premier surveille la mangeoire.
Le second affiche la galerie.
Ce qui marche
Le système :
- démarre tout seul ;
- détecte les mouvements ;
- prend une rafale de photos ;
- tague les photos avec ou sans oiseau reconnu ;
- affiche tout dans une galerie web ;
- fonctionne sur un Raspberry Pi 3.
C’est déjà très satisfaisant pour un bricolage de trois heures.
Ce qui reste à améliorer
Comme toujours, une fois que ça marche, on commence immédiatement à voir tout ce qu’il faudrait améliorer.
Quelques pistes :
- ajouter une vraie reconnaissance des espèces ;
- envoyer une notification quand un oiseau est détecté ;
- faire un petit timelapse quotidien ;
- ajouter une page “best of” des meilleures photos ;
- entraîner un modèle sur nos propres images de mangeoire.
Et surtout : faire revenir la vraie mésange.
Parce que pour l’instant, le système fonctionne très bien, mais essentiellement sur un faux oiseau au bout d’un manche à balai.

Un petit projet sympa, parti d’une observation minuscule : « tiens, il y a une mésange sur la mangeoire. »
Et trois heures plus tard, on a :
- une caméra automatique avec détection de mouvement ;
- un peu d’intelligence artificielle ;
- une galerie web ;
- des enfants qui surveillent les prochaines photos d’oiseaux ;
- et des chats probablement très vexés de ne pas avoir été consultés.
Ce n’est pas parfait mais c’est opérationnel.
Et le plus important : on a appris avec les enfants à faire, et que c’était super facile, à partir du moment où on commençait.

Laisser un commentaire