Programme GSM M95 v2.0

Dependencies:   mbed

Fork of mbed_m95 by TeamLegrand

Revision:
0:a2a2c45b4247
Child:
1:be115e3a98ae
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Mar 04 13:58:07 2018 +0000
@@ -0,0 +1,131 @@
+/* JF - Lycee Cabanis de Brive-la-Gaillarde - date : 20180304*/
+/* Essai gsm modem M95 : envoi SMS */
+
+#include "mbed.h"
+ 
+ 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 
+ 
+ DigitalOut led1(LED1);
+ DigitalOut led2(LED2);
+ DigitalOut led3(LED3);
+ DigitalOut led4(LED4);
+ 
+ DigitalOut  bp_fire(p14);
+ DigitalOut  pwrkey(p21);
+ DigitalOut  emerg_off(p22);
+ DigitalIn status(p11);
+  
+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 message_transmis[100]={"Hello world ! Lycee Cabanis Brive SN2 !"};
+char code_pin[5]={"1234"};
+char reponse_gsm[20];
+int element=0;  //indice pour tableau
+
+int main() 
+ {
+    //gsm.baud(9600);  // vitesse uart gsm 9600 bauds
+    for (int i=0;i<20;i++) reponse_gsm[i]=0; // initialisation tableau réponses
+    
+    pc.printf("Lycee cabanis - Brive-la-Gaillarde - date : 20180304");
+    pc.printf("\n\r>");
+    pc.printf("Essai gsm modem m95 : envoi SMS");
+    pc.printf("\n\r>");
+    
+    init_gsm();
+    pc.printf("Appuyez sur ''bp enter'' pour envoi SMS");
+    pc.printf("\n\r>");
+      
+    while (1) {          
+        
+        if(bp_fire==1){
+            // envoi message SMS au N° pré-saisi           
+            gsm.printf("AT+CMGS=%s\r",numero_destinataire);
+            gsm.printf("%s",message_transmis);
+            gsm.putc(0x1A); // envoi ctrl+Z
+            //wait(30);   // l'envoi du message SMS prends en 120 s maximum
+            
+            pc.printf("AT+CMGS=%s\r",numero_destinataire);
+            pc.printf("\n\r>");
+            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
+            
+            /*while (gsm.readable()){
+            reponse_gsm[element]=gsm.getc();
+            element++;
+            }
+            pc.printf("Reponse modem gsm = s%\r",reponse_gsm); // monitoring*/
+            
+            pc.printf("Appuyez sur ''bp_enter'' pour envoi SMS");
+            pc.printf("\n\r>");
+            }
+    }
+}
+       
+// to turn on_off le modem gsm m95
+void power_on_off(){
+    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(); 
+    pwrkey=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);
+    emerg_off=0;
+    wait(3);
+    }
+
+// to blink led1    
+void led1_blink(){
+    //int i;
+    for(int i=0;i<3;i++)
+        {
+            led1=1;
+            wait(0.250);
+            led1=0;
+            wait(0.250);
+        }
+    }
+ 
+ void init_gsm(){   
+    pc.printf("Patientez quelques instants : initialisation du modem gsm");
+    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()){
+            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
+    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>");*/
+    } 
+    
\ No newline at end of file