Fala galera! Este é um projeto que tenho a muitos e muitos anos já projetado em minha mente, mas, utilizando outros tipos de componentes, como radio frequência, bluetooth etc... Mas eu estava pensando como falar com vocês sobre o protocolo ESPNOW, e porque não falar disso com esse projeto incrível. Ele pode ser usado não só pra alvos de "tiro", mas também para gincanas e coisas do tipo. Colocar as crianças para correr e apertar o alvo certo por exemplo. É incrível como a criatividade pode fazer coisas fantásticas com as crianças. :D
Mas vou mostrar o projeto pensando como um alvo. :D Você já tentou fazer um alvo eletrônico com Arduino e Wi-Fi? Pois é… eu também tentei. Funcionava… mas só se o sinal do roteador estivesse perfeito. Se o vizinho ligava o micro-ondas, o sistema travava. Se eu saía do quarto, a pontuação sumia. E pior: o consumo de bateria era um pesadelo. Foi aí que eu descobri o ESP-NOW — e tudo mudou. Agora, meu alvo funciona mesmo sem sinal de Wi-Fi, com latência de menos de 10ms, e dura dias com uma bateria de celular velha. E o melhor: tudo isso com componentes que você pode comprar por menos de R$ 150 na Mercado Livre. Se você é atirador amador, maker curioso ou só quer um projeto legal para treinar programação e eletrônica, esse post é pra você.
Neste projeto, você vai aprender a construir um sistema de alvo eletrônico que detecta impactos em tempo real, envia a pontuação diretamente para um controle sem precisar de roteador, e ainda dá feedback visual e sonoro. Não é só um alvo com LED — é um sistema completo de treino com precisão de laboratório, feito com peças baratas e código simples. E o melhor: você pode montar isso na sua garagem, no quintal, ou até no apartamento, sem precisar de autorização de ninguém. Vamos lá!
Antes de qualquer coisa, vamos entender por que o Wi-Fi tradicional é um péssimo escolha para sistemas de tiro. O Wi-Fi foi feito para conectar dispositivos a redes, não para comunicação ponto-a-ponto rápida. Ele precisa de autenticação, handshake, roteamento… tudo isso leva tempo. Em um sistema de tiro, cada milissegundo conta. Se o impacto é detectado em 5ms, mas o Wi-Fi demora 50ms pra enviar o dado, você perde a sensação de realidade. Além disso, redes Wi-Fi são instáveis em ambientes com interferência — e o que é mais comum em um range de tiro? Barulho, metal, motores, até celular. E se o roteador cair? Seu sistema morre. O ESP-NOW, por outro lado, é como um bate-papo direto entre dois celulares: você fala, o outro escuta. Sem intermediários. Sem rede. Sem latência. E isso é o que vamos construir hoje.
💡 O que é ESP-NOW?ESP-NOW é um protocolo de comunicação sem fio desenvolvido pela Espressif, a mesma empresa que faz os chips ESP32 e ESP8266. Ele permite que dois ou mais dispositivos ESP32 se comuniquem diretamente, sem precisar de um roteador Wi-Fi. É como se você tivesse dois walkie-talkies, mas em vez de rádio, eles usam a mesma frequência do Wi-Fi (2,4 GHz), só que de forma muito mais eficiente. Enquanto o Wi-Fi precisa de uma rede, o ESP-NOW funciona como um “chamado direto” — você fala o endereço MAC do outro e ele responde. Não precisa de senha, não precisa de IP, não precisa de DHCP. É simples, rápido e confiável.
Comparando com Bluetooth: o Bluetooth também é ponto-a-ponto, mas ele é mais lento, consome mais energia e tem um limite de 7 dispositivos conectados ao mesmo tempo. O ESP-NOW pode comunicar com até 20 dispositivos simultaneamente, com até 250 bytes por pacote, e a latência média é de 3 a 10ms. Isso é crucial para um alvo eletrônico: você quer que o LED acenda no exato momento em que a bala atinge o alvo — não 200ms depois. E o consumo? O ESP32 em modo ESP-NOW consome cerca de 20mA enquanto transmite, enquanto em Wi-Fi ativo consome 80mA ou mais. Isso faz toda a diferença se você quer um sistema portátil com bateria.
Além disso, o ESP-NOW é resistente a interferências. Ele usa técnicas de modulação e retransmissão automáticas que o Wi-Fi comum não tem. Se um pacote se perde por causa de um micro-ondas, o ESP-NOW tenta novamente automaticamente — e isso acontece em menos de 1ms. Isso é vital em ambientes urbanos, onde você tem muitos dispositivos interferindo. E o melhor: você pode programar isso no Arduino IDE, com bibliotecas nativas, sem precisar de drivers ou configurações complexas. É um dos protocolos mais subestimados da eletrônica maker, mas quando você entende, não quer mais voltar atrás.
🧰 O que você vai precisarVamos listar tudo que você precisa para montar esse sistema. Não é caro, e tudo pode ser comprado em lojas brasileiras como Mercado Livre, Loja do Mecânico, ou até no AliExpress com frete rápido. O mais importante é escolher os componentes certos — não adianta comprar um sensor barato que não detecta impacto real. Vamos por partes.
| Componente | Onde comprar | Preço médio |
| ESP32 DevKit (x2) | Mercado Livre | R$ 55 cada |
| Sensor piezoelétrico (x4) | Loja do Mecânico | R$ 8 cada |
| Resistor 1MΩ (x4) | Loja do Mecânico | R$ 2 |
| LED RGB (x1) | Mercado Livre | R$ 5 |
| Buzzer passivo (x1) | Mercado Livre | R$ 4 |
| Protoboard 400 pontos | Mercado Livre | R$ 12 |
| Fios jumper macho-macho | Mercado Livre | R$ 8 |
| Bateria 18650 (3.7V, 3000mAh) | Loja do Mecânico | R$ 25 |
| Carregador de bateria 18650 | Mercado Livre | R$ 15 |
| Cabo USB-C para alimentação | Qualquer loja | R$ 5 |
| Papelão, papel pardo, fita adesiva | Casa | R$ 0 |
Repare que temos dois ESP32: um vai no alvo (transmissor), e outro no controle (receptor). O ESP32 é escolhido porque tem Wi-Fi e Bluetooth integrados, além de 36 pinos de entrada/saída, o que permite conectar vários sensores sem precisar de multiplexadores. Um Arduino Uno, por exemplo, só tem 14 pinos digitais e não tem Wi-Fi — você precisaria de módulos externos, o que aumenta o custo e a complexidade. O ESP32 é o coração deste projeto.
Os sensores piezoelétricos são os responsáveis por detectar o impacto. Eles geram uma pequena tensão quando são pressionados — como um microfone, mas ao invés de som, respondem a vibrações. Eles são perfeitos porque não precisam de alimentação, só de um resistor para funcionar. Os LEDs RGB vão dar feedback visual: verde para 10 pontos, vermelho para 5, azul para fora do alvo. O buzzer emite um “bip” curto para cada tiro acertado — isso ajuda a manter o ritmo do treino. E a bateria? É essencial para tornar o sistema móvel. Você pode usar um power bank de celular também, mas a 18650 é mais compacta e eficiente.
⚙️ Passo 1 — Construindo o alvo físico com materiais recicláveisAntes de ligar qualquer fio, vamos montar o alvo. Você não precisa de madeira, nem de metal pesado. Um simples papelão de caixa de e-commerce já serve. Pegue uma caixa grande, recorte a frente, e cole papel pardo por dentro — isso cria uma superfície uniforme, sem reflexos, ideal para o impacto. Depois, desenhe o alvo tradicional de tiro: 10 zonas, com círculos concêntricos. Use fita adesiva colorida para marcar as zonas: amarelo para 10, vermelho para 9, azul para 8, preto para 7, branco para 6, e fora do alvo é o fundo. Não precisa ser perfeito — o importante é que os sensores fiquem atrás de cada zona.
Agora, vamos fixar os sensores piezoelétricos. Corte quatro pequenos quadrados de papelão (5x5cm) e cole um sensor em cada um. Esses quadrados vão ser colados por trás das zonas principais: uma no centro (10 pontos), uma no anel interno (9 pontos), uma no anel médio (8 pontos) e uma no anel externo (7 pontos). Use cola quente ou fita dupla face. O sensor precisa estar bem fixado, mas não apertado demais — ele precisa vibrar livremente para gerar o sinal. Se você apertar demais, ele não detecta impactos leves. Se estiver solto, pode dar falso positivo com vento.
Se você quiser ser mais ousado, pode usar uma placa de MDF de 5mm como base, e fixar os sensores com parafusos e molas — isso aumenta a sensibilidade. Mas para começar, o papelão é perfeito. E se você não tiver tiro real? Use bolas de plástico de brinquedo, ou até bolas de tênis de mesa atiradas com um elástico. O sistema vai detectar o impacto igual. O importante é que o alvo seja seguro, estável e com os sensores bem posicionados. Depois que você testar, vai ver que até um impacto fraco de uma bala de plástico gera um sinal claro. É surpreendente como a física é simples: impacto = vibração = sinal elétrico.
📶 Passo 2 — Conectando os sensores de impacto aos ESP32Agora vamos ligar os sensores. Cada sensor piezoelétrico tem dois fios: um é o sinal, e o outro é o terra. Vamos conectar o fio de sinal a um pino digital do ESP32 (vamos usar os pinos 32, 33, 25 e 26 para os quatro sensores). O fio de terra vai direto no GND do ESP32. Mas aqui vem o segredo: você precisa de um resistor de 1MΩ (um megaohm) entre o pino digital e o GND. Isso se chama “pull-down resistor” — ele garante que, quando não há impacto, o pino fique em nível baixo (0V), e não flutuando. Sem ele, o ESP32 pode ler “1” mesmo sem ninguém atirar — e isso é um pesadelo.
Por que 1MΩ? Porque o sinal gerado pelo sensor é muito fraco — da ordem de milivolts. Um resistor menor (como 10kΩ) iria drenar muito a corrente e o sinal desapareceria. Um resistor maior (como 10MΩ) poderia não estabilizar bem o nível. O 1MΩ é o ponto ideal: permite que o sinal passe, mas não atrapalha a leitura. Você pode testar isso com um multímetro: sem impacto, o pino deve mostrar 0V. Com um leve toque, você vai ver um pulso de 1V a 3V — é isso que o ESP32 vai detectar.
Imagine que o sensor é como um tambor. Quando você bate nele, ele vibra e gera um som. O microfone pega esse som e transforma em sinal elétrico. O sensor piezoelétrico faz a mesma coisa, mas com vibração mecânica. O impacto da bala é como um “bam!” no tambor. O ESP32 não lê o som — ele lê a mudança de tensão. E como ele sabe que foi um impacto e não um vento? Com o threshold. Vamos explicar isso no próximo passo.
Se você não tem resistor de 1MΩ, pode usar dois de 500kΩ em série. Ou até um resistor de 470kΩ — não é ideal, mas funciona. O importante é não deixar o pino flutuando. E não se esqueça de testar cada sensor individualmente antes de montar tudo. Use o Serial Monitor do Arduino IDE para ver os valores. Se você ver leituras constantes de 1000 ou mais mesmo sem tocar, algo está errado — provavelmente falta o resistor ou está mal ligado. A paciência aqui é sua melhor amiga.
🔌 Passo 3 — Programando o ESP32 do alvo: detectando e enviando impactosAgora vamos ao código. Abra o Arduino IDE, instale o ESP32 Board Manager (se ainda não tiver), e copie este código abaixo. Ele é o coração do alvo. Não se assuste — é mais simples do que parece. Vamos explicar linha por linha.
// Alvo Eletrônico - ESP32 Transmissor (Alvo)
#include <esp_now.h>
#include <WiFi.h>
// Endereço MAC do receptor (controle)
uint8_t broadcastAddress[] = {0x24, 0x6F, 0x28, 0x25, 0x4C, 0x23}; // MUDAR PARA O MAC DO SEU CONTROLE
// Pinos dos sensores
const int sensorPins[] = {32, 33, 25, 26};
const int numSensors = 4;
// Valores de threshold para cada sensor (ajustar conforme teste)
int thresholds[] = {100, 120, 150, 200}; // mais alto = menos sensível
// Estrutura de dados para enviar
typedef struct message_struct {
int sensorId;
int points;
unsigned long timestamp;
} message_struct;
message_struct myMessage;
// Função chamada quando o envio é concluído
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("\nLast Packet Send Status:\t");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA); // Desliga o Wi-Fi, só usa ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
esp_now_register_send_cb(OnDataSent); // Função de callback
esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0); // Adiciona o receptor
Serial.println("ESP-NOW ready as transmitter");
}
void loop() {
for (int i = 0; i < numSensors; i++) {
int sensorValue = analogRead(sensorPins[i]); // Lê o valor do sensor
if (sensorValue > thresholds[i]) { // Se passar do threshold
myMessage.sensorId = i;
myMessage.points = 10 - i; // 10 pontos para sensor 0, 9 para sensor 1, etc.
myMessage.timestamp = millis();
esp_now_send(broadcastAddress, (uint8_t *) &myMessage, sizeof(myMessage));
Serial.print("Impacto no sensor "); Serial.print(i); Serial.print(" - "); Serial.print(myMessage.points); Serial.println(" pontos");
delay(100); // Evita múltiplos envios por impacto único
}
}
delay(10); // Pequeno atraso para não sobrecarregar
}
Primeiro, você define o endereço MAC do ESP32 que vai receber os dados — o controle. Você vai descobrir esse endereço no próximo passo. Depois, você define os pinos dos sensores e os thresholds. O threshold é o valor mínimo que o sensor precisa atingir para ser considerado um impacto. Se você atirar com força, o valor pode ser 500. Se for fraco, pode ser 80. Você testa com o Serial Monitor e ajusta. Se o threshold for muito baixo, o vento ou uma vibração na mesa vai acionar o alvo. Se for muito alto, você pode atirar direto no centro e ele não detectar.
Na função loop(), o ESP32 lê os sensores em sequência. Quando um valor passa do threshold, ele cria uma estrutura com o ID do sensor, os pontos (10 - i, então sensor 0 = 10 pontos, sensor 1 = 9 pontos, etc.) e o tempo em milissegundos. Depois, envia isso via ESP-NOW. O delay de 100ms depois do envio é crucial — sem ele, um único impacto pode gerar 50 envios por segundo, porque o sensor continua vibrando. Isso é chamado de “bounce”. É como bater no tambor: você bate uma vez, mas ele continua ressoando. O delay é o “tempo de recuperação”.
Outra dica: você pode adicionar um LED piscando quando um impacto é detectado — só para saber que está funcionando. Basta colocar um LED no pino 2 e fazer digitalWrite(2, HIGH); depois de enviar o pacote. Isso ajuda na hora de testar. E não se esqueça de compilar e carregar esse código no ESP32 que está no alvo. O outro ESP32 vai receber os dados — vamos ver isso no próximo passo.
📡 Passo 4 — Programando o ESP32 do controle: recebendo e exibindo pontuaçãoAgora vamos programar o ESP32 que vai ser o controle. Pode ser um segundo ESP32, ou até um celular com Bluetooth, mas vamos focar no ESP32 mesmo — é mais confiável. Esse ESP32 vai receber os pacotes do alvo, decodificar os dados e mostrar a pontuação. Ele também vai acionar o LED RGB e o buzzer.
// Controle do Alvo Eletrônico - ESP32 Receptor
#include <esp_now.h>
#include <WiFi.h>
// Endereço MAC do transmissor (alvo)
uint8_t peerAddress[] = {0x24, 0x6F, 0x28, 0x25, 0x4C, 0x1A}; // MUDAR PARA O MAC DO SEU ALVO
// Pinos do LED RGB
const int redPin = 18;
const int greenPin = 19;
const int bluePin = 21;
// Pino do buzzer
const int buzzerPin = 22;
// Estrutura de dados recebida
typedef struct message_struct {
int sensorId;
int points;
unsigned long timestamp;
} message_struct;
message_struct receivedMessage;
// Função chamada quando um pacote é recebido
void OnDataRecv(const uint8_t *mac, const uint8_t *incomingData, int len) {
memcpy(&receivedMessage, incomingData, sizeof(receivedMessage));
Serial.print("Recebido: "); Serial.print(receivedMessage.points); Serial.println(" pontos");
// Aciona o LED RGB com cor correspondente
switch(receivedMessage.points) {
case 10: digitalWrite(redPin, LOW); digitalWrite(greenPin, HIGH); digitalWrite(bluePin, LOW); break;
case 9: digitalWrite(redPin, LOW); digitalWrite(greenPin, LOW); digitalWrite(bluePin, HIGH); break;
case 8: digitalWrite(redPin, HIGH); digitalWrite(greenPin, LOW); digitalWrite(bluePin, LOW); break;
case 7: digitalWrite(redPin, HIGH); digitalWrite(greenPin, HIGH); digitalWrite(bluePin, LOW); break;
default: digitalWrite(redPin, LOW); digitalWrite(greenPin, LOW); digitalWrite(bluePin, LOW); break;
}
// Buzzer curto
tone(buzzerPin, 1000, 200);
delay(250);
noTone(buzzerPin);
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA); // Desliga o Wi-Fi
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
esp_now_register_recv_cb(OnDataRecv); // Registra a função de recebimento
esp_now_add_peer(peerAddress, ESP_NOW_ROLE_MASTER, 1, NULL, 0); // Adiciona o transmissor
// Configura os pinos do LED e buzzer
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.println("ESP-NOW ready as receiver. Waiting for impacts...");
}
void loop() {
// Nada aqui — tudo é feito pela função de callback
delay(100);
}
Esse código é mais simples ainda. Ele só tem uma função: esperar por pacotes. Quando um pacote chega, a função OnDataRecv() é chamada automaticamente. Ela lê os dados: qual sensor foi acionado, quantos pontos, e quando. Depois, acende o LED RGB com a cor certa: verde para 10, azul para 9, vermelho para 8, amarelo para 7. E toca um “bip” de 200ms. É instantâneo — você atira, e em menos de 20ms você vê a cor e ouve o som. Isso cria uma sensação de realidade incrível.
Repare que não temos loop() fazendo nada — tudo é assíncrono. O ESP32 fica esperando, e quando chega um pacote, ele executa a função automaticamente. Isso é eficiente e não consome CPU. E o LED RGB? Ele é comum anodo (comum positivo), então para acender, você coloca o pino em LOW. Se for catodo comum, você inverte. Verifique o seu LED antes de ligar. Se não acender, teste com um código simples de “blink”.
Se você quiser, pode adicionar um display OLED de 0,96” para mostrar a pontuação total. Mas para começar, o LED e o buzzer são suficientes. E se você quiser que o controle seja portátil? Coloque tudo em uma caixa de plástico, com uma bateria 18650 e um botão para resetar a pontuação. O sistema fica como um “pontuador de tiro” real — como os usados em clubes de tiro, mas por menos de R$ 100.
🔋 Passo 5 — Configuração do ESP-NOW: pairing e endereços MACAgora, o segredo mais importante: como fazer os dois ESP32 se encontrarem? O ESP-NOW não funciona como o Wi-Fi, onde você escolhe uma rede. Ele funciona como um “número de celular” — você precisa saber o endereço MAC de cada dispositivo. O MAC é um código único de 6 bytes (ex: 24:6F:28:25:4C:23) que identifica cada placa ESP32. Sem ele, o transmissor não sabe para quem enviar.
Para descobrir o MAC do seu ESP32, carregue este código simples em cada um deles:
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
Serial.print("MAC do ESP32: ");
Serial.println(WiFi.macAddress());
}
void loop() {}
Abra o Serial Monitor, e anote o MAC de cada ESP32. O que está no alvo? Anote. O que está no controle? Anote. Agora, no código do alvo (transmissor), substitua o broadcastAddress pelo MAC do controle. No código do controle (receptor), substitua peerAddress pelo MAC do alvo. Pronto. Agora eles se encontram.
Isso é o que chamamos de “pairing” — parear os dispositivos. É como programar um controle remoto para um TV. Você não escolhe a TV por nome, você digita o código único dela. O ESP-NOW funciona exatamente assim. E se você quiser adicionar mais alvos? Simples: adicione mais endereços MAC no transmissor, e use uma estrutura de array para enviar para cada um. Mas para começar, um alvo e um controle é o suficiente.
Uma dica prática: use etiquetas ou fita colorida para marcar cada ESP32. Um azul para o alvo, um vermelho para o controle. Assim, você não confunde. E nunca, nunca, nunca use o mesmo MAC em dois dispositivos. Isso causa conflito e o sistema trava. Se você comprar dois ESP32 da mesma caixa, eles podem ter MACs próximos — mas são diferentes. Confira sempre no Serial Monitor.
🔋 Passo 6 — Alimentação e portabilidade: baterias e economia de energiaAgora que o sistema funciona, vamos torná-lo móvel. O ideal é usar baterias 18650 de 3.7V e 3000mAh. Elas são baratas, fáceis de encontrar e têm boa capacidade. Mas o ESP32 funciona em 3.3V. Então você precisa de um módulo de conversão de tensão: um buck converter (step-down) ou um módulo de 3.3V com entrada 3.7V-12V. Esses módulos custam R$ 5 e são essenciais. Se você ligar a bateria direto no ESP32, ele queima.
Com uma bateria de 3000mAh e o ESP32 consumindo 25mA em média (em modo ESP-NOW, com LED e buzzer ligados), você tem cerca de 120 horas de uso. Mas e se você não estiver atirando 24h por dia? Aí entra o modo deep sleep. O ESP32 pode entrar em um modo de baixo consumo — menos de 100μA — e acordar apenas quando um sensor é acionado. Mas isso exige um circuito mais complexo, com transistor e resistor para acionar o ESP32 via pino de wake-up.
Para simplificar, vamos usar uma solução prática: deixe o ESP32 do alvo sempre ligado, mas desligue o LED e o buzzer quando não estiver em uso. No código do controle, você pode adicionar um botão de reset e um modo “eco”: quando não houver impacto por 5 minutos, desliga o LED. Isso reduz o consumo em 80%. Com isso, sua bateria dura mais de 20 horas — mais que o suficiente para uma sessão de treino.
Se você quiser ir além, use um power bank de 10.000mAh. Ele dá 30+ horas e ainda carrega seu celular. E se você for treinar ao ar livre? Use uma caixa de plástico com vedação, e coloque tudo dentro. O ESP32 e os sensores são resistentes a umidade — mas não a encharcamento. Um pouco de fita isolante na entrada dos fios já protege.
Outra dica: use conectores JST para ligar a bateria. Assim, você pode tirar e colocar sem soldar. E nunca use pilhas alcalinas comuns — elas não fornecem corrente suficiente. Baterias recarregáveis Li-ion (como 18650) são a única opção viável.
🧪 Passo 7 — Testando o sistema: calibração e ajustes de sensibilidadeAgora vem a parte mais importante: testar e calibrar. Monte tudo, ligue os dois ESP32, abra o Serial Monitor no controle. Atire com uma bala de plástico, ou até um dedo, no centro do alvo. Veja o que aparece: “Recebido: 10 pontos”. Perfeito. Agora, atire no anel de 9 pontos. Deve aparecer “9 pontos”. Se não aparecer, o sensor está mal posicionado. Se aparecer quando você não atirou, o threshold é muito baixo.
Para calibrar, faça isso: use o Serial Monitor do ESP32 do alvo. Ele mostra os valores brutos dos sensores. Sem tocar, você vê algo como “30”. Quando você bate, vê “500”. Aí você pega o valor médio de impacto e coloca no threshold com uma margem. Exemplo: sem impacto = 30, com impacto = 450. Então coloque o threshold em 200. Isso evita falsos positivos. Se ainda der falso positivo, suba para 250. Se não detectar impacto forte, desça para 180.
Teste em diferentes condições: vento, calor, noite, dia. Se o alvo estiver perto de uma janela, o vento pode causar vibrações. Se estiver no chão, o pé pode causar trepidação. Ajuste o threshold para cada ambiente. E se você quiser usar em um range de tiro real? Use sensores mais robustos, como microswitches acionados por molas. Eles são mais confiáveis para impactos fortes.
Outra dica: use um cronômetro. Faça 10 tiros, cronometre o tempo, e veja a pontuação. Depois, faça de novo. Você vai ver como sua precisão melhora. É um treino real. E se você quiser gravar os dados? Vamos ver isso no próximo passo.
🌐 Passo 8 — Expansões do sistema: multi-alvo, app e gravação de dadosSe você quer ir além, o ESP-NOW permite até 20 dispositivos na mesma rede. Isso significa: você pode ter 3 alvos ao mesmo tempo, cada um com seu ESP32, e um único controle recebendo todos os dados. Basta adicionar mais endereços MAC no código do controle, e criar um array de pontuações. Cada alvo tem seu ID (0, 1, 2), e você mostra a pontuação de cada um em um display OLED. É como um simulador de tiro de polícia!
Se você quiser ver os dados no celular, use o Bluetooth Low Energy (BLE). O ESP32 pode ser um servidor BLE, e você cria um app simples com Thunkable (gratuito) que recebe os dados e mostra gráficos de desempenho. Exemplo: gráfico de acertos por zona, média por sessão, e até histórico semanal. Você pode até exportar para Excel. Isso transforma seu alvo em um sistema de treino profissional.
Outra ideia: adicione um cartão microSD no ESP32 do controle. Com a biblioteca SD, você pode salvar cada tiro com data, hora, zona e pontuação. Depois, você conecta o ESP32 ao PC e analisa os dados. Quem acertou mais no centro? Quem teve mais erros no 7? Isso é ciência de dados aplicada ao tiro. E se você quiser? Faça um sistema de ranking entre amigos — o melhor atirador da semana ganha um prêmio simbólico: um chaveiro de alvo!
Se você é programador, crie uma interface web com ESP32 como servidor. Acesse http://192.168.1.100 e veja a pontuação em tempo real no seu celular. Tudo isso é possível. O limite é a sua criatividade. E o melhor: tudo isso com menos de R$ 200. Nenhum sistema comercial custa menos que R$ 1000.
🔧 Passo 9 — Problemas comuns e soluções rápidasSe o sistema não funcionar, não desanime. Aqui vão os problemas mais comuns e como resolver:
- ESP-NOW não conecta? Verifique os endereços MAC. Eles estão corretos? O transmissor está enviando para o receptor? O receptor está esperando o transmissor? Confira no Serial Monitor. Se o MAC estiver errado, o pacote nunca chega.
- Sensores não respondem? Teste com um multímetro em modo contínuo. Toque no fio do sensor e veja se o som muda. Se não mudar, o sensor está quebrado. Ou o resistor está mal ligado. Tente trocar o resistor por outro de 1MΩ.
- LED não acende? Confira a polaridade. LED RGB comum anodo: pino positivo vai para VCC, e os outros para os pinos do ESP32. Se você colocar o positivo no pino, ele não acende. Teste com um código de blink simples.
- Buzzer não toca? Verifique se é passivo ou ativo. Passivo precisa de frequência (tone()). Ativo só precisa de HIGH/LOW. Se você usou um ativo e chamou tone(), não vai tocar. Troque o código para digitalWrite(buzzerPin, HIGH); delay(200); digitalWrite(buzzerPin, LOW);
- ESP32 trava ou reinicia? A alimentação está fraca. Use uma bateria boa e um buck converter. Se usar USB de carregador, pode ter pico de corrente. A bateria 18650 é mais estável.
Se tudo falhar, reinicie os dois ESP32. Às vezes, o ESP-NOW precisa de um “reset de pairing”. Desligue, espere 10 segundos, ligue de novo. Funciona 90% das vezes. E se você ainda tiver dúvidas, poste no nosso grupo do Telegram: #ArcadeMakerBR. A comunidade é ativa e ajuda!
🎯 Passo 10 — Como usar isso em treinos reais: dicas de prática para atiradoresAgora que você tem o alvo, como usá-lo? Não é só um brinquedo. É uma ferramenta de treino real. Aqui vão dicas práticas:
- Treine em casa: Faça 3 sessões por semana, 20 minutos cada. Use 10 tiros por sessão. Anote a pontuação. Veja se melhora.
- Desafio de tempo: Tente acertar 5 tiros em 10 segundos. O sistema te dá feedback instantâneo — isso treina sua velocidade e precisão juntas.
- Análise de erros: Se você sempre erra para a direita, o problema não é o alvo — é seu posicionamento. Use o alvo para identificar padrões.
- Clubes de tiro amador: Leve seu alvo para o clube. Mostre para os outros. Eles vão querer copiar. Você vira o “guru do maker”.
- Sessão típica: 50 tiros, 3 minutos. 10 pontos: 15 acertos, 9 pontos: 12, 8 pontos: 10, 7 pontos: 8, fora: 5. Média: 8,4 pontos. Isso é excelente para amador. E se você chegar a 9,2, você está no nível de competidor.
Use o sistema como um “diário de tiro”. Anote em um caderno: data, pontuação, condições (vento, luz, cansaço). Depois de 3 meses, você vai ver uma evolução incrível. E isso tudo graças a um projeto feito com papelão, sensores e código. Não é mágica — é maker.
✨ Por que isso é um projeto maker genuíno?Maker não é só montar coisas. Maker é resolver um problema real com o que você tem. Você não comprou um alvo eletrônico de R$ 3000. Você fez um com R$ 120. Você não pediu ajuda. Você aprendeu ESP-NOW, programação, eletrônica, mecânica e análise de dados. Você reaproveitou papelão, baterias velhas, fios de sobra. Você não só construiu um alvo — você construiu conhecimento.
E o mais importante: você criou algo que pode ajudar outras pessoas. Um amigo que quer treinar em casa. Um clube de tiro que não tem dinheiro. Um professor que quer ensinar eletrônica de forma prática. Isso é o espírito do maker brasileiro: simples, barato, eficaz e compartilhado.
Então, quando você terminar seu alvo, tire uma foto. Coloque no Instagram, no TikTok, no Facebook. Marque @arcademakerbr e use a hashtag #ArcadeMakerBR. Quem sabe você não vira o próximo maker famoso? E se você fizer uma versão com 3 alvos e app? Manda pra gente! Vamos mostrar no blog.
Já testou um sistema de alvo eletrônico com ESP-NOW? Se sim, conta aqui nos comentários: quantos pontos você acertou? Qual foi o maior desafio? Quais melhorias você fez? E se ainda não testou… o que está esperando? Vá na Mercado Livre, compre os ESP32, e comece hoje. Não precisa ser perfeito. Precisa ser feito.
Participem e me ajude a melhor ainda mais esse blog. :D Obrigaduuuuuuuuuuuu.