je suis en train de préparer un projet pour envoyé un sms, quand mon alarme(domotique) est actif ou inactif
ensuite j aimerai que l'arduino envoie un sms lorsque j ai une intrusion volumetrique (par contact depuis ma centrale) voir des autres alertes le tout est couplet à ma centrale domotique
j ai un sketch de base pour l'alarme actif ou non qui fonctionne
#include <SoftwareSerial.h>
SoftwareSerial GPRS(9, 10); //declaration du port de communication pour le module 900L tx en 9 rx en 10
boolean state, lastState;
void setup()
{
pinMode(2, INPUT_PULLUP); //contact pour envoie info
state = digitalRead(2);
lastState = state;
GPRS.begin(9600);
Serial.begin(9600);
GPRS.println("AT+CMGF=1");
delay(1000);
}
void loop()
{
while(GPRS.available()) {
Serial.write(GPRS.read());
}
lastState = state;
state(1) = digitalRead(2);
if ( state != lastState ) {
sendSMS();
}
delay(500);
}
void sendSMS() {
Serial.print("Alarme de la maison ");
Serial.println(state ? "mise en marche" : "mise a l arret");
GPRS.println("AT+CMGS=\"+33600000000\"");
delay(500);
GPRS.print("Alarme de maison ");
GPRS.println(state ? "mise en marche" : "mise a l arret");
GPRS.write( 0x1a ); // ctrl+Z character
delay(500);
}
ensuite j ai voulu inserre d'autre contact mais ça m'envoie des sms toute les 500ms >:(
#include <SoftwareSerial.h>
SoftwareSerial GPRS(7, 8);
boolean state, lastState;
void setup()
{
pinMode(2, INPUT_PULLUP);
state = digitalRead(2);
lastState = state;
pinMode(3, INPUT_PULLUP);
state = digitalRead(3);
lastState = state;
GPRS.begin(9600);
Serial.begin(9600);
GPRS.println("AT+CMGF=1");
delay(1000);
}
void loop()
{
while(GPRS.available()) {
Serial.write(GPRS.read());
}
lastState = state;
state = digitalRead(2);
if ( state != lastState ) {
sendSMS();
}
delay(500);
while(GPRS.available()) {
Serial.write(GPRS.read());
}
lastState = state;
state = digitalRead(3);
if ( state != lastState ) {
sendSMS();
}
delay(500);
}
void sendSMS() {
Serial.print("alarme de la maison ");
Serial.println(state ? "marche" : "arret");
GPRS.println("AT+CMGS=\"+33600000000\"");
delay(500);
GPRS.print("alarme de la maison ");
GPRS.println(state ? "marche" : "arret");
GPRS.write( 0x1a ); // ctrl+Z character
delay(500);
Serial.print("alarme volumetrique ");
Serial.println(state ? "en court" : "terminé");
GPRS.println("AT+CMGS=\"+33600000000\"");
delay(500);
GPRS.print("alarme volumetrique ");
GPRS.println(state ? "en court" : "terminé");
GPRS.write( 0x1a ); // ctrl+Z
character
delay(500);
}
je ne suis pas un expert en prog j'essaie juste de comprendre, mais personne dans mon entourage ne peut m'aider
pour m'expliqué le 'pourquoi'
j'essaie sur ce forum si une personne pourrais m'aidé
j ai d'autre sketch mais je ne vais pas tous les mettre
La fonction sendSMS() est pas trop mal, elle envoie un SMS lorsqu'elle est appelée et affiche une trace de ce qu'elle est en train de faire sur la console.
C'est au niveau de la gestion de l'entrée que ce n'est pas très bon, c'est trop "simpliste", une entrée binaire de ce type se gère comme un ou plusieurs boutons.
Bonne lecture ! (cliquez sur les liens soulignés en bleu pour avoir plus de détails)
Et dans le code du sketch de base cette ligne est très douteuse
state[b](1)[/b] = digitalRead(2);
Pourquoi le (1)??
Sinon juste pour la forme dans vos SMS utilisez "en cours" pas "en court" et les accents français font partie de l'ASCII étendu - pas sûr qu'ils s'affichent bien partout
Cool l'histoire des interferences sur les boutons merci beaucoup ,je vais l'utiliser.
J'ai l'impression que je vais en apprendre tout les jours avec l'arduino encore merci
et pour les accents et ' court ' c'est vrais que c'est mieux par contre je n'ai pas vue de (1) apres state
j ai encore beaucoup de travail mais comme ont dit :petit à petit l'oiseau fait son nid.