Programme GSM M95 v2.0
Dependencies: mbed
Fork of mbed_m95 by
main.cpp@0:a2a2c45b4247, 2018-03-04 (annotated)
- Committer:
- mbedjf
- Date:
- Sun Mar 04 13:58:07 2018 +0000
- Revision:
- 0:a2a2c45b4247
- Child:
- 1:be115e3a98ae
Programme essais ? valider ! envoi sms
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbedjf | 0:a2a2c45b4247 | 1 | /* JF - Lycee Cabanis de Brive-la-Gaillarde - date : 20180304*/ |
mbedjf | 0:a2a2c45b4247 | 2 | /* Essai gsm modem M95 : envoi SMS */ |
mbedjf | 0:a2a2c45b4247 | 3 | |
mbedjf | 0:a2a2c45b4247 | 4 | #include "mbed.h" |
mbedjf | 0:a2a2c45b4247 | 5 | |
mbedjf | 0:a2a2c45b4247 | 6 | void power_on(); // to turn on le modem gsm |
mbedjf | 0:a2a2c45b4247 | 7 | void led1_blink(); // to blink led1 |
mbedjf | 0:a2a2c45b4247 | 8 | void reset(); // to reset gsm modem |
mbedjf | 0:a2a2c45b4247 | 9 | void init_gsm(); // to init gsm modem |
mbedjf | 0:a2a2c45b4247 | 10 | |
mbedjf | 0:a2a2c45b4247 | 11 | DigitalOut led1(LED1); |
mbedjf | 0:a2a2c45b4247 | 12 | DigitalOut led2(LED2); |
mbedjf | 0:a2a2c45b4247 | 13 | DigitalOut led3(LED3); |
mbedjf | 0:a2a2c45b4247 | 14 | DigitalOut led4(LED4); |
mbedjf | 0:a2a2c45b4247 | 15 | |
mbedjf | 0:a2a2c45b4247 | 16 | DigitalOut bp_fire(p14); |
mbedjf | 0:a2a2c45b4247 | 17 | DigitalOut pwrkey(p21); |
mbedjf | 0:a2a2c45b4247 | 18 | DigitalOut emerg_off(p22); |
mbedjf | 0:a2a2c45b4247 | 19 | DigitalIn status(p11); |
mbedjf | 0:a2a2c45b4247 | 20 | |
mbedjf | 0:a2a2c45b4247 | 21 | Serial pc(USBTX, USBRX); // creation objet -> stream serial USB |
mbedjf | 0:a2a2c45b4247 | 22 | Serial gsm(p9,p10); // creation objet -> stream serial uart p9 et p10 |
mbedjf | 0:a2a2c45b4247 | 23 | |
mbedjf | 0:a2a2c45b4247 | 24 | char numero_destinataire[20]={"06XXXXXXXX"};; |
mbedjf | 0:a2a2c45b4247 | 25 | char message_transmis[100]={"Hello world ! Lycee Cabanis Brive SN2 !"}; |
mbedjf | 0:a2a2c45b4247 | 26 | char code_pin[5]={"1234"}; |
mbedjf | 0:a2a2c45b4247 | 27 | char reponse_gsm[20]; |
mbedjf | 0:a2a2c45b4247 | 28 | int element=0; //indice pour tableau |
mbedjf | 0:a2a2c45b4247 | 29 | |
mbedjf | 0:a2a2c45b4247 | 30 | int main() |
mbedjf | 0:a2a2c45b4247 | 31 | { |
mbedjf | 0:a2a2c45b4247 | 32 | //gsm.baud(9600); // vitesse uart gsm 9600 bauds |
mbedjf | 0:a2a2c45b4247 | 33 | for (int i=0;i<20;i++) reponse_gsm[i]=0; // initialisation tableau réponses |
mbedjf | 0:a2a2c45b4247 | 34 | |
mbedjf | 0:a2a2c45b4247 | 35 | pc.printf("Lycee cabanis - Brive-la-Gaillarde - date : 20180304"); |
mbedjf | 0:a2a2c45b4247 | 36 | pc.printf("\n\r>"); |
mbedjf | 0:a2a2c45b4247 | 37 | pc.printf("Essai gsm modem m95 : envoi SMS"); |
mbedjf | 0:a2a2c45b4247 | 38 | pc.printf("\n\r>"); |
mbedjf | 0:a2a2c45b4247 | 39 | |
mbedjf | 0:a2a2c45b4247 | 40 | init_gsm(); |
mbedjf | 0:a2a2c45b4247 | 41 | pc.printf("Appuyez sur ''bp enter'' pour envoi SMS"); |
mbedjf | 0:a2a2c45b4247 | 42 | pc.printf("\n\r>"); |
mbedjf | 0:a2a2c45b4247 | 43 | |
mbedjf | 0:a2a2c45b4247 | 44 | while (1) { |
mbedjf | 0:a2a2c45b4247 | 45 | |
mbedjf | 0:a2a2c45b4247 | 46 | if(bp_fire==1){ |
mbedjf | 0:a2a2c45b4247 | 47 | // envoi message SMS au N° pré-saisi |
mbedjf | 0:a2a2c45b4247 | 48 | gsm.printf("AT+CMGS=%s\r",numero_destinataire); |
mbedjf | 0:a2a2c45b4247 | 49 | gsm.printf("%s",message_transmis); |
mbedjf | 0:a2a2c45b4247 | 50 | gsm.putc(0x1A); // envoi ctrl+Z |
mbedjf | 0:a2a2c45b4247 | 51 | //wait(30); // l'envoi du message SMS prends en 120 s maximum |
mbedjf | 0:a2a2c45b4247 | 52 | |
mbedjf | 0:a2a2c45b4247 | 53 | pc.printf("AT+CMGS=%s\r",numero_destinataire); |
mbedjf | 0:a2a2c45b4247 | 54 | pc.printf("\n\r>"); |
mbedjf | 0:a2a2c45b4247 | 55 | pc.printf("%s",message_transmis); |
mbedjf | 0:a2a2c45b4247 | 56 | pc.putc(0x1A); // envoi ctrl+Z |
mbedjf | 0:a2a2c45b4247 | 57 | pc.printf("\n\r>"); |
mbedjf | 0:a2a2c45b4247 | 58 | wait(30); // l'envoi du message SMS prends en 120 s maximum |
mbedjf | 0:a2a2c45b4247 | 59 | |
mbedjf | 0:a2a2c45b4247 | 60 | /*while (gsm.readable()){ |
mbedjf | 0:a2a2c45b4247 | 61 | reponse_gsm[element]=gsm.getc(); |
mbedjf | 0:a2a2c45b4247 | 62 | element++; |
mbedjf | 0:a2a2c45b4247 | 63 | } |
mbedjf | 0:a2a2c45b4247 | 64 | pc.printf("Reponse modem gsm = s%\r",reponse_gsm); // monitoring*/ |
mbedjf | 0:a2a2c45b4247 | 65 | |
mbedjf | 0:a2a2c45b4247 | 66 | pc.printf("Appuyez sur ''bp_enter'' pour envoi SMS"); |
mbedjf | 0:a2a2c45b4247 | 67 | pc.printf("\n\r>"); |
mbedjf | 0:a2a2c45b4247 | 68 | } |
mbedjf | 0:a2a2c45b4247 | 69 | } |
mbedjf | 0:a2a2c45b4247 | 70 | } |
mbedjf | 0:a2a2c45b4247 | 71 | |
mbedjf | 0:a2a2c45b4247 | 72 | // to turn on_off le modem gsm m95 |
mbedjf | 0:a2a2c45b4247 | 73 | void power_on_off(){ |
mbedjf | 0:a2a2c45b4247 | 74 | pwrkey=1; // création impulsion turn on sur ligne pwrkey |
mbedjf | 0:a2a2c45b4247 | 75 | wait(1); |
mbedjf | 0:a2a2c45b4247 | 76 | //pwrkey=1; |
mbedjf | 0:a2a2c45b4247 | 77 | // attente de l'état turn on sur la ligne status |
mbedjf | 0:a2a2c45b4247 | 78 | while(status==0)led1_blink(); |
mbedjf | 0:a2a2c45b4247 | 79 | pwrkey=0; |
mbedjf | 0:a2a2c45b4247 | 80 | } |
mbedjf | 0:a2a2c45b4247 | 81 | |
mbedjf | 0:a2a2c45b4247 | 82 | // to turn on_off le modem gsm m95 |
mbedjf | 0:a2a2c45b4247 | 83 | void reset(){ |
mbedjf | 0:a2a2c45b4247 | 84 | emerg_off=1; // création impulsion turn on sur ligne emerg_off |
mbedjf | 0:a2a2c45b4247 | 85 | wait(0.1); |
mbedjf | 0:a2a2c45b4247 | 86 | emerg_off=0; |
mbedjf | 0:a2a2c45b4247 | 87 | wait(3); |
mbedjf | 0:a2a2c45b4247 | 88 | } |
mbedjf | 0:a2a2c45b4247 | 89 | |
mbedjf | 0:a2a2c45b4247 | 90 | // to blink led1 |
mbedjf | 0:a2a2c45b4247 | 91 | void led1_blink(){ |
mbedjf | 0:a2a2c45b4247 | 92 | //int i; |
mbedjf | 0:a2a2c45b4247 | 93 | for(int i=0;i<3;i++) |
mbedjf | 0:a2a2c45b4247 | 94 | { |
mbedjf | 0:a2a2c45b4247 | 95 | led1=1; |
mbedjf | 0:a2a2c45b4247 | 96 | wait(0.250); |
mbedjf | 0:a2a2c45b4247 | 97 | led1=0; |
mbedjf | 0:a2a2c45b4247 | 98 | wait(0.250); |
mbedjf | 0:a2a2c45b4247 | 99 | } |
mbedjf | 0:a2a2c45b4247 | 100 | } |
mbedjf | 0:a2a2c45b4247 | 101 | |
mbedjf | 0:a2a2c45b4247 | 102 | void init_gsm(){ |
mbedjf | 0:a2a2c45b4247 | 103 | pc.printf("Patientez quelques instants : initialisation du modem gsm"); |
mbedjf | 0:a2a2c45b4247 | 104 | pc.printf("\n\r>"); |
mbedjf | 0:a2a2c45b4247 | 105 | pwrkey=0; |
mbedjf | 0:a2a2c45b4247 | 106 | emerg_off=0; |
mbedjf | 0:a2a2c45b4247 | 107 | power_on_off(); //modem on |
mbedjf | 0:a2a2c45b4247 | 108 | gsm.printf("AT+CPIN=%s\r",code_pin); // stockage du PIN |
mbedjf | 0:a2a2c45b4247 | 109 | wait(5); |
mbedjf | 0:a2a2c45b4247 | 110 | |
mbedjf | 0:a2a2c45b4247 | 111 | pc.printf("AT+CPIN=%s\r",code_pin); // monitoring |
mbedjf | 0:a2a2c45b4247 | 112 | pc.printf("\n\r>"); |
mbedjf | 0:a2a2c45b4247 | 113 | /*while (gsm.readable()){ |
mbedjf | 0:a2a2c45b4247 | 114 | reponse_gsm[element]=gsm.getc(); |
mbedjf | 0:a2a2c45b4247 | 115 | element++; |
mbedjf | 0:a2a2c45b4247 | 116 | } |
mbedjf | 0:a2a2c45b4247 | 117 | pc.printf("Reponse modem gsm = s%\r",reponse_gsm); // monitoring*/ |
mbedjf | 0:a2a2c45b4247 | 118 | |
mbedjf | 0:a2a2c45b4247 | 119 | gsm.printf("AT+CMGF=1\r"); // sélection du format du message SMS |
mbedjf | 0:a2a2c45b4247 | 120 | wait(0.3); |
mbedjf | 0:a2a2c45b4247 | 121 | |
mbedjf | 0:a2a2c45b4247 | 122 | pc.printf("AT+CMGF=1\r"); // monitoring |
mbedjf | 0:a2a2c45b4247 | 123 | pc.printf("\n\r>"); |
mbedjf | 0:a2a2c45b4247 | 124 | /*while (gsm.readable()){ |
mbedjf | 0:a2a2c45b4247 | 125 | reponse_gsm[element]=gsm.getc(); |
mbedjf | 0:a2a2c45b4247 | 126 | element++; |
mbedjf | 0:a2a2c45b4247 | 127 | } |
mbedjf | 0:a2a2c45b4247 | 128 | pc.printf("Reponse modem gsm = s%\r",reponse_gsm); // monitoring |
mbedjf | 0:a2a2c45b4247 | 129 | pc.printf("\n\r>");*/ |
mbedjf | 0:a2a2c45b4247 | 130 | } |
mbedjf | 0:a2a2c45b4247 | 131 |