Caça aos ovos de chocolate com ESP32! 6

Sabe a tradicional caça aos ovos de chocolate no domingo? Já pensou se pudéssemos ter um radar para ele? A ideia deste projeto é justamente essa, colocamos um ESP32 onde está a cesta de páscoa e o outro ESP32 vai dizer para você se está perto do objetivo, quente ou frio!

O ESP32 é um módulo de alta performance para aplicações envolvendo WiFi, é uma evolução do ESP8266, com maior poder de processamento e Bluetooth BLE 4.2 embutido.

Material necessário

Este projeto pode ser feito com ESP32 ou mesmo o ESP8266. É interessante que seja utilizada uma placa que já possua um display, facilita bastante o trabalho. Neste projeto utilizamos os seguintes componentes:

O display OLED, embutido na placa, é um display quer possui alto contraste e ainda assim consome pouca energia porque utiliza LEDs orgânicos (Organic Light-Emitting Diode).

Um dos ESP32 ficará com os ovos de chocolate e o outro será o radar, que indicará no display se você está perto ou longe do ESP32 dos ovos de chocolate.

Foi escolhido um modelo com suporte para bateria por comodidade, mas você pode utilizar outro ligado na tomada ou com um power bank.

ESP32 dos ovos de chocolate

O funcionamento do ESP32 dos ovos de chocolate é bastante simples, é apenas um ponto de WiFi que servirá de referência para o ESP32 radar. Se for utilizado o ESP8266, a biblioteca utilizada tem que ser <ESP8266WiFi.h>. No nosso caso, como utilizamos um ESP32, adicionamos a biblioteca <WiFi.h>.

//descomentar a biblioteca de acordo com seu chip ESP
//#include <ESP8266WiFi.h>  //ESP8266

#include <WiFi.h> //ESP32
#include <Wire.h>
#include <SSD1306Wire.h>

// Nome da rede e senha
const char* ssid = "Ovodepascoa";
const char* senha = "segredo123";

 
// Endereços para configuração da rede 
IPAddress ip(192, 168, 0, 2);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);

//Inicializa o display
SSD1306Wire display(0x3C, 5, 4);


void setup() {
  delay(1000);
// Você pode remover o parâmetro senha se quiser que sua rede seja aberta

  WiFi.softAP(ssid, senha);
  
// configurações da rede
  WiFi.softAPConfig(ip, gateway, subnet);
 
  IPAddress myIP = WiFi.softAPIP();

// Mostra no display a palavra Ovo
  display.init();
  display.clear();
  display.flipScreenVertically();
  display.setFont(ArialMT_Plain_24);
  display.setTextAlignment(TEXT_ALIGN_CENTER);
  display.drawString(63, 12, "Ovo");
  display.display();
 
}
 
void loop() { // Nao tem nada no loop mesmo, so espera ser encontrado
}

Como este ESP32 é somente uma rede WiFi, você pode substituí-lo por qualquer coisa que possa criar uma rede WiFi, um roteador ou um celular, por exemplo.

Se você tiver problemas para programar a placa, pode ver o post sobre como programar o módulo ESP32 com IDE Arduino.

ESP32 Radar de chocolates

O ESP32 que funciona como radar tem uma programação mais complexa. Ele conecta na rede que o ESP32 dos ovos de chocolate e verifica a força do sinal emitido e, com isso, verifica quão longe ele está. Eu dividi os valores em 4 categorias que são apresentadas no display: “FRIO”, “morno”, “quente” e “ACHOU”.

Caça aos ovos de chocolate com ESP32 FRIO

Na hora de ‘decidir’ se está frio ou quente o ESP32 o programa compara o valor da força do sinal com os valores estabelecidos por estruturas if, você pode alterar esses valores para se ajustar melhor ao seu caso ou mesmo incluir uma categoria, como “looonge”, por exemplo.

#include <WiFiUdp.h>
#include <Wire.h>
#include <SSD1306Wire.h>
#include <WiFi.h>

