Ligne 3 : |
Ligne 3 : |
| == Introduction == | | == Introduction == |
| Voici une version améliorée sur SerialRelay proposé par GeekOnFire.<br /> | | Voici une version améliorée sur SerialRelay proposé par GeekOnFire.<br /> |
− | Le principal désavantage de la version de base est qu'il n'est pas possible< br/> | + | Le principal désavantage de la version de base est qu'il n'est pas possible<br /> |
− | d'envoyer certains caractères d'échappement (comme le Ctrl-Z) pourtant absolument< br/> | + | d'envoyer certains caractères d'échappement (comme le Ctrl-Z) pourtant absolument<br /> |
| nécessaire pour clôturer un message SMS. | | nécessaire pour clôturer un message SMS. |
| | | |
Ligne 15 : |
Ligne 15 : |
| et en fonction du second caractère envoi la séquence d'échappement adéquate. | | et en fonction du second caractère envoi la séquence d'échappement adéquate. |
| | | |
| + | == Séquences d'échappement == |
| + | Veuillez utiliser les séquence d'échappements suivantes dans le moniteur série pour envoyer une séquence d'échappement particulière au GPRS shield. |
| | | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | | align="center" width="200" | Séquence Moniteur Serie |
| + | | align="center" width="250" | Séquence envoyée au GPRS shield |
| + | | align="center" width="400" | Description |
| + | |- style="font-size: 90%" |
| + | | ~z |
| + | | CTRL-Z |
| + | | Fin de message SMS (caractère #26) |
| + | |- style="font-size: 90%" |
| + | | ~e |
| + | | ESC |
| + | | Abandon de message SMS (caractère #27) |
| + | |- style="font-size: 90%" |
| + | | ~~ |
| + | | ~ |
| + | | Permet d'envoyer un tilde au GPRS shield |
| + | |} |
| + | |
| + | == Code Source - Arduino < 1.0 == |
| + | |
| + | Vous pouvez le télécharger en cliquant sur [http://mchobby.be/data-files/gprsshield/SerialRelay2.pde SerialRelay2.pde]. |
| + | |
| + | Le code est commenté en anglais et en français. |
| + | |
| + | <nowiki>// Serial Relay v2.0 |
| + | // EN: |
| + | // Arduino will patch 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 |
| + | // |
| + | // This version allows to send escape sequence to GPRS Shield (for SMS messaging) |
| + | // use <tilde>z for Ctrl-z |
| + | // use <tilde>e for ESC |
| + | // use <tilde><tilde> for <tilde> |
| + | // |
| + | // Require the Arduino serial monitor to be configured on |
| + | // 19200 bds + Carriage Return |
| + | // |
| + | // FR: |
| + | // Arduino va établir une liaison série entre l'ordinateur et |
| + | // le shield GPRS a 19200 bauds 8-N-1 |
| + | // L'ordinateur est connecté à un UART matériel |
| + | // Le shield GPRS est connecté a un UART logiciel. |
| + | // |
| + | // Cette version permet d'envoyer des séquences d'échappement au |
| + | // shield GPRS (pour envoyer une fin de message pour les SMS) |
| + | // utiliser <tilde>z pour Ctrl-z |
| + | // utiliser <tilde>e pour ESC |
| + | // utiliser <tilde><tilde> pour un tilde |
| + | // |
| + | // Le moniteur série d'Arduino doit etre configuré sur |
| + | // 19200 bds + Carriage Return |
| + | // |
| + | // Licence: CC-BY-SA |
| + | // Meurisse D. |
| + | // http://www.mchobby.be |
| + | // |
| + | #include <NewSoftSerial.h> |
| + | |
| + | NewSoftSerial mySerial(7, 8); |
| + | |
| + | // EN: 1 means than escape caracter (tilde) has been detected from Serial Monitor (Arduino Side) |
| + | // FR: 1 indique que le caractere d'echappement est détecté sur le moniteur serie (coté Arduino) |
| + | int escapingFlag = 0; |
| + | |
| + | void setup() |
| + | { |
| + | mySerial.begin(19200); // the GPRS baud rate |
| + | Serial.begin(19200); // the GPRS baud rate |
| + | } |
| + | |
| + | void loop() |
| + | { |
| + | char SerialInByte; |
| + | if(Serial.available()) |
| + | { |
| + | // EN: Listen to Arduino IDE serial Moniteur |
| + | // FR: Ecouter les envois du serial moniteur d'Arduino IDE |
| + | char SerialInByte; |
| + | SerialInByte = (unsigned char)Serial.read(); |
| + | |
| + | // EN: Intercept escape character (tilde) for escape sequence |
| + | // FR: Intercepter le caractere d'echappement (tilde) for une sequence d'echappement |
| + | if( (SerialInByte == 126) && (escapingFlag==0) ) { |
| + | escapingFlag = 1; |
| + | return; // wait next caracter / attendre caractere suivant |
| + | } |
| + | else { |
| + | // EN: complete escaping sequence (if appropriate) |
| + | // FR: complete la séquence d'echappement (if appropriate) |
| + | if( escapingFlag == 1 ){ |
| + | if( SerialInByte == 122 ){ // (tilde) z = Ctrl Z |
| + | SerialInByte = 26; |
| + | } |
| + | if( SerialInByte == 101 ){ // (tilde) e = ESC |
| + | SerialInByte = 27; |
| + | } |
| + | escapingFlag = 0; |
| + | } |
| + | |
| + | // EN: Normal working. Simply send character (escaped or not) to GPRS shield |
| + | // FR: Fonctionnement normal. Envoyer le caractere (echappé ou non) vers GPRS shield |
| + | mySerial.print( SerialInByte ); |
| + | } |
| + | |
| + | } |
| + | else if(mySerial.available()) |
| + | { |
| + | // EN: Listen to GRPS shield + relay to Arduino Serial Monitor |
| + | // FR: Ecouter les envois du GPRS shield + Renvoi vers Arduino Serial Monitor |
| + | |
| + | Serial.print((unsigned char)mySerial.read()); |
| + | } |
| + | |
| + | } |
| + | </nowiki> |
| + | |
| + | == Code Source - Arduino >= 1.0 == |
| + | |
| + | Vous pouvez le télécharger en cliquant sur [http://mchobby.be/data-files/gprsshield/SerialRelay2_Ard10.ino SerialRelay2_Ard10.ino]. |
| + | |
| + | Le code est commenté en anglais et en français. |
| + | |
| + | <nowiki>// Serial Relay v2.0 - Arduino >= 1.0 |
| + | // EN: |
| + | // *** PATCHED VERSION for Arduino 1.0 *** |
| + | // Arduino will patch 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 |
| + | // |
| + | // This version allows to send escape sequence to GPRS Shield (for SMS messaging) |
| + | // use <tilde>z for Ctrl-z |
| + | // use <tilde>e for ESC |
| + | // use <tilde><tilde> for <tilde> |
| + | // |
| + | // Require the Arduino serial monitor to be configured on |
| + | // 19200 bds + Carriage Return |
| + | // |
| + | // FR: |
| + | // *** VERSION CORRIGEE POUR Arduino 1.0 *** |
| + | // Arduino va établir une liaison série entre l'ordinateur et |
| + | // le shield GPRS a 19200 bauds 8-N-1 |
| + | // L'ordinateur est connecté à un UART matériel |
| + | // Le shield GPRS est connecté a un UART logiciel. |
| + | // |
| + | // Cette version permet d'envoyer des séquences d'échappement au |
| + | // shield GPRS (pour envoyer une fin de message pour les SMS) |
| + | // utiliser <tilde>z pour Ctrl-z |
| + | // utiliser <tilde>e pour ESC |
| + | // utiliser <tilde><tilde> pour un tilde |
| + | // |
| + | // Le moniteur série d'Arduino doit etre configuré sur |
| + | // 19200 bds + Carriage Return |
| + | // |
| + | // Licence: CC-BY-SA |
| + | // Meurisse D. |
| + | // http://www.mchobby.be |
| + | // |
| + | #include <SoftwareSerial.h> |
| + | |
| + | SoftwareSerial mySerial(7, 8); |
| + | |
| + | // EN: 1 means than escape caracter (tilde) has been detected from Serial Monitor (Arduino Side) |
| + | // FR: 1 indique que le caractere d'echappement est détecté sur le moniteur serie (coté Arduino) |
| + | int escapingFlag = 0; |
| + | |
| + | void setup() |
| + | { |
| + | mySerial.begin(19200); // the GPRS baud rate |
| + | Serial.begin(19200); // the GPRS baud rate |
| + | } |
| + | |
| + | void loop() |
| + | { |
| + | char SerialInByte; |
| + | if(Serial.available()) |
| + | { |
| + | // EN: Listen to Arduino IDE serial Moniteur |
| + | // FR: Ecouter les envois du serial moniteur d'Arduino IDE |
| + | char SerialInByte; |
| + | SerialInByte = Serial.read(); |
| + | |
| + | // EN: Intercept escape character (tilde) for escape sequence |
| + | // FR: Intercepter le caractere d'echappement (tilde) for une sequence d'echappement |
| + | if( (SerialInByte == 126) && (escapingFlag==0) ) { |
| + | escapingFlag = 1; |
| + | return; // wait next caracter / attendre caractere suivant |
| + | } |
| + | else { |
| + | // EN: complete escaping sequence (if appropriate) |
| + | // FR: complete la séquence d'echappement (if appropriate) |
| + | if( escapingFlag == 1 ){ |
| + | if( SerialInByte == 122 ){ // (tilde) z = Ctrl Z |
| + | SerialInByte = 26; |
| + | } |
| + | if( SerialInByte == 101 ){ // (tilde) e = ESC |
| + | SerialInByte = 27; |
| + | } |
| + | escapingFlag = 0; |
| + | } |
| + | |
| + | // EN: Normal working. Simply send character (escaped or not) to GPRS shield |
| + | // FR: Fonctionnement normal. Envoyer le caractere (echappé ou non) vers GPRS shield |
| + | mySerial.print( SerialInByte ); |
| + | } |
| + | |
| + | } |
| + | else if(mySerial.available()) |
| + | { |
| + | // EN: Listen to GRPS shield + relay to Arduino Serial Monitor |
| + | // FR: Ecouter les envois du GPRS shield + Renvoi vers Arduino Serial Monitor |
| + | char c = mySerial.read(); |
| + | Serial.print( c ); |
| + | } |
| + | |
| + | } |
| + | </nowiki> |
| + | |
| + | == Exemple == |
| + | Voici un exemple d'envoi de SMS depuis le Serial Moniteur d'Arduino IDE. |
| + | |
| + | Les réponses OK sont renvoyée par la GRPS Shield, le caractère ">" est une invite du SIM900 à poursuivre le message SMS. |
| + | |
| + | Note:La commande "AT+CMGF=1" sert a passer la gestion des messages SMS en mode texte. |
| + | |
| + | <nowiki>AT |
| + | |
| + | OK |
| + | AT+CMGF=1 |
| + | |
| + | OK |
| + | AT+CMGS="+32499667788" |
| + | > For sure, GPRS Shield |
| + | > is really awesome |
| + | > </nowiki> |
| + | |
| + | C'est sur cette dernière ligne avec le ">" que vous entrez la séquence "~z" pour envoyer un CTRL-Z au GPRS Shield. |
| + | |
| + | Le GPRS shield cloturera le message SMS et l'enverra sur le réseau mobile. Vous obtiendrez une réponse du genre. |
| + | <nowiki>+CMGS: 127 |
| + | |
| + | OK |
| + | </nowiki> |
| | | |
| {{MCH-Accord}} | | {{MCH-Accord}} |