NodeMCU – Como criar um Web Server e conectar a uma rede WIFI

NodeMCU – Como criar um Web Server e conectar a uma rede WIFI

Dificuldades em criar um servidor web com o NodeMCU para desenvolver projetos que envolvam controle de módulos e sensores através de página web? Então não deixe de ler esta postagem! Aqui você vai aprender os primeiros passos para criar um web server com o NodeMCU e conectá-lo a uma rede WiFi.

Como foi dito em nosso artigo NodeMCU – Uma plataforma com características singulares para o seu projeto ioT, esta plataforma é um concorrente bem a altura do Arduino. Suas características singulares a tornam bem atraentes para desenvolvimentos de projetos ioT, principalmente em projetos que necessitam de controle através de página web. O grande diferencial do NodeMCU é possuir WiFi nativo, ou seja, a placa pode se conectar a redes sem fio padrão 802.11 b/g/n.

Ao final dessa prática você estará conectado a uma rede sem fio e em seguida poderá se conectar a uma página web do servidor que vai estar rodando no NodeMCU.

Para esta postagem, utilizei apenas o NodeMCU com cabo micro USB para conectá-lo ao computador.

Para que a prática funcione, é necessário que você já esteja com a placa NodeMCU instalada no computador e que ela seja reconhecida pela IDE do Arduino. Se ainda não tem a IDE do Arduino instalada e configurada para o NodeMCU, acesse os links abaixo e em seguida retorne para continuar:

Arduino – Instalação e Configuração da IDE no Windows
NodeMCU – Instalação no Windows
NodeMCU – Configurando a IDE do Arduino

No código fonte, em “const char* ssid”, você deve colocar o nome da sua rede WiFi (dentro das aspas duplas) e em “const char* password”, coloque a senha da sua rede WiFi (também dentro das aspas duplas). Veja na imagem abaixo as informações destacadas:

img01_nodemcu_criando_web_server_e_conectando_rede_wifi_ide_arduino_esp8266_sem_fio_wireless

O código para testes está abaixo, basta copiá-lo, colar na IDE, editar com as informações da sua rede sem fio, salvar e carregar:

Após o arquivo ser carregado no NodeMCU, abra a janela serial da IDE. Se a conexão for realizada com sucesso, as seguintes mensagens: “Conectado a rede sem fioNome da sua rede’, ‘Servidor iniciado’ e ‘IP para se conectar ao NodeMCU: http://’endereço’ ” vão aparecer no monitor, como mostra a figura abaixo:

img02_nodemcu_criando_web_server_e_conectando_rede_wifi_ide_arduino_esp8266_sem_fio_wireless

OBS: Para visualizar o resultado acima, não esqueça de mudar no rodapé da serial a velocidade para 115200, conforme a imagem abaixo:

img03_nodemcu_criando_web_server_e_conectando_rede_wifi_ide_arduino_esp8266_sem_fio_wireless

Deixe a janela serial aberta. Em seguida abra o navegador e digite o endereço de IP que o monitor serial forneceu para que você possa se conectar ao NodeMCU. Uma página similar à imagem abaixo será aberta:

img04_nodemcu_criando_web_server_e_conectando_rede_wifi_ide_arduino_esp8266_sem_fio_wireless

Ao retornar no monitor serial, veja que novas informações de conexão surgiram na janela, conforme mostra a imagem abaixo:

img05_nodemcu_criando_web_server_e_conectando_rede_wifi_ide_arduino_esp8266_sem_fio_wireless

Para esta postagem, deixei que o NodeMCU obtivesse um endereço de IP dinâmico, contudo, nas próximas postagens será definido um IP estático para a placa.

Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigada e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.



Postagem anterior:
Próxima postagem:
Postagem feita por

Diretora de Marketing, Designer e Criadora de Conteúdo da MasterWalker Shop. Bacharel em Engenharia da Computação. Apaixonada por tecnologia, fã de super-heróis e bandas de rock.

