Code Monkey home page Code Monkey logo

esp12-mqtt-rf-jammer's Introduction

ESP12 & AD9851 DDS RF Jammer Controlled via MQTT Protocol

This project demonstrate a rather simple implementation of ESP-12 & AD9851 DDS as an RF Jammer (random frequency hopping) which can be controlled via MQTT protocol over the internet. The parameters which we can control:

  • RF Jamming action (enable/disable)
  • Starting Frequency (minimum freq.)
  • Stop Frequency (maximum freq.)

And then the device then reports back these parameters.

Tested on Wemos D1 mini and cheap AD9851 DDS module with 30MHz external clock. Compiled using Arduino IDE 1.8.9.

Dependencies

There are a few dependencies required:

ESP12 to AD9851 DDS Module Connections

Very important:

  • AD9851 DDS Module must be using 30MHz external oscillator.
  • Don't forget to pull up the DDS D0 and D1 pins to 5V thru a 10k resistor and ground the DDS D2 pin. Otherwise, the serial programming wouldn't work (please refer to the datasheet, page 15, figure 18).
  • Tips: put some length of wire to the RF output pin of the AD9851 DDS module for which acts as a rudimentary antenna. It will boost the signal greatly.

Usage

  • Please use your own username, password, and mqtt broker service, then put into:
const char* brokerUser = "my_broker_username";
const char* brokerPass = "my_broker_password";
const char* broker = "my_broker_server";

personally, i am using mqtt.dioty.co for the broker server, therefore my username would be [email protected]. You can use another mqtt broker server.

  • Put your WiFi credentials into:
wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1");
wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2");
wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");

you can whether use only one SSID and password or all of them.

  • You can use the initial default min_freq and max_freq as is, or use another frequency accordingly. Please note that absolute maximum fundamental frequency which AD9851 can generate properly is < 90 MHz (30 MHz external osc. with 6x multiplier).
  • RF Jammer status, min_freq, and max_freq is reported into the /out/stat, /out/minFreq, and /out/maxFreq topic respectively.
  • RF Jammer enabling/disabling commands, and new values for the min_freq and max_freq are received from the /in/en, /in/minFreq, and /in/maxFreq topic respectively.

In Action

  • For monitoring the signal, I'm using RTL-SDR dongle and GQRX SDR Software (rudimentary RF Spectrum display).

  • My initial min_freq and max_freq are 34.8 MHz and 35.2 MHz, therefore I tuned my RTL-SDR to 35 MHz of center frequency.

  • After the ESP12 connected to the local WiFi, it will starts to transmit a bunch of RF signals which you can monitor. Picture above: Initial test with the ESP12_RF_Jammer_Test.ino skecth. It will transmitting RF between 34.8MHz and 35.2MHz according to the default min_freq and max_freq values

  • For controlling the RF Jammer, I'm using MQTT Dashboard smartphone app with proper settings. If I were to change the frequencies or disable/re-enable the jammer, the device would response accordingly. Picture above: Demonstration for controlling the RF Jammer via MQTT protocol (ESP12_MQTT_RF_Jammer.ino skecth). First, i started off with min_freq of 40.7MHz and max_freq of 41.2MHz. Then, sometime later I changed the max_freq and then the min_freq into 41.35MHz and 40.55MHz respectively. For a couple of seconds, I disabled the RF Jammer and then re-enabled it. All is done via MQTT Dashboard app.

TODO

  • Optimize the code (there is a lot of room for improvements!!)
  • Adding capabitilies for controlling another I/O ports.
  • ...

Contributing

  1. Fork it https://github.com/handiko/ESP12-MQTT-RF-Jammer/fork
  2. Create new branch (git checkout -b myfeature)
  3. Do some editing / create new feature
  4. Commit your works (git commit -m "Adding some feature blah blah blah..")
  5. Push to the branch (git push -u origin myfeature)
  6. Create a new Pull Request

esp12-mqtt-rf-jammer's People

Contributors

handiko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

altzkend

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.