---
title: "Como conectar seu Arduino UNO/Nano à internet usando o módulo Ethernet W5100"
url: "https://maker.wiznet.io/teddy/projects/como-conectar-seu-arduino-uno-nano-%C3%A0-internet-usando-o-m%C3%B3dulo-ethernet-w5100/"
markdown_url: "https://maker.wiznet.io/teddy/projects/como-conectar-seu-arduino-uno-nano-%C3%A0-internet-usando-o-m%C3%B3dulo-ethernet-w5100/md"
type: "UCC: User Created Content"
author: "ccpnrj"
author_url: "https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "ccpnrj"
original_url: "https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/"
published: "2022-11-28"
language: "en"
likes: 2
views: 969
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Como conectar seu Arduino UNO/Nano à internet usando o módulo Ethernet W5100

> Como conectar seu Arduino UNO/Nano à internet usando o módulo Ethernet W5100

Original author: ccpnrj (source: https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/)

## Article

![](https://capsistema.com.br/wp-content/uploads/2021/08/imagem-68.png)

A maioria dos dispositivos IoT conectados hoje estão conectados à Internet por meio de uma conexão wi-fi. Embora uma conexão Wi-Fi permita o acesso remoto à Internet, ela tem suas próprias limitações. Por exemplo, na maioria das aplicações industriais para um dispositivo estacionário, a Ethernet geralmente é escolhida em vez da conexão Wi-Fi simplesmente porque é mais confiável e segura. Além disso, como a Ethernet é uma conexão com fio, ela oferece melhor velocidade e menor latência. Já trabalhamos em muitos projetos de IoT, a maioria dos quais foi construída em torno de ESP8266, ESP32 ou Raspberry Pi. Como sabemos, esses dispositivos têm um modem Wi-Fi embutido que permite que você se conecte à internet. Mas se você está trabalhando com uma humilde placa Arduino UNO ou Nano e deseja conectar seu Arduino à Internet, então você tem duas opções populares. Uma opção é usar um ESP8266 com Arduino e a segunda opção é conectar um módulo Ethernet com Arduino.

Neste projeto, vamos usar a última opção para controlar um LED pela Internet fazendo a interface do Arduino com o módulo Ethernet W5100. O módulo Ethernet é usado para estabelecer a comunicação entre o computador e o Arduino em uma LAN ou rede com fio. Este artigo foi escrito presumindo que o leitor tenha um conhecimento básico de rede de computadores, o que inclui o conhecimento de como conectar computadores ao hub/roteador com cabos RJ45, endereços IP e MAC, etc.

Conteudo

<https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/#>

- [Módulo Ethernet W5100](https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/#Modulo_Ethernet_W5100)

- [Diagrama de circuito para conectar o módulo Ethernet Arduino W5100](https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/#Diagrama_de_circuito_para_conectar_o_modulo_Ethernet_Arduino_W5100)

- [Código Arduino para obter dados do Módulo Ethernet W5100](https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/#Codigo_Arduino_para_obter_dados_do_Modulo_Ethernet_W5100)

- [Conectando o Arduino ao PC ou porta Ethernet do roteador](https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/#Conectando_o_Arduino_ao_PC_ou_porta_Ethernet_do_roteador)

- [LED piscando na Internet usando o módulo Ethernet no Arduino](https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/#LED_piscando_na_Internet_usando_o_modulo_Ethernet_no_Arduino)

- [Código](https://capsistema.com.br/index.php/2021/08/26/como-conectar-seu-arduino-uno-nano-a-internet-usando-o-modulo-ethernet-w5100/#Codigo)

### Módulo Ethernet W5100

Estamos usando o módulo Ethernet W5100. É um módulo habilitado para internet com um único chip e recursos completos para estabelecer uma conexão com a internet. Em termos simples, este módulo permite que a placa Arduino se conecte à Internet. Ao utilizar este módulo, podemos completar a ligação à internet sem o suporte de um Sistema Operacional. Ele também oferece suporte a protocolos TCP/IP com fio como TCP, PPPoE, Ethernet, UDP, ICMP, IPv4, etc. Ele oferece suporte aos modos de operação full-duplex e half-duplex. Ele suporta conexões ADSL e até quatro conexões de soquete simultâneas.

O módulo Ethernet também usa a biblioteca Arduino Ethernet para escrever esboços que se conectam à Internet usando este módulo. Ele se encaixa em todas as versões do Arduino como UNO, NANO, mega 1280, mega 2560 e outros. O funcionamento e a funcionalidade do módulo Ethernet W5100 são muito semelhantes aos de um escudo Ethernet Arduino, o que significa que você pode fazer tudo o que quiser com um escudo Ethernet Arduino. Como vantagem, custa metade do preço de um shield.

### Diagrama de circuito para conectar o módulo Ethernet Arduino W5100

O circuito consiste em Arduino Nano e Módulo Ethernet W5100 (este projeto também seria possível com Ethernet Arduino Shield e Arduino UNO). A conexão entre os módulos Arduino e Ethernet é feita conforme mostrado no diagrama de circuito.

- Conecte os pinos 5V e GND do Arduino Nano aos pinos +5 e G do Módulo Ethernet, respectivamente (essas conexões fornecem energia para o Módulo Ethernet).

- Conecte os pinos 9, 10, 11,12 e 13 do Arduino a R, SS, MO, MI, CK do módulo Ethernet respectivamente (estes fazem a comunicação entre Arduino e Ethernet sobre SPI).

### Código Arduino para obter dados do Módulo Ethernet W5100

O arquivo de cabeçalho SPI é incluído para usar os protocolos de comunicação com o módulo Ethernet.

#include &lt;SPI.h>

O arquivo de cabeçalho Ethernet tem a biblioteca para rodar webclient/webserver sobre Ethernet.

#include &lt;Ethernet.h>

O endereço físico Mac é definido para o módulo Ethernet.

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

O número 192.168.0.12 é o endereço IP. Onde “0” depende do host (gateway padrão) da rede à qual você está conectado, verifique isso executando ipconfig no prompt de comando.

byte ip[] = { 192, 168, 0, 12 };

byte gateway[] = { 192, 168, 0, 12 };

byte subnet[] = { 255, 255, 255, 0 };

Apenas para referência, este gateway padrão de uma rede diferente é mostrado abaixo.

Isso cria um servidor local na porta 80 que pode ser acessado posteriormente pelos clientes.

EthernetServer server(80);

Isso lê a resposta do cliente quando o usuário acessa o servidor web.

String readString;

A função de configuração inicializa o pino do LED para saída e inicializa o módulo Ethernet com os parâmetros fornecidos (endereço Mac, endereço IP, gateway, máscara de sub-rede) e, finalmente, o servidor é iniciado pela função “server.begin()”

**int** ledPin = 2;

**void** setup(){

pinMode(ledPin, OUTPUT);

Ethernet.begin(mac, ip, gateway, subnet);

server.begin();

}

Na função de loop, criamos uma conexão de cliente e verificamos se alguém está tentando acessar o endereço IP atribuído por meio de um navegador.

**void** loop(){

EthernetClient client = server.available();

**if** (client) {

**while** (client.connected()) {

**if** (client.available()) {

Se conectado, continue verificando se o cliente está enviando alguma mensagem de volta ao servidor

**char** c = client.read();

Em seguida, leia a resposta HTTP caractere por caractere e armazene os caracteres na variável readString definida pelo usuário.

**if** (readString.length() &lt; 100) {

readString += c;

}

Se a solicitação HTTP foi encerrada – 0x0D é Carriage Return \n ASCII

**if** (c == 0x0D) {

Assim que recebermos uma resposta OK, começamos a exibir a página da web, e abaixo está o código HTML.

client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println();

client.println("&lt;HTML>");

client.println("&lt;HEAD>");

client.println("&lt;TITLE> ARDUINO ETHERNET&lt;/TITLE>");

client.println("&lt;/HEAD>");

client.println("&lt;BODY>");

client.println("&lt;hr>");

client.println("&lt;H1 style=\"color:green;text-align:center\">ARDUINO ETHERNET LED CONTROL&lt;/H1>");

client.println("&lt;hr>");

client.println("&lt;br>");

Quando o usuário clica no hiperlink LIGAR LED, ele/ela é redirecionado para a URL \?LEDON, que acende ainda mais o LED.

client.println("&lt;H2 style=\"text-align:center\">&lt;a href=\"/?LEDON\"\">Ligar LED&lt;/a>&lt;br>&lt;/H2>");

Semelhante ao código acima, isso redireciona o usuário para a URL “DESLIGAR LED”.

client.println("&lt;H2 style=\"text-align:center\">&lt;a href=\"/?LEDOFF\"\">Turn Off LED&lt;/a>&lt;br>&lt;/H2>");

Parte restante do código HTML-

client.println("&lt;br>");

client.println("&lt;/BODY>");

client.println("&lt;/HTML>");

delay(10);

client.stop();

Controle o pino do Arduino para ligar e desligar o LED dependendo da URL para a qual os usuários são redirecionados.

**if**(readString.indexOf("?LEDON") > -1)

{

digitalWrite(ledPin, HIGH);

} **else** {

**if**(readString.indexOf("?LEDOFF") > -1)

{

digitalWrite(ledPin, LOW);

}

}

limpar string para a próxima leitura

readString="";

}

}

}

}

}

### Conectando o Arduino ao PC ou porta Ethernet do roteador

Para conectar os dois (PC e Arduino) juntos, precisamos de um cabo adequado (cabo cruzado CAT-6) se a porta Ethernet do PC não tiver sensor de direção automática. Caso o seu PC suporte detecção direta automática, basta conectar um cabo comum que vem com o roteador.

Neste cabo especial TX+/TX- e RX+/RX- são trocados.

Em qualquer caso, se você não tem uma porta Ethernet em seu PC ou não quer comprar um cabo especial, você pode seguir nosso método para conectar o módulo Ethernet a uma porta de rede LAN do roteador.

### LED piscando na Internet usando o módulo Ethernet no Arduino

Depois de fazer as conexões acima, conecte-se ao roteador usando seu PC ou telefone celular. Em seguida, abra qualquer navegador da web e vá para este URL “http://192.168.0.12” (no seu caso, digite seu endereço IP Ethernet que você configurou no código). Agora, você pode controlar o LED por meio da página da web. Quando o usuário clica em “Ligar LED” na página da web, o LED acende no circuito. Quando “DESLIGAR LED” é clicado, o LED é DESLIGADO no circuito. Este comando é executado usando a conexão com fio do módulo Ethernet. A página do servidor web é mostrada na figura abaixo.

Espero que você tenha gostado do projeto e aprendido a usar o módulo Ethernet W5100 com Arduino para enviar e receber dados pela internet. Se você tiver alguma dúvida, deixe-as na seção de comentários abaixo ou use nosso fórum de Eletrônicos.

### Código

#include &lt;SPI.h> //protocolo para se comunicar com o módulo ethernet

#include &lt;Ethernet.h> //biblioteca para executar cliente/servidor web sobre ethernet

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //endereço mac físico definido para o módulo ethernet

/*o número 0 no endereço IP depende do host da rede à qual você está conectado, verifique isso executando ipconfig no prompt de comando*/

byte ip[] = { 192, 168, 0, 12 }; // Endereço IP na LAN - precisa mudar de acordo com o seu endereço de rede

byte gateway[] = { 192, 168, 0, 12 }; // acesso à internet via roteador

byte subnet[] = { 255, 255, 255, 0 }; //máscara de sub-rede

EthernetServer server(80); //porta onde o servidor pode ser acessado

String readString; // para ler a resposta do usuário / cliente

**int** ledPin = 2; // Led está conectado ao pino 2

**void** setup(){

pinMode(ledPin, OUTPUT); //pino selecionado para controlar

//start Ethernet

Ethernet.begin(mac, ip, gateway, subnet); //inicializar ethernet

server.begin(); //inicie o servidor

}

**void** loop(){

// Crie uma conexão de cliente

EthernetClient client = server.available();

// verifique se alguém tentou acessar o endereço IP atribuído em um navegador

**if** (client) {

// se conectado, continue verificando se o cliente está enviando alguma mensagem de volta ao servidor

**while** (client.connected()) {

**if** (client.available()) {

**char** c = client.read();

// ler solicitação HTTP caractere por caractere

**if** (readString.length() &lt; 100) {

// armazena caracteres em string

readString += c;

}

//se a solicitação HTTP foi encerrada - 0x0D é Carriage Return \n ASCII

**if** (c == 0x0D) {

//exibir a página da web

client.println("HTTP/1.1 200 OK"); //enviar nova página

client.println("Content-Type: text/html");

client.println();

client.println("&lt;HTML>");

client.println("&lt;HEAD>");

client.println("&lt;TITLE> ARDUINO ETHERNET&lt;/TITLE>");

client.println("&lt;/HEAD>");

client.println("&lt;BODY>");

client.println("&lt;hr>");

client.println("&lt;H1 style=\"color:green;text-align:center\">ARDUINO ETHERNET LED CONTROL&lt;/H1>");

client.println("&lt;hr>");

client.println("&lt;br>");

//criando um link para redirecionar o usuário para ligar a luz

client.println("&lt;H2 style=\"text-align:center\">&lt;a href=\"/?LEDON\"\">Ligar o LED&lt;/a>&lt;br>&lt;/H2>");

//criando um link para redirecionar o usuário para desligar a luz

client.println("&lt;H2 style=\"text-align:center\">&lt;a href=\"/?LEDOFF\"\">Desligue o LED&lt;/a>&lt;br>&lt;/H2>");

client.println("&lt;br>");

client.println("&lt;/BODY>");

client.println("&lt;/HTML>");

delay(10);

// parando o cliente

client.stop();

// controlar pin Arduino com URL

**if**(readString.indexOf("?LEDON") > -1) // verifica o LEDON

{

digitalWrite(ledPin, HIGH); // definir o pino alto

}

**else**{

**if**(readString.indexOf("?LEDOFF") > -1) // verifica se há LEDOFF

{

digitalWrite(ledPin, LOW); // definir o pino baixo

}

}

// limpar string para a próxima leitura

readString="";

}

}

}

}

}

---

Source: https://maker.wiznet.io/teddy/projects/como-conectar-seu-arduino-uno-nano-%C3%A0-internet-usando-o-m%C3%B3dulo-ethernet-w5100/
