Ethernet Shield W5100 com Arduino – Parte 2

Ethernet Shield para Arduino

Nós já utilizamos o Ethernet Shield W5100 para monitorar o estado de sensores e enviar os dados para uma página na internet. Isso foi feito no artigo anterior: “Ethernet Shield W5100 com Arduino“.

No artigo de hoje vamos complementar a aplicação anterior com a possibilidade de enviar comandos por meio da página na internet ao Arduino, ou seja, vamos enviar comandos para que o Arduino possa acionar ou controlar uma carga externa.

Introdução

O Ethernet Shield W5100 foi apresentado em artigo anterior, e nessa segunda parte vamos expandir a última aplicação. O Ethernet Shield permite disponibilizar online dados de sensores e também enviar sinais de comando de uma página na internet para controlar os I/Os e ações do Arduino.

A biblioteca Ethernet da IDE oferece todos os recursos necessários para que dados lidos com o Arduino possam ser acessados online e também para fazer o caminho inverso.

A biblioteca trabalha com a arquitetura cliente-servidor. Nessa arquitetura, que você provavelmente conhece, um servidor(ou host) fornece serviços e recursos que são compartilhados entre vários clientes. Os clientes não compartilham recursos/serviços, mas podem enviar requisições ao servidor para ter acesso aos recursos disponibilizados por ele.

O W5100 pode ser configurado como cliente ou como servidor. Em geral, você vai ver os nomes em inglês, Web Client e Web Server. Como Web Server, o Ethernet Shield geralmente é usado para armazenar algum recurso e compartilhá-lo na web, como por exemplo, uma página de internet apresentando dados de sensores em tempo real. Essa é uma aplicação típica do Shield como Web Server.

No entanto, nem sempre é interessante armazenar a página web no próprio Ethernet Shield. Pode ser que você queira enviar os dados para um outro servidor, mais robusto e com disponibilidade garantida(um serviço de hospedagem, por exemplo). Nesse caso, é necessário configurar o W5100 como Web Client e fazer a programação correta para que ele envia requisições HTTP(GET, POST, PUT, DELETE, etc).

Nesse artigo, vamos manter a configuração como Web Server do artigo anterior, ou seja, a página que usaremos para ler comandos do usuário e controlar os I/Os do arduino está armazenada no próprio Ethernet Shield. No futuro, um novo post utilizando a configuração Web Client será feito, inclusive com alguns detalhes sobre como fazer uma página web em PHP.

Aspectos de Hardware

A montagem de Hardware com o Ethernet Shield não tem segredo. Você precisa apenas encaixar cuidadosamente o Shield no Arduino. Para exemplificar nossa aplicação, vamos ligar a saída 4 do Arduino/Shield a um módulo relé, que por sua vez aciona uma luminária LED. A ideia é enviar comandos por meio de um botão numa página na internet para acender e desligar a luminária.

Você vai precisar dos seguintes materiais:

  • Arduino UNO;
  • Ethernet Shield W5100;
  • Módulo relé;
  • Luminária led;
  • Cabo de rede com conector RJ45;

Se você ainda não sabe como usar os módulos relé, leia o artigo “Módulo relé para automação residencial

O circuito como um todo é mostrado na figura abaixo:

Ethernet Shield

Ethernet Shield para acionamento de relé via interne

Aspectos de Software

Do ponto de vista de software, é preciso determinar o endereço IP e MAC a serem atribuídos ao seu Ethernet Shield. O W5100 não possui um endereço MAC de fábrica como acontece com seu notebook ou PC. Alguns modelos vêm com um endereço MAC indicado em um stick na parte de trás da placa. Em geral, você deve determinar um endereço para seu Ethernet Shield. Mais informações sobre essa questão podem ser encontradas aqui. No nosso projeto, usamos o endereço padrão do exemplo “WebServer” da biblioteca Ethernet.

Acesse na sua IDE: File -> Examples -> Ethernet -> WebServer. O código que você verá é o código base usado por quase todas aplicações e projetos disponíveis na internet para disponibilizar dados de sensores online.

Para determinar o endereço IP do Shield, encontre o IP de seu PC(com ipconfig /all no windows ou ifconfig -a no terminal do linux) e altere o último número. No nosso projeto, o endereço IP foi obtido com o ifconfig -a, que exibiu no terminal linux a seguinte mensagem:

Endereço IP para configurar o Ethernet Shield W5100

O IP está listado ao lado de inet, e no caso é: 192.168.25.119.  Alteramos o IP para 192.168.25.100 e setamos dessa forma no código abaixo:

Com o código acima e com o Ethernet Shield conectado ao seu roteador, ao digitar o endereço de IP atribuído ao W5100 no seu navegador, a seguinte página será apresentada:

Página para acionar a luminária

Essa página de interface possui dois links, um com nome “liga”, e outro com nome “desliga”. Para acionar o pino 4, e consequentemente chavear o relé, basta clicar em um dos dois.

Algumas mensagens de log são enviadas para a porta serial e podem ser úteis para debugar qualquer problema caso você queira editar o código HTML.

Por falar em código HTML, o dessa página é bem simples e rústico, apenas um título, um subtítulo e as duas opções para ligar ou desligar o relé. Uma parte interessante para dar continuidade a esse trabalho é fazer uma página HTML mais elaborada. Lembrando que o host é o próprio Ethernet Shield e portanto não há os mesmos recursos disponíveis que você teria em um PC dedicado.

Nós recomendamos as seguintes referências para experimentar códigos diferentes para a página HTML no Arduino/Ethernet Shield:

Para quem quiser se aventurar mais a fundo no desenvolvimento HTML, CSS e JavaScript, todas linguagens para desenvolvimento web, recomendamos os seguintes cursos:

Considerções finais

Caso tenha alguma dúvida ou questão, deixe um comentário que iremos responder assim que pudermos. Não deixe de conferir os demais posts do blog indicados e também o material sobre páginas HTML e desenvolvimento web. Acompanhe o blog pois no futuro próximo uma nova aplicação com W5100 será lançada, mas dessa vez configurado como Web Client e conversando com uma página armazenada num servidor externo. Até a próxima!

Referências

Faça sua avaliação.
Por favor, aguarde...
Vitor Vidal
Vitor Vidal
Engenheiro eletricista, mestrando em eng. elétrica e apaixonado por eletrônica, literatura, tecnologia e ciência. Divide o tempo entre pesquisas na área de sistemas de controle, desenvolvimento de projetos eletrônicos e sua estante de livros.