SIM908 e arduino UNO rastreador veicular
+12
raphaelpereira
as_vasc
americo
mace_marques
zavattih
giovaniriolli
alysson.rosemberg
enetsec
dicaiado
Moises
Admin
trcsistemas
16 participantes
Página 3 de 4
Página 3 de 4 • 1, 2, 3, 4
Re: SIM908 e arduino UNO rastreador veicular
O próprio Arduino está digitando os comandos no serial monitor.
Conforme informei os dados são capturados 2 vezes e depois surge o caractere m.br/ins... ou br/ins.. e só pega mais duas vezes as coordenadas e para
Conforme informei os dados são capturados 2 vezes e depois surge o caractere m.br/ins... ou br/ins.. e só pega mais duas vezes as coordenadas e para
giovaniriolli- Mensagens : 17
Data de inscrição : 06/06/2013
Re: SIM908 e arduino UNO rastreador veicular
Olá. Meu projeto esta funcionando perfeitamente agora, troquei a fonte, agora esta com uma de 12V, 0,5A e troquei o chip tmb, comprei outro da vivo mesmo com o plano de internet móvel. O código que esta nele é aquele que postei anteriormente.
Ele esta enviando a cada 1 ou 2 minutos.
Se quiser conferir esta é a pagina de verificação dos envios:http://www.frotaz.com.br/consulta.php.
qualquer duvida que puder ajudar estou a disposição.
Ele esta enviando a cada 1 ou 2 minutos.
Se quiser conferir esta é a pagina de verificação dos envios:http://www.frotaz.com.br/consulta.php.
qualquer duvida que puder ajudar estou a disposição.
zavattih- Mensagens : 14
Data de inscrição : 27/07/2013
Re: SIM908 e arduino UNO rastreador veicular
Mais uma coisa Giovani, tire qualquer resposta da pagina php de inserção de dados, como confirmações, reports de erros, etc. pode ser que o Sim908 esteja se perdendo com a resposta do seu protocolo de inserção de dados no banco.
zavattih- Mensagens : 14
Data de inscrição : 27/07/2013
Re: SIM908 e arduino UNO rastreador veicular
zavattih,
Fico muito feliz que seu projeto deu certo. Vou verificar o meu código e passar para ASP que é a linguagem que eu domino.
Após os testes acho interessante colocarmos o código pronto e com os macetes que tem que ser feito, tipo de fonte, para ajudar outros membros com dificuldade.
Fico muito feliz que seu projeto deu certo. Vou verificar o meu código e passar para ASP que é a linguagem que eu domino.
Após os testes acho interessante colocarmos o código pronto e com os macetes que tem que ser feito, tipo de fonte, para ajudar outros membros com dificuldade.
giovaniriolli- Mensagens : 17
Data de inscrição : 06/06/2013
Coordenada Incompleta.
Boa Noite amigos.
estou com um certo problema no código.
quando ele retorna o código nmea o mesmo vem incompleto.
ele aparece assim:
32,025237.000,A,100.002006,S,3254.794926,W,0.0
quando deveria aparecer assim:
32,030518.000,A,100.001130,S,3254.793851,W,0.00,0.00,010913,,E,A
Obs: o código que eu utilizei foi o que está disponibilizado aqui no forum.
O Sim908 só retorna o nmea completo quando acionado diretamente pelo comando.
Se alguem puder me ajudar, agradeço.
Obrigado desde já
estou com um certo problema no código.
quando ele retorna o código nmea o mesmo vem incompleto.
ele aparece assim:
32,025237.000,A,100.002006,S,3254.794926,W,0.0
quando deveria aparecer assim:
32,030518.000,A,100.001130,S,3254.793851,W,0.00,0.00,010913,,E,A
Obs: o código que eu utilizei foi o que está disponibilizado aqui no forum.
O Sim908 só retorna o nmea completo quando acionado diretamente pelo comando.
Se alguem puder me ajudar, agradeço.
Obrigado desde já
mace_marques- Mensagens : 8
Data de inscrição : 31/05/2013
Conexão GPRS
Toda vez que coloco no arduino esse comando (AT+CSTT=\"gprs.oi.com.br\",\"oi\",\"oi\")
Ele retorna erro.
Ele retorna erro.
mace_marques- Mensagens : 8
Data de inscrição : 31/05/2013
ERRO NO AT+CSTT
POR QUE QUANDO EU COLOCO O COMANDO AT+CSTT, ELE ME RETORNA ERRO???
meu chip é tim e estou usando assim:
AT+CSTT="tim.com.br","tim","tim"
Consegui fazer ele retornar OK somente uma vez, do resto só erro!!! antes desse comando já usei o AT+CSQ que me retorna OK, mas quando dou o comando do AT+CSTT ele continua dando erro!!!
meu chip é tim e estou usando assim:
AT+CSTT="tim.com.br","tim","tim"
Consegui fazer ele retornar OK somente uma vez, do resto só erro!!! antes desse comando já usei o AT+CSQ que me retorna OK, mas quando dou o comando do AT+CSTT ele continua dando erro!!!
americo- Mensagens : 7
Data de inscrição : 27/08/2013
Idade : 32
Localização : Maringá - Pr
Consegui Resolver o Problema
Troquei para um chip da OI e funcionou...
quanto ao chip da tim... foi apenas aumentar o delay que funcionou.
quanto ao chip da tim... foi apenas aumentar o delay que funcionou.
mace_marques- Mensagens : 8
Data de inscrição : 31/05/2013
Resposta do Módulo
Boa Tarde.
Amigos como faço para saber se o modulo responde OK ou Erro durante a execução do codigo...
EX:
Serial.println("Desligando GPS...");
mySerial.println("AT+CGPSPWR=0");
Serial.println("GPS Desligado.");
delay(1000);
nesse exemplo... o comando passa direto, sem eu saber se o modulo respondeu OK.
existe alguma função ou trecho de codigo que me retone apenas essa resposta?
Obrigado desde já.
Abraço.
Amigos como faço para saber se o modulo responde OK ou Erro durante a execução do codigo...
EX:
Serial.println("Desligando GPS...");
mySerial.println("AT+CGPSPWR=0");
Serial.println("GPS Desligado.");
delay(1000);
nesse exemplo... o comando passa direto, sem eu saber se o modulo respondeu OK.
existe alguma função ou trecho de codigo que me retone apenas essa resposta?
Obrigado desde já.
Abraço.
mace_marques- Mensagens : 8
Data de inscrição : 31/05/2013
Dúvida
Sobre o problema citado por mim anteriormente, continua dando erro no AT+CIICR !!! e ativei meu pacote de dados....
tenho outra dúvida, com o sim908 gostaria de pegar as coordenadas GPS e enviar para um celular..
para solicitar a coordenada eu utilizo o comando AT+CGPSINF=32, com isso ele me retorna algo desse tipo:
32,200421.000,A,2323.891622,S,5158.630559,W,0.00,0.00,270813,,E,A
OK
então gostaria de pegar os valores que vão de 2323 até ..559, antes do W e enviar esses valores para o celular....
alguém poderia me explicar como faço para pegar esse valor para depois enviar???
mt obrigado
tenho outra dúvida, com o sim908 gostaria de pegar as coordenadas GPS e enviar para um celular..
para solicitar a coordenada eu utilizo o comando AT+CGPSINF=32, com isso ele me retorna algo desse tipo:
32,200421.000,A,2323.891622,S,5158.630559,W,0.00,0.00,270813,,E,A
OK
então gostaria de pegar os valores que vão de 2323 até ..559, antes do W e enviar esses valores para o celular....
alguém poderia me explicar como faço para pegar esse valor para depois enviar???
mt obrigado
americo- Mensagens : 7
Data de inscrição : 27/08/2013
Idade : 32
Localização : Maringá - Pr
Enviando as coodenadas de latitude e longitude para um celular SIM908
Olá, depois de fazer muita pesquisa aqui no site conseguir fazer meu programa funcionar corretamente... Quando envio uma sms para o chip que está no módulo ele lê essa sms e verifica se ela é igual a uma senha registrada, caso seja, ele me retorna a latitude e longitude....
Não sou especialista em programação tenho uma base apenas, tive mt dificuldade pra entender e fazer funcionar, se alguém tiver alguma duvida é só falar que tento ajudar.... mas se olharem todas as postagem dos tópicos a maioria dessas duvidas já foram respondidas!!!
SEGUE O CÓDIGO:
Não sou especialista em programação tenho uma base apenas, tive mt dificuldade pra entender e fazer funcionar, se alguém tiver alguma duvida é só falar que tento ajudar.... mas se olharem todas as postagem dos tópicos a maioria dessas duvidas já foram respondidas!!!
SEGUE O CÓDIGO:
- Código:
#include <SoftwareSerial.h>
#include <Wire.h> //I2C library
SoftwareSerial mySerial(2, 3); //RX, TX
const int powerkey = 5;
const int statuspin = 6;
const int vDetect = 4;
const int led = 13;
int i = 0;
int firstClosingBracket;
int vState=0;
int pinState=0;
int count = 0;
int erroConec = 0;
int statusConec = false;
float int_lat_hour = 00.000000;
float int_long_hour = 00.000000;
String inputString = ""; //STRING USADA PARA ARMAZENADA DADOS DE ENTRADA
String readEeprom = "";
char inChar;
char str_long[19];
char str_lat[19];
/**********************************************************************************************************
CONFIGURAÇÕES
**************************************************************************************************************/
String apn = "tim.com.br";
String user = "tim";
String pass = "tim";
String phone = "+554499434644";
/**************************************************************************************************************
FUNÇÃO QUE LÊ A SOFTSERIAL
*DEVE SER CHAMADA TODA VEZ QUE DER UM COMANDO NO SIM908
************************************************************************************************************/
void leserial()
{
inputString = "";
while (mySerial.available()>0)
{
inChar = mySerial.read(); //LÊ A O QUE ESTÁ NA PORTA SERIAL E MANDA ESSE DADO PARA inChar
inputString += inChar;
//delay(1);
}
Serial.println(inputString); //USADO PARA MOSTRAR A LEITURA QUE FOI FEITA NA SOFTSERIAL
}
/*******************************************************************************************************
ADQUIRI E TRATA O CÓDIGO NMEA
*************************************************************************************************************/
void pegaPosicao(){
Serial.println("Codigo NMEA");
{
mySerial.println("AT+CGPSINF=0"); //SOLICITA AS COODENADAS GPS
delay(200);
leserial();
//Serial.println(inputString);
/************** SEPARA LATITUDE E LONGITUDE *******************/
char buffer[250] = "";
char *p_char;
char *p_char1;
inputString.toCharArray(buffer, 250);
/*************** LONGITUDE ******************/
p_char = strchr((char *)(buffer),',');
p_char1 = p_char+1; //ESTAMOS NO PRIMEIRO CARACTER DA LONGITUDE
p_char = strchr((char *)(p_char1), ',');
if (p_char != NULL) {
*p_char = 0;
}
strcpy(str_long, (char *)(p_char1));
/*************** LATITUDE ******************/
p_char++;
p_char1 = strchr((char *)(p_char), ',');
if (p_char1 != NULL) {
*p_char1 = 0;
}
strcpy(str_lat, (char *)(p_char));
/**********TRANSFORMANDO A STRING EM INTERGER**********/
char str_long_pos[5] = "";
str_long_pos[0] = str_long[0];
str_long_pos[1] = str_long[1];
str_long_pos[2] = str_long[2];
int_long_hour = atof(str_long_pos);
str_long_pos[0] = str_long[3];
str_long_pos[1] = str_long[4];
str_long_pos[2] = str_long[5];
str_long_pos[3] = str_long[6];
str_long_pos[4] = str_long[7];
str_long_pos[5] = str_long[8];
float int_long_min = 00.000000;
int_long_min = atof(str_long_pos);
int_long_min = int_long_min / -60; // DIVIDE POR 60 PARA TER AS COORDENADAS PRONTAS PARA SEREM USADAS NO GOOGLE MAPS
int_long_hour = int_long_hour + int_long_min;
/************ FAZ A MESMA COISA PARA A LATITUDE ************/
char str_lat_pos[5] = "";
str_lat_pos[0] = str_lat[0];
str_lat_pos[1] = str_lat[1];
str_lat_pos[2] = str_lat[2];
int_lat_hour = atof(str_lat_pos);
str_lat_pos[0] = str_lat[3];
str_lat_pos[1] = str_lat[4];
str_lat_pos[2] = str_lat[5];
str_lat_pos[3] = str_lat[6];
str_lat_pos[4] = str_lat[7];
str_lat_pos[5] = str_lat[8];
float int_lat_min = 00.000000;
int_lat_min = atof(str_lat_pos);
int_lat_min = int_lat_min / -60;
int_lat_hour = int_lat_hour + int_lat_min;
/**************** MOSTRA COMO FICOU A LATITUDE E A LONGITUDE ****************/
Serial.println(int_long_hour,6); // ESSE 6 É O NUMERO DE CASAS DECIMAIS
Serial.println(int_lat_hour,6);
delay(1000);
}
}
/**************************************************************************************************************
VERIFICA SE O GPS ESTA LIGADO
*************************************************************************************************************/
void verificaGPS(){
Serial.println("Verifica GPS");
mySerial.println("AT+CGPSPWR?"); //VERIFICA SE O GPS ESTÁ LIGADO
delay(500);
leserial();
http://Serial.println(inputString);
firstClosingBracket = inputString.indexOf(':'); //VAI PEGAR UM VALOR DE ENTRADA DA STRING DEPOIS DOS 2 PONTOS, E COLOCA ESSE VALOR //IGUAL firstClosingBracket
if (inputString.startsWith("0",firstClosingBracket+2)) //SE A ENTRADA DA STRING COMEÇAR COM (inputString.StartsWith) 0, DEPOIS DE //firstClosingBracket + 2 ELE ENTRA NO IF
{
Serial.println("Ligando GPS");
mySerial.println("AT+CGPSPWR=1"); //LIGA O MODO GPS
delay(2000);
mySerial.println("AT+CGPSRST=0"); //REINICIA O MODO GPS
}
mySerial.flush();
}
/************************************************************************************************************
VERIFICA SE ESTÁ CONECTADO
*************************************************************************************************************/
void verificaConexao(){
Serial.println("Verifica Conexão");
mySerial.println("AT+CIFSR"); //OBTER ENDEREÇO IP LOCAL
delay(2000);
leserial();
//Serial.println(inputString);
firstClosingBracket = inputString.indexOf('E'); //VAI PROCURAR NA ENTRADA DA STRING ONDE TEM UM E
//E GRAVAR ISSO EM firstClosingBracket
if (inputString.startsWith("ERROR",firstClosingBracket)) //SE A ENTRADA DA STRING COMEÇAR COM
//(inputString.StartsWith) ERROR, ENTRA NESSE IF
{
erroConec++; //AQUI ELE VAI CONTANDO OS ERROS DA CONEXÃO E CASSO PASSE DE 5 TENTATIVAS ELE DESLIGA E LIGA O MODULO
statusConec = false;
Serial.println("Conectando");
mySerial.println("AT+CSTT=\"" +apn+ "\",\"" +user+ "\",\"" +pass+ "\""); //INÍCIO DA TAREFA SET APN, NOME DE USUÁRIO E SENHA
delay(4000);
mySerial.println("AT+CIICR"); //FAZ A CONEXÃO GPRS
delay(10000);
mySerial.println("AT+CIFSR"); //OBTER ENDEREÇO IP LOCAL
delay(4000);
mySerial.println("AT+CDNSCFG?"); //CONFIGURA O DNS
leserial();
// Serial.println(inputString);
mySerial.flush();
}
else
{
Serial.println("Conectado!!!");
statusConec = true;
}
//isso aqui é uma tentativa de reaver a rede GSPRS
if(erroConec > 3)
{
erroConec = 0;
http://Serial.println("Desligando o modulo");
//digitalWrite(powerkey, HIGH); // set the LED on
//delay(2000);
//digitalWrite(powerkey, LOW);
//leserial();
//delay(20000);
}
}
void setup()
{
/*********************************************************************************************************
INICIALIZANDO O SERIAL
**********************************************************************************************************/
Serial.begin(9600);
mySerial.begin(9600);
pinMode(powerkey, OUTPUT);
pinMode(statuspin, INPUT);
//inputString.reserve(300);
/*********************************************************************************************************
TIRA O ECO E TORNA A SMS LEGÍVEL
**********************************************************************************************************/
Serial.println("Inicializando o Modulo");
mySerial.println("ATE0");
delay(1000);
mySerial.println("AT+CMGF=1"); //SELECIONA O FORMATO DA MENSAGEM DE TEXTO
delay(1000);
mySerial.println("AT&W0"); //ARMAZENA OS PARÂMETROS DA CONFIGURAÇÃO ATUAL DO PERFIL DO USUÁRIO DEFINIDO
delay(1000);
mySerial.println("AT+CGPSRST=1"); //RESETA O GPS
verificaConexao(); //CHAMA A FUNÇÃO
verificaGPS(); //CHAMA A FUNÇÃO
mySerial.println("AT+CMGDA=\"DEL ALL\""); //DELETA TODAS AS MENSAGENS
delay(1000);
Serial.println("Mensagens deletadas");
leserial(); //CHAMA A FUNÇÃO
delay(2000);
}
void loop()
{
pinState = digitalRead(statuspin);
if(pinState==LOW)
{
Serial.println("Ligando o Sim908");
digitalWrite(powerkey, HIGH); //ACENDE O LED
delay(2000);
digitalWrite(powerkey, LOW); //DESLIGA O LED
delay(30000); //DELAY É DEMORADO PARA DAR TEMPO DO MÓDULO LIGAR E SE REGISTRAR NA REDE
}
pegaPosicao(); //CHAMA A FUNÇÃO
/***********************************************************************************************************
FUNÇÃO PARA LÊ AS SMS
************************************************************************************************************/
Serial.println("Lendo SMS");
/*if(int_long_hour && int_lat_hour)*/{
//if(i==0){
mySerial.println("AT+CMGR=1"); //LÊ A SMS QUE ACABOU DE CHEGAR
// i++;
//}
delay(200);
leserial();
//Serial.println(inputString);
firstClosingBracket = inputString.indexOf('#'); //PROCURA NA ENTRADA DA STRING ONDE TEM UM #
/************* Envia SMS caso encontre a senha #1234**************/
if (inputString.startsWith("#1234",firstClosingBracket)) //SE A ENTRADA DA STRING COMEÇAR COM(inputString.StartsWith) #1234 ENTRA NO IF
{
delay(1000);
pegaPosicao(); //CHAMA A FUNÇÃO NOVAMENTE PARA PODER PEGAR OS DAOS CORRETAMENTE
digitalWrite(led, HIGH);
Serial.println("Enviando SMS");
mySerial.println("AT+CMGS=\"" +phone+ "\""); // CONFIGURA PARA ENVIAR MENSAGEM PARA O NUMERO DESEJADO
delay(1000);
mySerial.print("Longitude: ");
mySerial.println(int_long_hour,6);
mySerial.print("Latitude: ");
mySerial.println(int_lat_hour,6);
delay(1000);
mySerial.write(26);
delay(6000);
mySerial.println("AT+CMGD=1"); //APAGA A MENSAGEM QUE CHEGOU
//mySerial.println("AT+CMGDA=\"DEL ALL\""); //DELETA TODAS AS MENSAGENS
digitalWrite(led, LOW);
Serial.println("Mensagem enviada");
}
mySerial.flush();
delay(2000);
}
}
/************************************************ FIM **********************************************/
americo- Mensagens : 7
Data de inscrição : 27/08/2013
Idade : 32
Localização : Maringá - Pr
Hyperterminal
Olá amigos,
Estou desenvolvendo um protótipo de telemetria, mas as coisas não estão indo bem.
Para implementar e testar a aquisição de dados eu estou usando o hyperterminal para enviar os comandos, e um script em PHP para receber os dados, mas não está funcionando, segue abaixo os comandos e respostas e logo abaixo o script em PHP. Eu sei que esta é uma questão recorrente, mas aparentemente está tudo funcionando corretamente. OBS: eu criei uma página formulário em html para testar a recepção do script e ele salvou corretamente no banco de dados. O que será que falta? Onde será que estou errando? Se alguém puder me ajudar, serei muito grato.
AT
OK
AT+CREG?
+CREG: 0,1
OK
AT+CIPMUX=0
OK
AT+CSTT="wap.tim.br","tim","tim"
OK
AT+CIICR
OK
AT+CIFSR
100.66.150.122
AT+CIPSTART="TCP","www.metroaguaavasc.com.br","80"
OK
CONNECT OK
AT+CIPSEND
> GET http://www.metroaguaavasc.com.br/gprs.php?idcliente="12345Y"&leitura="123"
SEND OK
$cliente = $_GET['cliente'];
$leitura = $_GET['leitura'];
$dbc = mysqli_connect('localhost', 'banco_db', 'senha', 'metro_TCC');
$sql = "INSERT INTO leituras (idcliente, leitura)" .
"VALUES ('$idcliente', '$leitura')";
mysqli_query($dbc, $sql);
mysqli_close($dbc);
?>
Estou desenvolvendo um protótipo de telemetria, mas as coisas não estão indo bem.
Para implementar e testar a aquisição de dados eu estou usando o hyperterminal para enviar os comandos, e um script em PHP para receber os dados, mas não está funcionando, segue abaixo os comandos e respostas e logo abaixo o script em PHP. Eu sei que esta é uma questão recorrente, mas aparentemente está tudo funcionando corretamente. OBS: eu criei uma página formulário em html para testar a recepção do script e ele salvou corretamente no banco de dados. O que será que falta? Onde será que estou errando? Se alguém puder me ajudar, serei muito grato.
AT
OK
AT+CREG?
+CREG: 0,1
OK
AT+CIPMUX=0
OK
AT+CSTT="wap.tim.br","tim","tim"
OK
AT+CIICR
OK
AT+CIFSR
100.66.150.122
AT+CIPSTART="TCP","www.metroaguaavasc.com.br","80"
OK
CONNECT OK
AT+CIPSEND
> GET http://www.metroaguaavasc.com.br/gprs.php?idcliente="12345Y"&leitura="123"
SEND OK
$cliente = $_GET['cliente'];
$leitura = $_GET['leitura'];
$dbc = mysqli_connect('localhost', 'banco_db', 'senha', 'metro_TCC');
$sql = "INSERT INTO leituras (idcliente, leitura)" .
"VALUES ('$idcliente', '$leitura')";
mysqli_query($dbc, $sql);
mysqli_close($dbc);
?>
as_vasc- Mensagens : 3
Data de inscrição : 08/10/2013
Novidades para o SIM 908
Olá, tenho novidades para esse shield, criei uma pequena aplicação web que pode receber os dados e mostrar em um mapa do google, quem tiver interesse em testar seus projetos nela fiquem a vontade. Segue o link: "www.dvlogistica.com/os" lembrando que esse site só funciona se o arduino estiver configurado conforme explicações anteriores desse post. Em breve farei um vídeo mostrando o funcionamento. Até mais galera.
trcsistemas- Mensagens : 8
Data de inscrição : 08/09/2012
Re: SIM908 e arduino UNO rastreador veicular
Olá TRC muito bom o site porem no primiero código que vc postou
mySerial.println("AT+CIPSTART=\"tcp\",\"seusite\",\"80\"");//executa comando
delay(2000); //espera resultado na serial
limpa_buffer();
mySerial.println("AT+CIPSEND");//executa comando
delay(2000);
limpa_buffer();
mySerial.println("GET seusite+seuphp+variaveis");//executa comando
Não tem o formato de dados que nem o endereço do formulário para cadastrar coordenadas no seu site tem como passar isso ?
mySerial.println("AT+CIPSTART=\"tcp\",\"seusite\",\"80\"");//executa comando
delay(2000); //espera resultado na serial
limpa_buffer();
mySerial.println("AT+CIPSEND");//executa comando
delay(2000);
limpa_buffer();
mySerial.println("GET seusite+seuphp+variaveis");//executa comando
Não tem o formato de dados que nem o endereço do formulário para cadastrar coordenadas no seu site tem como passar isso ?
Re: SIM908 e arduino UNO rastreador veicular
Na verdade o código que esta ai no fórum esta desatualizado, abaixo segue a nova versão, aconselho que use a IDE 1.0.1 para compilar o código:
OBS.: Utilizei o chip da claro tive melhores resultados. Essa versão do código corrige um problema que existia na anterior onde o arduino só iniciava o programa se conectado ao serial monitor. E o mais importante, no envio do GET a variavel idsim deve conter o um numero cadastrado no site.
#include
SoftwareSerial mySerial(2, 3);
#define BUF_LEN_0 200
#define BUF_LEN_1 84
const int MAXDATA = 256;
int powerkey = 5;
int statuspin = 6;
int pinState = 0;
int verifica = 0;
int x =0;
String lat;
String lon;
String ctrl;
byte num_of_bytes;
byte retorno;
char comm_buf[BUF_LEN_0];
char data [MAXDATA];
byte n;
String splitString(String s, char parser,int index);
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(powerkey, OUTPUT);
pinMode(statuspin, INPUT);
}
void loop() {
pinState = digitalRead(statuspin);
if(pinState==LOW){
digitalWrite(powerkey, HIGH); // set the LED on
delay(2000);
digitalWrite(powerkey, LOW);
delay(7000);
}
if (verifica == 0) {
mySerial.println("AT+CGPSPWR=0");
delay(1000);
mySerial.println("AT+CGPSPWR=1");
delay(1000);
mySerial.println("AT+CGPSRST=0");
delay(1000);
verifica = 1;
mySerial.flush();
}
lat = "";
lon = "";
ctrl = "";
limpa_buffer();
mySerial.flush();
delay(1000);
mySerial.println("AT+CGPSINF=32");
delay(1000);
leserial();
//delay(120000);
delay(60000);
if (ctrl == "S") {
enviadados();
}
limpa_buffer();
}
void limpa_buffer()
{
memset(comm_buf,'\0',BUF_LEN_0);
}
void enviadados()
{
mySerial.println("AT+CIPMUX=1");
delay(2000);
limpa_buffer();
mySerial.println("AT+CSTT=\"claro.com.br\",\"claro\",\"claro\"");
delay(2000);
limpa_buffer();
mySerial.println("AT+CIICR");
delay(2000);
limpa_buffer();
mySerial.println("AT+CIFSR");
delay(2000);
limpa_buffer();
mySerial.println("AT+CIPSTART=1,\"tcp\",\"dvlogistica.com\",\"80\"");
delay(2000);
limpa_buffer();
mySerial.println("AT+CIPSEND=1");
delay(2000);
limpa_buffer();
mySerial.println("GET http://www.dvlogistica.com/inseredados.php?lati="+lat+"&long="+lon+"&velo=0&idsim=76350266");//executa comando
delay(2000);
limpa_buffer();
delay(2000);
mySerial.write(26);
delay(2000);
mySerial.println("AT+CIPSHUT");
delay(2000);
mySerial.flush();
/*mySerial.println("AT+CMGF=1"); // Because we want to send the SMS in text mode
Serial.println("Enviando SMS");
delay(1000);
mySerial.println("AT+CMGS=\"976350266\""); // Aqui vc coloca o numero para o qual quer enviar SMS
delay(2000);
mySerial.print("Dados GPS");
mySerial.print("Latitude: "+lat);
mySerial.print("Longitude: "+lon);
delay(2000);
mySerial.write(26); //CTRL+Z*/
}
void leserial()
{
num_of_bytes = mySerial.available(); //Pega quantidade de bytes que estao na serial
while (mySerial.available() > 0) //Espera até que serial possua bytes
{
for(n=0; n {
comm_buf[n] = mySerial.read();
}
}
lat = splitString(comm_buf,',',3);
ctrl = splitString(comm_buf,',',4);
lon = splitString(comm_buf,',',5);
Serial.println("Latitude: "+lat);
Serial.println("Longitude: "+lon);
Serial.println("CTRC: "+ctrl);
mySerial.flush(); //limpa buffer de entrada da serial
limpa_buffer();
}
String splitString(String s, char parser,int index){
String rs='\0';
int parserIndex = index;
int parserCnt=0;
int rFromIndex=0, rToIndex=-1;
while(index>=parserCnt){
rFromIndex = rToIndex+1;
rToIndex = s.indexOf(parser,rFromIndex);
if(index == parserCnt){
if(rToIndex == 0 || rToIndex == -1){
return '\0';
}
return s.substring(rFromIndex,rToIndex);
}
else{
parserCnt++;
}
}
return rs;
}
OBS.: Utilizei o chip da claro tive melhores resultados. Essa versão do código corrige um problema que existia na anterior onde o arduino só iniciava o programa se conectado ao serial monitor. E o mais importante, no envio do GET a variavel idsim deve conter o um numero cadastrado no site.
#include
SoftwareSerial mySerial(2, 3);
#define BUF_LEN_0 200
#define BUF_LEN_1 84
const int MAXDATA = 256;
int powerkey = 5;
int statuspin = 6;
int pinState = 0;
int verifica = 0;
int x =0;
String lat;
String lon;
String ctrl;
byte num_of_bytes;
byte retorno;
char comm_buf[BUF_LEN_0];
char data [MAXDATA];
byte n;
String splitString(String s, char parser,int index);
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(powerkey, OUTPUT);
pinMode(statuspin, INPUT);
}
void loop() {
pinState = digitalRead(statuspin);
if(pinState==LOW){
digitalWrite(powerkey, HIGH); // set the LED on
delay(2000);
digitalWrite(powerkey, LOW);
delay(7000);
}
if (verifica == 0) {
mySerial.println("AT+CGPSPWR=0");
delay(1000);
mySerial.println("AT+CGPSPWR=1");
delay(1000);
mySerial.println("AT+CGPSRST=0");
delay(1000);
verifica = 1;
mySerial.flush();
}
lat = "";
lon = "";
ctrl = "";
limpa_buffer();
mySerial.flush();
delay(1000);
mySerial.println("AT+CGPSINF=32");
delay(1000);
leserial();
//delay(120000);
delay(60000);
if (ctrl == "S") {
enviadados();
}
limpa_buffer();
}
void limpa_buffer()
{
memset(comm_buf,'\0',BUF_LEN_0);
}
void enviadados()
{
mySerial.println("AT+CIPMUX=1");
delay(2000);
limpa_buffer();
mySerial.println("AT+CSTT=\"claro.com.br\",\"claro\",\"claro\"");
delay(2000);
limpa_buffer();
mySerial.println("AT+CIICR");
delay(2000);
limpa_buffer();
mySerial.println("AT+CIFSR");
delay(2000);
limpa_buffer();
mySerial.println("AT+CIPSTART=1,\"tcp\",\"dvlogistica.com\",\"80\"");
delay(2000);
limpa_buffer();
mySerial.println("AT+CIPSEND=1");
delay(2000);
limpa_buffer();
mySerial.println("GET http://www.dvlogistica.com/inseredados.php?lati="+lat+"&long="+lon+"&velo=0&idsim=76350266");//executa comando
delay(2000);
limpa_buffer();
delay(2000);
mySerial.write(26);
delay(2000);
mySerial.println("AT+CIPSHUT");
delay(2000);
mySerial.flush();
/*mySerial.println("AT+CMGF=1"); // Because we want to send the SMS in text mode
Serial.println("Enviando SMS");
delay(1000);
mySerial.println("AT+CMGS=\"976350266\""); // Aqui vc coloca o numero para o qual quer enviar SMS
delay(2000);
mySerial.print("Dados GPS");
mySerial.print("Latitude: "+lat);
mySerial.print("Longitude: "+lon);
delay(2000);
mySerial.write(26); //CTRL+Z*/
}
void leserial()
{
num_of_bytes = mySerial.available(); //Pega quantidade de bytes que estao na serial
while (mySerial.available() > 0) //Espera até que serial possua bytes
{
for(n=0; n
comm_buf[n] = mySerial.read();
}
}
lat = splitString(comm_buf,',',3);
ctrl = splitString(comm_buf,',',4);
lon = splitString(comm_buf,',',5);
Serial.println("Latitude: "+lat);
Serial.println("Longitude: "+lon);
Serial.println("CTRC: "+ctrl);
mySerial.flush(); //limpa buffer de entrada da serial
limpa_buffer();
}
String splitString(String s, char parser,int index){
String rs='\0';
int parserIndex = index;
int parserCnt=0;
int rFromIndex=0, rToIndex=-1;
while(index>=parserCnt){
rFromIndex = rToIndex+1;
rToIndex = s.indexOf(parser,rFromIndex);
if(index == parserCnt){
if(rToIndex == 0 || rToIndex == -1){
return '\0';
}
return s.substring(rFromIndex,rToIndex);
}
else{
parserCnt++;
}
}
return rs;
}
trcsistemas- Mensagens : 8
Data de inscrição : 08/09/2012
rastreador com o 908
por favor alguém sabe alguma forma de consertar o horário que o gps busca. pois o gps busca as informações mas retorna o horário com um fuso horário de 2 horas a mais. queria saber alguma coisa tipo um comando at para parametrizar isso. por que da para consertar se colocar na programaço para subtrair 2 horas do valor retornado. porem fazendo isso só estarei consertando o horário e a data não porque ao chegar as 10 horas da noite como se tem 2 horas a mais a data recebida e do próximo dia.
alguém sabe me dizer como eu faço essa parametrização?
obrigado.
alguém sabe me dizer como eu faço essa parametrização?
obrigado.
raphaelpereira- Mensagens : 2
Data de inscrição : 03/02/2014
Re: SIM908 e arduino UNO rastreador veicular
raphael, não tem como vc fazer um tratamento melhor de data/hora? Do jeito que vc falou, vc está simplesmente subtraindo 2 da hora. Isso é muito simplório. Precisa tratar melhor o dado, como por exemplo, verificar se o resultado da conta for negativo, precisaria subtrair um dia e ajustar o contador de horas para 24, e se o isso resultasse em dia negativo, precisaria subtrair um mês e reajustar o contador de dia em 28, 30 ou 31 conforme o mês, e se o resultado disso fosse mês negativo, precisaria subtrair um ano e reajustar o mês para 12. Esse é um método totalmente braçal e exigiria certos cuidados e simulações.
Mas se a sua aplicação usa PHP para tratar os dados vindos do GPS para gravar no banco de dados, dá pra combinar os comandos date e strtotime. Veja:
Mas se a sua aplicação usa PHP para tratar os dados vindos do GPS para gravar no banco de dados, dá pra combinar os comandos date e strtotime. Veja:
- Código:
<?php
$formato_saida = 'Y-m-d H:i:s';
$data_gps = '2012-03-01 01:10:40'; // trate os dados vindos do gps para ficar nesse formato
$diff = '-3 hour'; // pode ser valor positivo ou negativo; aceita day, month, year, hour, minute, second
$data_resultante = date($formato_saida, strtotime($diff,strtotime($data_gps)));
echo $data_resultante;
?>
hi1975- Mensagens : 16
Data de inscrição : 30/01/2014
Este código funciona para arduino mega + sim908?
trcsistemas escreveu:Olá pessoal, segue minha contribuição para o forum, fiz um pequeno sistema de rastreamento com o SIM908 + arduino uno, segue abaixo o video mostrando o funcionamento e código fonte:
Video:
Código fonte :
#include
NewSoftSerial mySerial(2, 3);
#define BUF_LEN 200
int powerkey = 5;
int statuspin = 6;
int pinState = 0;
int verifica = 0;
String lat;
String lon;
String ctrl;
byte num_of_bytes;
byte retorno;
char comm_buf[BUF_LEN];
byte n;
void setup()
{
pinMode(powerkey, OUTPUT);
pinMode(statuspin, INPUT);
mySerial.begin(9600);
Serial.begin(9600);
}
void loop()
{
pinState = digitalRead(statuspin);
if(pinState==LOW){
digitalWrite(powerkey, HIGH); // set the LED on
delay(2000);
digitalWrite(powerkey, LOW);
}
if (verifica == 0) {
mySerial.println("AT+CGPSPWR=0");
delay(1000);
mySerial.println("AT+CGPSPWR=1");
delay(1000);
mySerial.println("AT+CGPSRST=0");
delay(1000);
verifica = 1;
mySerial.flush();
}
lat = "";
lon = "";
ctrl = "";
limpa_buffer();
mySerial.flush();
delay(500);
mySerial.println("AT+CGPSINF=32");
delay(1000);
leserial();
delay(60000);
if (ctrl == "S") {
enviadados();
}
limpa_buffer();
}
void limpa_buffer()
{
memset(comm_buf,'\0',BUF_LEN);
}
void enviadados()
{
mySerial.println("AT+CSTT=\"portaldaoperadora\",\"usuario\",\"senha\"");//executa comando
delay(2000); //espera
limpa_buffer();
mySerial.println("AT+CIICR");//executa comando
delay(5000); //espera resultado na serial
limpa_buffer();
mySerial.println("AT+CIFSR");//executa comando
delay(2000); //espera resultado na serial
limpa_buffer();
mySerial.println("AT+CDNSCFG?");//executa comando
delay(3000); //espera resultado na serial
limpa_buffer();
mySerial.println("AT+CIPSTART=\"tcp\",\"seusite\",\"80\"");//executa comando
delay(2000); //espera resultado na serial
limpa_buffer();
mySerial.println("AT+CIPSEND");//executa comando
delay(2000);
limpa_buffer();
mySerial.println("GET seusite+seuphp+variaveis");//executa comando
delay(3000);
limpa_buffer();
delay(1000);
mySerial.println();
delay(1000);
mySerial.println(0x1A,BYTE);
limpa_buffer();
mySerial.flush();
}
void leserial()
{
num_of_bytes = mySerial.available(); //Pega quantidade de bytes que estao na serial
while (mySerial.available() > 0) //Espera até que serial possua bytes
{
for(n=0; n{
comm_buf[n] = mySerial.read();
}
}
if (n == 63) {
//Se o n for menor que 63 descarta pacote
//Alimenta as variaveis com o conteudo do buffer
lat = comm_buf;
lon = comm_buf;
ctrl= lat.substring(30,31);
//Pega só a latitude e longitude
lat = lat.substring(18,29);
lon = lon.substring(32,43);
}
mySerial.flush(); //limpa buffer de entrada da serial
limpa_buffer();
}
Se alguem se interessar no software que busca os dados e plota no mapa, entrem em contato no email que se encontra nas observações do video.
Espero que o código fonte acima ajude alguem.
Dias- Mensagens : 2
Data de inscrição : 13/03/2014
ENVIAR COORDENADAS PARA BD.
Pessoal, estou tentando enviar as coordenadas adquiridas, para um webserver. Alguém pode me ajudar?
Estou usando o seguinte código:
Com esse código, eu consigo adquirir as coordenadas corretamente, porém, gostaria de enviar tais coordenadas, para uma página PHP.
O endereço da página é o seguinte: ambulancesystem.com.br/test.php
O código da página é este:
Alguém aí poderia me ajudar?
Estou usando o seguinte código:
- Código:
#include <SoftwareSerial.h>
#include <Wire.h> //I2C library
SoftwareSerial mySerial(2, 3); //RX, TX
const int powerkey = 5;
const int statuspin = 6;
const int vDetect = 4;
const int led = 13;
int i = 0;
int firstClosingBracket;
int vState=0;
int pinState=0;
int count = 0;
int erroConec = 0;
int statusConec = false;
float int_long_hour = 00.000000;
float int_lat_hour = 00.000000;
String inputString = ""; //STRING USADA PARA ARMAZENADA DADOS DE ENTRADA
String readEeprom = "";
char inChar;
char str_long[19];
char str_lat[19];
/**********************************************************************************************************
CONFIGURAÇÕES
**************************************************************************************************************/
String apn = "zap.vivo.com.br";
String user = "zap";
String pass = "zap";
String phone = "numero cel";
/**************************************************************************************************************
FUNÇÃO QUE LÊ A SOFTSERIAL
*DEVE SER CHAMADA TODA VEZ QUE DER UM COMANDO NO SIM908
************************************************************************************************************/
void leserial()
{
inputString = "";
while (mySerial.available()>0)
{
inChar = mySerial.read(); //LÊ A O QUE ESTÁ NA PORTA SERIAL E MANDA ESSE DADO PARA inChar
inputString += inChar;
//delay(1);
}
Serial.println(inputString); //USADO PARA MOSTRAR A LEITURA QUE FOI FEITA NA SOFTSERIAL
}
/*******************************************************************************************************
ADQUIRI E TRATA O CÓDIGO NMEA
*************************************************************************************************************/
void pegaPosicao(){
Serial.println("Codigo NMEA");
{
mySerial.println("AT+CGPSINF=0"); //SOLICITA AS COODENADAS GPS
delay(200);
leserial();
http://Serial.println(inputString);
/************** SEPARA LATITUDE E LONGITUDE *******************/
char buffer[250] = "";
char *p_char;
char *p_char1;
inputString.toCharArray(buffer, 250);
/*************** LONGITUDE ******************/
p_char = strchr((char *)(buffer),',');
p_char1 = p_char+1; //ESTAMOS NO PRIMEIRO CARACTER DA LONGITUDE
p_char = strchr((char *)(p_char1), ',');
if (p_char != NULL) {
*p_char = 0;
}
strcpy(str_long, (char *)(p_char1));
/*************** LATITUDE ******************/
p_char++;
p_char1 = strchr((char *)(p_char), ',');
if (p_char1 != NULL) {
*p_char1 = 0;
}
strcpy(str_lat, (char *)(p_char));
/**********TRANSFORMANDO A STRING EM INTERGER**********/
char str_long_pos[5] = "";
str_long_pos[0] = str_long[0];
str_long_pos[1] = str_long[1];
str_long_pos[2] = str_long[2];
int_long_hour = atof(str_long_pos);
str_long_pos[0] = str_long[3];
str_long_pos[1] = str_long[4];
str_long_pos[2] = str_long[5];
str_long_pos[3] = str_long[6];
str_long_pos[4] = str_long[7];
str_long_pos[5] = str_long[8];
float int_long_min = 00.000000;
int_long_min = atof(str_long_pos);
int_long_min = int_long_min / -60; // DIVIDE POR 60 PARA TER AS COORDENADAS PRONTAS PARA SEREM USADAS NO GOOGLE MAPS
int_long_hour = int_long_hour + int_long_min;
/************ FAZ A MESMA COISA PARA A LATITUDE ************/
char str_lat_pos[5] = "";
str_lat_pos[0] = str_lat[0];
str_lat_pos[1] = str_lat[1];
str_lat_pos[2] = str_lat[2];
int_lat_hour = atof(str_lat_pos);
str_lat_pos[0] = str_lat[3];
str_lat_pos[1] = str_lat[4];
str_lat_pos[2] = str_lat[5];
str_lat_pos[3] = str_lat[6];
str_lat_pos[4] = str_lat[7];
str_lat_pos[5] = str_lat[8];
float int_lat_min = 00.000000;
int_lat_min = atof(str_lat_pos);
int_lat_min = int_lat_min / -60;
int_lat_hour = int_lat_hour + int_lat_min;
/**************** MOSTRA COMO FICOU A LATITUDE E A LONGITUDE ****************/
Serial.println(int_lat_hour,6); // ESSE 6 É O NUMERO DE CASAS DECIMAIS
Serial.println(int_long_hour,6);
delay(1000);
}
}
/**************************************************************************************************************
VERIFICA SE O GPS ESTA LIGADO
*************************************************************************************************************/
void verificaGPS(){
Serial.println("Verifica GPS");
mySerial.println("AT+CGPSPWR?"); //VERIFICA SE O GPS ESTÁ LIGADO
delay(500);
leserial();
http://Serial.println(inputString);
firstClosingBracket = inputString.indexOf(':'); //VAI PEGAR UM VALOR DE ENTRADA DA STRING DEPOIS DOS 2 PONTOS, E COLOCA ESSE VALOR //IGUAL firstClosingBracket
if (inputString.startsWith("0",firstClosingBracket+2)) //SE A ENTRADA DA STRING COMEÇAR COM (inputString.StartsWith) 0, DEPOIS DE //firstClosingBracket + 2 ELE ENTRA NO IF
{
Serial.println("Ligando GPS");
mySerial.println("AT+CGPSPWR=1"); //LIGA O MODO GPS
delay(2000);
mySerial.println("AT+CGPSRST=0"); //REINICIA O MODO GPS
}
mySerial.flush();
}
/************************************************************************************************************
VERIFICA SE ESTÁ CONECTADO
*************************************************************************************************************/
void verificaConexao(){
Serial.println("Verifica Conexão");
mySerial.println("AT+CIFSR"); //OBTER ENDEREÇO IP LOCAL
delay(2000);
leserial();
http://Serial.println(inputString);
firstClosingBracket = inputString.indexOf('E'); //VAI PROCURAR NA ENTRADA DA STRING ONDE TEM UM E
//E GRAVAR ISSO EM firstClosingBracket
if (inputString.startsWith("ERROR",firstClosingBracket)) //SE A ENTRADA DA STRING COMEÇAR COM
//(inputString.StartsWith) ERROR, ENTRA NESSE IF
{
erroConec++; //AQUI ELE VAI CONTANDO OS ERROS DA CONEXÃO E CASSO PASSE DE 5 TENTATIVAS ELE DESLIGA E LIGA O MODULO
statusConec = false;
Serial.println("Conectando");
mySerial.println("AT+CSTT=\""+apn+"\",\"" +user+ "\",\"" +pass+ "\""); //INÍCIO DA TAREFA SET APN, NOME DE USUÁRIO E SENHA
delay(4000);
mySerial.println("AT+CIICR"); //FAZ A CONEXÃO GPRS
delay(10000);
mySerial.println("AT+CIFSR"); //OBTER ENDEREÇO IP LOCAL
delay(4000);
mySerial.println("AT+CDNSCFG?"); //CONFIGURA O DNS
leserial();
// Serial.println(inputString);
mySerial.flush();
}
else
{
Serial.println("Conectado!!!");
statusConec = true;
}
//isso aqui é uma tentativa de reaver a rede GSPRS
if(erroConec > 3){
erroConec = 0;
//http://Serial.println("Desligando o modulo");
//digitalWrite(powerkey, HIGH); // set the LED on
//delay(2000);
//digitalWrite(powerkey, LOW);
//leserial();
//delay(20000);
}
}
void setup()
{
/*********************************************************************************************************
INICIALIZANDO O SERIAL
**********************************************************************************************************/
Serial.begin(9600);
mySerial.begin(9600);
pinMode(powerkey, OUTPUT);
pinMode(statuspin, INPUT);
http://inputString.reserve(300);
/*********************************************************************************************************
TIRA O ECO E TORNA A SMS LEGÍVEL
**********************************************************************************************************/
Serial.println("Inicializando o Modulo");
mySerial.println("ATE0");
delay(1000);
mySerial.println("AT+CMGF=1"); //SELECIONA O FORMATO DA MENSAGEM DE TEXTO
delay(1000);
mySerial.println("AT&W0"); //ARMAZENA OS PARÂMETROS DA CONFIGURAÇÃO ATUAL DO PERFIL DO USUÁRIO DEFINIDO
delay(1000);
mySerial.println("AT+CGPSRST=1"); //RESETA O GPS
verificaConexao(); //CHAMA A FUNÇÃO
verificaGPS(); //CHAMA A FUNÇÃO
mySerial.println("AT+CMGDA=\"DEL ALL\""); //DELETA TODAS AS MENSAGENS
delay(1000);
Serial.println("Mensagens deletadas");
leserial(); //CHAMA A FUNÇÃO
delay(2000);
}
void loop()
{
pinState = digitalRead(statuspin);
if(pinState==LOW)
{
Serial.println("Ligando o Sim908");
digitalWrite(powerkey, HIGH); //ACENDE O LED
delay(2000);
digitalWrite(powerkey, LOW); //DESLIGA O LED
delay(30000); //DELAY É DEMORADO PARA DAR TEMPO DO MÓDULO LIGAR E SE REGISTRAR NA REDE
}
pegaPosicao(); //CHAMA A FUNÇÃO
/***********************************************************************************************************
FUNÇÃO PARA LÊ AS SMS
************************************************************************************************************/
Serial.println("Lendo SMS");
if(int_lat_hour && int_long_hour){
if(i==0){
mySerial.println("AT+CMGR=1"); //LÊ A SMS QUE ACABOU DE CHEGAR
i++;
}
delay(200);
leserial();
http://Serial.println(inputString);
firstClosingBracket = inputString.indexOf('#'); //PROCURA NA ENTRADA DA STRING ONDE TEM UM #
/************* Envia SMS caso encontre a senha #1234**************/
if (inputString.startsWith("#1234",firstClosingBracket)) //SE A ENTRADA DA STRING COMEÇAR COM(inputString.StartsWith) #1234 ENTRA NO IF
{
delay(1000);
pegaPosicao(); //CHAMA A FUNÇÃO NOVAMENTE PARA PODER PEGAR OS DAOS CORRETAMENTE
digitalWrite(led, HIGH);
Serial.println("Enviando SMS");
mySerial.println("AT+CMGS=\""+phoneenvia+"\""); // CONFIGURA PARA ENVIAR MENSAGEM PARA O NUMERO DESEJADO
delay(1000);
mySerial.print("Longitude: ");
mySerial.println(int_long_hour,6);
mySerial.print("Latitude: ");
mySerial.println(int_lat_hour,6);
delay(1000);
mySerial.write(26);
delay(6000);
mySerial.println("AT+CMGD=1"); //APAGA A MENSAGEM QUE CHEGOU
http://mySerial.println("AT+CMGDA=\"DEL ALL\""); //DELETA TODAS AS MENSAGENS
digitalWrite(led, LOW);
Serial.println("Mensagem enviada");
}
mySerial.flush();
delay(2000);
}
}
/************************************************ FIM **********************************************/
Com esse código, eu consigo adquirir as coordenadas corretamente, porém, gostaria de enviar tais coordenadas, para uma página PHP.
O endereço da página é o seguinte: ambulancesystem.com.br/test.php
O código da página é este:
- Código:
<?php
session_start();
$lati2 = $_GET['lati'];
$longe2 = $_GET['longe'];
$data2 = date("d/m/Y");
$con = mysql_connect("mysql01.site1393701359.hospedagemdesites.ws", "host", "senha") or die(mysql_error($con));
mysql_select_db("nome da tabela", $con);
mysql_query("INSERT INTO Consulta (latitude,longitude,data) VALUES ('$lati2','$longe2','$data2')") or die(mysql_error($con));
?>
Alguém aí poderia me ajudar?
aronrao- Mensagens : 2
Data de inscrição : 15/03/2014
Re: SIM908 e arduino UNO rastreador veicular
aronrao escreveu:Pessoal, estou tentando enviar as coordenadas adquiridas, para um webserver. Alguém pode me ajudar?
Com esse código, eu consigo adquirir as coordenadas corretamente, porém, gostaria de enviar tais coordenadas, para uma página PHP.
O endereço da página é o seguinte: ambulancesystem.com.br/test.php
O código da página é este:
[...] codigo php [...]
Alguém aí poderia me ajudar?
Vc precisa ler o log do apache e/ou mysql para saber que tipo de erro ocorre. Tendo isso em mãos, diga-nos o tipo de erro para que alguém possa te ajudar.
Mas a primeira vista, eu já vi que vc está tentando gravar no mysql as datas no formato "d/m/Y". Se o tipo do campo data no mysql for "date", esse seu formato usado é inválido. Vc precisa converter para o formato ""Y-m-d" (com hífen separando, e não barras) para que o mysql aceite. No entanto, se vc configurou essa coluna de data para varchar, tudo bem, aí vc até poderia inserir a data em qualquer formato, porém vc perderia a capacidade de usar recursos relativos à cálculos e ordenações de datas.
Então te recomendo configurar no mysql a coluna para abastecimento da data com o tipo DATETIME e gravar as informações no formato "Y-m-d H:i:s". Julgo ser importante gravar inclusive o horário, minuto e segundo pois para aplicações de gps tais informações são essenciais.
Feito isso, caso continue não funcionando, informe-nos o erro exibido no log do apache e/ou mysql
hi1975- Mensagens : 16
Data de inscrição : 30/01/2014
Re: SIM908 e arduino UNO rastreador veicular
hi1975 escreveu:aronrao escreveu:Pessoal, estou tentando enviar as coordenadas adquiridas, para um webserver. Alguém pode me ajudar?
Com esse código, eu consigo adquirir as coordenadas corretamente, porém, gostaria de enviar tais coordenadas, para uma página PHP.
O endereço da página é o seguinte: ambulancesystem.com.br/test.php
O código da página é este:
[...] codigo php [...]
Alguém aí poderia me ajudar?
Vc precisa ler o log do apache e/ou mysql para saber que tipo de erro ocorre. Tendo isso em mãos, diga-nos o tipo de erro para que alguém possa te ajudar.
Mas a primeira vista, eu já vi que vc está tentando gravar no mysql as datas no formato "d/m/Y". Se o tipo do campo data no mysql for "date", esse seu formato usado é inválido. Vc precisa converter para o formato ""Y-m-d" (com hífen separando, e não barras) para que o mysql aceite. No entanto, se vc configurou essa coluna de data para varchar, tudo bem, aí vc até poderia inserir a data em qualquer formato, porém vc perderia a capacidade de usar recursos relativos à cálculos e ordenações de datas.
Então te recomendo configurar no mysql a coluna para abastecimento da data com o tipo DATETIME e gravar as informações no formato "Y-m-d H:i:s". Julgo ser importante gravar inclusive o horário, minuto e segundo pois para aplicações de gps tais informações são essenciais.
Feito isso, caso continue não funcionando, informe-nos o erro exibido no log do apache e/ou mysql
Bom, o erro nao é em relação ao código do PHP para tratamento da data. O Problema descrito é em relação a enviar as coordenadas adquiridas no shield para o código PHP.
As coordenadas não são enviadas para a página PHP através do comando GET descrito no código.
aronrao- Mensagens : 2
Data de inscrição : 15/03/2014
Página 3 de 4 • 1, 2, 3, 4
Tópicos semelhantes
» sim908+ Arduino Mega 2560
» Arduino UNO SIM 908
» Compatibilidade do Arduino com sim908
» Sim908 + Arduino Mega
» FONTE 9V/1A SHIELD SIM908 ARDUINO
» Arduino UNO SIM 908
» Compatibilidade do Arduino com sim908
» Sim908 + Arduino Mega
» FONTE 9V/1A SHIELD SIM908 ARDUINO
Página 3 de 4
Permissões neste sub-fórum
Não podes responder a tópicos
|
|