Existem 56 comentários para esta postagem
  1. ROBÓTICA às 17:59

    OLA TEM COMO ALGUEM ME AJUDA COM O PROGRAMA COM NODEMCU SENDO QUE UM NOCEMCU ESTEJA COM UM SENSOR MQ E QUANDO RECEBER A PRESENCA DO GAS ELE ATUE UM RELE EM OUTRO NODEMCU.

  2. Thiago dos Santos às 18:43

    A página não se carrega sozinha, tenho que ficar atualizando para receber novos dados. Como resolvo

    • Euler Oliveira às 18:52

      Olá Thiago.

      Agradeço pelo comentário!

      De fato neste tutorial não foi implementado o recurso de refresh da página.

      Fica a cargo do usuário implementar novas funções no código.

  3. Paulo às 21:48

    Seria possível o nodemcu receber comandos por html através de outra rede de wifi. O nodemcu na rede wifi domiciliar e um smartphone utilizando a rede móvel de uma operadora? Ou seja em redes diferentes e a longa distância!

    • Euler Oliveira às 15:53

      Olá Paulo.

      Agradeço pelo comentário!

      É possível sim.

  4. Luis Paulo às 17:26

    A montagem funcionou perfeitamente. Qual alteração devo fazer no código para que o endereço IP seja enviado para o browser dentro da página HTML criada? Obrigado.

  5. Conceição França às 18:39

    Olá tudo bem? copiei tudo mas não conectou. Deu um erro “‘WiFi’ does not name a type” ao compilar. Meu Node é um V3 LoLin. Poderia me ajudar por favor.

    • Euler Oliveira às 19:17

      Olá Conceição.

      Agradeço pelo comentário!

      Provavelmente está faltando a biblioteca em seu IDE.

      Verifique se o pacote de placas + bibliotecas está instalado no IDE do Arduino.

  6. Anibal às 20:59

    Parabéns pela aula e pela presença nos comentários, Euler !
    Assim que eu voltar de viagem, vou testar no ESP8266.
    Como ainda faltam alguns dias pra eu voltar, queria ir trabalhando na elaboração da página HTML. Você tem alguma dica de onde eu posso procurar material de estudo ?
    Pretendo partir dessa sua tela, mas adicionar alguns botões e 4 campos para texto.
    Mas o principal detalhe, é que eu gostaria de arrumar esses botões na tela, de modo que alguns fiquem lado a lado, com 3 botões em uma mesma linha.
    Eu nunca fiz nada em HTML até hoje, mas creio que consigo copiar.

    • Euler Oliveira às 08:46

      Olá Anibal.

      Agradeço pelo comentário e reconhecimento!

      Recomendo que você estude sobre desenvolvimento web.

      Um local em que você pode gastar pouco e ter material de qualidade para aprender sobre desenvolvimento web e sobre vários outros assuntos relacionados a tecnologia é na Udemy:

      https://www.udemy.com/courses/development/web-development/

      No link acima você pode ver os vários cursos relacionados a desenvolvimento web. Para escolher qual curso fazer, basta verificar o conteúdo tratado em cada um deles, a reputação do professor/professores do curso, quantos alunos estão inscritos e as avaliações dadas pelos alunos.

      Acredito que já seja um começo.

  7. Gustavo Tulio às 17:17

    Estamos com um problema em nosso Tcc, onde o a programação roda em um pc mas em outro não, com as mesmas bibliotecas baixadas.
    Também estamos com dificuldade em desenvolver um webserver com o esp8266, estamos utilizando como entrada o dht11 e mq-7 pois queremos expor os seus valores no “site”. Consegue nos ajudar de alguma forma ? somos da Etec, do curso de eletrônica.

    • Euler Oliveira às 08:47

      Olá Gustavo.

      Agradeço pelo comentário!

      Como assim a programação roda em um PC e em outro não?|

      Poderia fornecer mais detalhes a respeito do problema que está tendo?

  8. joao alysson às 12:14

    olá gostaria de fazer o seguinte , comunicar o arduino uno com o nodemcu e pegar dados do uno e mandar para a pagina web e possivel?

  9. Bruno às 11:41

    O meu funcionou perfeitamente, minha palca WeMos D1 CHIP:ESP8266, uma duvida de leigo como posso acoplar um sensor de temperatura ou um medidor de fluxo de agua para mer os resultado na pagina ou no thingspeak.

    desde ja agradeço.

    • Euler Oliveira às 12:14

      Olá Bruno.

      Agradeço pelo comentário!

      No momento não temos nenhum tutorial relacionado a este tipo de prática que deseja implementar.

    • Joao Ricardo Araujo Cardoso às 17:44

      É só colocar pra ele imprimir a variável da “temperatura” com esse comando:
      client.print(temperatura);

      • Joao Ricardo Araujo Cardoso às 17:46

        E mesclar esse código dessa página, com o de medidor de temperatura comum encontrado na internet. Já fiz isso.

  10. Igor Pereira às 07:51

    Eu to tentando acionar um rele mas nao to conseguindo tem como me ajudar

    • Euler Oliveira às 08:39

      Olá Igor.

      Agradeço pelo comentário!

      Recomendo que veja as postagens no Blog relacionadas a acionamento de módulo relé para que possa ter uma base para iniciar a implementação do seu projeto.

  11. Daniel Fernandes às 19:12

    Primeiramente, obrigado pelo tutorial. Eu tenho um sketch arduino que, resumindo, solicita dados da web para mostrar Hora e Data em um display tft e, no sketch, além do SSID e Senha, tem a seguinte linha: #define HTTP_SERVER “http://10.0.0.159/iotServer.php” mas, logicamente, esse endereço não me serve, portanto, faço a pergunta: o que devo colocar nessa linha, entre aspas, pois entendo que deve ser um servidor brasileiro mas, não entendo qual ou o que.

    Parte do sketch:
    // — HTTP CLIENT ————————————————————————
    // This is my intranet server, which is running a REST API. You’ll need one of these.
    #define HTTP_SERVER “http://10.0.0.159/iotServer.php”
    typedef enum {TIME_INFO, DATE_INFO} DatetimeInfo;
    HTTPClient http;

    Muito obrigado

    • Euler Oliveira às 11:32

      Olá Daniel.

      Agradeço pelo comentário!

      A linha em questão é uma página WEB que provavelmente mostra as informações de data e hora.

      Você deve criar uma página substituta ou substituir o IP 10.0.0.159 pelo IP em que foi atribuído ao seu NodeMCU e utilizar a página que já está criada. Lembrando que você deverá ter um webserver local sendo executado para acessar a página.

  12. Yara às 10:55

    Não estou conseguindo conectar a pagina web com o endereço de IP disponibilizado. A “página não foi encontrada”.

    • Euler Oliveira às 11:51

      Olá Yara.

      Agradeço pelo comentário!

      Refaça o tutorial e se possível, crie um ponto de acesso no seu smartphone, insira informações do mesmo dentro do código (const char* ssid e const char* password) e em seguida tente se conectar. Se funcionar, o problema está na conexão com o seu roteador.

  13. Martins às 10:00

    Euler, parabéns pelos tutoriais. Ótimas dicas para iniciantes como eu. Gostaria de tirar uma dúvida, estou usando a placa Wemos D1 R2, vi que você postou o link desse tutorial para conexão wi-fi com essa placa em um dos tutoriais seus da Wemos. Porém não consigo acesso a porta para mostrar o endereço de IP, já mudei a velocidade para 9600 e 115200 conforme você disse nos comentários e mesmo assim não aparece, fica em branco. O que devo fazer para aparecer? Agradeço a ajudar!
    P.S: Peço a você fazer quando tiver um tempo um tutorial de como usar Infravermelho com a placa Wemos R1 e D2, é um ótimo projeto e que com certeza traria muitos visitantes ao seu site. Obrigado e sucesso amigo! =D

    • Euler Oliveira às 10:09

      Olá Martins.

      Agradeço pelo comentário!

      No código você está preenchendo as informações da rede WiFi em que a placa irá conectar? Está mantendo a velocidade de 115200 ou 9600 no código?

      O código desta postagem é compatível com a Wemos.

      Sobre o infravermelho: você diz clonar controle remoto infravermelho?

      • Martins às 14:41

        Olá, Euler! Em respostas de suas perguntas:

        “No código você está preenchendo as informações da rede WiFi em que a placa irá conectar? Está mantendo a velocidade de 115200 ou 9600 no código?”

        Nessa linha (Serial.print(“http://”);) devo colocar o endereço, é isso? Não cheguei a colocar, pensei que seria gerado de forma automático. Obrigado! Irei tentar aqui. Em relação as velocidades eu cheguei a testar com os dois valores que você citou e não deu certo, acredito que o erro foi exatamente essa linha que citei anteriormente.

        “Sobre o infravermelho: você diz clonar controle remoto infravermelho?”
        Sim, clonar um controle remoto por completo de um ar condicionado. Na internet tem muitos projetos com TVs, porém com ar condicionados não encontrei nenhum. Alguns dizem que dá certo com o código de clonagem da TV, porém não dá. O controle do ar condicionado manda ao Arduino as instruções completas do ar, não somente a específica do botão, por isso é preciso uma codificação diferença, mudança de valores de buff, etc… Acho que seria legal você criar em seu blog um tutorial sobre isso, seria inovador.

        Abraço e obrigado pelas respostas!

        • Euler Oliveira às 15:04

          A linha (Serial.print(“http://”);) não diz respeito a velocidade da comunicação serial. A linha responsável por isso é a Serial.begin(115200);.

          As informações da sua rede WiFi são preenchidas nas linhas:

          const char* ssid = “nome_da_sua_rede_WIFI”;
          const char* password = “senha_da_sua_rede_WIFI”;

          Não tenho experiência na clonagem de teclas de controle remoto de ar condicionado, mas posso te afirmar que é bem complicado de ser clonado. Controle remoto de ar condicionado costuma não ser possível clonar as teclas a partir do Fotorreceptor IR utilizado com o Arduino.

  14. Fabiane às 23:43

    Olá, por acaso teria um programa similar para o ESP32? Pois a biblioteca ESP8266WiFi.h não existe para a placa ESP32.

  15. HELIO BARBOSA às 15:21

    Pessoal eu esstou tentando enviar dados a minha pagina php em um servidor nas nuvens mas não consigo. Estou usando o Arduino Uno 3 e o ESP8266 juntos.
    Já consigo conectar co WiFi mas não consigo enviar os dados. Se houver alguem disposto a me ajudar posso enviar os fontes php e uno.

  16. Otavio às 17:11

    Olá Euler!
    Copiei/ colei o código e compilou certinho, porém estou me deparando com um problema. A conexão com a rede local ocorre normalmente, e o monitor serial mostra a URL (endereço IP) que eu deveria utilizar para acessar o servidor. Entretanto, quando jogo o endereço no navegador e tento acessar, aparece um erro dizendo que não foi possível encontrar a página. Já desativei o firewall, testei em vários navegadores diferentes, redes diferentes, portas diferentes (mudei da porta 80 para a 8089 e 8082) e nada funciona! O que pode estar acontecendo?
    P.S.: Estou utilizando um ESP32 e SO Windows 10

  17. Antonio às 07:36

    Caro Euler

    Tudo funcionando quando acesso de um pc , quando acesso de um celular o módulo trava me forçando a dar um reset.
    Tem alguma ideia do que possa estar acontecendo??
    Obrigado
    Antonio

  18. Filipe Paceli às 14:31

    Fala brother, cara estou tendo um erro sinistro, é comum o nodemcu travar em alguns instantes e “morrer” literalmente tendo que reseta-lo? tenho um webserver , wifi autoconect e 4 comandos..
    tenho display oled tb.. tem relato de incompatibilidade?

    • Euler Oliveira às 15:15

      Olá Filipe Paceli.

      Está alimentando seu NodeMCU com fonte de quantos amperes?

  19. José Rodolfo Durante às 21:15

    Euler ;
    Copiei o código e conferi mas acontece o seguinte:
    1. No monitor serial não aparece NADA!.
    2. No navegador tudo ocorre certinho.
    Obs. Tinha conhecido o ip pelo comando AT.
    Podes me ajudar?
    Obrigado
    Rodolfo

    • Euler Oliveira às 07:49

      Olá José Rodolfo Durante.

      Verificou se a velocidade da serial está correta? Testou o baudrate com 9600 e 115200?

  20. Giba/Quase louco... às 15:10

    Não consigo conectar, meun roteador é junto ao modem da Net, pode ter alguma complicação?
    tentei o IP fixo tambem, nada não acessa.
    podem dar uma dica, já estou desconfiando do Node Msu, no entanto consigo fazer ele funcionar com programas basicos, acender led ligar rele, mas por comando via skech

    • Euler Oliveira às 20:04

      Olá Giba.

      Recomendo que faça o teste com uma outra conexão de internet que não seja NET para comprovar se é o NodeMCU que está com defeito.

      Este código que disponibilizei na postagem é totalmente funcional.

      • Giba/Quase louco... às 19:17

        Mestre Euler, funcionou na rede WiFi do smartfone, obrigado, pergunta, como fazer funcionar com o modem Wifi da NET, porque dá errado? conhece algum artigo?

        • Euler Oliveira às 20:30

          Verifique junto a operadora se existe algum tipo de bloqueio no modem WiFi deles e se existir, qual o procedimento a ser feito para que possa incluir o NodeMCU na sua rede.

  21. Gustavo Henrique às 01:21

    Olá, boa noite!

    Estou com um problema na hora que finaliza o processo, não aparece o nome da minha rede nem o Ip, não aparece nada no monitor serial apenas fica loop contínuo de pontos.
    Por favor, se alguém puder me ajudar ou auxiliar agradeço desde já

  22. Bruno às 21:37

    Boa noite,

    Fiz o teste e funcionou. Mas como acesso de uma rede externa?

    • Euler Oliveira às 08:16

      Olá Bruno.

      Para acessar externamente, recomendo que pesquise por NAT(redirecionamento de portas) ou port forward.

  23. Carlos às 17:15

    Olá Euler, o meu node mcu conecta somente quando uso meu celular como ponto de acesso, o que fazer?

    • Euler Oliveira às 18:25

      Olá Carlos.

      Já verificou quais os padrões de rede WiFi seu roteador oferece (802.11 b/g/n)? Verifique se algum destes está habilitado ou se ambos estão. Caso esteja tudo OK com o roteador e ainda assim não consiga conectar, recomendo que instale novamente o firmware no NodeMCU.

  24. Giovani Milanezi às 10:29

    Nao estou conseguindo conectar a rede… Coloquei a rede e senha… O programa para na instrucao While{}, fica em loop e nao sai mais, fica tentando conectar mas nao conecta. O que pode estar acontecendo?

    • Euler Oliveira às 09:07

      Olá Giovani Milanezi.

      Se possuir um smartphone Android, crie um ponto de acesso WiFi (Tethering e acesso portátil) com ele e deixe habilitado. Em seguida coloque os dados (nome da rede e senha) deste ponto de acesso no código e tente se conectar.

      É ideal que faça os testes em uma rede sem fio alternativa para verificar se não é o roteador que está barrando a conexão do NodeMCU.

      Faça este teste e dê um retorno se funcionou.

      • Justino às 17:07

        Se for o roteador que está narrando o que é que eu posso fazer pq o meu conecta no Wi-Fi mas quando eu tento abrir no navegador eu não consigo acessar, mas quando eu uso o exemplo do acess point ele abre normalmente no navegador

        • Euler Oliveira às 17:54

          Olá Justino.

          Seu NodeMCU é a versão v2 ou a v3(Lolin)?

          • Henrique às 15:55

            Como saber a versão? quais as diferenças básicas entre versões?

          • Euler Oliveira às 17:04

            Olá Henrique.

            NodeMCU V2: geralmente é fabricado pela Amica e o tamanho da placa é compatível com o espaçamento (2.54mm) dos furos de uma protoboard.

            NodeMCU V3: fabricado pela Lolin e o tamanho da placa (largura) não é compatível com o espaçamento (2.54mm) dos furos de uma protoboard, contudo, possui algumas bases próprias para facilitar a conexão aos pinos da placa.

            Uma das bases para a versão da Lolin pode ser vista no link abaixo:

            https://blogmasterwalkershop.com.br/embarcados/nodemcu/base-adaptador-para-o-nodemcu-v3-da-lolin/