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.
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:
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:
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.
exelente conteudo passando adiante conhecimento e informaçao
Valdomiro,
Que bom que curtiu!
Abraços!
Diogo – Equipe MakerHero
Da para usar Ethernet Shield ENC28J60 para Arduino Nano com um módulo de leitura de digital?
Olá Pablo!
Se o seu módulo não utiliza a comunicação SPI, pode usar junto sim.
Abraços!
André – Equipe MakerHero
Alguém tem o datasheet dele ?
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!
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
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
Teria como conectar o Shield ENC28J60 em um Arduino Uno r3???
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!
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 ?
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