Pessoal,

Tentei alguns Sketch para conectar 2 arduinos utilizando ethernet shield (w5100) , porém não consegui fazer.

As luzes de rede (no conector de rede), quando estão conectados entre eles não funcionam, mas quando conecto uma das pontas no computador, o shield começa a piscar. Fiz o teste com os 2 e ambos piscam.

Alguem tem alguma Sketch que envia string via ethernet shield?

O que tentei foi este, mas não funfou: https://www.arduino.cc/en/Tutorial/UDPSendReceiveString

Abs, Bruno.

Exibições: 112

Responder esta

Respostas a este tópico

olá Antonio.

       Conheço muito bem o W5100, pois já o utilizo há mais de 10 anos em projetos. Mas não analisei o código do link que vc postou. Isso porque acredito (mesmo sem ver), que dificilmente há algum erro no código do tutorial na página do "arduino.cc".

       Note: o W5100 não faz chaveamento dos sinais TX+/Tx- com os sinais RX+/RX-, ou seja, caso vc precise fazer isso, tem que implementar no Hardware externo ao W5100.

       O isto implica?  Simples: que se vc precisar ligar o W5100 a um PC ou a outra placa que não faça o chaveamento automático, terá que usar um cabo de rede montado com configuração "Crossover", pois isto forçará a troca dos sinais.

       Assim verifique se seu cabo é "Crossover", pois isso é necessário ao usar o W5100. Outra possibilidade é vc conectar seus Shields através das portas de um "Switch" ou via portas de Roteadores, pois estes dispositivos fazem a troca automática dos sinais de rede (dispensando assim o uso de cabos "Crossover").

      Cabos "Crossover" são fáceis de encontrar no mercado. Mas se vc não encontrar, também é tranquilo de montá-los (claro, precisa de alicate adequado). Na internet tem milhares de páginas e vídeos mostrando a montagem/configuração de cabo de rede "Crossover".

      Ah, se os leds "piscaram" quando vc conectou os Shields no PC, então isso pode significar que a placa de rede do seu computador faz a troca automática dos sinais de rede TX+/Tx- e RX+/RX-.

      Espero ter ajudado.

      Abrçs

      Elcids

Elcids,

Super obrigado pela ajuda!

Estou conectando 2 E.S5100 em 2 arduinos via cabo. Também acho que o codigo do arduino.cc esteja correto.

Acredito que o problema seja o cabo crossover. Vou crimpar um e se der certo publico por aqui.

Forte abraço ! Bruno

ok Bruno, estamos aqui para auxiliar no que for possível.

       Preparei um desenho, que embora simples, é didático e ajudará outros garagistas que tenham alguma dúvida sobre esta conexão física entre dois Shields Ethernet via cabos Crossover. Segue:

     Como eu disse, há milhares de sites e vídeos falando sobre cabos crossover. Seguem apenas dois links de exemplo:

  -   link 1  (descritivo)

  -   link 2  (vídeo)

     Caso tenha alguma dúvida sobre o chip WizNet  W5100 (usado no Arduino Ethernet Shield), posso dar dicas sobre o Hardware/Firmware, pois já trabalhei bastante com este chip. Já o próprio Ethernet Shield, eu tenho dois aqui mas nunca usei, então não tive experiência com o mesmo.

     Abrçs

     Elcids

Elcids,

