problème commande Shield 3G/ GPRS de cooking hacks

Bonjour à tous,

Je rencontre un problème de commande avec mon shield 3G/GPRS pour Arduino de chez Cooking-hacks :
(voici le modèle https://www.cooking-hacks.com/documentation/tutorials/3g-gps-shield-arduino-raspberry-pi-tutorial/)

Le module se commande via une série de commande AT. Le problème est le suivant:

Lorsque j’envoie des instructions par le moniteur série directement (en ayant téléversé un code vide au paravant), je peux contrôler la carte! (Par exemple si j’envoie "AT+CPIN=“0000”, il me renvoie +CPIN : ready etc…

AT

OK
AT+CPIN"2904"

ERROR
AT+CPIN="2904"

OK

+CPIN: READY

SMS DONE

PB DONE

Donc la piloter de manière manuelle ne pose pas de soucis. Je peux appeler sans problème…

Par contre lorsque je veux automatiser la chose, avec un bout de code, plus rien ne fonctionne. La simple commande Serial.println("AT"); ne renvoie rien.

Je joint le code complet.
Quelqu’un pourrait il me dire ce qu’il ne va pas SVP ?

Un grand merci ! :slight_smile:

Bien à vous,

Benoit

/////////////////////////////Essai envoie SMS////////////////////////////////

char* numeroTelephone = "+33612345678"; //bien entendu ici c'est mon numéro de portable
String message = "Test"; //corps de mon message 
int boutonOn = 2; //bouton pour allumer le shield 
int pinLed = 13; //debbuggage

void setup()
{
  Serial.begin(115200); // initialisation de la communication
  pinMode(boutonOn, OUTPUT);
  switchModule(); //Allumer le feu
  delay(10000); 
  boolean testCom = Commande("AT", "OK", 5000); //test de communication (envoie d'un AT)
  if (testCom == true) // si ça a renvoyé un "OK"
  {
    boolean Cpin = Commande("AT+CPIN=\"2904\"", "OK", 1000); //dévéroullage code pin
    if (Cpin == true)
    {
      boolean smsMode = Commande("AT+CMGF=1", "OK", 2000); //mode sms
      if (smsMode == true)
      {
        String commande4 = "AT+CMGS=\"";
        commande4 += numeroTelephone;
        commande4 += "\"";
        boolean numero_de_tel = Commande(commande4, ">", 1000); //entrer le numéro de tel
        if (numero_de_tel == true)
        {
          String mot = Envoyer();
          Serial.println(mot);
        }
        else if (numero_de_tel == false)
        {
          Serial.println("problèmes d'entrée numéro de telephone cible");
        }
      }
      else if (smsMode == false)
      {
        Serial.println("problème de mise en mode SMS");
      }
    }
    else if (Cpin == false)
    {
      Serial.println("problème de déverrouillage pin attention !!");
    }
  }
  else if (testCom == false)
  {
    for (int f = 0; f<5; f++)
    {
      digitalWrite(pinLed, HIGH);
      delay(200);
      digitalWrite(pinLed, LOW);
    }
    //Serial.println("problème de communicatoin basique"); //si ça a pas marché, ça a pas marché...
  }
}


boolean Commande(String commandeAT, String reponseAttendue, unsigned int expectedTime)
{
  unsigned long top1 = 0;
  String reponse = "";
  char c = "";
  /*while (Serial.available() > 0)
  {
    Serial.read(); //Nettoyer le buffer du microcontrolleur
  }*/
  Serial.println(commandeAT); //envoyer la commande
  top1 = millis(); //top
  while ((millis() - top1) < expectedTime) //attendre la réponse
  {
    if (Serial.available() > 0)
    {
      //Serial.println("2"); //débuggage
      c = Serial.read(); //lire la première lettre qui arrive
      reponse += c; //l'ajouter à la réponse (concaténation)
      Serial.println(reponse); //debuugage
    }
  }
  /*Serial.print("reponse[0]");
  Serial.println(reponse[0]);
  Serial.print("reponseAttendue[0]");
  Serial.println(reponseAttendue[0]);*/
  if (reponse[0] == reponseAttendue[0])
  {    
    Serial.print("reponseAttendue vraie : ");
    Serial.println(reponseAttendue);
    Serial.print(reponse);
    
    return (true);
  }
  else if (reponse != reponseAttendue)
  {
    Serial.print("reponseAttendue fausse : ");
    Serial.println(reponseAttendue);
    Serial.print(reponse);
    return (false);
  }
}

void switchModule()
{
  digitalWrite(boutonOn, HIGH);
  delay(2500);
  digitalWrite(boutonOn, LOW);
}

String Envoyer()
{
  Serial.println(message);
  delay(100);
  Serial.write(0x1A);
  Serial.write(0x0D);
  Serial.write(0x0A);
  return "Done";
}
void loop()
{
  
}