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 315 : |
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 345 : |
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 371 : |
Ligne 408 : |
| '''Depuis la version Arduino 1.0''', NewSoftSerial à été intégrée à la plateforme Arduino sous le nom de '''SoftwareSerial'''. | | '''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 alors il faudra remplacer les occurrences de "NewSoftSerial" par "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> // Utiliser SoftwareSerial.h sous Arduino 1.0 | + | // Version pour Arduino IDE < 1.0 |
| + | #include <NewSoftSerial.h> |
| | | |
− | NewSoftSerial mySerial(7, 8); // Utiliser SoftwareSerial sous Arduino 1.0 | + | NewSoftSerial mySerial(7, 8); |
| | | |
| void setup() | | void setup() |
Ligne 401 : |
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 411 : |
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 442 : |
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 449 : |
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 487 : |
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 == |