Вы находитесь на странице: 1из 15

# Define BUFFSIZ 90

/ / Tamao de la memoria para examinar en cualquier momento.

carbn buffer [BUFFSIZ]; // caracteres buffidx; int reintentos = 5;

int sendCommand (char * comando, char *, int resp DelayTime = 500, int reps = 5, int numData = 2); setupCommands void () { sendCommand ("AT & F", "OK"); sendCommand ("ATE0", "OK"); sendCommand ("AT + CLIP = 1", "OK"); sendCommand ("AT + CMEE = 0", "OK"); sendCommand ("AT + CIPSHUT", "cerrada");

} void inicio () {

/ / Delay (1000); sendCommand ("AT + CGATT?", "+ CGATT:"); / / If (sendCommand ("AT + CIFSR", "10", 1000,1) == 1) { / / SendCommand ("AT + CIPCLOSE", "CERRAR OK", 500); / / SendCommand ("AT + CIPSERVER = 0", "OK", 500); / /} sendCommand ("AT + CIPSHUT", "cerrada"); delay (1000);

sendCommand ("AT + CSTT = \" wap.cingular \ "", "OK"); / / Serial.println ("WAP OK"); / / Delay (5000); sendCommand ("AT + CIICR", "OK"); sendCommand ("AT + CIFSR", "10"); / / SendCommand ("AT + CGATT = 0", "OK", 500); / / SendCommand ("AT + CIPSPRT = 0", "OK"); sendCommand ("AT + CIPSTART = \" tcp \ ", \" api.cosm.com \ ", \" 8081 \ "", "CONNECT OK", 500,5,10); / / SendCommand ("AT + CIPSTART = \" tcp \ ", \" www.google.com \ ", \" 80 \ "", "CONNECT OK"); / / Serial.println ("CONNECT OK"); GPRS_Serial.flush (); Serial.flush (); delay (1000);

/ / ATE0 / / AT + CIPSHUT / / AT + CIFSR } getAttachedGPRS int () { volver sendCommand ("AT + CGATT?", "+ CGATT: 1"); } void sendStuff () {

GPRS_Serial.println ("AT + CIPSEND") ;/ / iniciar enviar datos al servidor remoto

retardo (500); / / ShowSerialData (); Humedad String = "1031" ;/ / estos cdigos de 4 lneas estn imitar a los datos de los sensores reales, porque la demostracin did't aadir otro sensor, as que usar 4 variable de cadena a reemplazar. Humedad String = "1242" ;/ / se puede reemplazar estas cuatro variables a los datos de los sensores reales de su proyecto Temperatura String = ;/ "30" / Barmetro String = "60.56" ;/ / / / GPRS_Serial.print ("GET / HTTP/1.1 \ nHost: www.google.com \ Nuser-Agent: Arduino \ n \ n"); GPRS_Serial.print ("{\" mtodo \ ": \" put \ ", \" resource \ ": \" / feeds / "+ feedId +" / \ ", \" params \ "") ;/ / aqu est la alimentar a aplicar a partir Pachube retardo (200); / / ShowSerialData (); GPRS_Serial.print (": {}, \" headers \ ": {\" X-PachubeApiKey \ ":") ;/ / aqu, usted debe reemplazar su pachubeapikey retardo (200); / / ShowSerialData (); GPRS_Serial.print ("\" "+ ApiKey +" \ "}," cuerpo \ "\:") ;/ / pachubeapikey retardo (200); GPRS_Serial.print ("{\" version \ ": \" 1.0.0 \ ", \" flujos de datos \ ":"); retardo (200); / / ShowSerialData (); GPRS_Serial.println ("[{\" id \ ": \" 01 \ ", \" valor_actual \ ": \" "+ Barmetro +" \ "}"); retardo (200); / / ShowSerialData (); GPRS_Serial.println ("{\" id \ ": \" 02 \ ", \" valor_actual \ ": \" "+ humedad +" \ "}");

retardo (200); / / ShowSerialData (); GPRS_Serial.println ("{\" id \ ": \" 03 \ ", \" valor_actual \ ": \" "+ humedad +" \ "}"); retardo (200); / / ShowSerialData (); GPRS_Serial.println ("{\" id \ ": \" 04 \ ", \" valor_actual \ ": \" "+ temperatura +" \ "}]}, \" smbolo \ ": \" lee \ "}" );

retardo (200); / / ShowSerialData ();

GPRS_Serial.println ((char) 26) ;/ / el envo

delay (4000) ;/ / waitting para la respuesta, importante! el tiempo es la base de la condicin de Internet / / GPRS_Serial.println ();

