LIGA DESLIGA COM ARDUINO VIA REDE ETHERNET
Conectar um Arduino Uno com um Módulo Ethernet ENC28J60 para controlar um LED via página web é um projeto clássico de "Web Server".
Aqui está um resumo do processo e das etapas necessárias:
1. Componentes Necessários
Arduino Uno
Módulo Ethernet ENC28J60
LED (Diodo Emissor de Luz)
Resistor de 220 Ω (para proteger o LED)
Protoboard e Jumpers
Cabo Ethernet (conectado ao seu roteador/rede local)
Computador com o IDE do Arduino e as bibliotecas necessárias.
2. Conexões Físicas (Hardware)
O ENC28J60 se comunica com o Arduino via interface SPI.
Conexão do LED:
Pino positivo (ânodo) do LED → Resistor de 220
Outro lado do Resistor → Pino Digital (ex: D7) do Arduino Uno
Pino negativo (cátodo) do LED → GND do Arduino Uno
3. Configuração do Software (Código)
O ENC28J60 requer uma biblioteca específica, já que ele não é compatível com a biblioteca Ethernet.h
padrão do Arduino (que é para os chips W5100/W5500).
Biblioteca Necessária: A biblioteca mais recomendada e compatível para o ENC28J60 é a
UIPEthernet
ou aEthercard
. Você precisará instalá-la pelo Gerenciador de Bibliotecas do IDE do Arduino.
Estrutura Básica do Código (Sketch):
Inclusão da Biblioteca:
C++#include <UIPEthernet.h> // ou Ethercard.h
Configuração de Rede:
Definir o endereço MAC (pode ser qualquer sequência de 6 bytes).
Definir o endereço IP estático para o seu Arduino (ex:
192.168.1.199
).
Configuração do Web Server e do LED:
Inicializar o servidor na porta 80 (HTTP padrão).
Definir o pino do LED como saída.
Loop Principal (Processamento de Requisição):
O código ficará esperando por uma conexão de um cliente (o seu navegador).
Ao receber uma requisição HTTP (ex: acessar
http://192.168.1.199
), o servidor:Analisa a requisição (qual URL ou query string foi solicitada? Ex:
/LED_ON
ou/?estado=ON
).Controla o LED (liga ou desliga o pino digital).
Envia a página HTML de volta para o cliente (o navegador), incluindo os links ou botões para ligar/desligar o LED e exibir o estado atual.
Exemplo (Conceitual da Lógica HTML e do Arduino):
O cliente acessa:
http://192.168.1.199
O Arduino envia uma página HTML básica com dois links:
HTML<a href="/?acao=ligar">Ligar LED</a> <a href="/?acao=desligar">Desligar LED</a>
O usuário clica em "Ligar LED", e o navegador faz uma nova requisição:
http://192.168.1.199/?acao=ligar
O Arduino recebe a requisição, analisa a string
?acao=ligar
, configura o pino do LED para HIGH e envia a página HTML atualizada novamente.
Observação Importante: O Arduino Uno tem memória RAM limitada. A biblioteca UIPEthernet
ou Ethercard
geralmente é mais eficiente em termos de memória do que a biblioteca padrão Ethernet.h
(que não funciona com o ENC28J60), mas o código HTML deve ser o mais simples e curto possível para evitar esgotar a memória.
Para um código-fonte completo e detalhado, você deve procurar tutoriais específicos com as bibliotecas mencionadas, como aqueles que podem ser encontrados buscando por "Arduino Uno ENC28J60 control LED web page" ou "Arduino ENC28J60 Web Server LED Control UIPEthernet".
A etapa de acesso externo é crucial para que o seu projeto de automação funcione de qualquer lugar com acesso à Internet.
O processo de acesso de fora da sua rede local (como quando você está usando a rede de celular, um Wi-Fi de um café, ou de outra casa) envolve a configuração do seu Roteador/Modem.
A Solução: Redirecionamento de Portas (Port Forwarding)
Quando você está na sua rede local (LAN), você usa o endereço IP interno do Arduino (ex: 192.168.1.199
). Quando você está fora da sua casa, você precisa usar o Endereço IP Público (WAN) da sua rede e dizer ao seu roteador para encaminhar a solicitação para o Arduino.
O Redirecionamento de Portas (ou Port Forwarding) é o mecanismo que faz isso.
Aqui estão as etapas detalhadas:
Passo 1: Obter o Endereço IP Público (WAN)
Este é o endereço que você digitará no navegador quando estiver fora de casa.
Acesse um site como "Qual é o meu IP" (ex: meuip.com.br ou whatismyip.com) em qualquer dispositivo conectado à sua rede de internet.
Anote o endereço que aparecer. Ele geralmente se parece com
177.54.x.x
ou200.231.x.x
.
Observação: A maioria dos provedores de internet fornece um IP dinâmico, que muda a cada reinicialização do modem. Para um controle remoto mais confiável, você pode usar um serviço de DNS Dinâmico (DDNS), como No-IP ou DynDNS. O DDNS associa um nome de domínio (ex: meuarduino.ddns.net
) ao seu IP público dinâmico, facilitando o acesso.
Passo 2: Configurar um IP Fixo (Estático) no Arduino
Se o Arduino obtiver um IP dinâmico (DHCP), seu endereço pode mudar a qualquer momento, quebrando o redirecionamento de porta. Você deve garantir que o Arduino sempre tenha o mesmo IP local.
No código do Arduino, defina um IP estático (ex:
192.168.1.199
).No seu roteador, é altamente recomendável criar uma reserva de IP por MAC Address (DHCP Reservation). Isso garante que o roteador sempre atribua aquele IP específico ao seu módulo ENC28J60.
Passo 3: Configurar o Redirecionamento de Portas no Roteador
Esta é a etapa mais crítica, pois a interface varia muito de roteador para roteador.
Acesse a interface de configuração do seu roteador:
Abra o navegador e digite o endereço IP do seu roteador (o "Gateway Padrão", geralmente
192.168.0.1
ou192.168.1.1
).Faça login com seu nome de usuário e senha (os padrões costumam ser
admin
/admin
ouadmin
/password
).
Localize a seção de Redirecionamento de Portas:
Procure por nomes como: Port Forwarding, Servidores Virtuais (Virtual Servers), NAT ou Avançado (Advanced).
Crie uma nova regra de Redirecionamento:
Campo no Roteador Valor Descrição Nome do Serviço Arduino_LED
(ou um nome de sua escolha)Porta Externa (WAN Port) 80
(ou outra porta, ex:8080
para maior segurança/evitar conflitos)A porta que você usará da Internet. Porta Interna (LAN Port) 80
A porta que o Arduino está usando (definida no código). Protocolo TCP
(ouTCP/UDP
)Para web servers, TCP é o correto. Endereço IP Interno 192.168.1.199
(o IP fixo do seu Arduino)Para onde o tráfego deve ser enviado. Salve as configurações e reinicie o roteador, se necessário.
Passo 4: Testar o Acesso Externo
Desconecte o seu celular ou computador do Wi-Fi da sua casa e use a rede de dados (3G/4G/5G).
Abra o navegador do celular e digite:
Se usou a Porta Externa 80 (padrão):
http://SEU_IP_PÚBLICO
Se usou outra Porta Externa (ex: 8080):
http://SEU_IP_PÚBLICO:8080
Se tudo estiver configurado corretamente, você verá a página HTML servida pelo seu Arduino, permitindo que você controle o LED de qualquer lugar do mundo!
Considerações de Segurança
Atenção: Ao abrir uma porta no seu roteador (Port Forwarding), você está expondo um dispositivo da sua rede local (o Arduino) diretamente à Internet.
Evite a Porta 80 Padrão: Use uma porta externa não padrão (como
8080
,88
,8000
) para evitar varreduras automáticas de bots maliciosos na porta 80.Adicione Segurança ao Código: Como o Arduino é um servidor muito simples, ele não tem segurança. Considere implementar uma autenticação simples por senha (query string ou na URL) no seu código para que apenas você possa enviar comandos de controle.
Exemplo de URL com "senha":
http://SEU_IP_PÚBLICO:8080/?comando=ligar&chave=MINHA_SENHA_SECRETA
O Arduino só executa o comando se a chave for válida.
Comentários
Postar um comentário