But du projet :
Détection de l’état d’une porte (ouverte ou fermée), envoi d’un SMS d’état et allumage d’une LED. Possibilité de débrancher à distance cette détection et de connaitre l’état.
/*
*****************************************
SMS receiver and light on or off a LED
****************************************
This sketch, for the Arduino GSM shield, waits for a SMS message
from a specific phone number then light on or off or send the LED
Status.
Circuit:
* GSM shield attached to and Arduino
* SIM card that can receive SMS messages
* Led plug in pin 13
* Contact Normaly Close NC on pin 7
*/
//-- include the GSM library
#include <GSM.h>
//-- PIN Number for the SIM and Your Phone Number
#define PINNUMBER ""
#define MYPHONE "+33644051254"
//-- initialize the library instances
GSM gsmAccess;
GSM_SMS sms;
//-- Array to hold the number a SMS is retreived from
char cSenderNumber[20],charBuf[20],c;
String sNumber="", sMsg, sMessage="", sSmsNumber="";
int dp=0,dpLed=0;
//-- Led PIN
int led = 53;
int inPin = 51; // input pin (for contact)
int val = 0; // variable for reading the pin status
boolean contactstatus = true; //Current contact Status true=Open, false=Close
boolean dpAlarme = true; //Current alarme status
boolean dpPorte = false; //Current door status
//-- SetUp
void setup()
{//-- initialize led pin output, contact pin input
pinMode(led, OUTPUT);
pinMode(inPin, INPUT);
//-- initialize serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("SMS Messages Receiver");
// connection state
powerUpOrDown();
boolean notConnected = true;
// Start GSM connection
while(notConnected)
{if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
Serial.println("Waiting for messages");
}
//-- Sketch
void loop()
{//-- Detect the contact status
val = digitalRead(inPin); // read input value
if (val == HIGH) // Contact open
{ if (!contactstatus) //-- If contact was closed
{digitalWrite( led, HIGH);
dpLed=1;
//Serial.println("Porte ouverte");
if (dpAlarme)
{sSmsNumber=MYPHONE;
sMessage="La porte est ouverte";
dpPorte=true;
SendSms();
}
contactstatus=true;
}
}
else if (val == LOW) // Contact close
{ if (contactstatus) //-- If contact was open
{digitalWrite( led, LOW);
dpLed=0;
//Serial.println("Porte Fermée !");
if (dpAlarme)
{sMessage="Porte fermee";
dpPorte=false;
sSmsNumber=MYPHONE;
SendSms();
}
contactstatus=false;
}
}
//--If there are any SMSs available()
if (sms.available())
{Serial.println("Message received from:");
//-- Get remote number
sms.remoteNumber(cSenderNumber, 20);
sNumber=cSenderNumber;
Serial.println(sNumber);
//-- Read message bytes and print message
while(c=sms.read())
{sMsg=sMsg+c;}
Serial.println(sMsg);
dp=0;
//-- If it's Your Phone Calling
if(sNumber.equals(MYPHONE))
{ sSmsNumber=MYPHONE;
sMsg.toUpperCase();
if (sMsg=="ON")
dp=1;
if (sMsg=="OFF")
dp=2;
if (sMsg=="?")
dp=3;
switch (dp) {
case 1 :
{digitalWrite( led, HIGH);
dpLed=1;
contactstatus=false;
dpAlarme=true;
break;}
case 2 :
{digitalWrite( led, LOW);
dpLed=0;
dpAlarme=false;
break;}
case 3 :
{if (dpAlarme)
{sMessage="L'alarme est active. ";}
else
{sMessage="L'alarme n'est pas active";}
if (dpPorte)
{sMessage=sMessage+"et la porte est ouverte.";}
else
{sMessage=sMessage+"et la porte est fermee.";}
SendSms();
break;
}
case 0 :
{sMessage="Erreur, tapez ON, OFF ou ?, merci !";
SendSms();
break;}
}
}
else
{//-- Sender UnKnown
sMessage="Message '"+sMsg+"' du "+sNumber;
sSmsNumber=MYPHONE;
SendSms();
delay(1000);
sSmsNumber=sNumber;
sMessage="Je ne vous connais pas !";
SendSms();
}
Serial.println("\nEND OF MESSAGE");
sMsg="";
sNumber="";
//-- Delete message from modem memory
sms.flush();
Serial.println("MESSAGE DELETED");
delay(1000);
}
}
//-- Sending message function
void SendSms()
{sSmsNumber.toCharArray(charBuf, 20);
// send the message
sms.beginSMS(charBuf);
sms.print(sMessage);
sms.endSMS();
delay(1000);
}
void powerUpOrDown()
{
pinMode(9, OUTPUT);
digitalWrite(9,LOW);
delay(1000);
digitalWrite(9,HIGH);
delay(2000);
digitalWrite(9,LOW);
delay(3000);
}
Bonsoir, je me suis inspire de votre code pour me faire une alarme maison.
Je voudrais rajouter des portes, des capteurs et envoyer des SMS d’etat pour chaques capteurs, auriez vous une piste ?
Bonjour,
Le code ci-dessus est une bonne base pour bâtir un système d’alarme. La connexion des capteurs est effectuée selon la méthode décrite à la page https://andrologiciels.wordpress.com/arduino/interrupteur/
J’ai en projet la rédaction d’un article sur la construction d’une alarme avec PIR / détecteurs, SMS, sirène, diffusion de message vocal et identification par RFID
Bonjour, avez vous avancez dans votre projet d’alarme ?
Bonjour
avec quelle puce de gsm fonctionne ce sketch
Bonjour
avec quelle puce de gsm fonctionne ce sketch
Cela convient pour une 800l