![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Programme GSM M95 v2.0
Dependencies: mbed
Fork of mbed_m95 by
Diff: main.cpp
- Revision:
- 1:be115e3a98ae
- Parent:
- 0:a2a2c45b4247
- Child:
- 2:f3d64c53f369
diff -r a2a2c45b4247 -r be115e3a98ae main.cpp --- a/main.cpp Sun Mar 04 13:58:07 2018 +0000 +++ b/main.cpp Sun Mar 11 20:55:56 2018 +0000 @@ -6,8 +6,9 @@ void power_on(); // to turn on le modem gsm void led1_blink(); // to blink led1 void reset(); // to reset gsm modem - void init_gsm(); // to init gsm modem - + void init_gsm(); // to init gsm modem + void data_gsm(); //to receive a reply from gsm + DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); @@ -21,15 +22,18 @@ Serial pc(USBTX, USBRX); // creation objet -> stream serial USB Serial gsm(p9,p10); // creation objet -> stream serial uart p9 et p10 -char numero_destinataire[20]={"06XXXXXXXX"};; +char numero_destinataire[20]={"xxxxxxxxxx"};; char message_transmis[100]={"Hello world ! Lycee Cabanis Brive SN2 !"}; -char code_pin[5]={"1234"}; -char reponse_gsm[20]; +char code_pin[5]={"0000"}; +char reponse_gsm[256]; int element=0; //indice pour tableau +int octet=0; int main() { + //gsm.attach(&callback_rx); //gsm.baud(9600); // vitesse uart gsm 9600 bauds + //gsm.format(8,Serial::None,1); //Serial frame format for (int i=0;i<20;i++) reponse_gsm[i]=0; // initialisation tableau réponses pc.printf("Lycee cabanis - Brive-la-Gaillarde - date : 20180304"); @@ -55,13 +59,11 @@ pc.printf("%s",message_transmis); pc.putc(0x1A); // envoi ctrl+Z pc.printf("\n\r>"); - wait(30); // l'envoi du message SMS prends en 120 s maximum + + wait(15); // l'envoi du message SMS prends en 120 s maximum - /*while (gsm.readable()){ - reponse_gsm[element]=gsm.getc(); - element++; - } - pc.printf("Reponse modem gsm = s%\r",reponse_gsm); // monitoring*/ + for (int i=0;i<20;i++) reponse_gsm[i]=0; // initialisation tableau réponses + //reply_gsm(); // réponse du gsm pc.printf("Appuyez sur ''bp_enter'' pour envoi SMS"); pc.printf("\n\r>"); @@ -70,21 +72,30 @@ } // to turn on_off le modem gsm m95 -void power_on_off(){ +void power_on(){ pwrkey=1; // création impulsion turn on sur ligne pwrkey - wait(1); - //pwrkey=1; - // attente de l'état turn on sur la ligne status - while(status==0)led1_blink(); + wait(3); + + while(status==0); // attente démarrage modem m95 + led1_blink(); + led1=1; pwrkey=0; } +void power_off(){ + pwrkey=1; // création impulsion turn on sur ligne pwrkey + wait(0.8); + pwrkey=0; + while(status==1); + led1=0; + } + // to turn on_off le modem gsm m95 void reset(){ emerg_off=1; // création impulsion turn on sur ligne emerg_off - wait(0.1); + wait(0.7); emerg_off=0; - wait(3); + wait(12); } // to blink led1 @@ -98,34 +109,125 @@ wait(0.250); } } - - void init_gsm(){ - pc.printf("Patientez quelques instants : initialisation du modem gsm"); + // Recevoir une réponse du gsm +/*void callback_rx() { + // Note: you need to actually read from the serial to clear the RX interrupt + reponse_gsm[octet++]=gsm.getc()); + octet = octet++; +}*/ +void data_gsm(){ + for (int i=0;i<255;i++) reponse_gsm[i]=0; // initialisation tableau réponses + element=0; + while (gsm.readable()){ + reponse_gsm[element]=gsm.getc(); + element++; + } + for(int i=0 ; i<element ; i++)pc.printf("%c",reponse_gsm[i]); pc.printf("\n\r>"); - pwrkey=0; - emerg_off=0; - power_on_off(); //modem on - gsm.printf("AT+CPIN=%s\r",code_pin); // stockage du PIN - wait(5); - - pc.printf("AT+CPIN=%s\r",code_pin); // monitoring - pc.printf("\n\r>"); - /*while (gsm.readable()){ + } + +void reset_buffer(){ + while (gsm.readable()){ reponse_gsm[element]=gsm.getc(); element++; } - pc.printf("Reponse modem gsm = s%\r",reponse_gsm); // monitoring*/ - - gsm.printf("AT+CMGF=1\r"); // sélection du format du message SMS - wait(0.3); + } + - pc.printf("AT+CMGF=1\r"); // monitoring +void init_gsm(){ + pc.printf("Patientez quelques instants : initialisation du modem gsm"); + pc.printf("\n\r>"); + wait(5); //tempo pour établissement tension alim. modem + power_off(); // modem off + pc.printf("Appuyez sur ''bp enter'' pour demarrer le modem gsm"); pc.printf("\n\r>"); - /*while (gsm.readable()){ - reponse_gsm[element]=gsm.getc(); - element++; - } - pc.printf("Reponse modem gsm = s%\r",reponse_gsm); // monitoring - pc.printf("\n\r>");*/ + while(bp_fire==0); + + /*led1=1; + pwrkey=1; + wait(5); + pwrkey=0;*/ + //emerg_off=0; + //reset(); // modem off (shutdowm) + //wait(5); + power_on(); // modem on + + wait(10); + //reply_gsm(5); // réponse du gsm; + //reply_gsm(11); // réponse du gsm; + + gsm.printf("AT\r"); // report erreur gsm + data_gsm(); + wait(1); + pc.printf("AT\r"); + + gsm.printf("AT?\r"); + pc.printf("AT?\r"); + data_gsm(); + gsm.printf("ATE0\r"); // pas d'echo vers le DTE pour les l'envoi des commandes + wait(1); + gsm.printf("ATE0?\r"); // + pc.printf("ATE0?\r"); // + data_gsm(); + + + + + + gsm.printf("AT+CSQ\r"); // vitesse transmission fixée (recommandé) + wait(1); + gsm.printf("AT+CSQ?\r"); // vitesse transmission fixée (recommandé) + pc.printf("AT+CSQ\r"); // vitesse transmission fixée (recommandé) + data_gsm(); + + + gsm.printf("AT+CREG?\r"); // enregistrement du réseau + wait(1); + pc.printf("AT+CREG?\r"); // + data_gsm(); + + gsm.printf("AT+COPS?\r"); // enregistrement du réseau + wait(1); + pc.printf("AT+COPS?\r"); // + data_gsm(); + + gsm.printf("AT+IPR=9600\r"); // vitesse transmission fixée (recommandé) + wait(1); + gsm.printf("AT+IPR?\r"); // vitesse transmission fixée (recommandé) + pc.printf("AT+IPR?\r"); // vitesse transmission fixée (recommandé) + data_gsm(); + + gsm.printf("AT&W\r"); // stokage vitesse + wait(1); + gsm.printf("AT&W?\r"); // stokage vitesse + pc.printf("AT&W?\r"); // stokage vitesse + data_gsm(); + + gsm.printf("AT+CMGF=1\r"); // sélection du format du message SMS + wait(2); + gsm.printf("AT+CMGF?"); // sélection du format du message SMS + pc.printf("AT+CMGF?"); // sélection du format du message SMS + data_gsm(); + + gsm.printf("AT+CMEE=2\r"); // report erreur gsm + wait(1); + gsm.printf("AT+CMEE?"); // report erreur gsm + pc.printf("AT+CMEE?"); // report erreur gsm + data_gsm(); + + gsm.printf("AT+CPIN=%s\r",code_pin); // stockage du PIN + wait(6); + gsm.printf("AT+CPIN?"); // stockage du PIN + pc.printf("AT+CPIN?"); // stockage du PIN + data_gsm(); + + + + gsm.printf("AT+CMGF=1\r"); // sélection du format du message SMS + wait(2); + gsm.printf("AT+CMGF?"); // sélection du format du message SMS + pc.printf("AT+CMGF?"); // sélection du format du message SMS + data_gsm(); + + } - \ No newline at end of file