gsm and sd card
Dependencies: Base64 sd-driver
Diff: main.cpp
- Revision:
- 0:f7e73515c3fc
- Child:
- 1:441cdd24333e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jul 02 07:47:25 2019 +0000 @@ -0,0 +1,290 @@ +//It is the code of the GPRS communication by the use of the Sim800 module. +//This code has work is "to upload data on data.sparkfun.com in every 5 seconds. +//To check the uploaded data the URL is "data.sparkfun.com/streams/roYVdJgWrXUpxVpDYJpA". + +#include "mbed.h" +#include <string> +#include "gsmWork.h" +#include "lcdWork.h" +#define GSMRX PA_9 +#define GSMTX PA_10 +#define SAMPLE_FLAG1 (1UL << 0) +#define SAMPLE_FLAG2 (1UL << 9) + + + +typedef struct { +uint8_t *lcdData; +} mail_t; + +Mail<mail_t, 32> mail_box; + + +uint8_t request[50] = "Hello!I am SIM800,I send you request from stm32"; +uint8_t counter=0x00; +uint8_t receiveMsg[50]; +char answer[300]; +//(const char*) receiveMsg[10]; +bool pressedButton = false; +int i; +InterruptIn button(USER_BUTTON); + +DigitalOut myLed(LED1); + + +Serial sim800(GSMRX,GSMTX); //Serial communication of the sim800 and pc. +Serial pc(SERIAL_TX,SERIAL_RX); + + +Thread gsmTask; +Thread lcdTask; + +void buttonPressed() +{ + counter++; + request[49]=counter; + pressedButton=true; + + +} +void buttonReleased() +{ + myLed=!myLed; + pressedButton=false; + +} + +void simAnswer() +{ + /*if (answer.indexOf("RDY") > -1) + { + + + + } +else if (answer.indexOf("OK") > -1) + { + + } +else if (answer.indexOf("ERROR") > -1) + { + + } +else if(answer!="") + { + + }*/ + +} + + + + +void sendAt(const char *AT,int ATdelay) +{ + sim800.printf("%s\r\n",AT); +} + +void startGPRS() +{ + +} +//LCD DISPLAY WORK++++++++++++++++++++++++++++++++++ +void lcdStartWork() { + + while(1) + { + if(pressedButton==true) { + + + + myLed=!myLed; + + mail_t *mail = mail_box.alloc(); + mail->lcdData = request; + mail_box.put(mail); + wait(1); + pressedButton=false; + + + } +wait(0.3); + } + +} +//GSM MODULE WORK_________________________________ +void gsmStartWork() { + + while(1) + { + osEvent evt = mail_box.get();; + if (evt.status == osEventMail) { + mail_t *mail = (mail_t*)evt.value.p; + uint8_t*receiveMsg = mail->lcdData; + printf("lcdData: %s\n\r" , *receiveMsg); + mail_box.free(mail); + sim800.printf("AT\r\n"); +wait(1); + if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sim800.printf("AT+SAPBR=3,1,Contype,GPRS\r\n"); + +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + + sim800.printf("AT+SAPBR=3,1,APN,internet.mts.ru\r\n"); +wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sim800.printf("AT+SAPBR=3,1,USER,mts\r\n"); + wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+SAPBR=3,1,PWD,mts",0); +wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+SAPBR=1,1",0); + wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+HTTPINIT",0); + wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+HTTPPARA=CID,1",0); +wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+HTTPPARA=URL,157.230.245.76:1880/message",0); + wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+HTTPPARA=CONTENT,application/octet-stream",0); + wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+HTTPDATA=51,10000",0); + wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sim800.write(*receiveMsg,51,NULL,SERIAL_EVENT_TX_COMPLETE); + wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+HTTPACTION=1",0); + wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+HTTPTERM",0); + wait(1); +if(sim800.readable()) { + pc.putc(sim800.getc()); + } + sendAt("AT+SAPBR=0,1",0); + + } + } + +} +//MAIN----------------------------------------------- +int main() +{ + pc.baud(9300); + sim800.baud(9600); + pc.printf("*******GPRS TEST*******\r\n"); + + button.rise(&buttonReleased); + button.fall(&buttonPressed); + + gsmTask.start(gsmStartWork); + lcdTask.start(lcdStartWork); + + /* pc.printf("*******GPRS TEST*******\r\n"); + + + + sim800.printf("AT+CGATT?\r\n"); //To check the GPRS is attached or not. + sim800.scanf("%s%s",x,y); + + + sim800.printf("AT+CIPSHUT\r\n"); //To reset the IP session if any. + sim800.scanf("%s%s",x,y); + pc.printf("%s %s\r\n",x,y); + + sim800.printf("AT+SAPBR=3,1,Contype,GPRS\r\n"); //To Set the connection type to GPRS. + sim800.scanf("%s",x); + pc.printf("%s\r\n",x); + + sim800.printf("AT+SAPBR=3,1,APN,www\r\n"); //To Set the APN to to "www" , It might be different for you, and depends on the network. + sim800.scanf("%s",x); + pc.printf("%s\r\n",x); + + sim800.printf("AT+SAPBR =1,1\r\n"); //To Enable the GPRS. + sim800.scanf("%s",x); + pc.printf("%s\r\n",x); + + sim800.printf("AT+SAPBR =2,1\r\n"); //To get the IP address. + sim800.scanf("%s%s%s",x,y,z); + pc.printf("%s %s %s\r\n",x,y,z); + + + sim800.printf("AT+HTTPINIT\r\n"); //To enable the HTTP mode. + sim800.scanf("%s",x); + pc.printf("%s\r\n",x); + + sim800.printf("AT+HTTPPARA=CID,1\r\n"); //To sets up HTTP parameters for the HTTP call. + sim800.scanf("%s",x); + pc.printf("%s\r\n",x); + + + float lng,lat = 0; + while(lat == 0) + { + sim800.printf("AT+CIPGSMLOC=1,1\r\n"); //To check the Location of GSM in Co-Ordinates(Longitude,Latitude). + sim800.scanf("%s%s%s",x,y,z); + sscanf(y,"0,%f,%f",&lng,&lat); //To sperate out the value of longitude and latitude from the string 'y'. + } + pc.printf("%0.6f %0.6f",lng,lat); + */ + /* + while(1) + { + + sim800.printf("AT+HTTPPARA=URL,data.sparkfun.com/input/roYVdJgWrXUpxVpDYJpA?private_key=jkgpNMYr81cgMGgbypgr&co_lat=%0.6f&co_long=%0.6f&ldr=%0.2f&pot=%0.2f\r\n",lat,lng,potval,ldrval); + //The above command is for "To Set the url to the address of the webpage you want to access". + sim800.scanf("%s",x); + pc.printf("%s\r\n",x); + + sim800.printf("AT+HTTPACTION=0\r\n"); //To Start the HTTP GET session, by giving this command. + sim800.scanf("%s%s%s",x,y,z); + pc.printf("%s %s %s\r\n",x,y,z); + + sim800.printf("AT+HTTPREAD\r\n"); //To read the received data. + sim800.scanf("%s%s%s%s%s",x,y,z,l,m); + pc.printf("%s %s %s %s %s\r\n",x,y,z,l,m); + + wait(5); + }*/ + while(1) { + if(pc.readable()) { + sim800.putc(pc.getc()); + } + if(sim800.readable()) { + pc.putc(sim800.getc()); + } + } +} \ No newline at end of file