Analisador de sinal WiFi com ESP8266 NodeMCU 12

Para comemorar o Dia do Orgulho Nerd, a FilipeFlop trouxe novamente a caixa surpresa BLUE BOX. Se você não conseguiu adquirir a sua mas ficou curioso com o conteúdo e quer replicar o projeto, batas ler esse tutorial. O projeto consiste em um analisador de sinal WiFi que utiliza um módulo ESP8266 NodeMCU junto com uma linha de LED RGB para verificar e indicar a qualidade do sinal da sua rede WiFi. Para deixar tudo mais atrativo, a case do projeto é no formato de um foguete! 

Analisador de sinal WiFi com ESP8266 NodeMCU

Vamos iniciar a montagem do seu analisador de sinal WiFi com ESP8266 NodeMCU então? 

Materiais necessários

Analisador de sinal WiFi com ESP8266 NodeMCU - Materiais Necessários

Para montar a parte eletrônica do analisador de sinal WiFi com ESP8266 NodeMCU, você vai precisar de:

Já para montar a estrutura do analisador de sinal WiFi com ESP8266 NodeMCU você vai precisar das 3 peças feitas em uma impressora 3D:

  • (4) Base
  • (5) Centro
  • (6) Topo

Download dos arquivos STL

Agora basta seguir o passo-a-passo abaixo para realizar a montagem do seu analisador de sinal WiFi. Que a força esteja com você!

Montagem do analisador de sinal WIFi com ESP8266 NodeMCU

Passe as extremidades dos jumpers da linha de LED RGB pelo furo da parte central do foguete

Analisador de sinal WiFi com ESP8266 NodeMCU - Montagem

Encaixe a linha de LED RGB na parte central do foguete.

Analisador de sinal WiFi com ESP8266 NodeMCU - Montagem

Encaixe os jumpers da linha de LED RGB no ESP8266 NodeMCU da seguinte forma:

Linha de LED RGBESP8266 NodeMCU
GND (Preto)GND
DIN (Roxo)D1
VDC (Vermelho)3V3

Analisador de sinal WiFi com ESP8266 NodeMCU - Montagem

Passe o cabo micro USB pelo furo da base do foguete

Analisador de sinal WiFi com ESP8266 NodeMCU - Montagem

Encaixe o cabo micro USB no ESP8266 NodeMCU. Posicione o módulo dentro da parte central do foguete. 

Analisador de sinal WiFi com ESP8266 NodeMCU - Montagem

Encaixe a base na parte central do foguete

Analisador de sinal WiFi com ESP8266 NodeMCU - Montagem

Por fim, encaixe o topo na base do foguete

Analisador de sinal WiFi com ESP8266 NodeMCU - Montagem

Agora precisamos configurar a IDE do Arduino para programar o NodeMCU. Vamos lá?

Configurações da IDE do Arduino para o NodeMCU

Entre na IDE do Arduino e clique em Arquivo -> Preferências.

Digite ou cole o link abaixo no campo URLs adicionais de Gerenciadores de Placas:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

A sua tela ficará assim:

Clique em OK para retornar à tela principal da IDE.

Depois clique em Ferramentas -> Placa -> Gerenciador de Placas.

Na barra de busca digite esp8266. Aparecerá então esp8266 by ESP8266 Community. Clique em instalar.

Após alguns minutos, as placas da linha ESP8266 já estarão disponíveis na lista de placas da IDE do Arduino. Vá em Ferramentas -> Placa e selecione NodeMCU 1.0 (ESP12-E Module).

Pronto! Agora você pode conectar o NodeMCU ao seu computador. Não esqueça de selecionar a porta que o mesmo está conectado. Para isso, vá em Ferramentas -> Porta e selecione a porta que o NodeMCU está conectado.

Código do analisador de sinal WIFi com ESP8266 NodeMCU

Antes de carregar o código para a placa, é necessário baixar e instalar uma biblioteca:

Faça o download da biblioteca, descompacte a pasta e cole-a  na pasta Libraries do Arduino. Por fim, reinicie a IDE.

O código completo está abaixo:

#include <Adafruit_NeoPixel.h>
#include <ESP8266WiFi.h>

#define PINO_LED   D1  // Pino do NodeMCU que o linha de LED está conectado

#define NUMERO_LED 8   // Número de LEDs na linha de LED

Adafruit_NeoPixel strip(NUMERO_LED, PINO_LED);

// Credeciais da rede WiFi
#define WIFI_SSID "insira-o-nome-da-rede-aqui"
#define WIFI_PASS "insira-a-senha-da-rede-aqui"

