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