Nichoirs ======== [Écocampus](https://ecocampus.ens.fr/) a installé un certain nombre de nichoirs à oiseaux dans l'École et souhaite avoir une estimation de leur utilisation. Ce projet consiste donc à monter un détecteur d'oiseaux à l'entrée de ces nichoirs afin de les compter. Le code est disponible [ici](https://git.eleves.ens.fr/hackens/NichoirsEcocampus). Vue d'ensemble -------------- La détection des oiseaux se fait à l'aide d'un faiseau lunmieux (infrarouge). Tout oiseau passant par l'entrée du nichoirs interrompt ce faiseau, suite à quoi l'heure de passage est notée dans un fichier enregistré sur une carte micro-SD. Le tout est alimenté par une batterie rechargeable par micro-USB (chargeur de téléphone mobile standard). {{:projets:photodiode.jpg}} Montage ------- Le capteur est organisé autour d'un ATmega328p, microcontrôleur utilisé par l'arduino Uno. On bénéficie ainsi de tous les outils de développement associés, ainsi que de l'arduino comme plateforme de prototypage. ![atmega real pin](http://arduino.cc/en/uploads/Hacking/Arduino-To-Atmega8-Pins.png) ![sd card pinout](http://elasticsheep.com/wp-content/uploads/2010/01/sd-card-pinout.png) L'ATmega sert d'intermédiaire entre les différents périphériques : la carte micro-SD et la photodiode permettant la détection du passage de l'oiseau. Le montage comporte en plus de ça l'oscillateur permettant de cadencer l'ATmega (un quartz et deux capacités), ainsi qu'un [convertisseur de tension DC/DC Pololu](https://www.pololu.com/product/2122/) afin d'alimenter **tout** le montage en 3.3 V, ce qui est nécessaire au bon fonctionnement de la micro-SD. Remarques techniques : * La photodiode est branchée sur l'entrée 28 de l'ATmega. (modifiable en début de code) * La carte micro-SD est lue *via le protocole* [SPI](https://fr.wikipedia.org/wiki/Serial_Peripheral_Interface). **Attention** : toutes les cartes micro-SD ne supportent pas ce protocole, bien qu'il soit assez répandu. * Les batteries que nous avons acheté pour ce projet ont une intensité de seuil, qui semble fixée à 50mA, nous avons donc malheureusement du rajouter une résistance entre le +3.3V et la masse... Le code de l'ATmega est disponible sur notre GitLab : https://git.eleves.ens.fr/hackens/NichoirsEcocampus {{:projets:ecocampus.png}} Enregistrement des données ------------------- Les données sont enregistrées sur la carte micro-SD sous la forme de [fichiers CSV](https://fr.wikipedia.org/wiki/Comma-separated_values). **La carte SD doit être formatée en FAT32** (et non en FAT16, comme cela peut-être lu parfois). La bibliothèque Arduino qui lit les cartes SD est un peu basique et n'implémente que le FAT32 et le FAT16. Cependant, le FAT16 ne fonctionne pas correctement, on ne peut pas lire les fichiers avec un ordinateur (ce qui pourrait aussi venir de l'ordinateur sur lequel nous avons testé). À chaque démarrage de l'appareil, un nouveau fichier est créé, appelé `DATAXX.csv`, où `XX` est le plus petit entier tel que ce fichier n'existe pas encore. Par exemple, la première fois, le fichier est `DATA0.csv`. Le contenu des fichiers est très simple : il comporte une unique colonne contenant pour chaque passage d'oiseau le nombre de secondes écoulées depuis le démarrage du capteur. Ce fichier peut être lu depuis n'importe quel éditeur de texte, ou bien ouvert dans un tableur. Rechargement de la batterie et consommation -------------------------- Le montage consomme environ 40mA, un peu plus quand on enregistre des données, un peu moins sinon. Les batteries que nous avons choisi font 5600mAh, ce qui donne donc une autonomie d'environ 6 jours sans charge, beaucoup plus avec la cellule photovoltaïque dont elle est équipée. Attention cependant, elle ne supporte pas la pluie donc il faut éviter de la laisser traîner dehors. Elle peut également être rechargée *via* son port micro-USB, c'est-à-dire à l'aide d'un chargeur de portable standard. **NB** : J'ai bien dit *micro-USB*. Il y a un port USB, mais il est utilisé pour la sortie, pas pour le rechargement. En n'allumant la diode infrarouge que 10ms par cycle, on passe à 8ms de consommation, ce qui représente presque un mois de fonctionnement possible sur batterie. {{:projets:baterie.jpg}} Limitations ----------- On compte le passage de chaque oiseau, et ce indépendemment dans les deux sens. Il faut donc éventuellement retirer une mesure sur deux. L'heure de passage est comptée à partir du dernier redémarrage de l'appareil. Il est donc recommandé de noter l'heure d'initialisation pour pouvoir dater de façon absolue les passages par la suite. À noter également que le _timer_ de l'Arduino a une taille limitée qui fait qu'il revient à zéro tous les 5O jours à peu près (http://arduino.cc/en/Reference/Millis). Il faut donc prendre en compte le décalage à faire lors de la lecture du fichier CSV.