void setup() 
{
  // Inicia a conexão com a rede WiFi
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  
  // Inicia a linha de LED
  strip.begin();
  strip.setBrightness(50); // O brilho da linha de LED pode ser ajustado aqui. Valores entre 0 e 255.
  strip.show();
}

void loop() 
{
  static int Qualidade_anterior = -1;
  int qualidade = Qualidade_verificar();
  if (qualidade != Qualidade_anterior) 
  {  
    // Se a qualidade do sinal WiFi mudou desde a última leitura, imprime a nova leitura
    if (qualidade != -1)
    {
      if (qualidade <= 12)
      {
        caseWiFi0();
      }
      
      if (qualidade > 12 && qualidade <= 25)
      {
        caseWiFi1();
      }
     
      if (qualidade > 25 && qualidade <= 37)
      {
        caseWiFi2();
      }
      
      if (qualidade > 37 && qualidade <= 50)
      {
        caseWiFi3();
      }
      
      if (qualidade > 50 && qualidade <= 62)
      {
        caseWiFi4();
      }
      
      if (qualidade > 62 && qualidade <= 75)
      {
        caseWiFi5();
      }
     
      if (qualidade > 75 && qualidade <= 87)
      {
        caseWiFi6();
      }
      
      if (qualidade > 87)
      {
        caseWiFi7();
      }     
    
    Qualidade_anterior = qualidade;
    delay(5000);
   }
  }
}

void caseWiFi0()
{
  strip.setPixelColor(0, 255, 0, 0);
  strip.setPixelColor(1, 0, 0, 0);
  strip.setPixelColor(2, 0, 0, 0);
  strip.setPixelColor(3, 0, 0, 0);
  strip.setPixelColor(4, 0, 0, 0);
  strip.setPixelColor(5, 0, 0, 0);
  strip.setPixelColor(6, 0, 0, 0);
  strip.setPixelColor(7, 0, 0, 0);
  strip.show();
}
      
void caseWiFi1()
{
  strip.setPixelColor(0, 255, 0, 0);
  strip.setPixelColor(1, 255, 0, 0);
  strip.setPixelColor(2, 0, 0, 0);
  strip.setPixelColor(3, 0, 0, 0);
  strip.setPixelColor(4, 0, 0, 0);
  strip.setPixelColor(5, 0, 0, 0);
  strip.setPixelColor(6, 0, 0, 0);
  strip.setPixelColor(7, 0, 0, 0);
  strip.show();
}
     
void caseWiFi2()
{
 strip.setPixelColor(0, 255, 0, 0);
 strip.setPixelColor(1, 255, 0, 0);
 strip.setPixelColor(2, 255, 50, 0);
 strip.setPixelColor(3, 0, 0, 0);
 strip.setPixelColor(4, 0, 0, 0);
 strip.setPixelColor(5, 0, 0, 0);
 strip.setPixelColor(6, 0, 0, 0);
 strip.setPixelColor(7, 0, 0, 0);
 strip.show();
}
      
void caseWiFi3()
{
  strip.setPixelColor(0, 255, 0, 0);
  strip.setPixelColor(1, 255, 0, 0);
  strip.setPixelColor(2, 255, 50, 0);
  strip.setPixelColor(3, 255, 50, 0);
  strip.setPixelColor(4, 0, 0, 0);
  strip.setPixelColor(5, 0, 0, 0);
  strip.setPixelColor(6, 0, 0, 0);
  strip.setPixelColor(7, 0, 0, 0);
  strip.show();
}
      
void caseWiFi4()
{
  strip.setPixelColor(0, 255, 0, 0);
  strip.setPixelColor(1, 255, 0, 0);
  strip.setPixelColor(2, 255, 50, 0);
  strip.setPixelColor(3, 255, 50, 0);
  strip.setPixelColor(4, 255, 255, 0);
  strip.setPixelColor(5, 0, 0, 0);
  strip.setPixelColor(6, 0, 0, 0);
  strip.setPixelColor(7, 0, 0, 0);
  strip.show();
}
      
void caseWiFi5()
{
  strip.setPixelColor(0, 255, 0, 0);
  strip.setPixelColor(1, 255, 0, 0);
  strip.setPixelColor(2, 255, 50, 0);
  strip.setPixelColor(3, 255, 50, 0);
  strip.setPixelColor(4, 255, 255, 0);
  strip.setPixelColor(5, 255, 255, 0);
  strip.setPixelColor(6, 0, 0, 0);
  strip.setPixelColor(7, 0, 0, 0);
  strip.show();
}
     
