O módulo ESP8266 NodeMCU é uma placa da família ESP8266, sendo umas das mais completas e simples de usar. Neste post vamos mostrar como criar um web server com ESP8266 e enviar dados do sensor de temperatura DHT22.
O módulo ESP8266 NodeMCU já tem incorporado um módulo ESP12-E com antena embutida, e ainda conta com um conversor USB-TTL (CH340), facilitando a comunicação e transferência de programas.
Além disso tem um formato que facilita o uso em uma protoboard, permitindo acesso às 11 portas (GPIO) do módulo. Tudo isso significa que você não vai precisar de um microcontrolador adicional como o Arduino, PIC ou Raspberry para criar os seus projetos.
Pinagem módulo NodeMCU
A imagem abaixo ilustra a pinagem do módulo ESP8266 NodeMCU. Com ele podemos usar os pinos da mesma maneira que usamos, por exemplo, no Arduino, com interface SPI, I2C, PWM, etc. Temos ainda os botões RST (Reset) e o Flash, utilizado para upgrade de firmware do módulo.
O conector de alimentação é micro-usb, e serve também para comunicação com o computador. A programação pode tanto ser feita em Lua, como também com a própria IDE do Arduino, com algumas modificações na parte de gerenciamento da placa.
A instalação do módulo ESP8266 NodeMCU no Windows foi feita de forma automática, com o módulo sendo reconhecido na porta COM13 como um dispositivo USB-Serial CH340. Caso seja necessário, você encontra os drivers para o CH340 neste link.
Instalação do ESPlorer
O programa que vamos utilizar neste post foi feito em Lua, e para enviar este programa para o ESP8266 NodeMCU vamos precisar de um aplicativo que faça essa comunicação com o módulo. Um dos mais usados é o ESPlorer, que você pode baixar neste link. Com o ESPlorer a criação e transferência de programas para o módulo ESP8266 é bastante simplificada, e você tem a opção de salvar programas, enviar comandos especiais ao módulo, resetar, formatar, etc.
O programa não precisa de instalação, e basta você executar o arquivo ESPlorer.bat para que a interface seja carregada. A única exigência é a presença do java (download) na máquina.
Na tela principal, temos do lado esquerdo a área de programação, e do lado direito uma console, onde é mostrado o status de comunicação com o módulo, assim como eventuais avisos e mensagens de erro.
Para fazer a comunicação com o módulo NodeMCU selecione a porta COM na parte superior do ESPlorer (no nosso caso, a COM13), selecione a velocidade de comunicação (padrão 9600) e clique em Open:
Pressione o botão RST do módulo e, se estiver tudo ok, o mesmo deve responder com as informações básicas referentes ao firmware instalado:
Com o ESPlorer configurado e o módulo funcionando, podemos agora montar o circuito que vai coletar as informações de um sensor de temperatura DHT22 e enviar para uma página web.
Circuito módulo ESP8266 NodeMCU
Monte o circuito abaixo, conectando o pino de dados do DHT22 à porta 4 do NodeMCU (GPIO02). A alimentação do sensor de temperatura será feita pelos pinos 3.3V e GND do módulo.
Isso é tudo que precisamos na parte do hardware. Conecte agora o cabo micro-usb ao NodeMCU para ligar o circuito e iniciar o processo de transferência de programas.
Instalação biblioteca DHT22 Lua
Antes de transferir o programa que vai criar o webserver no módulo NodeMCU, precisamos da biblioteca do DHT22 para o Lua. Para instalar a biblioteca, acesse este link, e clique sobre o arquivo dht22_min.lua:
Na tela seguinte, selecione a opção RAW, no canto direito da página
O código da biblioteca, “limpo”, será exibido no browser. Copie todo o código e cole no ESPlorer, de preferência em uma nova aba. Em seguida, clique em Save to ESP:
Na janela seguinte, coloque o nome do arquivo como dht22_min.lua e clique em Save.
O programa será então gravado localmente na sua máquina, e também transferido para o ESP8266 NodeMCU.
Vamos conferir para ver se o arquivo está lá mesmo ? No ESPlorer, acesse a aba Commands, depois clique em List files:
Acompanhe o resultado na console, indicando que o arquivo dht22_min.lua foi transferido corretamente:
Programa Web Server com ESP8266
Agora copie o programa abaixo em uma nova aba do ESPlorer. Ele faz a leitura dos dados do DHT22 e cria um web server para exibição de uma página com as informações de temperatura e umidade. Na linha 7, troque os campos NOME_REDE e SENHA_REDEpelas informações da rede wifi à qual o módulo vai se conectar.
-- Programa: Web Server com ESP8266 NodeMCU e DHT22 -- Autor: Arduino e Cia -- Baseado no programa original de www.beerandchips.net -- Define as configuracoes de rede wifi.setmode(wifi.STATION) wifi.sta.config("NOME_REDE","SENHA_REDE") wifi.sta.connect() -- Definicao de pino do DHT22 PIN = 4 -- data pin, GPIO2 dht22 = require("dht22_min") chipserial = node.chipid() -- Cria e roda o web server srv=net.createServer(net.TCP, 4) print("Server created on " .. wifi.sta.getip()) srv:listen(80,function(conn) conn:on("receive",function(conn,request) print(request) -- Le as informacoes do sensor de temperatura dht22.read(PIN) t = dht22.getTemperature() h = dht22.getHumidity() conn:send('<html>') conn:send('<title>NodeMCU - Arduino e Cia</title></head>') conn:send('<meta http-equiv="refresh" content="5">') conn:send('<body bgcolor="#ffffff">') conn:send('<center>') conn:send('<table bgcolor="#0000ff" width="90%" border="0">') conn:send('<tr>') conn:send(' <td><font size="3" face="arial, helvetica" color="#ffffff"><center>Temperatura</center></font></td>') conn:send('</tr>') conn:send('<tr>') conn:send(' <td><font size="7" face="arial, helvetica" color="#ffffff"><center>'..((t-(t % 10)) / 10).."."..(t % 10)..'°C</center></font></td>') conn:send('</tr>') conn:send('<tr>') conn:send(' <td><font size="3" face="arial, helvetica" color="#ffffff"><center>Umidade</center></font></td>') conn:send('</tr>') conn:send('<tr>') conn:send(' <td><font size="5" face="arial, helvetica" color="#ffffff"><center>'..((h - (h % 10)) / 10).."."..(h % 10)..'%</center></font></td>') conn:send('</tr>') conn:send('</table>') conn:send('</center>') conn:send('</body></html>') end)
Pressione a tecla Send to ESP e aguarde até que o programa seja transferido.
Para a parte final, que é o teste em um browser, vamos precisar do endereço IP atribuído ao módulo. Na caixa de seleção do lado direito, abaixo da console, escolhe a opção =wifi.sta.getip() e clique em Send. O endereço IP será exibido na console. No nosso caso, o endereço IP recebido foi 10.0.0.110:
Utilize este IP em um browser, digitando-o na barra de endereços. Em poucos instantes as informações de temperatura e umidade do DHT22 serão enviadas pela placa:
Gostou do post Web Server com ESP8266? Confira também outros posts sobre NodeMCU aqui no Arduino e Cia!