Conectei os cabos em um switch e as luzes passaram a piscar, porem os script não funcionam . :-(

Preciso passar uma string de um arduino para o outro.

Tentei diversos script, mas muitos dão pau. Não sei se eu estou fazendo algo errado...

Vou abusar do seu conhecimento....

O mac que aparece num arquivo é o : 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED e o IP é o ip 192, 168, 1, 177 . Estes numeros precisam ser alterados? O mac precisa ser diferente do arduino-cliente  do arduino-servidor?

Vou dar mais algumas pesquisadas.

Valeu !!!! Abs, Bruno.

Olá,

Se usar mais de um shield Ethernet devera colocar dos MAC diferentes, se a suas placas são originais, em baixo das mesmas você encontrara uma etiqueta com o MAC de cada uma delas, caso não, não tem problema, apenas use qualquer endereço MAC diferente para cada placa.

Link meu canal https://www.youtube.com/channel/UCLZ2cga6-yqz5jtI-XvE7PA?view_as=su... 

Abs.

CK

Carlos, obrigado pela explicação! 

Acessarei o canal para assistir os vídeos e aprender cada vez mais. 

Abs! 

Por nada Antonio,

Boa sorte com seu projeto!

Abs.

CK

olá Bruno.

      Para o caso da sua conexão, via Switch, o MAC deve ser considerado sim. Ocorre que o MAC é o Endereço de Hardware do Ethernet, ou seja, a forma mais "raw" de se encontrar um dispositivo na rede. Portanto no layer mais inferior de todos da camada "OSI", é o MAC que é usado para discriminar um dispositivo de outro.

     Veja que numa rede Ethernet, qualquer outro Protocolo implementado, seja qual for, estará encapsulado dentro dos 1500 bytes de um Pack Ethernet. E o envio/recepção desse pack está vinculado ao MAC. Logo se dois dispositivos tem o mesmo MAC, no layer mais baixo em uma rede Ethernet, cada dispositivo tem que ter um MAC diferente. O endereço "IP" é necessário que cada sever tenha o seu (assim como quando existe um DHCP e o server designa um único IP para cada dispositivo lógico conectado), mas o "IP" já é um Protocolo encapsulado dentro do Pack Ethernet. Assim antes de qualquer endereço "IP" diferente, cada dispositivo que quer ser encontrado em uma rede Ethernet, tem que ter um MAC diferente se a conexão entre eles é plena, ou seja, sem algo intermediando a conexão (como um Router que eventualmente possa filtrar os MACs vinculando-os a seus ports físicos).

     Na figura  a seguir (retirada da internet), você pode ver o MAC no Ethernet Pack, e note que há o "Destination MAC" e o "Source MAC":

      

     Em uma rede onde os dispositivos são conectados por um "Router", o firmware deste Router pode conseguir discriminar cada dispositivo, mesmo que eles tenham o mesmo MAC, porque ele considera cada port  físico de rede (via conector RJ45) como uma diferenciação, de forma que o Router sabe distinguir os dispositivos conectados em cada um de seus ports físicos (e mantém em sua memória um "mapa" de quem está em cada port). Além disso, os Routers sempre acabam trabalhando com Protocolos das Camadas OSI que estejam acima do Layer de Hardware, e neste caso cada dispositivo acabará sendo distinguido também pelo IP (e portanto o MAC não seria mais decisivo).

     Não me lembro muito bem, mas acho que o hardware "hardwired" do W5100 não enxerga o MAC de outro dispositivo. Se não me engano, esse "enxergamento" só é possível se um dispositivo requisitar o MAC para ser lido. Isto porque na rede Ethernet, quando um dispositivo envia um Pack, todos os outros que estão ligados fisicamente no mesmo "node", receberão o Pack, mas somente aquele cujo MAC coincide com o "Destination MAC" do Pack, é que considerará o Pack e "pegará" este Pack pra ele. Os demais, que tem outro MAC, descartam o Pack. E por isso mesmo existem dispositivos considerados "do mal", pois trabalham no modo que é tecnicamente chamado de "modo promíscuo", pois estes dispositivos pegam qualquer Pack na rede, independente de qual seja seu MAC, e claro, ficam "bisbilhotando" e "escutando" todos os Packs na rede.

 

    Assim, tente ligar os Ethernet Shield diretamente um ao outro, pois como provavelmente o MAC de um W5100 não será visto pelo outro, provavelmente não haverá problema, já que eles se comunicarão por Protocolos encapsulados dentro do Pack Ethernet (IP, TCP/IP, UDP, e todos os "xxxxP", etc, etc, etc).

    Porém se o hardware "hardwired" do W5100 enxergar o MAC de outro W5100, então você não terá alternativa a não ser programar MACs diferentes para cada um deles. Mas minha opnião é que isto não será necessário, devido à lógica da rede Ethernet que descrevi acima (o principio do "plain broadcasting" da rede Ethernet, semelhante ao que ocorre com o famigerado barramento I2C, onde todos os dispositivos recebem todos os packs, mas cada um só considera e "pega" o que é destinado realmente a ele).

    Espero ter ajudado.

    Abrçs,

    Elcids

Elcids, 

Não tenho palavras pela aula que você investiu seu tempo em me passar. 

Agradeco muito ! 

Farei os testes e postarei os resultados . 

Abs. Bruno 

Pessoal, o que pensei estar resolvido, não aconteceu bem assim. Hehehe
Os arduinos, depois de conectados no switch , acederam as luzes, mas depois de carregar os scripts, eles não se comunicam.
Não são erros, mas não se comunicam. :-(
Mas continuo na luta.
Eu sei e consigo fazer tudo funcionar com rádio e a 1km de distância, mas queria via cabo também.
Abs. Bruno

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço