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

Olá, 

não litodos os códigos, mas pelo que conheço de ambos, teoricamente você necessitaria de um tx rx para cada um dos equipamentos para que pudesse receber a mensagem de  um e depois mandar para outro, e pelo que me lembro o arduino 2009 só tem um rx tx, vocês estão conseguindo pegar as informações do gps e controlar o modem gprs?

ESSA É A DIFICULDADE... Consigo pegar a informação do GPS, trato as informações, pois ela se encontra no padrão NMEA, pegando somente a latide e a longitude...porem vem a dificuldade de enviar via GPRS para uma pagina na internet....


Entendi, neste caso, acredito que o melhor seria usar o ATMEGA, pois ele tem mais uma porta serial, ou terá que usar os shields fora do arduino (protoboard) e criar um tipo de chave para que mude de um para outro.

mas justamente estou utilizando o ATMEGA....

Os equipamentos utilizados são: Arduino Duelaminanove com ATMEGA8, módulo GPS da Skylab SKM53 (compativel com arduino) e um Shield GPRS (conecta com o arduino). a dificuldade maior é a integração com esses equipamentos e com a programação.

Olá Renan, estou com o mesmo problema que o seu.

Você conseguiu achar a solução?

No meu caso pretendo enviar apenas um sms com a posição (em princípio).

Abraços.

Sergio

Olá

Conseguir resolver em partes, só consigo enviar dados de forma estática mas preciso enviar de forma dinâmica . Tenho que pegar os dados do GPS e enviar via GPRS .

E vc o que conseguiu fazer?

Olha, até agora apenas ler os dados do gps e gravar em um sd.

Estou com problemas para fazer o shild gprs funcionar.

Acho que é algum conflito, não sei.

Encontrei as conversar no google groups e mandei algumas perguntas lá também para vc.

Perguntei se tinha a possibilidade de vc enviar o código para eu ver.

Pois não estou saindo do lugar.

Obrigado.

sérgio

Olá Renan, como vai?

Caro, agora tenho GPS, GPRS, SD e tudo mais funcionando por partes.

Hoje tenho um conhecimento maior sobre o assunto (não é muita coisa, mas já entendi como funciona as porta softserial e tal...rsrsrs)

Conseguiu avançar no projeto? Hoje consigo receber torpedo e fazer algo, responder ao torpedo, gravar os dados gps no cartão e tudo mais.

E agora estou retomando essa parte de enviar os dados do cartão, por hora sera um ftp de um txt.

Conseguiu algo? Precisa de algo?

Abraços.

Sérgio

Será que vc podia postar aqui o código do GPRS? Se eu conseguir fazer ele fazer um acesso HTTP, pode ser que eu consiga te ajudar com o seu projeto.

Estou com mesmo problema, alguem sabe algum tutorial para comunicacao com um servidor?, sou leigo no assunto, to preparando as bases, apos estudos, criei um dominio, fiz da minha maquina um webserver php (WAMPSERVER), so que não faço a minima ideia como criar uma conexão no modulo e enviar os dados, fiz um pequeno site de teste com PHP e ta funcionando o servidor na minha maquina, com o dominio criado, pelo fato de minha internet o ip ser dinamico encontrei uma solução que se chama no-ip, deu muito trabalho mas funciona. o php fornece muitas ferramentas, tenho quase certeza que se torna mais facil tratar os dados com php, so não sei como enviar e receber.

minha ideia e receber os dados e armazenar no banco de dados mySQL integrado ao WAMPSERVER.

não se encontra muito sobre o assunto, ou não estou sabendo procurar no local certo.

Grato.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço