Bonjour à toutes et à tous
Je travaille actuellement sur un projet de gestion d'un système de pompage alimenté par panneau solaire en site isolé
J'aimerais utiliser un Arduino pour envoyer des messages en cas de panne ou de tentative de vol ( eh oui, on m'a piqué le premier système que j'avais installé), mais aussi pour pouvoir le commander à distance par SMS
Voici ci-dessous le code en cours de développement, et qui fonctionne pour la partie envoi SMS
matériel utilisé: Arduino UNO , logiciel 1.0
comme conseillé sur leur site: ajout d'un condo 220ùF
ajout d'un speaker 8ohm qui aide beaucoup à la mise en route car le modem n'est plus tout à fait passif
Arduino alimenté en 12 V 800 mA (attention si vous voulez alimenter directement le libélium , si vous inversez le Grnd et le 5V il explose ( expérience vécue, heureusement j'en avait commandé 2).
fonctionnement impeccable
Par contre, je n'arrive pas à développer la parie commande à distance
Quelqu'un pourrait-il m'aider pour réaliser la partie concernant la lecture du SMS
Je suppose qu'il faut lire le SMS, le mettre en mémoire, en faire quelque chose, et ensuite vider la mémoire
merci d'avance pour votre aide
voici le code
//Ce programme consiste en une automatisation d'un système de pompage en site isolé alimenté par un panneau solaire
//réalisation: version 27mars 2012
unsigned long start1 ,fin1 ,start2 ,fin2 ,tempo1 ,tempoS1, tempo2 ,tempoS2 ,compt ;
long previousMillis = 0;
int analogPin11 = 11;
int analogPin12 = 12;
const int relais = 9;
const int LEDR = 8;
////////////////
//partie gestion SMS
//////////////////
int led = 13;
int onModulePin = 2; // the pin to switch on the module (without press on button)
int timesToSend = 2; // Numbers of SMS to send
int count = 0;
char phone_number[]="**********"; // ********* Numero à réaliser pour envoi SMS
void switchModule()
{
digitalWrite(onModulePin,HIGH);
digitalWrite(8,HIGH); // ledR
delay(2000);
digitalWrite(onModulePin,LOW);
digitalWrite(8,LOW); // ledR
}
////////////////////////////////////////////////
//////////////////////////////////////////////////
void setup()
{
Serial.begin(9600);
pinMode(11,INPUT);
pinMode(12,INPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
pinMode(led, OUTPUT);
pinMode(onModulePin, OUTPUT);
switchModule(); // switches the module ON
for (int i=0;i< 5;i++){
delay(5000);
}
Serial.println("AT+CMGF=1"); // sets the SMS mode to text
delay(100);
}
////////////////////////////////
///////////////////////////////
void displayResult1()//affichage de la tempo en secondes
{
tempo1=fin1-start1;
tempoS1=tempo1/1000;
}
void displayResult2()//affichage de la tempo en secondes
{
tempo2=start2;
tempoS2=tempo2/1000;
}
void loop()
{
delay(1000); // temps d'attente
int FLOTTEURNB = digitalRead(11);
int BP1 = digitalRead(12);
int LEDR = digitalRead(8);
int relais= digitalRead(9);
Serial.print("\ttempoS1\t ");
Serial.print(tempoS1);
Serial.print("\tcount\t ");
Serial.print(count);
Serial.print("\tFLOTTEURNB:\t");
Serial.print(FLOTTEURNB);
Serial.print("\tBP1:\t");
Serial.print(BP1);
Serial.print("\trelais:\t");
Serial.println(relais);
///////////////////////////////
//gestion tempo 1
//////////////////////////////
if (digitalRead(11)==LOW)
{
start1=millis();
delay(200); // for debounce
}
if (digitalRead(11)==HIGH)
{
fin1=millis();
delay(200); // for debounce
displayResult1();
}
////////////////////////////
//fin gestion tempo1
////////////////////////////
///////////////////////////////
//gestion compteur fonctionnement de la pompe
//////////////////////////////
if (relais==HIGH)
{
start2=millis();
delay(200); // for debounce
tempoS2 = compt;
displayResult2();
}
//if (relais==LOW)
//fin2=millis();
//delay(200); // for debounce
// displayResult2();
////////////////////////////
//fin gestion tempo2
////////////////////////////
if (tempoS1 > 5&FLOTTEURNB==1)//temps d'attente de NH + flotteur en niv bas
{
digitalWrite(9,HIGH); // relais pompe
delay(100); // for debounce
}
else
{
digitalWrite(9,LOW); // relais pompe
}
if (tempoS2 > 10)//comptage de temps de pompage
{
digitalWrite(8,HIGH); // ledR
digitalWrite(13,HIGH); // led13
delay(100); // for debounce
}
else
{
digitalWrite(8,LOW); // led13digitalWrite(10,HIGH); // ledR
digitalWrite(13,LOW); // led13
//delay(1000); // for debounce
}
/////////////////////////////
//envois SMS
////////////////////
if (tempoS1 > 15 & count<timesToSend)//temps d'attente avant envoi alarme de temps niveau bas trop long
{
delay(500);
Serial.print("AT+CMGS=\""); // send the SMS number
Serial.print(phone_number);
Serial.println("\"");
delay(1500);
Serial.print("alarme niveau bas trop long"); // message à envoyer
delay(500);
Serial.write(0x1A); //sends ++
Serial.write(0x0D);
Serial.write(0x0A);
count++;
}
if (digitalRead(12)==1)
count=0;
}