ShowSerialData (); / / GPRS_Serial.println ("AT + CIPCLOSE") ;/ / cerrar la conexin / / SendCommand ("AT + CIPCLOSE", "CERRAR OK"); / / Delay (500); / / ShowSerialData (); } void ShowSerialData () {

Serial.print ("SHOW:"); while (GPRS_Serial.available ()! = 0) Serial.write (GPRS_Serial.read ()); } int sendCommand (char * comando, resp char *, int delayTime, int reps, int numData) { int returnVal; / / Retardo (100); for (int i = 0; i <repeticiones; i + +) { if (i> 0) delay (500); GPRS_Serial.flush (); retardo (100); GPRS_Serial.println (comando); retardo (100); Serial.print (comando); Serial.print (":"); / / Retraso (10); retrasar (delayTime); / / While (GPRS_Serial.available () <numData 1) { / / Unsigned long currentMillis = millis (); // / / If (currentMillis - previousMillis> delayTime) { / / Serial.println ("timeout"); / / Break; / /} / /} largo previousMillis = millis ();

/ / CurrentMillis largo sin firmar; mientras que (GPRS_Serial.available ()) { / / Unsigned long currentMillis = millis (); / / If (currentMillis - previousMillis> delayTime) { / / Serial.println ("timeout"); / / Break; / /} readline (); / / Serial.println ("DESPUS READLINE"); if (strncmp (buffer, respectivamente, numData) == 0) { Serial.println (buffer); devuelve 1; } } Serial.print ("FALLO:"); Serial.println (buffer); } return 0; }

void readline () { memset (buffer, 0, sizeof (buffer)); char c; int i = 0; buffidx = 0; / / start en begninning / / Serial.println ("ANTES READLINE");

largo previousMillis = millis (); while (1) { unsigned long currentMillis = millis (); if (currentMillis - previousMillis> 20000) { Serial.println ("timeout"); volver; } retardo (2); c = GPRS_Serial.read (); / / Serial.print (buffidx);

if (c == -1) continuar; if (c == '\ n') continuar; if ((buffidx == BUFFSIZ-1) | | (c == '\ r')) { buffer [buffidx] = 0; volver; } tampn [buffidx + +] = c; retardo (2); } } ///////////////////////////////////////// / / / / / / / * Funciones de potencia para GPRS * / / / / / / / /////////////////////////////////////////

void POWERON () { if (sendCommand ("AT", "OK", 500,4)! = 1) { Serial.println ("Encendido ..."); pinMode (9, OUTPUT); digitalWrite (9, LOW); delay (1000); digitalWrite (9, HIGH); retardo (2000); digitalWrite (9, LOW); retardo (4000); / / Delay (15500); if (sendCommand ("AT + CREG?", "+ CREG: 0,1", 500,10,10) == 1) { Serial.println ("REGISTRADO"); / / Serial.print ("."); }

potencia = true; setupCommands (); } else { Serial.println ("YA ON"); potencia = true; }

} /////////////////////////////////////////

void poweroff () { delay (1000); pinMode (9, OUTPUT); digitalWrite (9, LOW); delay (1000); digitalWrite (9, HIGH); retardo (2500); digitalWrite (9, LOW); potencia = false; / / Delay (10500); }

#define BUFFSIZ 90 //Tamao de la memoria para examinar en cualquier momento. char buffer[BUFFSIZ]; //Buffer para los caracteres en BUFFSIZ char buffidx; //Indicador en el Buffer. int retry = 5; //Nmeros de reintentos.

int sendCommand(char* command, char* resp, int delayTime=500, int reps=5, int numData=2); //Envio de comandos void setupCommands(){ sendCommand("AT&F","OK"); sendCommand("ATE0","OK"); sendCommand("AT+CLIP=1","OK"); sendCommand("AT+CMEE=0","OK"); sendCommand("AT+CIPSHUT","SHUT"); } void startUp(){ //delay(1000); sendCommand("AT+CGATT?","+CGATT:"); // if(sendCommand("AT+CIFSR","10",1000,1)==1){ // sendCommand("AT+CIPCLOSE","CLOSE OK",500); // sendCommand("AT+CIPSERVER=0","OK",500); // } sendCommand("AT+CIPSHUT","SHUT"); delay(1000); sendCommand("AT+CSTT=\"wap.cingular\"","OK"); //Serial.println("WAP OK"); //delay(5000); sendCommand("AT+CIICR","OK"); sendCommand("AT+CIFSR","10"); //sendCommand("AT+CGATT=0","OK",500); //sendCommand("AT+CIPSPRT=0","OK"); sendCommand("AT+CIPSTART=\"tcp\",\"api.cosm.com\",\"8081\"","CONNECT OK",500,5,10); //sendCommand("AT+CIPSTART=\"tcp\",\"www.google.com\",\"80\"","CONNECT OK"); //Serial.println("CONNECT OK"); GPRS_Serial.flush(); Serial.flush();

delay(1000); //ATE0 //AT+CIPSHUT //AT+CIFSR } int getAttachedGPRS(){ return sendCommand("AT+CGATT?","+CGATT: 1"); } void sendStuff(){ GPRS_Serial.println("AT+CIPSEND");//comenzar a enviar datos a un servidor remote. delay(500); //ShowSerialData(); String humidity = "1031";// estos cdigos de 4 lneas estn imitar a los datos de los sensores reales, ya que la demo no aadir otro sensor, as que usar 4 variable de cadena a reemplazar. String moisture = "1242";// puede reemplazar estas cuatro variables a los datos de los sensores reales de su proyecto String temperature = "30";// String barometer = "60.56";// //GPRS_Serial.print("GET / HTTP/1.1\nHost: www.google.com\nUser-Agent: Arduino\n\n"); GPRS_Serial.print("{\"method\": \"put\",\"resource\": \"/feeds/"+feedId+"/\",\"params\"");// aqu es la alimentacin se aplica a Pachube delay(200); //ShowSerialData(); GPRS_Serial.print(": {},\"headers\": {\"X-PachubeApiKey\":");//in here, you should replace your pachubeapikey delay(200); //ShowSerialData(); GPRS_Serial.print(" \""+apiKey+"\"},\"body\":");//pachubeapikey delay(200); GPRS_Serial.print(" {\"version\": \"1.0.0\",\"datastreams\": "); //datastreams=flujo de datos delay(200); //ShowSerialData(); GPRS_Serial.println("[{\"id\": \"01\",\"current_value\": \"" + barometer + "\"},");

delay(200); //ShowSerialData(); GPRS_Serial.println("{\"id\": \"02\",\"current_value\": \"" + humidity + "\"},"); delay(200); //ShowSerialData(); GPRS_Serial.println("{\"id\": \"03\",\"current_value\": \"" + moisture + "\"},"); delay(200); //ShowSerialData(); GPRS_Serial.println("{\"id\": \"04\",\"current_value\": \"" + temperature + "\"}]},\"token\": \"lee\"}");

delay(200); // ShowSerialData(); GPRS_Serial.println((char)26);//envo delay(4000);// esperando la respuesta, importante! el tiempo es la base de la condicin de Internet //GPRS_Serial.println(); ShowSerialData(); //GPRS_Serial.println("AT+CIPCLOSE");//close the connection //sendCommand("AT+CIPCLOSE","CLOSE OK"); //delay(500); //ShowSerialData(); } void ShowSerialData() { Serial.print("SHOW: "); while(GPRS_Serial.available()!=0) Serial.write(GPRS_Serial.read()); } int sendCommand(char* command, char* resp, int delayTime, int reps, int numData){ int returnVal; //delay(100); for(int i=0;i<reps;i++){ if (i > 0) delay(500);

// // // // //

GPRS_Serial.flush(); delay(100); GPRS_Serial.println(command); delay(100); Serial.print(command); Serial.print(": "); //delay(10); delay(delayTime); // while(GPRS_Serial.available() < numData+1){ // unsigned long currentMillis = millis(); // // if(currentMillis - previousMillis > delayTime) { // Serial.println("TIMEOUT"); // break; // } // } long previousMillis = millis(); //unsigned long currentMillis; while(GPRS_Serial.available()) { unsigned long currentMillis = millis(); if(currentMillis - previousMillis > delayTime) { Serial.println("TIMEOUT"); break; } readline(); //Serial.println("AFTER READLINE"); if (strncmp(buffer, resp,numData) == 0) { Serial.println(buffer); return 1; } } Serial.print("FAILED: "); Serial.println(buffer);

} return 0; } void readline() { memset(buffer,0,sizeof(buffer)); char c; int i =0;

buffidx = 0; // start at begninning //Serial.println("BEFORE READLINE"); long previousMillis = millis(); while (1) { unsigned long currentMillis = millis(); if(currentMillis - previousMillis > 20000) { Serial.println("TIMEOUT"); return; } delay(2); c=GPRS_Serial.read(); //Serial.print(buffidx); if (c == -1) continue; if (c == '\n') continue; if ((buffidx == BUFFSIZ-1) || (c == '\r')) { buffer[buffidx] = 0; return; } buffer[buffidx++]= c; delay(2); } } ///////////////////////////////////////// ///////* Funciones de alimentacion del GPRS.*/////// ///////////////////////////////////////// void powerOn(){ if(sendCommand("AT","OK",500,4) !=1){ Serial.println("Powering On..."); pinMode(9, OUTPUT); digitalWrite(9,LOW); delay(1000); digitalWrite(9,HIGH); delay(2000); digitalWrite(9,LOW); delay(4000); //delay(15500); if(sendCommand("AT+CREG?","+CREG: 0,1",500,10,10)==1){ Serial.println("REGISTERED");

//Serial.print("."); } power = true; setupCommands(); } else{ Serial.println("ALREADY ON"); power = true; } } ///////////////////////////////////////// void powerOff(){ delay(1000); pinMode(9, OUTPUT); digitalWrite(9,LOW); delay(1000); digitalWrite(9,HIGH); delay(2500); digitalWrite(9,LOW); power = false; //delay(10500); }

Вам также может понравиться