Neste artigo, você aprenderá a construir seu próprio Jummer, capaz de gerar interferências em dispositivos que funcionem numa frequência de 2.4Ghz(Caixas de som bluetooth, por exemplo). Cada passo deste projeto é de suma importância, e se fizer de forma errada, o Jummer não funcionará.

Informações sobre o Jummer
O intuito deste projeto é iniciar no mundo dos Jummers. Este dispositivo cumpre com o que promete, mas se quer construir um mais potente, sugiro pesquisar por outros projetos de Jummers. O nosso é apenas para testar a tecnologia, e pode não ser forte o suficiente para gerar interferências em caixas de som que estejam muito distantes.
Em nossos testes, o jummer gerou interferências em até 12 metros de distância do aparelho de som. Porém, para que a caixa de som pare completamente, o ideal seria estar por volta dos dois metros de distância.
Existem tutoriais de Jummers que podem interferir em aparelhos com até 30-40 metros de distância e pretendemos trazer um projeto como esse. Caso queira acompanhar, sugiro inscrever-se no canal: João Firmino.
Componentes necessários:
- Placa Esp32

- Módulo antena NRF24L01

- placa perfurada universal

- 2 capacitores de 25V por 100uF
Esquemático
Primeiro de tudo: Conecte um capacitor de acoplamento(25V 100uF) nos pinos VCC e GND(Ground) de cada Antena NRF24.

Esse módulo da imagem acima é diferente do que estamos usando, mas a pinagem é a mesma, então baseie-se nela.
Instalação da IDE do Arduíno
Agora, precisamos fazer download do software que enviará o código para o nosso microcontrolador ESP32. Clicando aqui você vai direto para o site oficial do Arduíno onde tem o link para download. Para Você que já utiliza essa IDE, pode pular essa parte.
OBS: Caso você não entenda de linguagem de programação C, IDE do Arduíno, Bibliotecas da IDE, sugiro assistir tutoriais no YouTube.
Instalação de bibliotecas
Próximo passo é instalar as bibliotecas necessárias, são elas: “RF24.h”, SPI.h, ezButton.h, “esp_bt.h”, “esp_wifi.h”.
Instale as bibliotecas direto na IDE do Arduíno no gerenciador de bibliotecas. Porém, a “RF24.4” será instalada de maneira externa. Baixe clicando no arquivo abaixo:
Conexão
Agora, iremos fazer as conexões entre o ESP32 e as Antenas, soldando tudo na placa perfurada universal. Como você pode analisar, ambos têm portas de comunicação, o que precisamos fazer agora é conectar as portas de maneira correta para que a comunicação seja bem-sucedida.
Você irá fazer as conexões seguindo os dados abaixo:
Caso use apenas uma antena, opte por apenas uma dessas conexões: HSPI ou VSPI.
//HSPI=SCK = 14, MISO = 12, MOSI = 13, CS = 15 , CE = 16
//VSPI=SCK = 18, MISO =19, MOSI = 23 ,CS =21 ,CE = 22
Mas se for usar duas antenas, como neste projeto, utilize as duas conexões: HSPI e VSPI.


