Projet pluviomètre

Bonjour,

Je suis élève de terminal STI2D et je doit effectuer un travail qui consiste à créer un prototype de pluviomètre en utilisant arduino.

Mes objectifs sont les suivants:

  • Capter la pluviométrie et l'afficher en temps réel sur le shield lcd(en mm)

  • Afficher la pluviométrie du jour sur le shield lcd (en mm)

  • Mémoriser la pluviométrie journalière dans la mémoire de l'arduino et pouvoir accéder à cette mémoire (des 7 derniers jour seulement) via le lcd et ses joysticks.

Le pluviomètre est un pluviomètre à auget basculeur (capteur ILS), que je simule à l'aide d'un bouton poussoir pour le moment.

L'état de mon projet est que j'arrive à acquérir les impulsions du BP, et a afficher la pluviométrie en temps réel, les problèmes que je doit résoudre sont:

  • si l'état du bouton poussoir est inchangé pendant x minutes, on remet la pluviométrie en temps réel à zéro (car cela signifie qu'il ne pleut plus) en veillant à ce qu'elle est été ajoutée à la pluviométrie du jour.

  • Toute les 24h je stocke la valeur de la pluviométrie du jour dans la mémoire, valeur qui est constamment incrémenter par la pluviométrie en temps réel.

  • J'accède à ces valeurs que l'on peut appeler "historique" via les joysticks

Je n'attend évidement pas le programme fait, mais des pistes de recherches correspondant aux problèmes que je rencontre, ou bien des alternatives/ correction à mon projet.

Ci dessous le code actuel de mon programme ainsi que le cablâge et le LCD.

#include <LiquidCrystal.h>

const int buttonPin = 2;
int buttonState = 0;
int comptage = 0;
float volumejour = 0;
float volume = 0;
LiquidCrystal lcd(8,9,4,5,6,7);

void setup(){
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
  lcd.begin(16,2);
}
void loop(){
  
  buttonState = digitalRead(buttonPin);
  if (buttonState == 1){
    comptage = comptage+1;
    Serial.println ("Comptage");
    Serial.println (comptage);
    volume = comptage * 0.27;
    Serial.println ("Comptage");
    Serial.println (volume);
    lcd.setCursor(7, 0);
    lcd.print(volume);
    lcd.setCursor(14, 0);
    lcd.write("mm");
    lcd.setCursor(0, 0);
    lcd.write("Direct");
  if (buttonState == 1){
    volumejour = volume;
    Serial.println ("Comptage");
    Serial.println (volumejour);
    lcd.setCursor(7, 1);
    lcd.print(volumejour);
    lcd.setCursor(14, 1);
    lcd.write("mm");
    lcd.setCursor(0, 1);
    lcd.write("Jour");
    while (digitalRead(buttonPin) == HIGH){}
    }
  }
}

  • si l'état du bouton poussoir est inchangé pendant x minutes, on remet la pluviométrie en temps réel à zéro (car cela signifie qu'il ne pleut plus) en veillant à ce qu'elle est été ajoutée à la pluviométrie du jour.

--> il vous fait donc un timer au sein de votre loop(). regardez l'exemple "blink without delay" (ou en français le tuto d'eskimon sur l'utilisation de millis()
)

  • Toute les 24h je stocke la valeur de la pluviométrie du jour dans la mémoire, valeur qui est constamment incrémenter par la pluviométrie en temps réel.

vous stockez cela où? carte SD? EEPROM ? là encore ça peut se faire avec une gestion du temps comme pour les x minutes. vous pouvez aussi rajouter une horloge temps réel (rtc ds3231 par exemple) à votre montage qui vous donne la "vraie date et heure" et qui peut vous alerter tous les jours à heure fixe par exemple.