Arduino-RFpainter

Painting some funny pictures on your Spectrogram!

This project is maintained by handiko

Arduino RFpainter - Abusing FMCW to Paint Cats on Your Spectrogram

A few years ago, drmpeg wrote a nice gnuradio block which is called gr-painter. This block works very well and I had some fun with it. Now, I don’t have SDR which can transmit anymore, only receive (an el-cheapo RTL SDR dongle), and I want to with gr-painter again, so, I can’t. I have some AD9851 DDS modules lying around, so I decided to implement an FMCW version of gr-painter (because I can’t figure out how to implement OFDM on the DDS module, yet). It won’t be as good as gr-painter does (which is using OFDM) but it’s good enough for me. Sure, the DDS module is controlled using an Arduino UNO and some rather simple code.

Note, FMCW : Frequency Modulated Continuous Wave, OFDM : Orthogonal Frequency Division Multiplexing

Requirements

Precaution

This project will emit radio waves. If you don’t have any proper radio license, please do this at very low power, don’t put any RF power amplifier with it, and do at your own risk!

Principle of Operation

The detail of how one can program the AD9851 is presented in the datasheet.

Arduino UNO to DDS AD9851 connection:

Very Important: 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).

How to Put Your Own Cat (or other pics)

Signal Properties

Examples

Arduino-AD9850-Ascii-Art_Cats

This example will run the drawCat function with the scale = 2 and repeat = 2. Using RTL SDR and GQRX, set the RTL SDR center freq at 35.04 (approx.), FFT size = 32768, rate = 20fps, and Time span = auto.

Arduino-AD9850-Ascii-Art_Cats-SLOW

This example will run the drawCat function with the scale = 2 and repeat = 20. Rather usefull to generate more “hi-res” Spectrogram image. Using RTL SDR and GQRX, set the RTL SDR center freq at 35.04 (approx.), FFT size = 32768, rate = 20fps, and Time span = 5min.

Acknowledgement

Contributing

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