Publicado em Deixe um comentário

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
Publicado em Deixe um comentário

Módulo Wireless ESP8266 com Arduino

Com o Módulo Wireless ESP8266 você pode conectar o seu Arduino nas redes wireless 802.11 b/g/n, enviando e recebendo dados nos modos AP (Access Point/Ponto de acesso) e STA (Station), e neste tutorial vamos mostrar como configurar esse módulo como web server, enviando dados para um browser.
Módulo Wireless ESP8266
Esse módulo se comunica com o microcontrolador utilizando interface serial e seu firmware pode ser atualizado, se necessário. Possui ainda 2 pinos GPIO (General Purpose Input Output, ou Entrada e Saída de uso geral), permitindo que o módulo seja programado diretamente e a GPIO acionada sem a necessidade de uso de um microcontrolador.
Outras características do Módulo Wireless ESP8266:

  • Conexão à redes padrão 802.11 B/G/N
  • Alcance aproximado: 91 metros
  • Tensão de operação : 3.3 VDC
  • Comunicação serial: pinos TX e RX
  • Modos de operação : Cliente, Access Point, Cliente+Access Point
  • Modos de segurança wireless : OPEN/WEP/WPA_PSK/WPA2_PSK/WPA_WPA2_PSK.
  • Suporta comunicação TCP e UDP, com até 5 conexões simultâneas

O módulo possui antena embutida e um conector de 8 pinos, além dos leds indicadores de funcionamento (vermelho) e comunicação (azul):
Módulo ESP8266 - Pinos
Atenção para o nível de sinal utilizado pelo módulo, que é de 3.3V, assim o pino RX (Recepção serial) não pode ser ligado diretamente ao Arduino. Você pode montar um divisor de tensão com dois resistores, utilizando o calculador deste link.

Ligação do módulo ESP8266 ao Arduino

Na ligação do ESP8266 com o Arduino usamos um resistor de 1K entre o Vcc (3.3V) e o pino CH_PD (Chip Enable). Para o divisor de tensão, utilizamos 2 resistores de 10K, o que diminuiu a tensão do nível de sinal para um valor suficiente para os testes. Os dois push-buttons do circuito serão utilizados para enviar informações à uma página web, utilizando um web server. Os resistores utilizados nos botões também são de 10K.
Circuito Arduino e módulo ESP8266
Recomendamos a utilização de uma fonte externa para alimentação do módulo, pois dependendo da situação ele pode exigir até 300mA de corrente, e o limite do Arduino é de 50mA.
Programa web server ESP8266
Antes de carregarmos o programa do web server, vamos alterar a velocidade de comunicação (baud rate) do módulo, que por padrão está setada em 115200 (firmware versão 0.9.5). Nessa velocidade, a biblioteca Software Serial não foi capaz de realizar a comunicação adequadamente, por isso alteramos a velocidade para 19200, utilizando o programa abaixo.
Na linha 17 colocamos a velocidade padrão (115200), e na linha 25 setamos a nova velocidade (19200):

Nesse programa, é mostrado no serial monitor a versão de firmware do módulo e também se os comandos foram processados com sucesso:
Serial_monitor_Baud_Rate
No programa vamos utilizar a biblioteca SoftwareSerial para efetuar a comunicação com o módulo usando os pinos 2 (RX) e 3 (TX). Assim, podemos utilizar o serial monitor para acompanhar o envio dos comandos ao módulo. Na linha 18 do programa, substitua as informações de SSID (nome da rede wireless) e SENHA pelas informações da rede à qual o módulo irá se conectar.

Acompanhe no serial monitor as informações de conexão ao access point (AP) e também o endereço IP obtido pela placa.
Serial Monitor
Para testar o funcionamento do circuito, abra um browser (Chrome, Firexox, etc) e digite na barra de endereços o endereço IP que foi mostrado no passo anterior, no nosso caso, 192.168.0.27:
ESP8266 - Browser
Acione os botões do circuito para que as informações correspondentes sejam enviadas ao browser. Devido à taxa de atualização, as informações podem demorar alguns segundos para aparecer na tela. Abaixo, temos uma imagem do circuito que utilizamos para montar este post:
Circuito montado
 
[Fonte]