Olá Pessoal

Estou tentando desenvolver o codigo para utilizar o arduino com o modulo GPS com o shield GPRS... O que eu quero fazer é colocar o GPS para funcionar com o GPRS e enviar esses dados para uma pagina na internet... Porem não estou conseguindo... Se vocês poderiam me ajudar...

Tenho o seguinte codigo que está funcionando que é do GPS onde eu obtenho alguns dados (latitude, longitude), agora é preciso pegar esse dados e enviar para uma pagina por exemplo...onde entra o GPRS...mas aí q esta toda a confusão.

Estou utilizando o Arduino Duemilanove, modulo GPS SKM53 e o modulo GPRS Sim 900D


Segue o codigo que estar funcionando, esse é onde pega as informações do GPS, porem preciso pegar essas informações e enviar para uma pagina da internet atraves do mudulo GPRS.


#include <string.h>
#include <ctype.h>

int ledPin = 13;                  // LED test pin
int rxPin = 0;                    // RX PIN 
int txPin = 1;                    // TX TX
int byteGPS=-1;
char linea[300] = "";
char comandoGPR[7] = "$GPRMC";
int cont=0;
int bien=0;
int conta=0;

int indices[13];

void setup() {
  pinMode(ledPin, OUTPUT);       // Initialize LED pin
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  Serial.begin(9600);
  for (int i=0;i<300;i++){       // Initialize a buffer for received data
    linea[i]=' ';
  }   
}

void loop() {
  digitalWrite(ledPin, HIGH);
  byteGPS=Serial.read();         // Read a byte of the serial port
  if (byteGPS == -1) {           // See if the port is empty yet
    delay(100); 
  } 
  else {
    linea[conta]=byteGPS;        // If there is serial port data, it is put in the buffer
    conta++;                      
//   Serial.print(byteGPS, BYTE); 
    if (byteGPS==13){            // If the received byte is = to 13, end of transmission
      digitalWrite(ledPin, LOW); 
      cont=0;
      bien=0;
      for (int i=1;i<7;i++){     // Verifies if the received command starts with $GPR
        if (linea[i]==comandoGPR[i-1]){
          bien++;
        }
      }
      if(bien==6){               // If yes, continue and process the data
        for (int i=0;i<300;i++){
          if (linea[i]==','){    // check for the position of the  "," separator
            indices[cont]=i;
            cont++;
          }
          if (linea[i]=='*'){    // ... and the "*"
            indices[12]=i;
            cont++;
          }
        }
   //     Serial.println("");      // ... and write to the serial port
     //   Serial.println("");
       // Serial.println("---------------");
        for (int i=0;i<12;i++){
          switch(i){
          case 0 :
           Serial.print("Time in UTC (HhMmSs): ");
            break;
          case 1 :
          Serial.print("Status (A=OK,V=KO): ");
            break;
          case 2 :
           Serial.print("Latitude: ");
            break;
          case 3 :
          Serial.print("Direction (N/S): ");
            break;
          case 4 :
           Serial.print("Longitude: ");
            break;
          case 5 :
          Serial.print("Direction (E/W): ");
            break;
          case 6 :
          Serial.print("Velocity in knots: ");
            break;
          case 7 :
           Serial.print("Heading in degrees: ");
            break;
          case 8 :
          Serial.print("Date UTC (DdMmAa): ");
            break;
          case 9 :
           Serial.print("Magnetic degrees: ");
            break;
          case 10 :
           Serial.print("(E/W): ");
            break;
          case 11 :
          Serial.print("Mode: ");
            break;
          case 12 :
           Serial.print("Checksum: ");
            break;
          }
          String linha = "AT+SSTRSEND=1, \"GET /insere_posicao.php?cod=123&lat="+linea[2]+"&lon="+linea[4]+" HTTP/1.0\"";
char *linhaArr = malloc(linha.length()*sizeof(char));
linha.toCharArray(linhaArr,linha.length());
Serial.println(linhaArr);
         // for (int j=indices[i];j<(indices[i+1]-1);j++){
           // Serial.print(linea[j+1]); 
          }
          Serial.println("");
        }
        Serial.println("---------------");
      }
      conta=0;                    // Reset the buffer
      for (int i=0;i<300;i++){    //  
        linea[i]=' ';             
      }                 
    }
  }
}


Exibições: 4031

Responder esta

Respostas a este tópico

to quebrando a cabeça com isso tbm.... to pensando em colocar um arduino com gprs ligado ao pc e usar phyton pra tratar as informações e colocar na web... vamos trocar figurinhas com relação a esse projeto

com certeza vamos sim... o que vc ja conseguiu fazer? apresenta aí.

Abraços