Cada ESP32 pode ter uma pinagem diferente, a que estamos usando é a ESP32 Dev Kit V1. Caso a sua seja diferente, pesquise no Google sua pinagem.
Conecte o VCC e o GND do módulo da antena nos pinos de 3.3V e GND do ESP32, respectivamente. Lembre-se que este módulo trabalha numa tensão de 3.3 Volts, cuidado para não ligá-lo no 5V.
Código
Chegou a hora de upar o código na IDE do Arduíno. Com as bibliotecas já baixadas, copie o código abaixo e cole na IDE. Reforçando: Caso você não saiba fazer isso, primeiramente aprenda assistindo vídeos no YouTube e praticando, depois volte aqui e faça o projeto.
Copie e cole na ide:
#include "RF24.h"
#include <SPI.h>
#include <ezButton.h>
#include "esp_bt.h"
#include "esp_wifi.h"
SPIClass *sp = nullptr;
SPIClass *hp = nullptr;
RF24 radio(16, 15, 16000000); //HSPI CAN SET SPI SPEED TO 16000000 BY DEFAULT ITS 10000000
RF24 radio1(22, 21, 16000000); //VSPI CAN SET SPI SPEED TO 16000000 BY DEFAULT ITS 10000000
//HSPI=SCK = 14, MISO = 12, MOSI = 13, CS = 15 , CE = 16
//VSPI=SCK = 18, MISO =19, MOSI = 23 ,CS =21 ,CE = 22
unsigned int flag = 0; //HSPI// Flag variable to keep track of direction
unsigned int flagv = 0; //VSPI// Flag variable to keep track of direction
int ch = 45; // Variable to store value of ch
int ch1 = 45; // Variable to store value of ch
ezButton toggleSwitch(33);
void two() {
if (flagv == 0) { // If flag is 0, increment ch by 4 and ch1 by 1
ch1 += 4;
} else { // If flag is not 0, decrement ch by 4 and ch1 by 1
ch1 -= 4;
}
if (flag == 0) { // If flag is 0, increment ch by 4 and ch1 by 1
ch += 2;
} else { // If flag is not 0, decrement ch by 4 and ch1 by 1
ch -= 2;
}
// Check if ch1 is greater than 79 and flag is 0
if ((ch1 > 79) && (flagv == 0)) {
flagv = 1; // Set flag to 1 to change direction
} else if ((ch1 < 2) && (flagv == 1)) { // Check if ch1 is less than 2 and flag is 1
flagv = 0; // Set flag to 0 to change direction
}
// Check if ch is greater than 79 and flag is 0
if ((ch > 79) && (flag == 0)) {
flag = 1; // Set flag to 1 to change direction
} else if ((ch < 2) && (flag == 1)) { // Check if ch is less than 2 and flag is 1
flag = 0; // Set flag to 0 to change direction
}
radio.setChannel(ch);
radio1.setChannel(ch1);
/*Serial.print("SP:");
Serial.println(ch1);
Serial.print("\tHP:");
Serial.println(ch);*/
}
void one() {
////RANDOM CHANNEL
radio1.setChannel(random(80));
radio.setChannel(random(80));
delayMicroseconds(random(60));//////REMOVE IF SLOW
/* YOU CAN DO -----SWEEP CHANNEL
for (int i = 0; i < 79; i++) {
radio.setChannel(i);
*/
}
void setup() {
Serial.begin(115200);
esp_bt_controller_deinit();
esp_wifi_stop();
esp_wifi_deinit();
esp_wifi_disconnect();
toggleSwitch.setDebounceTime(50);
initHP();
initSP();
}
void initSP() {
sp = new SPIClass(VSPI);
sp->begin();
if (radio1.begin(sp)) {
Serial.println("SP Started !!!");
radio1.setAutoAck(false);
radio1.stopListening();
radio1.setRetries(0, 0);
radio1.setPALevel(RF24_PA_MAX, true);
radio1.setDataRate(RF24_2MBPS);
radio1.setCRCLength(RF24_CRC_DISABLED);
radio1.printPrettyDetails();
radio1.startConstCarrier(RF24_PA_MAX, ch1);
} else {
Serial.println("SP couldn't start !!!");
}
}
void initHP() {
hp = new SPIClass(HSPI);
hp->begin();
if (radio.begin(hp)) {
Serial.println("HP Started !!!");
radio.setAutoAck(false);
radio.stopListening();
radio.setRetries(0, 0);
radio.setPALevel(RF24_PA_MAX, true);
radio.setDataRate(RF24_2MBPS);
radio.setCRCLength(RF24_CRC_DISABLED);
radio.printPrettyDetails();
radio.startConstCarrier(RF24_PA_MAX, ch);
} else {
Serial.println("HP couldn't start !!!");
}
}
void loop() {
toggleSwitch.loop(); // MUST call the loop() function first
/* if (toggleSwitch.isPressed())
Serial.println("one");
if (toggleSwitch.isReleased())
Serial.println("two");*/
int state = toggleSwitch.getState();
if (state == HIGH)
two();
else {
one();
}
}
Após colado na ide, faça upload do código na placa, logicamente, com ela conectada na USB do pc. Caso esteja dando erro na hora de upar o código, aperte novamente no botão de upload, mas desta vez segurando o botão de boot da esp32.
Pronto, agora é só ligá-lo. Se você fez tudo certo, ele estará funcionando.
Módulo da bateria
Para você aprender a fazer o módulo da bateria do Jummer, clique no nosso artigo: Módulo de bateria para dispositivo Jummer. Separamos em dois artigos para que ambos fiquem bem organizados e não muito longos.
Obrigado a você que chegou até aqui. Meu intuito com meu canal é ensinar sobre tecnologia de maneira gratuita. Caso tenha gostado, inscreva-se em meu canal João Firmino. Prometo que os próximos vídeos serão melhores que os anteriores.