Gestion à distance avec Arduino UNO + quadband Libélium

Salut

En effet, c'est bien ce module là de chez Libélium et j'ai utilisé leur Tuto pour l'installation ( je l'ai d'ailleurs acheté chez eux car introuvable en Belgique et le service à été impeccable)

par contre leur programme pour envoi de SMS est basé sur un version 0022 alors que je travaille sur 1.0
Au final , j'ai été cherche le programme de leur nouveau modèle http://www.cooking-hacks.com/index.php/3g-gprs-shield-for-arduino-3g-gps.html], et ça fonctionne très bien

au niveau câblage , pas grand chose à dire
Le brochage est tout fait en plaçant le modem sur l'Arduino TX et RX sur les broches 0 et 1 de l'Arduino UNO et la broche 2 pour l'activer
utilisation du port USB de la UNO vers mon PC

Voici ci dessous le programme que j'ai bidoullé , mais ne fonctionne toujours pas pour lire les SMS
Apparamment, les commandes AT genre Serial.println("AT+CMGL=REC UNREAD");doivent être intégrées dans le début du programme ( avant le setup) ce qui paraît bizarre , vu qu'on n'est pas dans la boucle

j'ai fait un essai avec la commande AT et j'ai OK en retour sur mon port série ou même la commande AT+CCLK? , et j'ai la date et l'heure en retour

#include <SoftwareSerial.h>

SoftwareSerial mySerial(12, 13); // RX, TX

unsigned long  start1 ,fin1 ,start2 ,fin2 ,tempo1 ,tempoS1, tempo2 ,tempoS2 ,compt ;
long previousMillis = 0;
int analogPin10 = 10;
int analogPin11 = 11;
const int relais = 9;
const int LEDR = 8;

////////////////
//partie gestion SMS
//////////////////

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[]="+32496573695";  // ********* 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(10,INPUT);
  pinMode(11,INPUT);
  pinMode(9,OUTPUT); 
  pinMode(8,OUTPUT);
  pinMode(onModulePin, OUTPUT);
  switchModule();                    // switches the module ON
  
  for (int i=0;i< 5;i++)
  Serial.print("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(5000); // temps d'attente 
  int FLOTTEURNB = digitalRead(10); 
  int BP1 = digitalRead(11); 
 
  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(10)==LOW)
  {
    start1=millis();
    delay(200); // for debounce
  }
  if (digitalRead(10)==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
    
    delay(100); // for debounce
  }
  else
  {
    digitalWrite(8,LOW);     // ledR
  
    //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(11)==1)
    
            count=0; 
           {
  if (Serial.available())
   Serial.println("AT+CMGL=REC UNREAD");
  Serial.write(Serial.read());
           }
}

Edit de Jean-François : merci de mettre le code entre les balises