Modifications

Sauter à la navigation Sauter à la recherche
6 121 octets ajoutés ,  8 janvier 2014 à 21:06
aucun résumé de modification
Ligne 4 : Ligne 4 :  
Le shield GSM/GPRS est basé sur un module SIM900 de SIMCOM, il est compatible avec Arduino et ses clones. Le shield GPRS permet à votre Arduino de communiquer en utilisant le réseau  GSM. Ce shield permet d'envoyer des SMS, MMS, GPRS et de Audio en envoyant des commandes AT à l'UART (voir [http://fr.wikipedia.org/wiki/UART wikipedia] pour plus d'information). Les commandes AT supportées sont GSM 07.07 ,07.05 et SIMCOM enhanced AT Commands. Le shield dispose aussi des 12 GPIOs, 2 sorties PWM et du convertisseur Analogique/Digital [http://en.wikipedia.org/wiki/Analog-to-digital_converter ADC] du module SIM900 (accessible sur la carte, logique 2.8volts).
 
Le shield GSM/GPRS est basé sur un module SIM900 de SIMCOM, il est compatible avec Arduino et ses clones. Le shield GPRS permet à votre Arduino de communiquer en utilisant le réseau  GSM. Ce shield permet d'envoyer des SMS, MMS, GPRS et de Audio en envoyant des commandes AT à l'UART (voir [http://fr.wikipedia.org/wiki/UART wikipedia] pour plus d'information). Les commandes AT supportées sont GSM 07.07 ,07.05 et SIMCOM enhanced AT Commands. Le shield dispose aussi des 12 GPIOs, 2 sorties PWM et du convertisseur Analogique/Digital [http://en.wikipedia.org/wiki/Analog-to-digital_converter ADC] du module SIM900 (accessible sur la carte, logique 2.8volts).
   −
'''Shield disponible chez''' [http://mchobby.be/PrestaShop MCHobby.be ATTN:Liens vers MCHobby WebShop]
+
'''{{pl|63|Shield disponible chez MCHobby.be}}'''
    
[[File:GSM-Shield-01.jpg]]
 
[[File:GSM-Shield-01.jpg]]
Ligne 80 : Ligne 80 :  
* Le produit est livré sans boitier protecteur. Il est important de suivre les précautions ESD (protection contre les décharges électrostatique), spécialement par temps sec (basse humidité).
 
* Le produit est livré sans boitier protecteur. Il est important de suivre les précautions ESD (protection contre les décharges électrostatique), spécialement par temps sec (basse humidité).
 
* La configuration d'usine de l'UART du GPRS shield est 19200 bauds 8-N-1. (peut-être changé à l'aide de commandes AT).
 
* La configuration d'usine de l'UART du GPRS shield est 19200 bauds 8-N-1. (peut-être changé à l'aide de commandes AT).
 +
 +
'''Arduino IDE < v1.0'''
 +
 
* La [http://arduiniana.org/NewSoftSerial/NewSoftSerial10c.zip librairie NewSoftLibrary] ne supporte que les débit inférieurs à 38400 bauds. Vous pourriez perdre des données en essayant de communiquer au dessus de 38400 bauds.
 
* La [http://arduiniana.org/NewSoftSerial/NewSoftSerial10c.zip librairie NewSoftLibrary] ne supporte que les débit inférieurs à 38400 bauds. Vous pourriez perdre des données en essayant de communiquer au dessus de 38400 bauds.
 
* La librairie standard NewSoftSerial n'a pas support de réception pour le Mega.  
 
* La librairie standard NewSoftSerial n'a pas support de réception pour le Mega.  
 
</font>
 
</font>
 +
 +
'''Arduino IDE >= v1.0'''
 +
* La librairie NewSoftSerial est disponible depuis Arduino 1.0. Elle est nommée '''SoftwareSerial''' et non NewSoftSerial.
 +
* La limitation de 38400 bauds décrite ci-dessus devrait rester d'application.
    
'''Version de NewSoftSerial compatible avec Mega'''
 
'''Version de NewSoftSerial compatible avec Mega'''
Ligne 89 : Ligne 96 :     
GOF a essayé cette nouvelle librairie. La limitation c'est qu'elle ne fonctionne qu'avec les broches supportant les interruptions (Pin11,12), donc le méga ne fonctionne qu'avec la configuration "Hardware UART communication" (synchronisation matérielle).
 
GOF a essayé cette nouvelle librairie. La limitation c'est qu'elle ne fonctionne qu'avec les broches supportant les interruptions (Pin11,12), donc le méga ne fonctionne qu'avec la configuration "Hardware UART communication" (synchronisation matérielle).
 +
 +
''Note de MC Hobby: Nous n'avons pas encore eu l'occasion de tester un GPRS shield sur un '''AT Mega + Arduino V1.0'''. En fonction des résultats, cette note serait susceptible d'être modifiée.''
    
== Description du matériel ==
 
== Description du matériel ==
Ligne 306 : Ligne 315 :  
Après avoir téléchargé votre sketch sur la carte Arduino, pressez le bouton ON/OFF du GPRS shield pour l'allumer; Vous pourrez ensuite voir ce qui s'affiche sur votre Terminal série, le statut des 3 indicateurs LEDs et finalement communiquer avec votre GPRS shield.
 
Après avoir téléchargé votre sketch sur la carte Arduino, pressez le bouton ON/OFF du GPRS shield pour l'allumer; Vous pourrez ensuite voir ce qui s'affiche sur votre Terminal série, le statut des 3 indicateurs LEDs et finalement communiquer avec votre GPRS shield.
 
  <nowiki>
 
  <nowiki>
// Serial Relay - Arduino servira d'intermédiaire de  
+
// Serial Relay - Arduino < 1.0
 +
// Arduino servira d'intermédiaire de  
 
// communication série entre votre ordinateur et le
 
// communication série entre votre ordinateur et le
 
// shield GPRS (19200 bps 8-N-1)
 
// shield GPRS (19200 bps 8-N-1)
Ligne 336 : Ligne 346 :  
}
 
}
 
</nowiki>
 
</nowiki>
<font color="red">
+
 
Note:  
+
La version ci-dessous convient pour Arduino 1.0 :
* Assurez vous que vous avez bien installé la librairie [http://arduiniana.org/NewSoftSerial/NewSoftSerial10c.zip NewSoftLibrary].
+
<nowiki>
* Le préfix "AT" ou "at" doit être présent au début de chaque ligne. Pour terminer une commande, pressez la touche Retour/Enter <CR>.  
+
//Serial Relay - pour Arduino 1.0
</font>
+
//
 +
// Arduino will patch a serial link between the computer
 +
// and the GPRS Shield at 19200 bps 8-N-1
 +
//Computer is connected to Hardware UART
 +
//GPRS Shield is connected to the Software UART
 +
 +
#include <SoftwareSerial.h>    // For Arduino 1.0
 +
 +
SoftwareSerial mySerial(7, 8); // For Arduino 1.0
 +
 +
void setup()
 +
{
 +
  mySerial.begin(19200);              // the GPRS baud rate 
 +
  Serial.begin(19200);                // the GPRS baud rate 
 +
}
 +
 +
void loop()
 +
{
 +
    if(Serial.available())
 +
    {
 +
      char c = Serial.read();
 +
      mySerial.print(c);
 +
    } 
 +
    else  if(mySerial.available())
 +
    {
 +
        char c = mySerial.read();
 +
      Serial.print(c);
 +
    } 
 +
}
 +
</nowiki>
 +
 
 +
 
 +
Notes:
 +
* Pour une version Arduino IDE:
 +
** <font color="red">< 1.0 : assurez vous que vous avez bien installé la librairie [http://arduiniana.org/NewSoftSerial/NewSoftSerial10c.zip NewSoftLibrary].</font>
 +
** >= 1.0: pas besoin d'installer la librairie NewSoftSerial, elle est disponible dans l'installation par défaut comme SoftwareSerial.
 +
* Le préfix "AT" ou "at" doit être présent au début de chaque ligne. Pour terminer une commande, pressez la touche Retour/Enter <CR>.
    
=== Version Améliorée du Sketch ===  
 
=== Version Améliorée du Sketch ===  
Ligne 354 : Ligne 400 :  
Les exemples ci-dessous partent du principe que la carte SIM utilisée ne nécessite pas de code PIN.
 
Les exemples ci-dessous partent du principe que la carte SIM utilisée ne nécessite pas de code PIN.
 
Si votre carte SIM nécessite l'utilisation d'un code PIN, vous pouvez utiliser la commande AT+CPIN.
 
Si votre carte SIM nécessite l'utilisation d'un code PIN, vous pouvez utiliser la commande AT+CPIN.
 +
 +
=== Arduino V1.0 et versions antérieures ===
 +
Les programmes ci-dessous sont écrits pour des Arduino < 1.0.
 +
 +
Dans ce cas, la librairie est NewSoftSerial doit être utilisée.
 +
 +
'''Depuis la version Arduino 1.0''', NewSoftSerial à été intégrée à la plateforme Arduino sous le nom de '''SoftwareSerial'''.
 +
 +
Si vous utilisez un Arduino 1.0, il faut remplacer les occurrences de "NewSoftSerial" par "SoftwareSerial" et opérer, au cas par cas, quelques modifications.
    
=== Sending SMS: using Software UART  ===
 
=== Sending SMS: using Software UART  ===
 +
La plupart des cartes SIM vendues nécessites la saisie d'un code pin avant d'accéder au réseau mobile.
 +
Si c'est le cas de votre carte SIM vous avez deux choix:
 +
* Annuler l'usage du code pin avec la carte SIM (si cela est possible, voir avec votre opérateur).
 +
* Consulter les FAQ à propos de la commande AT "AT+CPIN". Utiliser SerialRelay2 sera bien utile pour conduire vos tests.
 +
 +
'''Version du programme pour Arduino IDE < 1.0'''.
 +
 +
Cette version utilise la libraire NewSoftSerial pour communiquer avec la GPRS shield.
 +
 
  <nowiki>
 
  <nowiki>
#include <NewSoftSerial.h>
+
// Version pour Arduino IDE < 1.0
 +
#include <NewSoftSerial.h>  
 
   
 
   
 
NewSoftSerial mySerial(7, 8);
 
NewSoftSerial mySerial(7, 8);
Ligne 383 : Ligne 448 :  
   delay(1000);
 
   delay(1000);
 
   mySerial.print(26,BYTE);  // Equivalent du Ctrl+Z (fin de texte du SMS)  
 
   mySerial.print(26,BYTE);  // Equivalent du Ctrl+Z (fin de texte du SMS)  
 +
}
 +
 +
void loop()
 +
{
 +
      // Nous voulons seulement envoyer le SMS une seule fois, il n'y a donc rien dans la boucle loop().
 +
      // Si nous mettons le code du SMS ici, alors il sera envoyer encore et encore (Oups! cela couterait cher).
 +
}
 +
</nowiki>
 +
 +
'''Version du programme pour Arduino IDE >= 1.0'''.
 +
 +
Cette version utilise la libraire SoftwareSerial, intégrée à l'installation d'Arduino IDE 1.0, pour communiquer avec la GPRS shield.
 +
 +
<nowiki>
 +
// Version pour Arduino IDE < 1.0
 +
#include <SoftwareSerial.h>   
 +
 +
SoftwareSerial mySerial(7, 8);
 +
 +
void setup()
 +
{
 +
  mySerial.begin(19200);  // Paramètres par défaut du port série du GPRS shield (19200bps 8-N-1)
 +
  mySerial.print("\r");  // Envoyer un retour à la ligne <CR>
 +
  delay(1000);                    // Attendre une seconde que le modem retourne "OK"
 +
  mySerial.print("AT+CMGF=1\r");  // Envoyer un SMS en mode texte
 +
  delay(1000);
 +
 +
  //mySerial.print("AT+CSCA=\"+919032055002\"\r");// Configurer le centre de message SMS, 
 +
  //delay(1000);                                  // Retirer les commentaire seulement si nécessaire et
 +
                                                  // remplacer le No avec celui obtenu auprès de votre
 +
                                                  // fournisseur de service mobile.
 +
                                                  //Note: pour inclure un " dans une chaine de caractère
 +
                                                  //  il faut utiliser la notation \"
 +
 +
  mySerial.print("AT+CMGS=\"+9184460xxxx\"\r");  // Commencer un SMS à envoyer au numéro +91....
 +
                                                  // l'encodage du texte suivra plus bas.
 +
                                                  // Remplacer le No avec celui de votre destinataire.
 +
  delay(1000);
 +
  mySerial.print("Bienvenu chez MCHobby!\r");    // Le texte du message
 +
  delay(1000);
 +
  mySerial.write(26);  // Equivalent du Ctrl+Z (fin de texte du SMS)
 +
                      // Note: ici il faut utiliser l'instruction write pour écrire un byte.
 
}
 
}
 
   
 
   
Ligne 393 : Ligne 500 :     
=== Faire un appel: en utilisant l'UART logiciel  ===
 
=== Faire un appel: en utilisant l'UART logiciel  ===
 +
'''Version d'Arduino < 1.0'''
 +
 +
Dans ce cas, nous utilisons la librairie NewSoftSerial
 +
 
  <nowiki>
 
  <nowiki>
#include <NewSoftSerial.h>
+
#include <NewSoftSerial.h>  
 
   
 
   
NewSoftSerial mySerial(7, 8);
+
NewSoftSerial mySerial(7, 8);  
    
void setup()
 
void setup()
Ligne 424 : Ligne 535 :  
   // Ne rien faire
 
   // Ne rien faire
 
}
 
}
 +
</nowiki>
 +
 +
'''Version d'Arduino >= 1.0'''
 +
 +
Dans ce cas, nous utilisons la librairie SoftwareSerial incluse dans l'installation d'Arduino
    +
<nowiki>
 +
#include <SoftwareSerial.h> 
 +
 +
SoftwareSerial mySerial(7, 8);
 +
 +
// relayer la réponse de fromSerial (type SoftwareSerial) vers
 +
//  le port serie d'Arduino (19200baud). Facile le deboggage
 +
void relayResponse( SoftwareSerial &fromSerial ){
 +
  // Attention, il faut attendre que l'UART réponde
 +
  // avant de lire mySerial (temps conseillé= 1sec)
 +
  //
 +
  while(fromSerial.available())
 +
  {
 +
    // Envoi le résultat sur la connexion série
 +
    char c = fromSerial.read();
 +
    Serial.print(c);
 +
  }
 +
}
 +
 +
void setup()
 +
{
 +
  mySerial.begin(19200);  // GPRS baud rate 
 +
  Serial.begin(19200);    // GPRS baud rate 
 +
  delay(2000);
 +
  mySerial.println("ATDxxxxxxxxx;"); // xxxxxxxxx est le numéro a appeler. 
 +
       
 +
  // NB: Une boucle while serait plus appropriée que la section de code ci-dessous.
 +
  //    Je vous propose d'appeler la fonction suivante:
 +
  //    relayResponse( mySerial )
 +
  if(mySerial.available())
 +
  {
 +
    char c = mySerial.read();
 +
    Serial.print( c );
 +
  } 
 +
 
 +
  delay(10000);
 +
  delay(10000);
 +
 +
  mySerial.println("ATH"); // Fin d'appel.
 +
  if(mySerial.available()) // Voir commentaire précédent.
 +
  {
 +
    char c = mySerial.read();
 +
    Serial.print( c );
 +
  }   
 +
}
 +
 +
void loop()
 +
{
 +
  // Ne rien faire
 +
}
 
</nowiki>
 
</nowiki>
   Ligne 431 : Ligne 597 :  
Attention!!! les broches GPIOs,PWMs et ADC du module SIM900 utilisent toutes une logique en 2,8 volts.
 
Attention!!! les broches GPIOs,PWMs et ADC du module SIM900 utilisent toutes une logique en 2,8 volts.
 
</font>
 
</font>
 +
 +
Comme pour tous les autres exemples, il suffit de remplacer NewSoftSerial par SoftwareSerial si vous utilisez un Arduino V1.0.
    
  <nowiki>
 
  <nowiki>
Ligne 469 : Ligne 637 :  
* [http://arduiniana.org/NewSoftSerial/NewSoftSerial10c.zip Librairie NewSoftLibrary]
 
* [http://arduiniana.org/NewSoftSerial/NewSoftSerial10c.zip Librairie NewSoftLibrary]
 
* [http://musicshield.googlecode.com/files/sscom32E.exe Serial Terminals(sscom32)]
 
* [http://musicshield.googlecode.com/files/sscom32E.exe Serial Terminals(sscom32)]
 +
* [http://www.geekonfire.com/wiki/images/2/24/GPRSshield_sch.pdf Schéma du shield]
    
== Ou acheter  ==
 
== Ou acheter  ==
Le shield GPRS peut être acheté chez MC Hobby. La page du produit est disponible [http://mchobby.be/PrestaShop ici]
+
Le shield GPRS peut être acheté chez MC Hobby. {{pl|63|La page du GSM/GPRS Shield est accessible ici}}
    
== Licence GeekOnFire ==
 
== Licence GeekOnFire ==
29 917

modifications

Menu de navigation