Bonjour à tous,
Je suis entrain de bosser sur un projet personnel qui permettrait de m'envoyer un message sms quand ma pompe de piscine s'éteint.
J'utiliser une Arduino Uno, un capteur de vibration S-520D et un module gsm SIM 900 tout ceci alimenté grace à une batterie externe.
J'ai réussi à faire fonctionné tout les composant séparément mon problème est au niveau du code.
Je souhaiterais faire une boucle qui vérifie tant que mon capteur vibre donc qu'il fait passer le courant ou non cela signifie que ma pompe est allumée et que tout ce passe bien.
Lorsqu'il y a une coupure de courant mon capteur de vibration ne bouge plus donc il renvoi une valeur 1 par exemple pendant plus de 20-40 secondes, ceci declanche l'envoie d'un sms.
Puis il faudrait juste vérifie si cette valeur reste sur 1 ne pas renvoyer de sms toute les 20 sec cependant si la valeur recommence a changer cela signifierait que le courant est de retour et que le code peu reprendre du debut.
Je ne sais pas si quelqu'un pourrait m'aider à réaliser cette boucle j'ai un peu de mal a traduire mon idée en programme fonctionnel. ^^
Voici ce que j'ai pour le moment mais ne renvoie que les valeur ON quand le capteur ne fait pas passer le courant et OFF quand il le fait passer.
Merci à l'avance pour votre aide.
#include <SoftwareSerial.h>
SoftwareSerial sim900(7,8);
String Data_SMS;
int vib_pin = 12;
int val = 0;
const int ledPin = 13;
void setup()
{
pinMode(ledPin,OUTPUT);
pinMode(12,INPUT_PULLUP);
sim900.begin(19200);
Serial.begin(19200);
Serial.println("Pompe on SN XXXX");
}
void loop() {
delay(2000);// plus
val = digitalRead(vib_pin);
if (val==1) {
Serial.println("Pomp on");
delay(2000);// plus 0
}
else {
Serial.println("Pompe off XXXX");
delay(2000);// plus 0
if (val==1) {
Serial.println("Pompe on XXXX");
}
else {
SendMessage();
}
}
}
void SendMessage() {
Serial.println("Sending Pompe state..."); //Displays on the serial monitor
sim900.print("AT+CMGF=1\r"); // Set the shield to SMS mode
delay(1000);
sim900.print("AT+CMGS=\"+33*********\"\r");
delay(500);
sim900.print("Pompe off 57214");
delay(500);
sim900.print((char)26);//(required according to the datasheet)
delay(500);
sim900.println();
Serial.println("Data Sent.");
delay(500);
}
Voici la reponse:
Pompe on
Pompe off XXXX
Sending Pompe state...
Data Sent.
Pompe on
Pompe on
Pompe off XXXX
Sending Pompe state...
Data Sent.
Pompe off XXXX
Sending Pompe state...
Data Sent.