Handheld 2.4GHz Spectrum Analyzer

Finally I got my Spectrum Analyzer to work.

At first I was curious if I could use the display from an old Nokia cellphone I disassembled in conjunction with the Arduino. So I was looking for anything that could help me in doing so.

Then I stumbled across Miguel A. Vallejo’s Handheld 2.4GHz Spectrum Analyzer.

Putting it into a cellphone case would be too cool, but I don’t solder SMD, and I had an Arduino Nano lying around. So I ported the project to the Arduino platform. As the Arduino Nano operates at 5V and the display and the radio both at 3.3V, I had to use voltage dividers on the signal lines.

The CYWM6935 is kind of hard to get in Switzerland. Either you pay 3 or 4 times the regular price for the device or ridiculous shipping fees or both. I ended up ordering one from Farnell for CHF 48 including shipping.

The main problem I was chasing for a while resembled to the following: I made a voltage divider for the 3.3V to power the display and radio without considering the resistance of the circuits. So the driving voltage was too low for operation. Ha, out of training in designing electronics… In the end I’m using the 3.3V from the Arduino. I thought I read somewhere that it works only when powered from USB, but in my tests it works on battery as well.

Then I used the delay() function common in arduino instead of _delay_us() in Miguel’s code. Until I figured out the difference, It took about 30 seconds for a full sweep. Now it does about five sweeps a second.

Now, It works! I can see Bluetooth, Wifi and microwave oven radiation. The only drawback is that it doesnt always pick up very short transmissions like beakons.

Here is the source code for Arduino on github. Make sure to also look at the forks that improved my design.

It’s now also on the Arduino Playground.

Join the Conversation


  1. Hi Richi,Just a note of thanks for publishing the code. I made an analyser with no major problems. I changed the SPI library to the latest that comes with Adruino 1.0.1 and modified your libraries and main sketch to suit. The only other thing I had to do was reduce the contrast which was at maximum. Your code was well anotated so this was easy to do. Thanks for publishing such an interesting project. Best regards Andrew.

  2. Hi Andrew, nice to see some feedback here.
    Would be nice if you could fork my code on github and commit your changes there. Somebody already did that, and he also updated the SPI library.
    Which Arduino did you use for the project? I have some LeoStick’s from Australia here waiting for a project. They look really cool…

  3. Can we such analyser using the Raspberry Pi, because it eliminated the complex part of using the LCD. We can simply ssh.

    1. sorry for the mistakes in my English! The correct question is

      Can we use such analyser using the Raspberry Pi, because it eliminates the complex part of using the LCD. We can simply ssh.

      1. It should certainly be possible. The RaspberryPi has SPI pins that can be used. And they are already 3.3V so, no level conversion is needed. You just need to convert the code. The possibilities for displaying are certainly broader. But what would you use ssh for in this?

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.