void caseWiFi6()
{
  strip.setPixelColor(0, 255, 0, 0);
  strip.setPixelColor(1, 255, 0, 0);
  strip.setPixelColor(2, 255, 50, 0);
  strip.setPixelColor(3, 255, 50, 0);
  strip.setPixelColor(4, 255, 255, 0);
  strip.setPixelColor(5, 255, 255, 0);
  strip.setPixelColor(6, 0, 255, 0);
  strip.setPixelColor(7, 0, 0, 0);
  strip.show();
}

void caseWiFi7()
{
  strip.setPixelColor(0, 255, 0, 0);
  strip.setPixelColor(1, 255, 0, 0);
  strip.setPixelColor(2, 255, 50, 0);
  strip.setPixelColor(3, 255, 50, 0);
  strip.setPixelColor(4, 255, 255, 0);
  strip.setPixelColor(5, 255, 255, 0);
  strip.setPixelColor(6, 0, 255, 0);
  strip.setPixelColor(7, 0, 255, 0);
  strip.show();
}

/*
Retorna a qualidade (indicador de intensidade do sinal recebido) da rede WiFi.
Retorna um número entre 0 e 100 se o WiFi estiver conectado.
Retorna -1 se o WiFi estiver desconectado.
*/
int Qualidade_verificar() 
{
  if (WiFi.status() != WL_CONNECTED)
    return -1;
  int dBm = WiFi.RSSI();
  if (dBm <= -100)
    return 0;
  if (dBm >= -50)
    return 100;
  return 2 * (dBm + 100);
}

Antes de carregar o código para a placa você precisa inserir as credenciais da sua rede WiFi. Para isso basta alterar as seguintes linhas do código:

// Credeciais da rede WiFi
#define WIFI_SSID "insira-o-nome-da-rede-wifi"
#define WIFI_PASS "insira-a-senha-da-rede-wifi"

Agora você já pode carregar o código para o NodeMCU. Esse processo pode levar algum tempo, não se preocupe. No final você terá a seguinte mensagem. 

Seu analisador de sinal WiFi está pronto! Vamos ver ele funcionando?

Funcionamento do analisador de sinal WIFi com ESP8266 NodeMCU

Analisador de sinal WiFi com ESP8266 NodeMCU - Funcionamento

A qualidade do sinal WiFi é verificada através de uma transformação na função WiFi.RSSI() e indicada por 8 estágios (cada LED da linha RGB indica um estágio). Se desejar, você pode alterar o brilho dos LEDs modificando a seguinte linha:

strip.setBrightness(255);

Além disso você pode alterar a cor dos LEDs. Para isso basta alterar a função:

strip.setPixelColor(n, red, green, blue);

O primeiro parâmetro (n) indica o número do LED na linha (0 a 7). O três parâmetros seguintes (red, green e blue) indicam a cor do LED, expressa em níveis de vermelho, verde e azul. 

Gostou do projeto do analisador de sinal WiFi com ESP8266 NodeMCU? Conte para a gente o que achou deixando um comentário abaixo! Para ter acesso a mais conteúdos como esse, visite nosso blog. E se desejar tirar alguma dúvida ou postar um projeto acesse o fórum.

Deixe uma resposta

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

12 Comentários

  1. Como eu posso alterar o projeto usando 3 leds comuns ao invés da fita de led?

    1. diminuo o numero de casos para 3?

  2. Que legal! Aqui tudo certo o programa! Rodando perfeito!
    Só na linha 70, acho que o parâmetro de comparação é 87 e não 78, para pegar os valores acima 87 (caseWiFi6)
    No mais, parabéns pelo projeto e explicação do artigo!

    1. Olá Giovane,

      Resolvido! Obrigada pelo aviso 😉

      Abraço!
      Rosana – Equipe FilipeFlop

    2. Giovane,

      Que bom que curtiu! E vou dar uma olhadinha na linha que você comentou 😉

      Abraços!
      Diogo – Equipe FilipeFlop

  3. Parabens! Não montei o projeto mas, achei muito interessante. Pergunta: Onde posso encontrar uma estrutura como esta utilizada no projeto?
    Obrigdo!

    1. Olá Edmilson,

      Você pode imprimir as pares do foguete em uma impressora 3D. Os arquivos para impressão estão no post.

      Abraço!
      Rosana – Equipe FilipeFlop

    2. Edmilson

      Essa estrutura veio montada na nossa última Bluebox. Infelizmente não temos ela para venda.

      Abraços!
      Diogo – Equipe FilipeFlop

  4. Parabéns pelo excelente Post, já encaminhei outros Colegas .
    De uma olhada na linha 70 houve erro digitação.

    1. Olá Carlos,

      Problema resolvido! Obrigada por avisar 😉

      Abraço!
      Rosana – Equipe FilipeFlop

    2. Carlos,

      Obrigado e que bom que curtiu!!

      Abraços!
      Diogo – Equipe FilipeFlop