// informacoes da rede
const char *ssid = "Ovodepascoa";
const char *senha = "segredo123";

long wifiStrength;

//configuracoes do display
SSD1306Wire display(0x3C, 5, 4);

void setup() {
  // put your setup code here, to run once:

    Serial.begin(115200);
    connectWiFi();
    display.init();
    display.clear();
    display.flipScreenVertically();
    display.setFont(ArialMT_Plain_24);
    display.setTextAlignment(TEXT_ALIGN_CENTER);
    display.drawString(63, 12, "BORA");
    display.display();
}


void loop() {
   // Sempre verifica se esta conectado
    if (WiFi.status() != WL_CONNECTED) { 
        connectWiFi();
        display.clear();
        display.drawString(63, 12, "Vish");
        display.display();
    }

    
    wifiStrength = getStrength(10); // Faz a media de 10 medicoes da forca do sinal
     
     if(wifiStrength < -70){
      display.clear();
      display.drawString(63, 12, "FRIO");
      display.display();
    }
    
   
    if(wifiStrength >= - 70 && wifiStrength < - 63){
      display.clear();
      display.drawString(63, 12, "morno");
      display.display();
    }

    if(wifiStrength >= - 63 && wifiStrength < - 43){
      display.clear();
      display.drawString(63, 12, "quente");
      display.display();
    }

    if(wifiStrength >= - 43){
      display.clear();
      display.drawString(63, 12, "ACHOU");
      display.display();
    }
}

void connectWiFi(){

    while (WiFi.status() != WL_CONNECTED){
        WiFi.begin(ssid, senha);
        delay(3000);
    }

    // Apresenta na serial que foi possivel se conectar
    Serial.println("Conectado");

}

int getStrength(int points){
    long rssi = 0;
    long averageRSSI=0;
    
    for (int i=0;i < points;i++){
        rssi += WiFi.RSSI();
        delay(20);
    }

   averageRSSI=rssi/points;
    return averageRSSI;
}

Vale ressaltar que a força do sinal é dada em dB, então é logaritmica, não linear.

Que comece a Caça aos ovos de chocolate!

Com os dois ESP32 devidamente programados, basta colocar o ESP32 dos ovos de chocolate junto dos chocolates e ligá-lo. Após isso, você deve ligar o ESP32 Radar de chocolates que ele irá apresentar no display se ele está perto dos chocolates. Conforme a pessoa segurando o ESP32 Radar de chocolates do ESP32 dos ovos de chocolate, ele muda a imagem do display!

Gostou de fazer caça aos ovos de chocolate com ESP32? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.

Faça seu comentário

Acesse sua conta e participe

6 Comentários

  1. Olá !
    tenho um módulo destes, mas não tenho mais as referências dele… Sabe onde encontro os exemplos de código e o pinout ?
    Muito obrigado!

    1. Olá George,

      Você pode encontrar as referências aqui: https://github.com/app-js/TTGO-ESP32-OLED-0.96-LED-16-Nextion-3.5

      Abraços!
      Vinícius – Equipe MakerHero

  2. Boa noite André,
    Estou com um esp32 do mesmo modelo, não estou conseguindo integrar com o modulo HC-SR04 sensor ultrassónico, voce por um acaso não teria um código para me ajudar a integrar?
    Obrigado ….

    1. Olá Jean!

      Quando te referes a integrar, ele não está funcionando com o ESP?

      O HC-SR04 precisa de Alimentação de 5 V para funcionar, não funciona bem com 3,3 V.

      O ideal é que o pino echo seja conectado ao ESP32 por meio de um divisor resistivo ou um conversor de nível lógico para não enviar diretamente o sinal de 5 V ao ESP32.

      Abraços!
      Vinícius – Equipe MakerHero

  3. Essa sketch ficou TOP!
    Parabéns pelo bom trabalho.

    1. Olá,

      É muito bom saber que você gostou do nosso trabalho!

      Abraço!
      Rosana – Equipe MakerHero