[Programmation] commande AT sur SIM900
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

commande AT sur SIM900



  1. #1
    jack79

    commande AT sur SIM900


    ------

    Bonjour,
    je voudrais me connecter en vocal sur ma carte SIM900, depuis mon mobile ,je voudrais qu'il y ai un décrochage automatique sans sonnerie( alarme), j'ai testé une commande ATA, ça sonne , mais ça ne décroche pas, y a t'il une autre commande ou une extension sur ATA.

    matériel utilisé :
    ARDUINO UNO
    module SIM900 icomsat 1.1
    merci d'avance

    -----

  2. #2
    David71120

    Re : commande AT sur SIM900

    La commande ATA sert bien à répondre à un appel, si tel n'est pas le cas, commence par vérifier que ton modem répond aux commandes que tu envoies, envoie AT il doit répondre OK sinon, vérifie que tu as la bonne vitesse ( bon baudrate) et que tout est bien raccordé.
    Il n'y a que 10 sortes de personnes, celles qui savent lire le binaire et les autres.

  3. #3
    jack79

    Re : commande AT sur SIM900

    bonsoir,

    le module est bien connecté au réseau, j'ai les infos en retour sur le terminal de l'arduino, je vais recuperer une autre carte sans processeur pour faire un terminal en sortie de SIM, je viens de refaire un essai, ça sonne, mais ça ne décroche pas.
    en fait, je veux faire un programme d'alarme pour mettre sur mon bateau de rivière, une cellule, une sirène et de communiquer en vocal, voir caméra si possible.sachant que le bateau est à 150 kms de mon lieu de résidence et que j'ai déjà eu une visite depuis 1 mois qu'il est a l'eau.
    merci

  4. #4
    David71120

    Re : commande AT sur SIM900

    Je ne comprends pas bien ce que tu veux, le plus simple n'est-il pas de faire en sorte que ton module appèle ton portable en cas de declenchement d'alarme ?
    Après sur un cambriolage, avoir le son c'est bien mais je ne suis pas sur que tu entendes grand chose.
    Il n'y a que 10 sortes de personnes, celles qui savent lire le binaire et les autres.

  5. A voir en vidéo sur Futura
  6. #5
    jack79

    Re : commande AT sur SIM900

    merci,
    oui, ça serait0 une solution, vue que l'essaie que j'ai fait, avec la commande ATD, maitenant, je ne sais pas comment modifier mon programme, débutant quand même

  7. #6
    David71120

    Re : commande AT sur SIM900

    A priori de la même facon que tu as réalisé ton programme actuel.
    Il n'y a que 10 sortes de personnes, celles qui savent lire le binaire et les autres.

  8. #7
    jack79

    Re : commande AT sur SIM900

    en fait , je fais parti d'un fab-lab à Parthenay et un des membre m'a transmis ce code, je rame un peu , je l'avoue, on y travaille tos les jeudis soir, en attendant, je cherche a avancer

  9. #8
    David71120

    Re : commande AT sur SIM900

    Bein soit tu nous donnes le code, certains ici sont très pointus et pourrons facilement t'aider, soit tu demandes aux personnes qui t'on déjà aidé.
    Il n'y a que 10 sortes de personnes, celles qui savent lire le binaire et les autres.

  10. #9
    jack79

    Re : commande AT sur SIM900

    voici le code que j'ai transformé sur une base de code d'alarme/incendie/chauffage, les 2 derniers ne m'interesse pas, donc j'ai modifié le programme uniquement pour l'alarme, mon cahier des charges est le suivant.
    1 - je pars du bateau, je mets l'alarme en service
    2 - intrusion = sms envoyé et appel vocal, soit de mon mobile (commande ATA) , soit du gsm du bateau( commande ATD)
    3 - arrive au bateau, j'éteins l'alarme
    voici le code que j'essai de composer, avec certainement un paquet de boulette

    Code:
    // Surveillance d'une maison secondaire par SMS, avec alarme vol et incendie 
    // et possibilit� d'allumer ou eteindre le chauffage a distance
    //----------------------------
    // Arduino Uno + carte ICOMSAT 1.1 (SIM900)
    //----------------------------
    // commandes par SMS: (seul le portable qui envoit la commande recoit la reponce, pas ceux de la liste d'alertes)
    // On   => allume l'alarme
    // Off  => eteint l'alarme
    // Etat => affiche l'etat de l'alarme
    // Aide => liste des commandes
    //----------------------------
    
    #include <SoftwareSerial.h>
    
    SoftwareSerial mySerial(4, 5);
    
    #define GSM_ON 9  
    #define vol 2                                           // entree pour declenchement SMS sensor (mise a la masse)     
    #define alarme_on 6                                  // entree pour allumer manuellement l'alarme (mise a la masse)
    #define alarme_off 7                                 // entree pour eteindre manuellement lalarme (mise a la masse)
    #define alarme 13                                    // sortie commande sirene (active a 1)
    
    int nbrecoit = 2;                                       // nombre de numero dans recoit[]
    String recoit[] = {"+336********"};      // Portables qui vont recevoir les alertes (liste d'alerte) 
    int nbautorise = 2;                                     // nombre de numero dans autorise[]
    String autoriser[] = {"+336********"};   // portables qui peuvent envoyer des commandes a l'arduino et recevoir la reponse
    
    
    char alertevol[] = "Alarme vol !!";
    String inputString = "";                                // tempon reception SMS
    boolean stringComplete = false;
    boolean changer = false;                                // si true envoi d'un SMS de l'etat
    
    int memovol = 0;                                        // memo que le SMS a deja été envoye pour le vol
    
    void setup (){
      Serial.begin(9600);
      pinMode(vol, INPUT);
      initmodem();
      delay(10000);
      alertemessage("Mise sous tension du module!");        // allumage du module
      initpin();
      inputString.reserve(200);
      digitalWrite(alarme,LOW);
    }
    
    void loop(){
      while (mySerial.available()) {                        // Si carractere recu
        char inChar = (char)mySerial.read();                // le lire
        Serial.println(inChar);
        inputString += inChar;                              // et lajouter dans la variable
        if (inChar == '\n') {                               // Si retour chariot
          stringComplete = true;                            // Fin de phrase
        }
      }
      if (stringComplete) {                                 //reception de SMS format:
        Serial.println(inputString);
        int d;
        for (d=0;d<nbautorise;d++){
          if (inputString.startsWith(autoriser[d],7)) {       //       N� appelant       Date et heure d'envoi
            inputString = "";                                 //+CMT: "+336xxxxxxxx","","15/03/20,16:43:57+04" puis \n et le texte puis \n
            stringComplete = false;
            while (!stringComplete) {                         // Si N�appelant correspont a un des N� autorises
              while(mySerial.available()){
                char inChar = (char)mySerial.read();          // recup du message
                inputString += inChar;
                if (inChar == '\n') {                         // Si \n fin du message
                  stringComplete = true;
                }
              }
            }
            //Serial.println(inputString);
            if (inputString.startsWith("On",0)) {             // Si message = On allumage l'alarme
              digitalWrite(alarme,HIGH);
              changer = true;                                 // et envoi de l'etat
            }
            if (inputString.startsWith("Off",0)) {            // Si message = Off eteint l'alarme
              digitalWrite(alarme,LOW);
              changer = true;                                 // et envoi de l'etat
            }
            if (inputString.startsWith("Etat",0) || changer) {// Si message = Etat ou la variable changer = true
              String message = "L'alarme ";
              if(digitalRead(alarme)){
                message += "est allume";                      // creation de l'etet et envoi
              }else{
                message += "est eteint";
              }
             
              message += "\nAlarme vol est ";
              if(memovol == HIGH){
                message += "activee";
              }else{
                message += "desactivee";
              }
              SendTextMessage(message,autoriser[d]);
              changer = false;
            }
            if (inputString.startsWith("Aide",0)) {           // message qui donne les commandes possibles
               SendTextMessage("Liste des commandes:\nOn => allume alarme\nOff => eteint alarme\nEtat => etat des alertes\nAide => ce message",autoriser[d]);
            }
          }
        }
        inputString = "";
        stringComplete = false;
      }
      
      if (digitalRead(vol) == LOW){                          // Si bouton a la masse
        if(memovol == LOW) {                                 // et memoire d'esactivee
          alertemessage(alertevol);                        // envoi SMS d'alarme vol
          memovol = HIGH;
        }
      }else{
        memovol = LOW;                                      // desactive memoire vol
      }
      if (digitalRead(alarme_on) == LOW){                // Si bouton a la masse allumer chauffage
        digitalWrite(alarme,HIGH);
      }
      if (digitalRead(alarme_off) == LOW){               // Si bouton a la masse eteindre chauffage
        digitalWrite(alarme,LOW);
      }
    }
    
    void alertemessage(String letexte){
      int i;
      for(i=0;i<nbrecoit;i++){
        SendTextMessage(letexte,recoit[i]);
        delay(4000);
      }
    }
    
    void SendTextMessage(String letexte, String numero)     // envoyer un message 'letexte' au portable numero 'numero'
    {
        delay(100);
        mySerial.print("AT+CMGS=\"" + numero + "\" \r");    // envois d'un SMS sur le N�recoit
        delay(1000);
        mySerial.println(letexte);                          // letexte = texte a envoyer
        delay(5000);
        mySerial.println((char)26);                         // Fin du message par <CTRL-Z>
        delay(1000);
    }
    
    void initmodem(){                                       // Initialisation de la carte ICOMSAT 1.1
      powerUpOrDown();                                      // Allumage du SIM900
      mySerial.begin(2400);                                 // communication avec l'ICOMSAT a 2400 baud
      //mySerial.println("AT+IPR=2400");                    // si l'ICOMSAT est a une autre vitesse pour le metre a 2400
      Serial.println(" GSM Installed ");
     // delay(100);
     // mySerial.println("AT+CPIN=1234");                     // Code pin de la SIM
      delay(1000);
      mySerial.println("AT+CMGF=1");                        // SMS en mode texte
      delay(1000);
      mySerial.println("AT+CMEE=0");                        // SMS en mode texte
      delay(1000);
      mySerial.println("AT+CLIP=1");                        // SMS en mode texte
      delay(1000);
      mySerial.println("AT+CNMI=1,2");                        // SMS en mode texte
      delay(1000);
      mySerial.println("AT+CMGD=1,4");                        // SMS en mode texte
      delay(1000);
      
    }
    
    void powerUpOrDown()                                    // Allumage de l'ICOMSAT 1.1
     {  
      pinMode(GSM_ON, OUTPUT);   
      digitalWrite(GSM_ON,LOW);  
      delay(1000);  
      digitalWrite(GSM_ON,HIGH);  
      delay(2000);  
      digitalWrite(GSM_ON,LOW);  
      delay(3000);  
     }  
     
     void initpin(){                                        // D�claration des entrees sorties
      pinMode(vol, INPUT_PULLUP);
      pinMode(alarme_on, INPUT_PULLUP);
      pinMode(alarme_off, INPUT_PULLUP);
      pinMode(alarme, OUTPUT);
     }
    Dernière modification par Antoane ; 26/01/2016 à 20h49. Motif: Ajout balises [Code]

  11. #10
    David71120

    Re : commande AT sur SIM900

    Je ne suis pas un pro de ce langage, je laisserai les pros répondre, mais du peu que je connaisse, à aucun moment je ne vois de commande ATA ou ATD d'ailleurs.
    Il n'y a que 10 sortes de personnes, celles qui savent lire le binaire et les autres.

  12. #11
    jack79

    Re : commande AT sur SIM900

    normal, je ne sais pas ou les placer dans le void initmodem et comment faire la liaison avec le déclenchement du capteur

  13. #12
    jack79

    Re : commande AT sur SIM900

    la commande ATD+336**** si je l'a mets en tête mon mobile sonne, sauf qu'il ne faudrait qu'il ne sonne que quand il y a intrusion

Discussions similaires

  1. Changer l'interrupteur simple commande par un double commande
    Par sacolo dans le forum Bricolage et décoration
    Réponses: 22
    Dernier message: 21/06/2015, 14h30
  2. Réponses: 10
    Dernier message: 05/09/2012, 13h21
  3. commande prédictive et commande dynapique matricielle
    Par invitef5e239f0 dans le forum Électronique
    Réponses: 5
    Dernier message: 22/05/2011, 22h03
  4. [Onduleur] Commande décalée VS Commande symétrique
    Par invite6656c8c4 dans le forum Électronique
    Réponses: 3
    Dernier message: 06/03/2009, 11h49
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...