Etape 1: La GSM bibliothèque
Il s’agit de la documentation de bibliothèque de GSM_shield :
Voici une Bibliothèque GSM_shield destiné à bouclier GSM par Futura Elettronica (www.futurashop.it).
Cette bibliothèque est dérivé bibliothèque GSM http://www.hwkitchen.com de Hwkitchen et inclure la bibliothèque NewSoftSerial à communiquer en utilisant la broche 4 (RX) et 5 (TX).
Vous pouvez également utiliser la broche 0 et 1 (RX et TX) mais vous devez débrancher le module pour télécharger le croquis (donc il n’est pas très agréable), et vous devez modifier la bibliothèque.
Comment installer la bibliothèque pour Arduino
Après le téléchargement de la bibliothèque GSM_Shield, décompressez le dossier de GSM_Shield pour Arduino
Folder\libraries\ (es. C:\Programs\arduino-0022\libraries\GSM_Shield)
Dans le GSM_Shield.zip vous pouvez trouver la bibliothèque de communiquer avec le module gsm et le fichier pour utiliser le NewSoftSerial.
Description fondamentale
GSM_Shield bibliothèque est créée comme une classe standard avec les fichiers source Gsm_Shield.cpp et Gsm_Shield.h. GSM_Shield classe repose essentiellement sur la communication sérielle
entre la carte Arduino et le module GSM placé sur le bouclier de GSM. Il y a norme utilisée aux commandes pour la communication avec le Module GSM.
La version actuelle de la bibliothèque utilise la version de blocage de la communication.
Cela signifie que le programme est bloqué jusqu'à ce que la fonction de communication est terminé – donc jusqu'à ce que les données requises sont envoyées et nécessaire réponse soit reçue. L’avantage de cette approche de blocage, c’est qu’il est facile de
comprendre le déroulement du programme. En revanche, il y a aussi désavantage que nous ne pouvons pas utiliser les ressources du processeur au moment où le programme attend juste pour les données entrantes.
Remarque : faites attention au mode de communication série. Avec le matériel de série (NIP 0 et 1), vous pouvez rejoindre le baudrate par défaut du module SIM900 (115 200 bauds). Mais si vous utilisez les broches 4 et 5 que ne peuvent pas soutenir la bibliothèque NewSoftSerial (recevoir) le débit en bauds, donc vous devez choisir un plus faible taux en bauds.
Avec la commande TurnOn(baudrate), vous activez le module et fixer le débit en bauds. par exemple TurnOn(9600) ;
Méthodes
Il y décrit les fonctions importantes pour l’utilisateur final dans le présent document.
La bibliothèque GSM_Shield contient également quelques fonctions qui sont utilisées en interne
et ne sont pas décrits dans le document. Il est également possible d’utiliser ces
fonctionne par l’utilisateur final, bien sûr qu’ils sont définis comme publics mais il
Il faut vérifier le code source de la bibliothèque avec des notes.
int LibVer(void)
retourne la version de la bibliothèque au format XYY-cela signifie X.YY (par exemple 100 signifie vers. 1,00)
Exemple : GSM_Shield_LibVer
Sub TurnOn(baud)
se met en marche le module GSM en cas de module est désactivé et envoie une initialisation à commandes que l'on peut envoyer avant enregistrement -> InitParam(PARAM_SET_0)
Doit être utilisé au début de l’esquisse à la fonction setup().
Définissez également le baudrate module (Note : Si vous utilisez le numéro de série de matériel, il n’y a pas de limite à la vitesse de transmission, 115200 est possibile. Mais utilisant la broche 4 et 5 de la NewSoftSerial doit être utilisé et la limite de vitesse de transmission est 57600).
Baud valeur possibile : 4800, 9600, 19200, 38400, 57600, 115200 (inutile avec cette bibliothèque incluent NewSoftSerial)
void setup()
{
GSM. TurnOn(9600) ;
}
Exemple : GSM_Shield_LibVer
Sub InitParam(byte group)
Envoie les paramètres d’initialisation du module GSM
groupe: 0 – paramètres de groupe 0 – pas nécessaire d’être enregistré dans le GSM
AT & F
1 – les paramètres de groupe 1 – il est nécessaire d’être enregistré
AT + CLIP = 1
AT + CMEE = 0
AT + CMGF = 1
Exemple : GSM_Shield_LibVer
Sub Echo (État octets)
Fonction pour activer ou désactiver l’écho
ECHO(1) activer mode echo GSM
ECHO(0) désactiver le mode écho GSM
Exemple : GSM_Shield_LibVer
Byte CheckRegistration(void)
vérifie si le module GSM est enregistré dans le réseau GSM.
Cette méthode communique directement avec le module GSM par contraste avec la méthode IsRegistered() qui lit le drapeau de la module_status
(cet indicateur est défini à l’intérieur de cette méthode)
doit être appelée régulièrement à la seule place dans la boucle principale esquisse
(recommandation répétition de temps est de 1 s à 10 s.)
Retour à valus :
REG_NOT_REGISTERED – non enregistré
REG_REGISTERED – module GSM est inscrit
REG_NO_RESPONSE – GSM ne réponse
REG_COMM_LINE_BUSY – ligne de comm n’est pas gratuit
Exemple : GSM_Shield_Reg
Byte IsRegistered(void)
retours du pavillon si le module GSM est enregistré dans le réseau GSM
Cette méthode ne communique pas directement avec le module GSM,
contente de lire l’indicateur n’est très rapide contrairement à CheckRegistration()
qui prend plus de 20msec.
Il est recommandé d’utiliser cette fonction à chaque fois qu'il est nécessaire d’utiliser certaines fonctions GSM quels besoins module GSM est inscrit – vérification SMSs entrantes, vérification appelle etc.
Retour à valus :
0 – ne pas enregistré
> 0-module GSM est enregistré
Exemple : GSM_Shield_Reg
Byte CallStatus(void)
État des contrôles de l’appel
valeurs de retour :
CALL_NONE – aucun appel
CALL_INCOM_VOICE – appel vocal entrant
CALL_ACTIVE_VOICE – appel vocal actif
CALL_NO_RESPONSE – aucune réponse
Exemple : GSM_Shield_Call
octet CallStatusWithAuth (char * phone_number, first_authorized_pos octets, last_authorized_pos octets)
vérifie l’état de l’appel (entrant ou actif) et rend l’autorisation avec plage de positions de SIM spécifiée
paramètres et valeurs de retour :
Phone_Number : pointeur où la chaîne de numéro Tél. : appel en cours sera placée alors l’espace pour la chaîne de numéro de téléphone doit être réservé
first_authorized_pos : SIM phonebook position où commence le processus d’autorisation initiale
last_authorized_pos : dernière SIM phonebook position où termine le processus d’autorisation
Note(important) :
================
En cas first_authorized_pos = 0 et last_authorized_pos = 0, le numéro de téléphone entrant reçu n’est pas autorisé à tous, donc chaque entrant est considérée comme autorisée (CALL_INCOM_VOICE_NOT_AUTH est retourné)
retour :
CALL_NONE – aucune activité d’appel
CALL_INCOM_VOICE_AUTH – voix entrante – autorisée
CALL_INCOM_VOICE_NOT_AUTH – voix entrante – non autorisés
CALL_ACTIVE_VOICE – voix active
CALL_INCOM_DATA_AUTH – appel de données entrant – autorisée
CALL_INCOM_DATA_NOT_AUTH – appel de données entrant – non autorisé
CALL_ACTIVE_DATA – appel de données active
CALL_NO_RESPONSE – aucune réponse à la commande
CALL_COMM_LINE_BUSY – ligne de comm n’est pas gratuit
Sub PickUp(void)
ramasse l’appel entrant
Exemple : GSM_Shield_Call
Sub HangUp(void)
raccroche appel (entrant ou actif)
Exemple : GSM_Shield_Call
Sub Call(char *number_string)
appelle le numéro spécifique
par exemple, gsm. Call("+390123456789″) ;
Sub appel (int sim_position)
appelle le numéro enregistré à l’emplacement spécifié de la SIM
par exemple, gsm. Call(1) ; appelez au numéro stocké à la 1ère position de SIM
SendSMS de char (char * number_str, char * message_str)
envoie des SMS vers le numéro de téléphone spécifique
paramètres et valeurs de retour :
number_str : pointeur vers la chaîne de numéro de téléphone
message_str : pointeur vers la chaîne de texte SMS
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
-3 – module GSM a répondu « message d’erreur »
OK ret val :
———–
0 – SMS n’a été envoyé
1 – SMS a été envoyé à 9/15
exemple d’utilisation :
GSM. SendSMS ("00XXXYYYYYYYYY", « SMS text ») ;
char SendSMS (octet sim_phonebook_position, char * message_str)
envoie des SMS à la position spécifiée du répertoire SIM
paramètres et valeurs de retour :
sim_phonebook_position : position de répertoire SIM < 1..20 >
message_str : pointeur vers la chaîne de texte SMS
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
-3 – spécifié doit être > 0
OK ret val :
———–
0 – SMS n’a été envoyé
1 – SMS a été envoyé
un exemple d’utilisation :
GSM gsm ;
GSM. SendSMS (1, "SMS texte") ;
char IsSMSPresent(byte required_status)
Découvre si il est présent au moins un SMS avec l’état spécifié
s’il y a nouveau SMS avant l’exécution de IsSMSPresent() ce SMS a un statut non lu et puis après avoir appelé état de méthode IsSMSPresent() des SMS est modifié automatiquement en lecture
paramètres et valeurs de retour :
required_status :
SMS_UNREAD – nouveau SMS – ne pas encore lire
SMS_READ – déjà lire les SMS
SMS_ALL – toutes stockées SMS
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
OK ret val :
———–
0 – il n’y a pas de SMS avec l’état spécifié
1..20 – position de stockage des SMS
exemple d’utilisation :
position de char ;
phone_number Char [20] ; Tableau pour la chaîne de numéro de téléphone
char * sms_text ;
position = gsm. IsSMSPresent(SMS_UNREAD) ;
Si (position) {/ / lecture nouveau SMS
GSM. GetGSM (position, numéro_tél et sms_text) ;
}
char GetSMS (position de l’octet, char * phone_number, char * SMS_text, max_SMS_len octets)
lit les SMS de position spécifié memory(SIM)
paramètres et valeurs de retour :
position : position de SMS < 1..20 >
Phone_Number : pointeur où sera placée la chaîne de numéro de téléphone de SMS reçus
Si l’espace pour la chaîne de numéro de téléphone doit être réservée – voir exemple
SMS_text : un pointeur où SMS texte sera placé
max_SMS_len : longueur maximale du texte SMS à l’exclusion également string clôturant le caractère 0 x 00
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
-3 – spécifié doit être > 0
OK ret val :
———–
GETSMS_NO_SMS – aucun SMS a été trouvé à la position spécifiée
GETSMS_UNREAD_SMS – nouveau SMS a été trouvé à la position spécifiée
GETSMS_READ_SMS – a déjà lu SMS a été trouvé à la position spécifiée
GETSMS_OTHER_SMS-autre type de SMS a été trouvé un exemple d’utilisation :
GSM gsm ;
position de char ;
char phone_num [20] ; Tableau pour la chaîne de numéro de téléphone
char sms_text [100] ; Tableau pour la chaîne de texte SMS
position = gsm. IsSMSPresent(SMS_UNREAD) ;
Si {(position)
Il n’y a nouveau SMS = > lire
GSM. GetGSM (position, phone_num, sms_text, 100) ;
Serial.println ("numéro de téléphone SMS DEBUG:", 0) ;
Serial.println (phone_num, 0) ;
Serial.println ("\r\n SMS texto:", 0) ;
Serial.println (sms_text, 1) ;
}
char GetAuthorizedSMS (position de l’octet, char * phone_number, char * SMS_text, max_SMS_len octets, first_authorized_pos octets, last_authorized_pos octets)
lit les SMS memory(SIM) spécifié postées et rend l’autorisation-
Cela signifie que numéro de téléphone SMS est comparé avec spécifié SIM phonebook ou des postes et dans le cas où les numéros correspondent à GETSMS_AUTH_SMS est retourné, sinon GETSMS_NOT_AUTH_SMS est retourné
paramètres et valeurs de retour :
position : position de SMS à lire < 1..20 >
Phone_Number : pointeur où la chaîne de numéro de Tél. de SMS reçus est placée afin que l’espace pour la chaîne de numéro de téléphone doit être réservé – voir exemple
SMS_text : un pointeur où SMS texte sera placé
max_SMS_len : longueur maximale du texte SMS sauf résiliation de caractère 0 x 00
first_authorized_pos : SIM phonebook position où commence le processus d’autorisation initiale
last_authorized_pos : dernière SIM phonebook position où finit le proces de l’autorisation
Note(important) :
================
En cas first_authorized_pos = 0 et last_authorized_pos = 0
le numéro de téléphone SMS reçu n’est pas autorisé à tous, afin que chaque
SMS est considérée comme autorisée (GETSMS_AUTH_SMS est retourné)
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
-3 – position doit être > 0
OK ret val :
———–
GETSMS_NO_SMS – aucun SMS a été trouvé à la position spécifiée
GETSMS_NOT_AUTH_SMS – non autorisé SMS trouvés à la position spécifiée
GETSMS_AUTH_SMS – SMS autorisé trouvés à la position spécifiée
un exemple d’utilisation :
GSM gsm ;
char phone_num [20] ; Tableau pour la chaîne de numéro de téléphone 12/15
char sms_text [100] ; Tableau pour la chaîne de texte SMS
autoriser les SMS avec SIM phonebook postes 1.. 3
Si (GETSMS_AUTH_SMS == gsm. GetAuthorizedSMS(1, phone_num, sms_text, 100, 1, 3)) {}
Nouveau SMS autorisé a été détecté à la position de SMS 1
Serial.println ("numéro de téléphone SMS DEBUG:", 0) ;
Serial.println (phone_num, 0) ;
Serial.println ("\r\n SMS texto:", 0) ;
Serial.println (sms_text, 1) ;
}
n’autoriser à tous les SMS avec répertoire SIM
Si (GETSMS_AUTH_SMS == gsm. GetAuthorizedSMS(1, phone_num, sms_text, 100, 0, 0)) {}
Nouveau SMS a été détectée à la position de SMS 1
parce que l’autorisation n’était pas nécessaire
SMS est considérée comme autorisée
Serial.println ("numéro de téléphone SMS DEBUG:", 0) ;
Serial.println (phone_num, 0) ;
Serial.println ("\r\n SMS texto:", 0) ;
Serial.println (sms_text, 1) ;
}
char DeleteSMS(byte position)
supprime les SMS de position spécifiée de SMS
paramètres et valeurs de retour :
position : position de SMS < 1..20 >
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
-3 – position doit être > 0
OK ret val :
———–
0 – SMS n’était pas supprimé
1 – SMS a été supprimé
char GetPhoneNumber (position de l’octet, char * phone_number)
chaîne de numéro de position spécifiée de SIM de téléphone lectures
paramètres et valeurs de retour :
position : position de SMS < 1..20 >
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
-3 – position doit être > 0
phone_number est la chaîne vide
OK ret val :
———–
0 – il n’y a pas de numéro de téléphone sur la position
1 – Numéro de téléphone a été trouvé
phone_number est rempli par la chaîne de numéro de téléphone, terminée par 0 x 00
Il est donc nécessaire de définir la chaîne avec au moins
15 octets (incluant également le caractère d’arrêt 0 x 00)
un exemple d’utilisation :
GSM gsm ;
char phone_num [20] ; Tableau pour la chaîne de numéro de téléphone
Si (1 == gsm. GetPhoneNumber (1, phone_num)) {}
Numéro de téléphone valide sur SIM pos. #1
chaîne de numéro de téléphone est copié dans le tableau phone_num
Serial.println ("numéro de téléphone de débogage:", 0) ;
Serial.println (phone_num, 1) ;
}
else {}
Il y a pas de numéro de téléphone valide sur la SIM pos. #1
Serial.println (« DEBUG là n’est aucun numéro de téléphone », 1) ;
}
char WritePhoneNumber (position de l’octet, char * phone_number)
chaîne de numéro de téléphone écrit à la position spécifiée du SIM
paramètres et valeurs de retour :
position : position de SMS < 1..20 >
Phone_Number : chaîne numérique pour la rédaction de téléphone
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
-3 – position doit être > 0
OK ret val :
———–
0 – Numéro de téléphone n’était pas écrit
1 – Numéro de téléphone a été écrit le 14/15
char DelPhoneNumber(byte position)
Numéro de téléphone de del de la position spécifiée du SIM
paramètres et valeurs de retour :
position : position de SIM < 1..20 >
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
-3 – position doit être > 0
OK ret val :
———–
0 – Numéro de téléphone n’était pas supprimé
1 – Numéro de téléphone a été supprimée
char ComparePhoneNumber (position de l’octet, char * phone_number)
compare spécifié chaîne de numéro de téléphone avec numéro de téléphone stocké à l’emplacement spécifié de la SIM
paramètres et valeurs de retour :
position : position de SMS < 1..20 >
Phone_Number : téléphone numéro chaîne qui devrait être comparer
retour :
ERREUR RET val :
—————
-1 – comm. ligne au module GSM n’est pas gratuit
-2 – module GSM n’a pas répondu dans le délai d’attente
-3 – position doit être > 0
OK ret val :
———–
0 – les numéros de téléphone sont différents
1 – numéros de téléphone sont les mêmes
un exemple d’utilisation :
Si (1 == gsm.ComparePhoneNumber (1, "123456789″)) {}
le téléphone num. » 123456789″ est stocké sur la SIM pos. #1
chaîne de numéro de téléphone est copié dans le tableau phone_num
Serial.println (« DEBUG numéros de téléphone sont les mêmes », 1) ;
}
else {}
Serial.println (« DEBUG numéros de téléphone sont différents », 1) ;
}