Go Down

Topic: Arduino webclient + php (Read 11 times) previous topic - next topic

nofxx

#5
Jan 19, 2011, 08:49 pm Last Edit: Jan 19, 2011, 08:49 pm by nofxx Reason: 1
Wireshark eh um dumper de pacotes. Coloque um filtro tcp , na porta q vc o servidor ta escutando e o arduino enviando.
Vc verá tudo q tá acontecendo.

nofxx

#6
Jan 19, 2011, 08:57 pm Last Edit: Jan 19, 2011, 09:03 pm by nofxx Reason: 1
Uma outra opção (a q uso aqui), somente essas linhas de Ruby:

module DuinServer
 def receive_data(data)
   puts "Recebi #{data}. Posso fazer o q eu quiser agora fácil..."
  end
end

EM.run do
 EM.start_server 'localhost', 5000, DuinServer
end

Isso liga um servidor tcp ruby na porta 5000, e imprime qql coisa q vc enviar do arduino.
Nao precisa de apache/nginx, server nenhum...
Nao tem q preocupar com header html e nada, soh dados.

Outra opção excelente eh a mesma coisa com node.js, quiser posto o codigo.
Tanto node qto ruby são alternativas pra lá de superiores à php.
Se vc ver como grava e le dados de qql banco com ruby entao, vc apaixona. Veja o "ActiveRecord".

gabryelribeiro

#7
Jan 19, 2011, 10:06 pm Last Edit: Jan 19, 2011, 10:37 pm by gabryelribeiro Reason: 1
O codigo que estou usando é este aqui

Code: [Select]
#include <SPI.h>

#include <Ethernet.h>


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168, 254,8 };
byte server[] = { 192,168,254,4 };

// variaveis a serem usadas para gravação
int valor = 10;

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
Client client(server, 80);

void setup() {
 // start the Ethernet connection:
 Ethernet.begin(mac, ip);
 Serial.begin(9600);
 delay(500);
 Serial.print("connecting...");

 // if you get a connection, report back via serial:
 if (client.connect()) {
   
   Serial.println("connected");
   delay(00);
   // Make a HTTP request:
   
 }
 else {
   // kf you didn't get a connection to the server:
   Serial.println("connection failed");
 }
}

void loop()
{
 // if there are incoming bytes available
 // from the server, read them and print them:
 for (int i = 0; i < 3; i++){
   if (client.connected()) {
     client.print("GET http://localhost/index1.php?dado=");
     client.print(valor);
     client.print(" HTTP/1.1");
     client.println();
   }
 }
 Serial.println("disconnecting.");
 client.stop();
 for(;;)
 ;
}


e o php
Code: [Select]
<?php
      $VALOR 
$_GET['dado'];
      
$novoarquivo fopen("..\www\dados.txt""w+");
      
$quebra chr(13).chr(10);              
    fwrite
($novoarquivo$VALOR.$quebra);
      
fwrite($novoarquivo"DONE!".$quebra);
      
fclose($novoarquivo);
?>



acho estranho pq eu já vi um monte de codigos, faço tudo igual mas não dá certo.

nofxx - achei interessante esse ruby, o codigo simples e interessante, mas como ficaria o codigo no arduino para acessar o codigo do ruby. Eu vou estudar sobre essa linguagem, principalmente essa parte mesmo de banco de dados. Onde tem bons tutoriais nessa area para essa linguagem?

bruno - na verdade cara eu queria um acesso como o bubu postou e não por serial. Eu estou usando o ethernet shield e queria usar o arduino como web client.

gabryelribeiro

Rapaz o ruby já tá rodando aqui no pc, eu não conhecia esse tipo linguagem não, tive até dificuldades de visualizar como seriam os codigos e tudo mais.
Eu já sou formado em programação mas não conhecia esse tipo não, eu estou acostumado a programar no codeblocks, devcpp esses que tem uma interface. Mas vou me acostumar pq achei muito interessante.

Vou começar a estudar essa parte de manipular o db pelo ruby, depois eu acho que a comunicação com o arduino é mais simples do que com servidor e http.

valeu a dica ae nofxx, é mt bom que agora eu agrego mais conhecimento. E quem sabe eu me aprofunde mais nessa linguagem.
E como que fica o arquivo .pde do arduino?

bubulindo

Os IPs estão correctos?

Estás a utilizar um servidor caseiro, né?

Experimenta colocar um echo "ok"; no php e depois de teres feito o request no Arduino, vê se existe uma resposta do script php e envia a resposta por porta série.

Que é isto?

Quote
delay(00);


E para que fazes 3 pedidos?

Quote
for (int i = 0; i < 3; i++)


Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Go Up