Faça Seu Dispositivo que Gera Interferência em Caixas de Som

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
Esp32
  • Módulo antena NRF24L01
Módulo antena NRF24
  • placa perfurada universal
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.

Pinagem 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.

Imagem: mischianti.org

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.

Foto de João Firmino

João Firmino

Redator da Aceleron