Ethernet Shield ENC28J60 para Arduino Nano 2

Já aprendemos em nossos posts anteriores como conectar o Arduino Uno na internet usando o Ethernet Shield. Agora, temos um novo componente que pode ser usado especialmente com o Arduino Nano, que é o Ethernet Shield ENC28J60.

O Arduino Nano tem a vantagem de empacotar todas as funcionalidades do Arduino Uno em um tamanho bem reduzido, sendo ideal para uso em sistemas embarcados. Agora com o Shield ENC28J60 você poderá conectar seu Arduino Nano à internet.

Arduino Nano Ethernet Shield ENC28J60

Neste post iremos mostrar algumas características deste shield e um pequeno programa exemplo “Hello World”, onde podemos enviar uma mensagem para o Arduino Nano usando a aplicação cURL.

Características do Shield ENC28J60

O shield é baseado no chip ENC29J60. Já usamos um módulo com esse chip neste post. O shield usa protocolo SPI para comunicação com Arduino, mas não precisamos nos preocupar com conexões pois o shield se encaixa diretamente no Arduino Nano. Apenas precisamos deixar os pinos SPI livres. Veja abaixo quais pinos são utilizados para SPI no Arduino Nano:

Pinagem Arduino Nano

Por utilizar um header estendido, podemos ainda encaixar o shield em uma protoboard e utilizar os pinos do Arduino para controlar dispositivos. Veja a figura abaixo:

Arduino Nano Ethernet Shield ENC28J60 Protoboard

Exemplo de código

Para exemplificar o uso do Shield Ethernet para Arduino Nano iremos utilizar a biblioteca UIPEthernet.h que pode ser encontrada e baixada aqui: https://github.com/ntruchsess/arduino_uip

Após a biblioteca ser baixada e instalada na IDE Arduino, os exemplos que já vem com a biblioteca estarão disponíveis. Abra o exemplo TcpServer. Ajuste as configurações de IP de acordo com sua necessidade.

/*
 * UIPEthernet TcpServer example.
 *
 * UIPEthernet is a TCP/IP stack that can be used with a enc28j60 based
 * Ethernet-shield.
 *
 * UIPEthernet uses the fine uIP stack by Adam Dunkels <adam@sics.se>
 *
 *      -----------------
 *
 * This Hello World example sets up a server at 192.168.1.6 on port 1000.
 * Telnet here to access the service.  The uIP stack will also respond to
 * pings to test if you have successfully established a TCP connection to
 * the Arduino.
 *
 * This example was based upon uIP hello-world by Adam Dunkels <adam@sics.se>
 * Ported to the Arduino IDE by Adam Nielsen <malvineous@shikadi.net>
 * Adaption to Enc28J60 by Norbert Truchsess <norbert.truchsess@t-online.de>
 */

#include <UIPEthernet.h>

EthernetServer server = EthernetServer(1000);

void setup()
{
  Serial.begin(9600);

  uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};
  IPAddress myIP(192,168,10,6);

  Ethernet.begin(mac,myIP);

  server.begin();
}

void loop()
{
  size_t size;
  if (EthernetClient client = server.available())
  {
    while((size = client.available()) > 0)
    {
      uint8_t* msg = (uint8_t*)malloc(size);
      size = client.read(msg,size);
      Serial.write(msg,size);
      free(msg);
    }
    client.println("DATA from Server!");
    client.stop();
  }
}

Usando a aplicação cURL, teste o código com o seguinte comando:

curl --data-binary $'-----Hello FILIPEFLOP------\n\n' -X POST 192.168.10.6:1000

No Serial Monitor deverá aparecer as seguintes mensagens:

POST / HTTP/1.1
Host: 192.168.10.6:1000
User-Agent: curl/7.47.0
Accept: */*
Content-Length: 29
Content-Type: application/x-www-form-urlencoded

-----Hello FILIPEFLOP------

Gostou do Shield Ethernet para Arduino Nano? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial. Não se esqueça de visitar nosso fórum para dúvidas, ideias e projetos!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Comentários

  1. Muito legal o shield, e como sempre, o texto. 🙂

    Poderiam colocar um exemplo de como, usando o Nano e o ENC28J60, enviar uma mensagem através da ethernet à um determinado IP que está ‘escutando’ com um netcat ?

    1. Olá Renato!

      Ficamos muito felizes em saber que nosso conteúdo ajuda as pessoas!

      Anotamos sua sugestão aqui, mas não sei quando poderemos fazer esse post. O que acha de você compartilhar essa ideia no nosso fórum? 🙂
      Lá você pode tirar algumas dúvidas e postar seus projetos. Colaborar e aproveitar a comunidade:

      https://www.filipeflop.com/forum/

      Abraços!

      André – Equipe FILIPEFLOP