2.4GHz scanner using RFToy

Working with 2.4GHz tranceivers can be frustrating because you must know that the sender actually is sending and that the receiver is actually receiving. After that, you must be sure that the protocols match. To help with the first part, verifying that the sender is actually sending, I’ve combined RFToy with poor mans 2.4GHz scanner. I now have a battery driven device that can be used to see if my sender is sending. In addition, it will indicate approximate channel being used. I basically only modified the “poor mans 2.4GHz scanner” to use RFToy pins and display. The picture shows a snapshot of the scanner while turning on a Sony PS3 wireless controller. Code is on github.


In future versions I plan to use the RFToy buttons to make it possible to change channel range, increase number of sweeps etc. It might also be possible to update the bars while sweeping, depending on how much processing power is needed to update the display constantly. Haven’t tried that out yet.


6 thoughts on “2.4GHz scanner using RFToy

  1. I purchased the RFToy awhile back.

    Just now getting the time to play with it.

    I have tried the rf scanner program and appears to work fine.

    I do have a question or two.

    The scale shows 10 and 127.

    As far as I know there are 126 channels in the 2.4ghz range.

    So when I see multiple peaks on a scan, is that multiple devices?

    These multiple peaks are very close together. Any way to like zoom in?

    Is norm 2 = channel 2?

    Is the height of the peak the signal strength?

    And lastly, are you still looking to add more to this?

    Thank you for a fine product



    1. Hi,
      Note that my code is just a port of the poor mans scanner described here: http://forum.arduino.cc/index.php?topic=54795.0. As stated in that thread: “…nFR24L01 only has a single bit for indicating RF-reception and the
      output was desired to be readable on a simple terminal device, a few tricks
      were necessary to create a decent display of the 2.4 GHz band”.

      One of the tricks is to loop through the channels a number of times (in my code 50 times, referred to as sweeps in my code). Each time there is a “hit”, a counter for that channel is increased. The “norm” is only a “calculated” relative measure on how strong the strongest signal channel is; based on number of “hits” on that channel throughout the 50 sweeps. It gives a “poor mans” signal strength 🙂

      The bar height is also relative, meaning a full bar height is given to the channel that has most “hits” throughout the 50 sweeps. The others are relative to that.

      If you look at my ported code, you can change the start channel and stop channel if you want to zoom in (changing the start_ch and stop_ch variables). I have planned to change that dynamically by using the buttons on the RFToy, but other projects have had priority.

      Don´t know if this quick explanation made sense at all…


  2. Hello,

    So, when I look at the screen with multiple vertical bars, I am seeing broadcasts on those multiple channels?

    How do I differentiate which vertical bar is the device I want to look at.

    If I am using a second rftoy as a sender, how do I know what bar is that sender’s bar?

    Maybe it would help of a pic of the rftoy with multiple bars annotated to describe what everything means. A pic is worth a thousand words;-)

    Yes, I agree that the use of the buttons would greatly enhance the extra features you could add.

    Thank You



    1. Each bar corresponds to one channel, starting from channel 10 at the left (with current code). If you use a second rftoy as sender, you should see a bar at the corresponding channel. A nice thing about the display is that is is 128pixels wide. That makes it easy to fit all the channels. In the current implementation it is difficult to determine exactly which channel that has traffic. Maybe I could add chanel number for the 2 or 3 highest bars… would that make any difference ? BTW, the code is there, free for anyone to improve 🙂


  3. Yes, adding that would make it easier to determine which channel I want to look at.

    By the way, just bought two of your ESPToys.

    More things to play with;-)

    Thank You



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s