Comunicação pela rede com o Módulo Ethernet ENC28J60 (Exemplo)
Prof Epaminondas Lage

Introdução

O Módulo Ethernet ENC28J60 é um driver que utiliza o chip da Microchip ENC28J60 Controlador de Internet IC que suporta vários protocolos da internet que são requeridos. Este módulo conecta diretamente com a maioria dos microcontroladores com uma interface SPI cuja transferência ultrapassa 20MHz.

O módulo é formado pela porta ethernet RJ45, o chip controlador ENC28J60 (daí o nome do módulo), um cristal de 25Mhz e um conector de 10 pinos, o que torna prática a ligação desse módulo em diferentes tipos de microcontrolador.

Pinagem Ethernet ENC28J60:

A alimentação do módulo é feita com 3.3v e a ligação desse módulo ao Arduino é feita via interface SPI. Na tabela abaixo mostramos a ordem de conexão dos pinos tanto para o Arduino Uno. Em uma ligação básica os pinos CLKOUT e WOL mostrados acima não são utilizados.

Vamos conectar o módulo ENC28J60 montando o circuito abaixo e programando o Arduino. Arduino com Ethernet ENC28J60: Para enviar os dados do sensor para o Arduino, vamos utilizar a biblioteca, EtherCard.h. Descompacte o arquivo e coloque a pasta correspondente dentro da pasta LIBRARIES da IDE do Arduino.
Essa biblioteca é bem prática pois permite a criação de páginas html utilizando poucos comandos, como você pode ver no código abaixo.

Montagem

Circuito

Programa Arduino

// Programa de mostrar um dado em uma página html com Arduino
// Necessita de uma conexão ethernet com cabo no Arduino
// Colocar aqui seu IP myip[] = { 172,16,10,164 };
// Colocar aqui o GW gwip[] = { 172,16,10,1 };


#include <EtherCard.h>

#define STATIC 0 // set to 1 to disable DHCP (adjust myip/gwip values below)

#if STATIC
// Endereço IP da interface
static byte myip[] = { 172,16,10,164 };
// Endereço IP do Gateway
static byte gwip[] = { 172,16,10,1 };
#endif

// Ethernet mac address - must be unique on your network
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[500]; // tcp/ip buffer de envio e recepção de dados

const char page[] PROGMEM =
"HTTP/1.0 Servidor disponivel
"
"Content-Type: text/html
"
"
"
"<html>"
"<head><title>"
"Servidor disponivel"
"</title></head>"
"<body>"
"<h3><br><br>Este Arduino esta' disponivel na Rede</h3>"
"<p><em>"
"<h2>Vamos incluir aqui uma pagina html</h2> <br />"
"</em></p>"
"</body>"
"</html>"
;

void setup(){
// ajustar a porta serial para 57600 e monitorar
Serial.begin(57600);
Serial.println("
Servidor WEB Ativo com os endereços abaixo");

if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println( "Erro de acesso a Ethernet controller");
#if STATIC
ether.staticSetup(myip, gwip);
#else
if (!ether.dhcpSetup())
Serial.println("DHCP falhou");
#endif

ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
}

void loop(){
// Aguardar por uma entrada de pacote TCP, porém ignorá-lo
if (ether.packetLoop(ether.packetReceive())) {
memcpy_P(ether.tcpOffset(), page, sizeof page);
ether.httpServerReply(sizeof page - 1);
Serial.println("DHCP failed");
}
}

Conclusão

Você poderá incluir no programa a leitura de algum módulo como o DHT11 que possui as saídas seriais para ser apresentado em página HTML.

Teste o programa abrindo um browser e digitando na barra de endereços o IP que você configurou para a sua placa.

Referências

https://www.filipeflop.com/blog/modulo-ethernet-enc28j60-arduino/

https://github.com/jcw/ethercard



Administrado por: Epaminondas Lage