Aplicação da WEMOS D1 R1 como Webserver

WEMOS

Continuando o artigo anterior, veremos a aplicação da WEMOS D1 R1 como Webserver. Se quiserem testar os códigos de exemplos já embutidos na IDE do Arduino, mãos à obra, porque funcionam da mesma forma. Para a própria placa Wemos, existe uma aba pronta com exemplos, escrito “WEMOS D1 R1”. Notem também que na aba da placa existe uma gama de formas de alterá-la, além de seus comportamentos - o clock do microcontrolador, lwIP (pilha TCP/IP para sistemas embarcados), tamanho usado na memória Flash, enfim, recursos bem avançados para este tutorial.

 

Este simples aplicativo inicia um programa na linguagem C/HTML, salva o algoritmo criado (Sketch) na memória Flash do dispositivo, e envia uma chamada via HTTP para o servidor criado. Em seguida, recebe os dados para visualização e interação com o cliente. Quando o Servidor (Host) acusa usuário ativo, o estado do Relé será mostrado no Navegador (Web Browser) da sua Rede Local. Após isto, o Cliente aciona ou não este Relé.

 

Lembrando que, usando a rede local (placa Wemos conectada à sua rede via Wifi), poderá ser acionado por qualquer dispositivo com acesso à rede, como celulares, tablets e outros. Uma pergunta recorrente é se podemos acessar por rede móvel. Sim! Mas deixaremos esse tópico para outro tutorial, por ser mais avançado. Vamos somente pela rede local por enquanto. Fiquem atentos à segurança da rede pois o IP é gerado para qualquer dispositivo na sua rede local. No caso, não coloquei servidor com autenticação, o que estenderia muito o tutorial. Vamos Lá!?

 

Lista de Materiais

 

  1. Placa Wemos D1 R1;
  2. Módulo Relé para Arduino;
  3. 3 Cabos Jumper Macho X Fêmea.

 

Programando o IDE Arduino e subindo seu Sketch

 

 

Na imagem acima está a configuração básica para configurar a placa para maioria das aplicações.

 

Uma vez configurada a placa, é hora de fazer as ligações corretas. Importante!!! Só use o relé em rede elétrica se souber bem o que está fazendo! Risco de choque elétrico e curto-circuito! Aconselho fortemente a acionar pelo Wemos sem ligação na rede elétrica ou usar baterias para alimentar. Depois de conhecer bem sobre rede elétrica e como ligar em alta tensão, prossiga. Qualquer dúvida, pergunte ao eletricista ou alguém que saiba sobre este assunto para lhe ensinar. Com eletricidade não se brinca, além de ser “invisível”!

 

Explicando o código fonte

 

 

Nesta parte, incluímos a biblioteca que será usada nesta aplicação para rede Wifi. Definimos o tipo de variável e nomes. const char no caso porque estamos com uma cadeia de caracteres constantes (valor será sempre o mesmo), que são no caso o SSID e o password da rede Wifi (dica: às vezes é melhor deixar em inglês, pois é o padrão usado em programação). Se já souber, troquem os nomes, já que não afetam o código. Notem bem no valor int ledPin = D5. Por quê? Por definição a placa Wemos (tal qual o Arduino Nano) usa D, isso pode lhe poupar muita dor de cabeça. E inteiro (int) porque é um pino, e não o nome dele. “WIFIServer” é uma instância na Linguagem C++. Estamos instanciando a partir da biblioteca do C++ e, com isso, criando um servidor usando a porta 80. Ou seja, Protocolo da Camada de Transporte TCP-IP usando chamada HTTP pela porta 80. Para criar este servidor, usaremos a linguagem HTML tanto para leitura de dados quanto para formatação da página WEB.

 

 

Aqui está o programa em si. O Sketch (programa), composto pela função void setup(), será gravado na memória Flash de forma permanente. Só podendo ser alterado se gravarmos outro aplicativo ou a placa sofrer avaria. O botão reiniciar somente reinicia o microcontrolador e retorna a execução no que já está programado. A única forma de alterar é gravando outro aplicativo.

 

A grande vantagem de sistemas embarcados é que podemos definir como se comportam os pinos e o software, pois estes são programáveis. Neste exemplo, definimos o estado dos pinos através dos valores HIGH e LOW e as tensões/comportamento destes. Podendo ser de entrada ou saída com 5 volts. Os outros comandos são da biblioteca C++, e instanciamos a função que fará a comunicação WiFi contida no C++, podendo ser também via COM, FTP, SSH e etc. Para acompanhar neste exemplo os resultados, usaremos a porta USB e a sua leitura via IDE Arduino. Existem vários métodos, mas quanto mais simples melhor.

 

