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]=' ';
}
}
}
}
Tags:
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]=' ';
}
}
}
}
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?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por