Dans le programme, j’ai laissé les instructions telles que Serial.println, très utiles pour déboguer le fonctionnement.
Dans un premier temps, le programme attend un SMS. Lorsqu’il en reçoit un, il mémorise le numéro de l’appelant et le message.
•Si le message est ON_L, la sortie D3 passe à l’état haut pour commander le relais (la lampe s’allume).
•Si le message est OFF_L, la sortie D3 passe à l’état bas pour commander le relais (la lampe s’éteind).
•Si le message est ON_A, l’alarme surveille la zone et si une intrusion est détectée, la sortie D2 passe à l’état haut pendant 10 secondes (le buzzer sonne) et le message « Intrusion » est envoyé.
•Si le message est OFF_A, l’alarme est mise en veille.
Le programme Centrale.ino doit être téléversé dans la LinkIt One, puis insérer le shield Grove avec tous ses modules sur la LinkIt One.
http://ouiaremakers.com/wp-includes/images/media/default.png
Le programme :
#include <LTask.h>
#include <LGSM.h>
#include <TH02_dev.h>
#include "Arduino.h"
#include <Wire.h>
#define Relais1 2
#define Relais2 3
#define Relais3 4
#define Relais4 5
#define Relais_Eau 6
//Declaration des variables
int mode;
int consigne;
int temperature;
int etat=0;
int eau;
char numero[20];
int i = 0;
char message[500];
void setup()
{
Serial.begin(9600); // Initialisation Moniteur serie
Wire.begin(); // Initialisation I2C
TH02.begin(); // Initialisation capteur Temp
pinMode(Relais1,OUTPUT);
pinMode(Relais2,OUTPUT);
pinMode(Relais3,OUTPUT);
pinMode(Relais4,OUTPUT);
pinMode(Relais_Eau,OUTPUT);
digitalWrite(Relais1,HIGH);
digitalWrite(Relais2,HIGH);
digitalWrite(Relais3,HIGH);
digitalWrite(Relais_Eau,LOW);
// Attente GSM
while(!LSMS.ready())
{
delay(1000);
}
Serial.println("GSM OK");
}
void loop()
{
temperature = TH02.ReadTemperature();
Serial.println("Temperature: ");
Serial.print(temperature);
Serial.println(" ");
delay(1000);
// Si SMS recu
if(LSMS.available()) // Check if there is new SMS
{
LSMS.remoteNumber(numero, 20); // display Number part
Serial.println("Un nouveau message est arrive");
Serial.print("Numero:");
Serial.println(numero);
Serial.print("Message:"); // display Content part
while(true)
{
int v = LSMS.read();
if(v < 0)
break;
message[i++] = (char)v;
Serial.print((char)v);
}
Serial.println();
LSMS.flush(); // delete message
LSMS.beginSMS(numero); //Il envoi le SMS au numéro1
LSMS.print("Message recu");
LSMS.print(temperature);
LSMS.endSMS();
if(message[0] == 'O' && message[1] == 'N' && message[2] == '_' && message[3] == 'L')
{
digitalWrite(relais, HIGH); // lamp on
Serial.println("Lampe ON");
LSMS.beginSMS(numero); //Il envoi le SMS au numéro1
LSMS.print("Lampe allumee");
LSMS.endSMS();
}
else if(message[0] == 'O' && message[1] == 'F' && message[2] == 'F' && message[3] == '_' && message[4] == 'L')
{
digitalWrite(relais, LOW); // lamp off
Serial.println("Lampe OFF");
LSMS.beginSMS(numero); //Il envoi le SMS au numéro1
LSMS.print("Lampe eteinte");
LSMS.endSMS();
}
else if(message[0] == 'O' && message[1] == 'N' && message[2] == '_' && message[3] == 'A')
{
validation_alarme=1; // lamp off
Serial.println("Alarme ON");
LSMS.beginSMS(numero); //Il envoi le SMS au numéro1
LSMS.print("Alarme active");
LSMS.endSMS();
delay(5000);
}
else if(message[0] == 'O' && message[1] == 'F' && message[2] == 'F' && message[3] == '_' && message[4] == 'A')
{
validation_alarme=0; // lamp off
Serial.println("Alarme OFF");
LSMS.beginSMS(numero); //Il envoi le SMS au numéro1
LSMS.print("Alarme inactive");
LSMS.endSMS();
}
}
}
Bonjour et Merci bien pour la nature et la clarté de vos tutoriels mon Grand, s'il vous plaît je n'arrive pas à afficher le programme de commande; pouvez vous me l'envoyer s'il vous plaît?
Si possible, mon adresses mail c'est thierry.tein@gmail.com ; je serai également très heureux de bénéficier de certains de vos enseignements.
Cordialement,
Thierry