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 411 : |
Ligne 411 : |
| | | |
| === 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'''. | | '''Version du programme pour Arduino IDE < 1.0'''. |
| | | |
Ligne 443 : |
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 453 : |
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> |
Ligne 484 : |
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 491 : |
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 529 : |
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 == |