Charles Dejardin
/
xbeerx
Wireless data sending
Fork of xberx by
Revision 1:27646760b7ac, committed 2014-06-03
- Comitter:
- CharlesDej
- Date:
- Tue Jun 03 08:59:19 2014 +0000
- Parent:
- 0:3d9570678c6d
- Commit message:
- Wireless data receiving
Changed in this revision
diff -r 3d9570678c6d -r 27646760b7ac C12832.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832.lib Tue Jun 03 08:59:19 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/components/code/C12832/#1c3011afe95d
diff -r 3d9570678c6d -r 27646760b7ac TextLCD.lib --- a/TextLCD.lib Mon Feb 28 19:57:50 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/simon/code/TextLCD/#44f34c09bd37
diff -r 3d9570678c6d -r 27646760b7ac main.cpp --- a/main.cpp Mon Feb 28 19:57:50 2011 +0000 +++ b/main.cpp Tue Jun 03 08:59:19 2014 +0000 @@ -1,34 +1,130 @@ - #include "mbed.h" - #include "TextLCD.h" - - Serial xbee1(p9, p10); - DigitalOut rst1(p8); - - DigitalOut myled(LED1); - TextLCD lcd(p15, p16, p17, p18, p19, p20); - - int main() { +/* LIBRARIES */ +#include "mbed.h" +#include "C12832.h" +#include "string.h" +/*--------------------*/ + +/*OUTPUT AND INPUT CONFIGURATION*/ +Serial xbee1(p9, p10); //pin declaration for the xbee module on the board +Serial cinterion(p13,p14); //pin declaration for the cinterion module on the board +DigitalOut myled(LED1); //pin declaration for the blinking LED on the board +DigitalOut myled2 (LED2); +DigitalOut myled3 (LED3); +DigitalOut myled4 (LED4); +C12832 lcd(p5, p7, p6, p8, p11); //pin declaration for the LCD screen on the board +/*--------------------------*/ + +/*FUNCTION PROTOTYPE*/ +float decryption (float sens2, char sens); +/*----------------------*/ + +/*VARIABLES DEFINITION*/ +char X; //definition of a character +char temp,volt,current,lumi; //definition of four variables matching the 4 differents type of data that the board receive +float temp2, current2,volt2, lumi2; // which are temperature, voltage, current, and luminosity +char NumTel[] = "07404054906"; //Mobile number to which the values will be sent +char inchar,inchar1,inchar2,inchar3,inchar4,inchar5; // variables used for the SMS +/*-----------------------------------------*/ + + +/*------------*/ +/*MAIN PROGRAM*/ +/*------------*/ + + +void FlushGSM(void) { char char1 = 0; while (cinterion.readable()) { char1 = cinterion.getc(); } return; } //function that clean out the reception buffer of the SIM card + - rst1 = 0; //Set reset pin to 0 - myled = 0; - wait_ms(1); - rst1 = 1; //Set reset pin to 1 - wait_ms(1); - int X; +//----CALLBACK FUNCTIONS----// +//This one will interrupt the program when the cinterion will be receiving a SMS// +void callback2() + { + inchar = cinterion.getc(); // I am copying several value to be sure that this is the right command + inchar1 = cinterion.getc(); + inchar2 = cinterion.getc(); + inchar3 = cinterion.getc(); + inchar4 = cinterion.getc(); + inchar5 = cinterion.getc(); + if ((inchar == 0x0D)&&(inchar1 == 0x0A)&&(inchar2 == '+')&&(inchar3 == 'C')&&(inchar4 == 'M')&& (inchar5 == 'T')) // if the incoming command is "+CMTI", a new SMS has been received + { + myled4=1; + cinterion.printf("AT+CMGD=1"); //AT command to delete the last SMS, to never be out of space + cinterion.putc(0x0D); //"enter" + wait(1); + FlushGSM(); //clear the reception buffer + wait(0.5); + cinterion.printf("AT+CMGF=1"); //Text mode activated for the SMS + cinterion.putc(0x0D); //"enter" + wait(1); + myled2=1; + cinterion.printf("AT+CMGS=%s", NumTel); //AT command to send a SMS to the mobile number set + cinterion.putc(0x0D); //"enter" + wait(1) ; + cinterion.printf("Temperature: %.2f, Current: %.2f,Voltage: %.2f, Luminosity: %.2f" , temp2, current2, volt2, lumi2); //the results are send by SMS + cinterion.putc(0x1A); //ASCII code for Ctrl+Z + wait(5); //there are a lot of delays, to be sure that the command are sent + myled2=0; + FlushGSM(); //clear the reception buffer + myled4=0; + + } + } + + - while (1) { - if(xbee1.readable()){ - wait(1); - myled = 1; - - xbee1.scanf("%d", &X); - // X = xbee1.getc(); - wait(1); - myled = 0; - lcd.printf("data received %f \n\r ", (X)/10.0); - - } - } +//This one will interrupt the program when the xbee will be receiving data// + void callback() + { + X = xbee1.getc(); //the values received are put into the X variable + if (X == 0xEE) //if X equals the start bit + { myled = 1; + temp = xbee1.getc(); //the next value that the xbee receive is the temperature, then the current, the voltage and finally the luminosity + current = xbee1.getc(); + volt = xbee1.getc(); + lumi = xbee1.getc(); + + temp2 = decryption(temp2, temp); //decryption of the values received + current2 = decryption(current2, current); + volt2 = decryption (volt2, volt) ; + lumi2 = decryption(lumi2, lumi); + } + + if (X == 0xFF) //if X equals the final bit + { + myled = 0; //LED is off when the string stops + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Temperature: %.2f, Current: %.2f,Voltage: %.2f, Luminosity: %.2f" , temp2, current2, volt2, lumi2); //the board monitor the results on the LCD Screen + xbee1.printf("Temperature : %f , Current : %f , Voltage : %f , Luminosity : %f " , temp2, current2, volt2, lumi2); //the board sends the results to the PC thanks to the xbee + } + } + + + + float decryption(float sens2, char sens) // decryption function + { + sens >>=2; //shift bit to the right + sens2 = (float)sens/50 ; //division + return sens2; + } + + + + //----MAIN FUNCTION----// + int main() + { + cinterion.printf("AT+CNMI=1,1,0,0,1"); //configure the cinterion board to be warned when a new SMS is received + cinterion.putc(0x0D); // ASCII code for the "enter" key + FlushGSM(); // clear the reception buffer + + while (1) //Neverending loop + { + xbee1.attach(&callback); //call of the xbee callback function + cinterion.attach(&callback2); //call of the cinterion callback function + wait(1); + } } + +
diff -r 3d9570678c6d -r 27646760b7ac mbed.bld --- a/mbed.bld Mon Feb 28 19:57:50 2011 +0000 +++ b/mbed.bld Tue Jun 03 08:59:19 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/63bcd7ba4912 +http://mbed.org/users/mbed_official/code/mbed/builds/0b3ab51c8877 \ No newline at end of file