por enquanto nao tenho nada pratico... to aguardando o modulo gps... so a ideia e algums codigo ja feitos... onde vc comprou seu shield gps?

Na verdade utilizo  o GPS da Skylab SKM53 e o modulo GPRS é o shild adquirido no mercado livre e o GPS no site da Webtronico.

ja tentaram enviar um "hello world" por sms?

ja tentei e conseguir... no meu teste ficou enviando sms sem parar....rsrs

Ohh amigo como faz para pegar esses dados obtido do GPS (com ex. Latitude e Longitude) e enviar para uma pagina na internet via GPRS?

Abraços

via gprs, nao sei se dá, mas tenta colocar um shield gprs + arduino ligadona serial de um pc e fazer o tratamento do dados, pelos menos to em essa ideia.....

entao, pega o hello world... no lugar d e"hello world" envia as variaveis de latitude e longitude que vc ja consegue coletar do seu shield GPS

tem que ver uma coisa tambem: se os dois shields nao acabam usando as mesmas portas, nesse caso, vc vai ter que programar algum controle de tempo pra cada shield

Olá

Wagner...então, fiz todo o tratamento do código do GPS, (segue código abaixo). Porém, não estou conseguindo integrar o código do GPS com o código do GPRS (segue o código do GPRS em anexo). Há necessidade é de pegar a latitude e longitude e enviara para uma página na internet.Tem como você me ajudar com esses códigos...?

Código GPS

#include <string.h>
#include <ctype.h>

int ledPin = 13; // LED teste pino
int rxPin = 0; // RX PINo
int txPin = 1; // TX TX
int byteGPS=-1;
char linea[300] = "";
char comandoGPR[7] = "$GPRMC";
int cont=0;
int bien=0;
int conta=0;

int indices[13];

void setup() {
pinMode(ledPin, OUTPUT); // Inicializa LED pin
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
Serial.begin(9600);
for (int i=0;i<300;i++){ // Inicializa a buffer for received data
linea[i]=' ';
}
}

void loop() {
digitalWrite(ledPin, HIGH);
byteGPS=Serial.read(); // Read a byte of the serial port
if (byteGPS == -1) { // See if the port is empty yet
delay(100);
}
else {
linea[conta]=byteGPS; // If there is serial port data, it is put in the buffer
conta++;
// Serial.print(byteGPS, BYTE);
if (byteGPS==13){ // If the received byte is = to 13, end of transmission
digitalWrite(ledPin, LOW);
cont=0;
bien=0;
for (int i=1;i<7;i++){ // Verifies if the received command starts with $GPR
if (linea[i]==comandoGPR[i-1]){
bien++;
}
}
if(bien==6){ // If yes, continue and process the data
for (int i=0;i<300;i++){
if (linea[i]==','){ // check for the position of the "," separator
indices[cont]=i;
cont++;
}
if (linea[i]=='*'){ // ... and the "*"
indices[1]=i;
cont++;
}
}
 for (int i=2;i<5;i++){
switch(i){
case 2 :
Serial.print("Latitude: ");
break;
case 4 :
Serial.print("Longitude: ");
break;
}
 for (int j=indices[i];j<(indices[i+1]-1);j++){
Serial.print(linea[j+1]);
}
 }
Serial.println("---------------");
}
conta=0; // Reset the buffer
for (int i=0;i<300;i++){ //
linea[i]=' ';
}
}
}
}

Anexos

rapaz, nao li o seu codigo nao, só dei uma passada de olho..
entao, faz assim, sabe onde vc da serial.print (ou println) com as variaveis? vai concatenando tudo isso numa string global...

terminada a execuçao da parte gps(interrompa ela assim que vc pegar os dados que vc quer), vc começa a execuçao do script de envio de sms, e em vez de mandar a string "hello world", vc envia essa string que vc foi durante a execuçao da parte "GPS"...

a questao é que, sabendo programar e tendo 2 programas separados que fazem o que vc quer, voce pode jutnar os dois... a questao é mais trabalhar a logica de programaçao mesmo

Agora, tem que ver aquilo que eu falei antes tambem: sera que os shields eventualmente nao "brigam"  pelo controle dos mesmos pinos na mesma hora.

penso que haverá dois conjuntos, um que será um "tx" composto de um gps+gprs+arduino com alimentação propria que enviará as coordenadas para o conunto "rx" composto de um gps+gprs+arduino+pc que mostrará em uma pagina web. Pelo menos to pensando em fazer assim... os dois não estaram ligados à serial do pc.

É isso mesmo Allan... Estou usando arduino duelaminalove, GPS SKM53 e um Shield GPRS.

Ja fez ou ta fazendo algo parecido com isso?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço