Oi, preciso muito de uma ajudinha (:

Tenho que fazer o arduino com o shield GSM/GPRS SIM900 conversar com um servidor PHP. Imagine assim: se eu acender um led direto no arduino, no meu servidor PHP tem que aparecer LED LIGADO, e se eu apertar o botão "Ligar Led" no meu servidor, o arduino tem que acender o Led da mesma forma, entendeu? 
Só que tudo isso tem que ser feito por meio de internet, não posso usar a conexão USB, já que a intenção é que o arduino+GSM esteja longe do computador onde está o PHP. 

Alguma sugestão? Por favor, por favor, por favor *----*

Obrigada desde já!

Exibições: 9705

Responder esta

Respostas a este tópico

Oi, Felipe!

Só uma perguntinha: eu fiz o código segundo você disse, mas o HTTPREAD não retorna nada... tipo, não retorna o 0 ou o 1 que está no arquivo do servidor... é isso mesmo que tem que acontecer? E mais uma coisinha: por um acaso,você sabe como se armazena o resultado desse HTTPREAD em uma variável?

Obrigada!!

Olá, já fui desenvolvedor JAVA e concordo com as sugestões do Felipe.

Nunca usei o shield sim900 mas parece que o que o Felipe colocou funcionou.

O método GET simplifica bastante por não ter que mandar conteúdo no corpo como no método POST. Vejo que o servidor PHP conseguiu receber as informações, provavelmente pelo "request"certo?

Agora, só falta a resposta do servidor PHP. Creio que o que o Felipe quiz dizer é que a resposta é um texto sem a formatação HTML, vindo ou não de um arquivo .txt no servidor PHP. No caso, basta que o código PHP escreva o texto de resposta no "response".

Se quizer simplificar mais sua solução, simplesmente responda com o texto "101" para indicar led A aceso, led B apagado e led C aceso.

Espero ter ajudado :-)

  'Eiju

Sim sim sim, obrigada Eiju!
O problema agora é que o comando que deveria retornar um valor de 0 ou 1 (imagino eu) não está retornando nada... não sei se é assim mesmo, mas acho que deveria receber um valor como resposta :S

Olá, sim o comando AT+HTTPREAD retorna oque está no arquivo de texto neste formato abaxo:

+HTTPREAD:20

LEDA=1 LEDB=0 LEDC=1

ainda não tratei os dados via arduino, faço os comando pelo modulo de teste da m2m lá monto um script de execução dos comando at sequencial é bem simples e os mesmo são enviados via serial para o modulo, e leio oque o sim900 retorna é porque eu estou desenvolvendo todo meu sistema por completo em PHP, devido que vou armazenar em Banco de dados alguns dados recebidos pelo arduino. Após este estágio que vou estudar a melhor forma de tratar os dados recebidos na serial do arduino. nem sei com fazer isso ainda rsrs...se alguém puder dar uma dica é bem vinda.

Ana te aconselho a usar modulo de teste. e ver se o sim900 está realmente lendo a pagina.txt da para armazenar o log da comunicação entre o sim900 e modulo de teste...

http://m2msupport.net/m2msupport/module-tester/ <--- este link

Resultado do nosso código:

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
#include <String.h>


InetGSM inet;
char msg[300];
char inSerial[50];
int i=0;
boolean started=false;
int teste;

void setup()
{
Serial.begin(9600);
Serial.println("GSM Shield testing.");
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");
if(started){
if (inet.attachGPRS("zap.vivo.com", "vivo", "vivo"))
Serial.println("status=ATTACHED");
else Serial.println("status=ERROR");
delay(1000);
gsm.SimpleWriteln("AT+CIFSR");
delay(5000);
gsm.WhileSimpleRead();
teste=inet.httpGET("siteondeestaoarquivo.com", 80, "/arquivo.txt", msg, 300);
Serial.println("Teste");
Serial.println(teste);
Serial.println(msg);

int tamanho = strlen(msg);
Serial.println(tamanho);
Serial.println(msg[tamanho-1]);
char var = msg[tamanho-1];
char teste = '1';
Serial.println(var);

if(var==teste)
Serial.println("Ligado");

else
Serial.println("Desligado");
}
};
void loop()
{

serialswread();

};
void serialswread(){
gsm.SimpleRead();
}

Ana, estou usando o mesmo exemplo SIM900+PHP, para gravar informações no DB, porém no log do arduino é apresentado o erro no techo de conexão com a operadora TIM, observei que a operadora do seu chip é VIVO, você conseguiu a conexão com sucesso? Abaixo o trecho do meu código que cai na condição de "Não conectado!!"

if (inet.attachGPRS("timbrasil.br", "tim", "tim"))
    Serial.println(F("status=Conectado..."));
  else
    Serial.println(F("status=Nao conectado !!"));

Olá, Renato! Usei a Vivo, pq a TIM é terrível aqui na minha cidade... Tive o mesmo problema muitas vezes, e o problema estava no  site que aparece na primeira linha "if (inet.attachGPRS("timbrasil.br", "tim", "tim"))" dá uma verificada se é isso mesmo (no meu caso, não tinha o .br e eu colocava)... qualquer coisa me chama ! (:

bom dia estou com um mesmo projeto porem seria gravar um valor da entrada analogica em um banco de dados no site.

estou começando com o projeto hoje e se pudesse me dar maiores informaçoes de seu projeto me auxiliaria muito principalmente na programaçao correta do arduino, pq estarei utilisando um display lcd touch para mudar os dados da operadora. mas o display sera uma segunda etapa primeiro estou concentrado em transmitir os dados do arduino para o site, no meu caso e mais simples pq nao necessito enviar pro arduino somente receber de tempos em tempos do arduino.

aguardo seu retorno

ótima discussão está me ajudando no entendimento dos requisitos de um projeto que terei que desenvolver.

Pessoal o processo que desejo é o inverso, ou seja quero mandar um arquivo para um servidor, diferente deste que lê um arquivo em um servidor, pelo visto o processo parece ser bastante parecido, porém minha dúvida é a seguinte, qual comando deve ser utilizado para enviar uma variável para o servidor, me parece que é apenas a troca do comando como o exemplo do

(inet.httpGET)

teste=inet.httpGET("siteondeestaoarquivo.com", 80, "/arquivo.txt", msg, 300);

Oi (:

para enviar para o servidor, eu usei o seguinte trecho:

void envia_dados(){
inet.httpGET("meusitelindo.com.br", 80, "/inserestatus.php?status=1&idade=21", msg, 300);
}

Como meu site foi construído em PHP, esses parâmetros que eu enviava via URL eu já recebia e salvava no banco de dados. Nesse caso, status receberia o valor 1 e a idade receberia 21. É importante ressaltar que, para garantir a segurança, você deve ter um controle de sessão muito bem feito, pois se você não o fizer, qualquer pessoa que digitar essa URL pode alterar os dados do banco sem estar logado no sistema.

Belesma? Espero ter ajudado! 

boa tarde!

Meu caso é parecido, porém e só preciso enviar um dado de um sensor (ex: temperatura) para um servidor, para que eu possa visualizar esse dado em tempo real de um celular por exemplo!

Vocês podem me ajudar com a parte Web em php?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço