Ligne 2 : |
Ligne 2 : |
| | | |
| == Introduction == | | == Introduction == |
− | The 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 === |
| + | |
| + | '''Note de MC Hobby''': |
| + | |
| + | Bien que cela ne soit pas nécessaire lors de vos premiers tests avec le GPRS shield, MCHobby vous propose d'utiliser sa version améliorée [[GeekOnFire GSM/GPRS Shield SerialRelay2|SerialRelay 2]]. |
| + | |
| + | Cette nouvelle version permet d'envoyer la séquence d'échappement Ctrl-z au GPRS shield depuis le Moniteur Série d'Arduino. Ce sera un allier vraiment précieux. |
| | | |
| == Exemples == | | == Exemples == |
Ligne 346 : |
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 === |
− | </nowiki> | + | La plupart des cartes SIM vendues nécessites la saisie d'un code pin avant d'accéder au réseau mobile. |
− | #include <NewSoftSerial.h> | + | 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> |
| + | // Version pour Arduino IDE < 1.0 |
| + | #include <NewSoftSerial.h> |
| | | |
| NewSoftSerial mySerial(7, 8); | | NewSoftSerial mySerial(7, 8); |
Ligne 375 : |
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 385 : |
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 416 : |
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 423 : |
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 451 : |
Ligne 627 : |
| </nowiki> | | </nowiki> |
| | | |
− | == Schematics == | + | == Schéma == |
− | [http://www.geekonfire.com/wiki/images/2/24/GPRSshield_sch.pdf GPRSshield_sch.pdf] | + | Voir chez le lien suivant chez le constructeur [http://www.geekonfire.com/wiki/images/2/24/GPRSshield_sch.pdf GPRSshield_sch.pdf] |
− | | |
− | == Resources ==
| |
− | [http://www.geekonfire.com/wiki/images/a/a8/SIM900_AT_Command_Manual_V1.03.pdf SIM900 AT Commands Manual v1.03.pdf]
| |
− | | |
− | [http://www.geekonfire.com/wiki/images/8/82/Sim900_hd_v1.06.pdf SIM900_hd_v1.06.pdf]
| |
− | | |
− | [http://www.geekonfire.com/wiki/images/e/ed/AN_SIM900_TCPIP_V1.01.pdf SIM900_TCP/IP Application Note]
| |
− | | |
− | [http://www.vishay.com/docs/70415/si5902bd.pdf Si5902BDC] - Dual N-Channel 30 V (D-S) MOSFETs (used for 2.8V <> 5.0V translation for Serial Interface)
| |
| | | |
− | [http://arduiniana.org/NewSoftSerial/NewSoftSerial10c.zip NewSoftLibrary] | + | == Ressources == |
| + | * [http://mchobby.be/data-files/gprsshield/SIM900_AT_Command_Manual_V1.03.pdf Manuel des commandes AT du SIM900] version 1.3 (miroir [http://www.geekonfire.com/wiki/images/a/a8/SIM900_AT_Command_Manual_V1.03.pdf chez GOF]) |
| + | * [http://www.geekonfire.com/wiki/images/8/82/Sim900_hd_v1.06.pdf SIM900_hd_v1.06.pdf] |
| + | * [http://www.geekonfire.com/wiki/images/e/ed/AN_SIM900_TCPIP_V1.01.pdf SIM900_TCP/IP Application Note] |
| + | * [http://www.vishay.com/docs/70415/si5902bd.pdf Si5902BDC] - Dual N-Channel 30 V (D-S) MOSFETs (utilisé pour l'adaptation de tension 2.8V <-> 5.0V) |
| + | * [http://arduiniana.org/NewSoftSerial/NewSoftSerial10c.zip Librairie NewSoftLibrary] |
| + | * [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] |
| | | |
− | [http://musicshield.googlecode.com/files/sscom32E.exe Serial Terminals(sscom32)]
| + | == Ou acheter == |
| + | Le shield GPRS peut être acheté chez MC Hobby. {{pl|63|La page du GSM/GPRS Shield est accessible ici}} |
| | | |
− | == How to buy == | + | == Licence GeekOnFire == |
− | GPRS Shield can be ordered through the GOF store. Its product page is located [http://www.geekonfire.com/index.php?main_page=product_info&cPath=7_49&products_id=78 here]
| + | Cette document est fournie sous la licence Creative Commons [http://creativecommons.org/licenses/by-sa/3.0/ Attribution-ShareAlike License 3.0]. Le code source et les librairies sont sous [http://www.gnu.org/licenses/gpl.html licence GPL/LGPL], voir le code source des fichiers pour plus d'information. |
− | == Licensing ==
| |
− | This documentation is licensed under the Creative Commons [http://creativecommons.org/licenses/by-sa/3.0/ Attribution-ShareAlike License 3.0] Source code and libraries are licensed under [http://www.gnu.org/licenses/gpl.html GPL/LGPL], see source code files for details.
| |
| | | |
| == Note de traduction == | | == Note de traduction == |