Partage
  • Partager sur Facebook
  • Partager sur Twitter

Code envoyer et recevoir sms arduino

    11 mai 2018 à 9:34:08

    Bonjour,

    J'ai fait un code pour envoyer un sms depuis arduino, il marche niquel, j'ai également un code pour recevoir un sms, il marche niquel aussi, mais j'essaye de rassembler les deux afin de recevoir et envoyer un sms à partir du même code, mais cela n'aboutit pas et il ne fonctionne pas, mais je ne pense pas être loin, si vous pouviez corriger mon code, merci

    le voici :

    /*************************** partie declaration ********************************/
    //GSM library
    #include <GSM.h>
    
    //Code PIN de la carte SIM 
    #define PINNUMBER "3970"
    
    // initialiser les bibliothèques
    GSM gsmAccess;
    GSM_SMS sms;
    
    //Tableau pour contenir le numero de téléphone
    char senderNumber[20];
    
    /***************************************** setup *********************************/
    void setup() {
      // initialiser les communications séries et attendre que le port s'ouvre
      Serial.begin(9600);
      while (!Serial) {
        ; //  Attendre que le port serie se connecte. Nécessaire pour port USB seulement
      }
      
      Serial.println("Reception SMS");
      Serial.println("Envoi SMS");
      
      // connection établie
      boolean notConnected = true;
    
      // Début carte GSM
      // Si votre carte SIM a un code PIN, le passer en paramètres de commencement entre guillemets
      while (notConnected) {
        if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
          notConnected = false;
        } else {
          Serial.println("Non connecte");
          delay(1000);
        }
      }
    
      Serial.println("GSM initialise");
      Serial.println("En attente de SMS");
    
    }
    /*********************************** programme *****************************************/
    void loop() 
    {
      char c;
     /****************************** ENVOYER AU TELEPHONE *********************************/ 
      Serial.print("Entrer un numero de telephone: ");
      char remoteNum[20];  // numero de téléphone du destinataire
      readSerial(remoteNum);
      Serial.println(remoteNum);
    
      // texte de message
      Serial.print("Entrer contenu du message: ");
      char txtMsg[200];
      readSerial(txtMsg);
      Serial.println("ENVOI...");
      Serial.println();
      Serial.println("Message:");
      Serial.println(txtMsg);
    
      // envoyer le message
      sms.beginSMS(remoteNum);
      sms.print(txtMsg);
      sms.endSMS();
      Serial.println("\nENVOYE!\n");
      
      /******************************** RECEVOIR DU TELEPHONE ******************************/
        /* Si il y a un SMS valable() */
        if (sms.available()) {
        Serial.println("Message reçu de:");
        /* Obtenez le numero a distance */
        sms.remoteNumber(senderNumber, 20);
        Serial.println(senderNumber);
        /* Un exemple de disposition de message */
        /* Tout message commençant par '#' doit être supprimé */
        if (sms.peek() == '#') {
          Serial.println("SMS supprime");
          sms.flush();
        }
        /* Lire des octets de message et les écrire */
        while (c = sms.read()) {
          Serial.print(c);
        }
        Serial.println("\nFIN DU MESSAGE");
       /* Supprimer les messages de la mémoire */
        sms.flush();
        Serial.println("MESSAGE SUPPRIME");
        }
        delay(1000);
    }
    /**********************************************************************************/
     /* Read input serial*/
    int readSerial(char result[]) {
      int i = 0;
      while (1) {
        while (Serial.available() > 0) {
          char inChar = Serial.read();
          if (inChar == '\n') {
            result[i] = '\0';
            Serial.flush();
            return 0;
          }
          if (inChar != '\r') {
            result[i] = inChar;
            i++;
          }
        }
      }
    }
    /******************************************************************************************/
    • Partager sur Facebook
    • Partager sur Twitter
      Staff 15 mai 2018 à 19:02:03

      La fonction loop d'un arduino s'exécute en boucle.

      Du coup, le comportement de ton programme est le suivant :

      Ligne 45 : départ du loop

      Ligne 51 : lecture d'un numéro de téléphone (le programme attend que tu rentres un numéro)

      Du coup, temps que tu n'as pas rentré de numéro de téléphone, le programme ne passe pas à la suite

      Ligne 57 : lecture d'un contenu (le programme attend que tu rentres le contenu d'un SMS)

      Du coup, temps que tu n'as pas rentré de contenu, le programme ne passe pas à la suite

      Ligne 64 à 67 : envoie du SMS

      Ligne 71 : test si un SMS est disponible ou non

      Du coup, si aucun SMS n'est disponible, le programme ne rentre pas dans le if et contenu son chemin

      Ligne 91 : delay de 1 seconde

      Ligne 92 : fin du loop, retour au début

      Du coup, le programme va à nouveau attendre que tu rentres un numéro de téléphone et un contenu

      Bref, ton programme passe beaucoup de temps à attendre que tu rentres des informations dans le Serial pour ne tester qu'une seule fois si un SMS a été reçu..; est-ce vraiment ce que tu veux ???

      • Partager sur Facebook
      • Partager sur Twitter
        10 décembre 2019 à 7:57:13

        est ce que je peux savoir ce que tu as utilisé pour support physique

        je veux bien parle des modules que tu as utiliser

        • Partager sur Facebook
        • Partager sur Twitter

        Code envoyer et recevoir sms arduino

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown