Différences entre versions de « SmsCommand »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 38 : Ligne 38 :
 
# démarrer le moniteur série
 
# démarrer le moniteur série
 
# démarrer le GPRS Shield en appuyant sur le bouton on/off
 
# démarrer le GPRS Shield en appuyant sur le bouton on/off
## Le programme attend le mot clé "Ready"
+
## Le programme attend le mot clé "Ready" OU "+CPIN: SIM PIN" qui indique qu'un code PIN est attendu.
## Il teste ensuite la nécessité d'un code pin (et envois le code Pin si nécessaire)
+
## Si un code Pin est attendu, ce dernier est automatiquement envoyé (voir contenu de la variable SIM_PIN_CODE)
## Il se met en attente de réception de message SMS
+
## Lorsque le GPRS shield est enregistré sur le réseau, le message "Call Ready" est envoyé par le module SIM900.
# Envoyer le message "on" par SMS au GPRS shield
+
# A l'enregistrement sur le réseau mobile:
# Le Shield reçoit une alerte SMS
+
## Le message "Call Ready" est capturé par le logiciel qui affiche alors le message "*** GPRS Shield registered on Mobile Network ***"
## Le programme consulte la liste des messages.
+
## Le programme configure le GPRS shield en Mode Texte pour les SMS (voir commande "AT+CMGF=1")
## Il récupère ensuite le message.
+
# Utilisez un autre mobile et envoyez le message "on" par SMS vers le no de téléphone du shield GPRS
## Il interprète le contenu du message.
+
# Le Shield reçoit une alerte SMS (message "+CMTI").
 +
## Le programme affiche le texte "*** SMS Received ***"
 +
## Le programme extrait la position de stockage du SMS dans le module SIM900 depuis le message "+CMTI"
 +
## Le programme consulte le contenu du message à l'aide de la commande "AT+CMGR=''xx''" (xx est le numéro de stockage du SMS dans le module SIM900)
 +
## Il récupère ensuite le texte du message.
 +
## Il interprète le contenu du message (par l'intermédiaire de la fonction ProcessSms).

Version du 8 avril 2012 à 11:22

Description

Le but de ce petit projet est de commander une sortie d'Arduino en fonction d'un ordre reçu via SMS.

Ce projet utilise un interpréteur de commande rudimentaire pour dialoguer avec le SIM900 et dont le fonctionnement est décrit dans la page [SerialCommand].

Vous vous n'avez pas encore lu l'article [SerialCommand], je vous invite vivement à le faire, cela éliminera d'emblée une partie de la complexité du code ci-dessous.

Ce programme de démonstration fait également un usage intensif de messages de déboggages qui sont envoyés sur le port série. Vous pouvez également envoyer vos propres commandes AT directement sur le SIM900.

Vous devez configurer le Moniteur Serie d'Arduino IDE sur 19200 baud et Carriage Return.

Le montage

Un LED est raccordée sur la PIN 13 par l'intermédiaire d'une résistance de 330 Ohm.

SimpleLedPin13.png

Augmenter le buffer de NewSoftSerial

Librairie NewSoftSerial utilise un buffer (mémoire tampon) de 64 octets/bytes pour la réception des messages envoyés par le GPRS shield.

Lorsque vous voulez pouvoir consulter des messages SMS en mode texte, cette taille de buffer est insuffisant.

Le résultat le plus frappant, c'est que les commandes AT+CMGR ne retournerons pas le contenu du SMS ou se limiterons uniquement aux quelques premiers caractères.

Il faut donc modifier la librairie NewSoftSerial pour augmenter la taille du buffer. Rassurez-vous, cela se fait assez simplement.

Pour augmenter la taille du buffer:

  1. Chercher le fichier NewSoftSerial.h dans vos librairies Arduino
  2. Localiser la ligne _NewSS_MAX_RX_BUFF
  3. Augmenter la taille du buffer à 128 (au lieu de 64)
  4. Recompiler votre sketch.

Modus Operandi

  1. Charger le projet sur la carte Arduino
  2. démarrer le moniteur série
  3. démarrer le GPRS Shield en appuyant sur le bouton on/off
    1. Le programme attend le mot clé "Ready" OU "+CPIN: SIM PIN" qui indique qu'un code PIN est attendu.
    2. Si un code Pin est attendu, ce dernier est automatiquement envoyé (voir contenu de la variable SIM_PIN_CODE)
    3. Lorsque le GPRS shield est enregistré sur le réseau, le message "Call Ready" est envoyé par le module SIM900.
  4. A l'enregistrement sur le réseau mobile:
    1. Le message "Call Ready" est capturé par le logiciel qui affiche alors le message "*** GPRS Shield registered on Mobile Network ***"
    2. Le programme configure le GPRS shield en Mode Texte pour les SMS (voir commande "AT+CMGF=1")
  5. Utilisez un autre mobile et envoyez le message "on" par SMS vers le no de téléphone du shield GPRS
  6. Le Shield reçoit une alerte SMS (message "+CMTI").
    1. Le programme affiche le texte "*** SMS Received ***"
    2. Le programme extrait la position de stockage du SMS dans le module SIM900 depuis le message "+CMTI"
    3. Le programme consulte le contenu du message à l'aide de la commande "AT+CMGR=xx" (xx est le numéro de stockage du SMS dans le module SIM900)
    4. Il récupère ensuite le texte du message.
    5. Il interprète le contenu du message (par l'intermédiaire de la fonction ProcessSms).