Bom dia!

Fiz um Sketch com consulta em php , configurei o mac e ip, o sketch está funcionando perfeitamente. Contudo após realizar a pesquisa em vários arduinos, ao mesmo tempo, eles travam. Deixei os mac totalmente diferente, contudo acho que os arduinos estão clonando o mac de 1 arduino e estádando loop. Preciso de ajuda!

Segue abaixo os macs que criei

byte mac[] = { 0x61, 0x86, 0x52, 0xC4, 0x57, 0x2B };

byte mac[] = { 0xF3, 0x78, 0x87, 0xC1, 0xB3, 0xAA };

byte mac[] = { 0x8A, 0x06, 0x3F, 0xA8, 0x42, 0x96 };

byte mac[] = { 0x17, 0xBA, 0x29, 0xF0, 0xB8, 0xD2 };

contudo não estou tendo resultado.

segue abaixo o sketch:

#include <Ethernet.h>

byte mac[] = { 0x61, 0x86, 0x52, 0xC4, 0x57, 0x2B };

IPAddress ip(192,168,1,3); 

EthernetClient cliente;

String caracter="1234567890";

setup()

{

  Ethernet.begin(mac, ip);

}

loop()

{

if (cliente.connect(server_addr, 80)) {
  Serial.println("connected");
  cliente.println("GET /verifica/verificacatraca1.php?caracter=");
  cliente.print(caracter);
  cliente.println(" HTTP/1.0");

  cliente.println( "Host: 192.168.1.2" );
  cliente.println( "Connection: close" );

  cliente.println();

      serial.println(readPage());

}

}

String readPage(){
//read the page, and capture & return everything between '<' and '>'

stringPos = 0;
memset( &inString, 0, 32 ); //clear inString memory

while(true){

if (cliente.available()) {
char c = cliente.read();

if (c == '<' ) { //'<' is our begining character
startRead = true; //Ready to start reading the part
}
else if(startRead){

if(c != '>'){ //'>' is our ending character
inString[stringPos] = c;
stringPos ++;
}
else{
//got what we need here! We can disconnect now
startRead = false;
cliente.stop();
cliente.flush();
Serial.println("disconnecting.");
return inString;

}

}
}

}

}

//O retorno do php é <1> ou <0>

Exibições: 621

Responder esta

Respostas a este tópico

Bom dia Danilo,

Os MAC acima são os de cada placa, que vem marcado na etiqueta geralmente, ou você criou aleatoriamente um MAC para cada uma?

Abs.

não. Eu criei aleatoriamente.

Se você esta usando um ethernet shield original, existe uma etiqueta na parte de baixo onde pode ver o endereço de cada placa.

Talvez seu problema seja este.

Abs.

Infelizmente, o ethernet shield que comprei não é original. È um similar, contudo quando coloco só ele em contato ao servidor para buscar, ele funciona perfeitamente. Após colocar mais de 1 arduino para fazer a busca eles dão conflito e param de funcionar.

mac address é relevante apenas no cenário onde existe um servidor dhcp que se encarrega de atribuir um IP para cada mac address, ou em caso de firewall que bloqueia/permite acessos de acordo com o mac address das placas de rede, que a meu ver não é seu caso. Quando vc mesmo atribui um IP ao seu ethernet shield, vc pode usar qualquer mac address ali no sketch.

desculpe a pergunta banal, mas vc tomou o cuidado de atribuir um IP diferente para cada ethernet shield ne?

tomei sim.

o servidor : 192.168.1.2

arduino 1: 192.168.1.3

arduino 2: 192.168.1.4

arduino 3: 192.168.1.5

arduino 4: 192.168.1.6

Obviamente cada arduino tem um cabo de rede em seu ethernet shield. Agora minha pergunta é: onde vc está plugando a outra ponta do cabo de rede? em quais portas?

A pergunta do ihmugo parece tão obvia que não pensei nisso, vendo o código existe apenas um IP, então até você não responder não tem sentido fazer nenhuma outra analise.

Abs.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço