ESP8266 - Servidor Web
Este tutorial ensina como programar uma placa ESP8266 para que ela se torne um servidor web. Você poderá acessar páginas web hospedadas no ESP8266 usando um navegador no seu computador ou celular, permitindo ver os dados do ESP8266 e controlá-lo. Para facilitar, vamos avançar de passos simples para passos mais desafiadores, como segue:
- Servidor Web ESP8266 - Mostrando um texto simples na página web.
- Servidor Web ESP8266 - Monitorando valores de sensores do ESP8266 pela web.
- Servidor Web ESP8266 - Controlando o ESP8266 pela web.
- Servidor Web ESP8266 - Separando o conteúdo HTML (HTML, CSS e Javascript) do código do ESP8266 e colocando-o em outros arquivos na Arduino IDE.
- Servidor Web ESP8266 - Criando várias páginas, como index.html, temperature.html, led.html, error_404.html e error_405.html..., e mais.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Lendo o valor do sensor do ESP8266 pela Web
Isso é relativamente simples. O código do ESP8266 faz as seguintes tarefas:
- Criar um servidor web que escuta requisições HTTP de um navegador.
- Ao receber uma requisição de um navegador, o ESP8266 responde com conteúdo HTML que contém o valor lido do sensor.
Abaixo está o código do ESP8266 que executa as tarefas acima:
Passos Rápidos
Para começar com o ESP8266 na Arduino IDE, siga estes passos:
- Veja o tutorial como configurar o ambiente para o ESP8266 na Arduino IDE se esta for a sua primeira vez usando o ESP8266.
- Ligue os componentes como mostrado no diagrama.
- Conecte a placa ESP8266 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
- Copie o código acima e abra-o com a Arduino IDE
- Altere as informações de WiFi (SSID e senha) no código para as suas
- Clique no botão Upload da Arduino IDE para fazer upload do código para o ESP8266
- Abra o Serial Monitor
- Confira o resultado no Serial Monitor.
- Anote o endereço IP exibido e digite esse endereço na barra de endereços de um navegador no seu celular ou PC.
- Como resultado, você verá a seguinte saída no Serial Monitor.
- Ao acessar o navegador usando o endereço IP, você verá uma página web muito básica exibindo "Hello, ESP8266!". A página será parecida com esta:

Lendo o valor do sensor do ESP8266 pela Web
Abaixo está o código do ESP8266 que imprime o valor da temperatura na página web:
Passos Rápidos
- Copie o código acima e abra-o com a Arduino IDE
- Altere as informações de WiFi (SSID e senha) no código para as suas
- Faça upload do código para o ESP8266
- Ao acessar o navegador usando o endereço IP, você verá uma página web muito básica exibindo informações sobre a placa ESP8266. A página será parecida com esta:

Para deixar a página web com um visual fantástico, com interface gráfica (UI), veja a seção final deste tutorial.
※ Nota:
Com o código fornecido acima, para obter a atualização da temperatura, você precisa recarregar a página no navegador. Em uma próxima parte, vamos aprender como fazer a página web atualizar o valor da temperatura em segundo plano, sem recarregar a página.
Controlando o ESP8266 pela Web
Controlar algo conectado ao ESP8266 é um pouco mais desafiador do que apenas ler um valor. Isso porque o ESP8266 precisa entender a requisição que recebe do navegador para saber qual ação tomar.
Para um exemplo mais completo e detalhado, recomendo conferir os tutoriais listados abaixo:
Separando o conteúdo HTML em outro arquivo na Arduino IDE
Se você quer criar uma página web simples com conteúdo mínimo, pode embutir o HTML diretamente no código do ESP8266, como explicado antes.
No entanto, se você quer fazer uma página web mais sofisticada e impressionante, com conteúdo maior, fica inconveniente incluir todo o HTML, CSS e Javascript diretamente no código do ESP8266. Nessa situação, você pode usar uma abordagem diferente para organizar o código:
- O código do ESP8266 será colocado em um arquivo .ino, como antes.
- O código HTML (HTML, CSS, Javascript) será colocado em um arquivo .h separado. Isso permite manter o conteúdo da página web separado do código do ESP8266, facilitando o gerenciamento e a modificação.
Para isso, precisamos de dois passos principais:
- Preparar o conteúdo HTML
- Programar o ESP8266
Preparando o conteúdo HTML
- Crie um arquivo HTML no seu PC local que contenha o conteúdo HTML (HTML, CSS e Javascript) do design da sua UI.
- No arquivo HTML, onde os dados do ESP8266 devem ser exibidos, use um valor qualquer.
- Teste e modifique até ficar satisfeito.
- Vamos colocar o conteúdo HTML no arquivo .h na Arduino IDE. Veja o próximo passo.
Programando o ESP8266
- Abra a Arduino IDE e crie um novo sketch. Dê um nome a ele, por exemplo, newbiely.com.ino.
- Copie o código fornecido abaixo e cole no arquivo criado.
- Altere as informações de WiFi (SSID e senha) no código para as suas
- Crie o arquivo index.h na Arduino IDE da seguinte forma:

- Clique no botão logo abaixo do ícone do Serial Monitor e escolha New Tab, ou use as teclas Ctrl+Shift+N.
- Dê ao arquivo o nome index.h e clique no botão OK

- Copie o código abaixo e cole no index.h.
- Substitua a linha REPLACE_YOUR_HTML_CONTENT_HERE pelo seu conteúdo HTML preparado antes. Não há problema com caracteres de nova linha. Abaixo está um exemplo de arquivo index.h:
- Agora você tem o código em dois arquivos: newbiely.com.ino e index.h
- Clique no botão Upload da Arduino IDE para fazer upload do código para o ESP8266
- Acesse a página web da placa ESP8266 pelo navegador como antes. Você a verá como abaixo:

※ Nota:
Nos códigos acima:
- O código HTML foi projetado para atualizar a temperatura em segundo plano em intervalos regulares, atualmente definidos para cada 4 segundos no código. Isso significa que o valor da temperatura é atualizado automaticamente, sem a necessidade de recarregar manualmente a página web. Você pode ajustar o intervalo de atualização no código de acordo com a sua preferência.
- O código do ESP8266 atende a duas requisições do navegador.
- Uma requisição para retornar o conteúdo HTML da página web
- A outra para retornar o valor da temperatura solicitado pela página web em segundo plano
Para uma ilustração mais completa e detalhada, consulte o tutorial ESP8266 - DS18B20 Temperature Sensor via Web
※ Nota:
- Se você alterar o conteúdo HTML dentro do arquivo index.h mas não modificar nada no arquivo newbiely.com.ino, a Arduino IDE não vai atualizar o conteúdo HTML quando você compilar e fizer upload do código para o ESP8266.
- Para forçar a Arduino IDE a atualizar o conteúdo HTML nessa situação, você precisa fazer uma modificação no arquivo newbiely.com.ino. Por exemplo, você pode adicionar uma linha vazia ou inserir um comentário. Essa ação faz a IDE reconhecer que houve mudanças no projeto, garantindo que o seu conteúdo HTML atualizado seja incluído no upload.
Servidor Web ESP8266 - Várias Páginas
Veja este tutorial ESP8266 - Web Server Multiple Pages.