1. Arduino¶
1.1. Ajouter un utlisateur au groupe Arduino¶
sudo usermod -a -G dialout <username>
1.2. Eviter les problèmes de téléversement du syle avr_dude()¶
Si par exemple un message d’erreur du style stk500_recv(): programmer is not responding apparaît alors que votre arduino est branché sur ttyACM0 et que cela s’affiche correctement essayer
sudo chmod a+rw /dev/ttyACM0
1.3. Éviter de compter la pluie plusieurs fois :)¶
Les problèmes rencontrés avec les interrupteurs ILS et Arduino sont de deux types. Quand l’auget du pluviomètre bascule l’ILS semble s’ouvrir et se fermer plusieurs fois d’affilée en très peu de temps si bien que
pour un même basculement le compteur de l’Arduino s’incrémente plusieurs fois,
l’Arduino enregistre plusieurs basculement.
D’un point de vue mécanique il est probable soit que la bascule est lente ou hésitante soit que l’aimant est un peu gros. toujours est-il qu’il faut calmer l’Arduino. Au début j’ajoutais un délais dans la fonction appelée par l’interruption mais j’ai fini par comprendre que delay
ne fonctionnait pas dans une fonction appelée par un interrupt
. seul millis
fonctionne. Le delay peut être utilisé pour résoudre le problème des enregistrements multiples mais dans la fonction principale.
if (pcount > 0){ // test si pCount a bien été appelée
/*
écrit les données sur la carte (voir code complet)
*/
pcount=0; // remise à zéro du compteur
delay(500); // délais empêchant un second déclenchement intempestif
}
Pour les incrémentations il faut donc utiliser une autre technique le « debouncing ». l’usage d’une variable static a cet avantage que t0 garde sa dernière valeur en mémoire. donc la première fois ce sera 0 la suivante ce sera t etc… Ici on filtre donc tout signal qui se déclenche à moins de 100 ms du précédent.
void pCount()
{
static unsigned long t0 = 0;
unsigned long t = millis();
if (t - t0 > 100) //choix du seuil de debouncing ici 100ms
{
pcount++;
}
t0 = t;
}
1.4. MKR et batterie:¶
faire attention à enlever le while (!serial) {} qui empêche le démarrage sur batterie
sur le site d’Arduino le + est à droite dans l’exemple alors qu’il est dit être à gauche. à Vérifier
on ne peut pas utiliser une alim USB classique car l’arduino ne tire pas assez de courant et l’alim reste en rideau
Tester en utilisant un sunflower.
mesurer le courant !
pour une discussion: https://forum.arduino.cc/t/lowest-consumption-issue/479483
Sources
Dernière modification le 2024-03-12