Programme GSM M95 v2.0

Dependencies:   mbed

Fork of mbed_m95 by TeamLegrand

main.cpp

Committer:
mbedjf
Date:
2018-03-04
Revision:
0:a2a2c45b4247
Child:
1:be115e3a98ae

File content as of revision 0:a2a2c45b4247:

/* 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>");*/
    }