Arduino gsm sim808

Bonjour, j'aimerai pouvoir envoyer un message entre mon Arduino uno et ma carte sim808. J'ai un programme qui fonctionne il me semble mais je ne sait pas comment définir le code PIN de la carte. J'ai pas envie de forcer pour ne pas la bloquer donc si quelqu'un peut m'aider, je suis preneur ^^.

#include <SoftwareSerial.h>

#include <DFRobot_sim808.h>
#include <sim808.h>

char PHONE_NUMBER[] = "+336********"; // N° de portable à changer

const byte tailleMaxSMS = 60;

DFRobot_SIM808 sim808(&Serial);

void setup() {
  Serial.begin(9600);
  while (!sim808.init()) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println("\nSim808 init success");
  Serial.println("Start to send message ...");

}

void loop() {
  char gprsBuffer[64];
  char messageRecu[tailleMaxSMS];
  char reponse[tailleMaxSMS + 1] ;
  char * s;
  boolean SMSRecu = false;

  if (sim808.readable()) {
    sim808_read_buffer(gprsBuffer, 32, DEFAULT_TIMEOUT);
    s = strstr(gprsBuffer, "+CMTI: \"SM\""); // on recherche dans la réception [+CMTI: "SM"]

    if (s != NULL) { //SMS: $+CMTI: "SM",24$
      int messageIndex = atoi(s + 12);
      sim808.readSMS(messageIndex, messageRecu, tailleMaxSMS);
      SMSRecu = true;
    }
    sim808_clean_buffer(gprsBuffer, 32);
  }


  // ce code pourrait être directement intégré au dessus sans le booléen SMSRecu, je le sépare juste pour lisibilité ou si le SMS ne doit pas être envoyé tout de suite
  if (SMSRecu) {
    Serial.print(F("SMS Recu: ")); Serial.println(messageRecu);
    Serial.print(F("je renvoie un SMS a ")); Serial.println(PHONE_NUMBER);

    // On fabrique le message que l'on veut renvoyer "RECU: <ici le message reçu>"
    size_t memoireOccupee;
    strncpy(reponse, "RECU: ", tailleMaxSMS); // http://www.cplusplus.com/reference/cstring/strncpy/
    memoireOccupee = strlen(reponse); // http://www.cplusplus.com/reference/cstring/strlen/?kw=strlen (pour être générique, je sais bien que "RECU: " fait 6 caractères)
    strncat(reponse, messageRecu, tailleMaxSMS-memoireOccupee); // http://www.cplusplus.com/reference/cstring/strncat/?kw=strncat
    reponse[tailleMaxSMS] = '\0'; // pour être sûr que le MESSAGE est bien formé

    // on l'envoie
    sim808.sendSMS(PHONE_NUMBER, reponse);
  }

}

Bonjour

En général pour se simplifier la vie et éviter le risque de blocage on désactive le code PIN de la carte SIM avant de l'insérer dans un module GSM-GPRS. Le module SIM80x accroche alors tout seul le réseau dès qu'il est alimenté, indépendement du code Arduino et on a un soucis de moins.

Si tu tiens absolument à conserver le code PIN il faut alors se plonger dans la liste des commandes AT du SIM808 pour trouver celle qui permet de renseigner le code PIN... avec un risque de blocage de la carte SIM si quelque chose foire lors de l'éxécution du code....

Ok je vois, je pense que je vais chercher les commandes mais si je ne trouve rien de bien concluant je vais désactiver le code PIN ( c'est pas ma carte sim que j'utilise :confused: ). Merci de ta réponse en tout cas, je reviendrai si j'ai un problème.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.