Como Utilizar Ethernet Shield ENC28J60 para Arduino Nano 12

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 <[email protected]>
 *
 *      -----------------
 *
 * 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 <[email protected]>
 * Ported to the Arduino IDE by Adam Nielsen <[email protected]>
 * Adaption to Enc28J60 by Norbert Truchsess <[email protected]>
 */

#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 MakerHero------\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 MakerHero------

Gostou do Shield Ethernet para Arduino Nano? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.

Faça seu comentário

Acesse sua conta e participe

12 Comentários

  1. exelente conteudo passando adiante conhecimento e informaçao

    1. Valdomiro,

      Que bom que curtiu!

      Abraços!
      Diogo – Equipe MakerHero

  2. Da para usar Ethernet Shield ENC28J60 para Arduino Nano com um módulo de leitura de digital?

    1. Olá Pablo!

      Se o seu módulo não utiliza a comunicação SPI, pode usar junto sim.

      Abraços!

      André – Equipe MakerHero

  3. Alguém tem o datasheet dele ?

    1. Olá Júlio!

      Pesquisei no Google para você “ENCJ60 datasheet” e o primeiro resultado foi um PDF com o datasheet:

      Segue link:

      https://ww1.microchip.com/downloads/en/DeviceDoc/39662c.pdf

      Abraço!

  4. Sei que aqui não é o local para minha pergunta, mas …
    Tenho um nano e, não me pergunte como, o USB dele soltou da placa, tem como conseguir acessar ele sem ter a ponta USB?
    O meu não tem os pinos SPI

    1. Olá Flávio!

      O USB é utilizado para converter de serial para USB mais facilmente. Você pode utilizar um conversor externo e usar a porta serial do nano 🙂

      Abraços!

      André – Equipe MakerHero

  5. Teria como conectar o Shield ENC28J60 em um Arduino Uno r3???

    Guilherme De Souza Mourão Resende
    1. Olá Guilherme!

      Dê uma olhada neste post: https://www.makerhero.com/blog/modulo-ethernet-enc28j60-arduino/

      Teoricamente tudo funciona via SPI e o Uno possui SPI.

      Abraço!

  6. 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.

      Abraços!

      André – Equipe MakerHero