Baseado no programa inicial, colocamos condicionais para que siga infinitamente fazendo a mesma rotina.

 

 

Para este passo, devemos estar com a Wemos selecionada na porta COM (USB) em que a placa está conectada para ver estes valores. Muito importante frisar que existem 2 linguagens diferentes. A primeira é em C++, que fizemos via IDE Arduíno. A segunda é um clássico HTML, também feito pela IDE. Por este motivo pode ser um pouco confuso para quem não entendeu bem esta parte ou ainda está começando. O conselho que posso deixar para quem quiser se aprofundar, é saber neste código diferenciar o HTML do C++. E vale outra dica: Quando trocarem os nomes, evitem colocar caracteres fora do padrão ANSI, pois pode ser que os caracteres enviados sejam UNICODE, como “ç, acentos Gráficos, º, ₢” e outros. Se colocados, pode gerar caracteres errados. Quanto mais modernos estão os sistemas, mais linguagens diferentes são suportadas. Este é o motivo de saber para que serve cada linguagem, identificar quando elas aparecem e qual a melhor para seu projeto.

 

Agora veja a chamada HTTP (via HTML) e a verificação do status do Servidor.

 

 

Por fim terminamos o código! Na parte superior vemos claro o código HTML. O que fornece: Cabeçalho, Quebra de Linha, Parágrafo, Favicon e o botão de acionar gerado por HTML. Para quem se interessar e quiser deixar mais robusta a página, agregue mais funcionalidades no HTML. Mas deixarei isto para outro tutorial. Este código ficará disponível para download. Abaixo a imagem do programa sendo iniciado. No meu caso, o SSID é “HS2”, e o IP é gerado automaticamente sem gerar conflito na rede com outros dispositivos (dois IPs iguais na mesma rede). Se houver problema em saber o IP e como configurar uma rede, deixarei o site oficial da Microsoft para estudos, o MVA (Microsoft Virtual Academy). Todos os cursos são gratuitos e com certificação.

 

 

Após isto, digite o IP fornecido no seu computador ou celular da rede Local e teremos algo similar:

 

 

Notem que temos o estado do Relé (se está Aberto ou Fechado), juntamente com a porta COM que mostra que alguém está usando o servidor. Enquanto houver alguém nesta página WEB, retorna o valor “Embarcado” que coloquei como cliente. Quando sair, retorna “Embarcado saiu (:” como configurei acima. Estes valores podem ser modificados pelo nome que quiserem. Novamente, cautela no uso de Relés em rede elétrica! Abaixo deixarei a simples ligação que fiz para testar o Relé em nível Alto e Baixo. Deixei fora da rede elétrica e ligado ao meu PC, mas qualquer dispositivo na rede elétrica pode ser acionado per este Webserver, como lâmpadas, ventiladores, computadores etc.

 

Veja abaixo a placa alimentada via USB e, ao mesmo tempo, exibindo os dados do servidor. Jumpers ligados na Placa- Relé:

  • Vermelho= 5 Volts
  • Branco = GND
  • Amarelo = D5

 

 

Terminamos! Nos próximos tutoriais irei aprofundar no uso dos pinos, programas mais avançados e a própria eletrônica envolvida nesta placa. Para motivar mais ainda os makers - "O limite da Internet das Coisas é, na verdade, o quão criativo e persistente você é". Abraços a todos e até a próxima!

 

Saiba mais

 

Programando o ESP8266 em C no Eclipse

Conectando o ESP8266 no Bluemix IoT

Gravando o ESP8266-01 na IDE Arduino

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Tiago Augusto Torres Moreira
Entusiasta por prototipagem, Analista de sistemas, tendo cursado 2 anos de astronomia na UFRJ, atuo como voluntário no estudo de meteorítica. Por ser Radio-amador e também, notar que na astronomia , sistemas embarcados vem cada vez mais sendo adotados em observatório Robóticos, me dedico em soluções aplicadas na tomada de decisões para fins científicos e amadores. Sendo elas; estações meteorológicas de baixo custo,sistemas de segurança baseados em sensores ambientais, monitoramento na Nuvem e desenvolvimento de aplicativos para estas finalidades. Nas horas livres, me dedico à Filosofia, Escrita e História.

2
Deixe um comentário

avatar
 
1 Comment threads
1 Thread replies
2 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Tiago Augusto Torres MoreiraAngelo José Roncali Da Silva Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Angelo José Roncali Da Silva
Membro
Angelo José Roncali da Silva

Tiago, na chamada HTML, na linha 24, tem um '}".
Mas aonde estaria o "{" ligado a este "}"?