Arduíno

Web Server com o módulo ESP8266 NodeMCU e DHT22

módulo ESP8266 NodeMCU é uma placa da família ESP8266, sendo umas das mais completas e simples de usar. Neste post vamos mostrar como utilizar essa placa para criar um web server e enviar dados do sensor de temperatura DHT22.

Módulo Wifi ESP8266 NodeMCU
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.

NodeMCU - Pinagem
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.
ESPlorer - Tela Principal
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:
ESPlorer - Conexão Serial
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:
ESPlorer - ESP8266 conectado
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.
NodeMCU sensor de temperatura DHT22
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:

Biblioteca DHT22 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:

DHT22 Lua Library

Na janela seguinte, coloque o nome do arquivo como dht22_min.lua e clique em Save.

Biblioteca - 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:

ESPlorer - Listar arquivos

Acompanhe o resultado na console, indicando que o arquivo dht22_min.lua foi transferido corretamente:

NodeMCU - Arquivos

Programa Web Server com DHT22

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_REDE pelas informações da rede wifi à qual o módulo vai se conectar.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
-- 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)..'&deg;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:

ESPlorer - wifi.sta.getip

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:

Browser Temperatura e Umidade NodeMCU DHT22

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *