Introducing RFToy 1.0

Today I am introducing the first version of RFToy — an Arduino-compatible gadget for interfacing with Radio Frequency (RF) modules. First, let me show you a few pictures of RFToy and a video introduction:


RFToy is available for purchase at Rayshobby Store.

  • ATmega328p @ 3.3V, 8MHz, with CH340G USB-serial converter and Arduino bootloader.
  • Programming in Arduino using the on-board mini-USB port.
  • One 128×64 OLED display, three tactile buttons.
  • 20mm coin battery holder, and slide switch to select between USB or battery power.
  • Pin headers for plugging in 433/315 MHz RF transmitter and receiver modules, and MOSFET power switches for them.
  • 3.5mm audio jack to output receiver signals to a computer’s line-in port, to monitor RF waves.
  • Pin headers for plugging in nRF24L01 transceiver.
  • Pin headers for connecting external components and/or breadboard experiments.

So in essence, RFToy is a 8MHz Arduino with buttons, OLED display, battery holder. It’s compact (1.5″ x 2.3″) and it’s suitable for a variety of projects involving RF modules.



As shown in the video above, I’ve written a couple of examples to demonstrate the basic features of the RFToy.

  • RF Recorder: this demo shows how to use RFToy to decode signals from the remote control of a typical wireless power socket, store the decoded signal in EEPROM, and play it back to simulate the remote control. You can store up to 7 different signals, allowing you to control up to 7 power sockets. The demo is based on the RCSwitch library, and it has a basic UI using the OLED display and buttons.
  • Wireless Temperature Sensor: this demo uses a pair of RFToys — one RFToy has a thermistor (connected to analog pin A1) and sends out the temperature reading periodically through its 433MHz transmitter; the other has a 433MHz receiver, and displays the received value to the OLED. This demo is based on the VirtualWire library, and uses the watchdog timer and power-down sleep to save battery life when the sensor is not transmitting data. A variant of this demo is also provided using a pair of nRF24L01 transceivers and the Mirf library.
  • Interfacing with Off-the-Shelf Wireless Sensors: previously I’ve written several blog posts about using Arduino to interface with off-the-shelf wireless temperature, humidity, rain, and soil moisture sensors. Since these sensors all work in the 433MHz frequency band, these demos can all run on RFToy, with sensor values displayed onto the OLED.

With the built-in buttons, display, and Arduino compatibility, there are tons of other projects you can build with RFToy.

User Manual

RFToy is open-source. You can check out its Arduino library code at, and hardware design files at Some technical details are provided below:

Note: the content on this page is published under Creative Commons Attribution-ShareALike (CC BY-SA) 3.0 License. Content reuse is allowed. If you have a project/product based on RFToy, please acknowledge my contribution. The software code and hardware design are published for educational purpose.

Purchase Link

43 thoughts on “Introducing RFToy 1.0

  • November 10, 2014 at 6:30 am

    How useful that it has an nRF24L01 header on it. I’ve often been somewhat annoyed that the otherwise-useful module has an awkward pinout, making it impossible to use on a breadboard or similar.

  • Pingback: RFToy Makes Wireless Projects Easier

    • November 14, 2014 at 12:22 am

      That depends on if there is a mesh network library for nRF24L01. I think I’ve seen it somewhere. You can google to find more information.

  • November 10, 2014 at 9:35 am

    Ray, awesome job. Out of curiosity what is the operation temperature range for the device? Could it and the OLED survive -20c?

  • Pingback: RFToy – interfacing with RF modules | Weatherstation +

  • November 25, 2014 at 2:28 pm

    nice toy to test all RF messages in the wild, Ray
    for the mind sake of your mac users, please download the driver for CH340G USB-to-Serial converter at: (with the fix with the space inside the name of the usb com) to replace yours.
    If running on Yosemite, please follow the tip to avoid strict checking of kernel extension.
    More explanations here :

  • Pingback: 2.4GHz scanner using RFToy | Weatherstation +

  • May 1, 2015 at 3:30 pm

    Thanks to create RFtoy.
    I’ve two questions:
    1.- Why RFtoy works properly if MISO, MOSI and SCK pinout is not the “official” Arduino SPI pinout? Now I want to use a CC1101 and I wonder if it’s necessary to edit SPI.h library.
    2.- If I use D10 pin to connect a DHT22 data, the system doesn’t works. It’s any incompatibility?


    • May 4, 2015 at 1:51 am

      1. I am not sure what you mean. Which pinout are you referring to? There is a 2×3 pinout for ISP programming (which we use to flash the bootloader), and there is a 2×4 pinout for nF24 module (which also uses the SPI interface.
      2. Pin D10 should be set as a digital OUTPUT pin, because it’s the hardware SPI enable (SS) pin and it should remain an output pin. Please use a different pin to interface with DHT22.

  • May 8, 2015 at 11:15 am

    Hi Ray. Thanks for your answer (it seems missing!!).
    1)My first question was about JP5 header (ISP interface with NRF24L01):
    In MIRF arduino official:
    MISO -> 12
    MOSI -> 11
    SCK -> 13
    CE -> 8
    CSN -> 7
    In RFToy_JP5 header:
    MISO -> 16
    MOSI -> 15
    SCK -> 17
    CSN -> 25
    CE -> 26
    IRQ -> N.C.?
    cePin=17; software config.
    csnPin=16; software config.

    It’s all OK? because official Mirf hasn’t the same pinout than RFToy.
    2) Second question (D10):
    Then, when ISP is used, D10 has to be not used?

    Thanks again!!

    • April 20, 2016 at 5:27 pm

      Very good product.
      With CC1101 modules (elechouse, for example), it necessary to connect SPI_GO02 with one of RFToy pins? IRQ pin maybe? (in this case a extra wire is needed).

  • September 11, 2015 at 10:44 am

    I have my RFToy and have no problems getting it to record signals, but I seem to be having some issues sending the data once captured. I have tried several outlets and even with less than 12 inches between RFToy and the outlet, it doesn’t seem to be working.

    • September 14, 2015 at 8:32 pm

      Do you have an antenna soldered to the transmitter? Sometimes long antennas actually have a negative impact. Try to shorten the antenna. It’s also possible that the transmitter might be defective and not working, in which case we can provide a replacement.

  • September 14, 2015 at 8:49 pm

    Nope. It’s all stock. I’m familiar with tuning antennas to specific freq’s so I haven’t messed with it.

  • November 7, 2015 at 4:55 pm

    I have a windows blind that is currently controlled by a RF remote (the spec says it uses RF freq 2.4 GHz).
    I was hoping to use the RFToy with nRF24L01 to capture the RF code and do some automation around it.
    I noticed that the RFToy is not detecting the RF signal. I am sure I am missing something here. Anyone has any experience automating Window Blinds using RFToy ?

  • December 10, 2015 at 12:06 am

    Anybody who can tell if these are able to connect to somfy rollerblinds out off the box?. mine is using the 433MHz, but i know it is not always that easy to connect to all 433MHz products.

    • December 17, 2015 at 3:24 pm

      Depends on how the rollerblind signals are encoded. You probably want to use RFToy to sniff the signal first to check how the signals are encoded.

  • April 16, 2016 at 7:38 am

    Great stuff. Is it possible to sniff 933mhz? Have an alarm system with door sensors operating in 9xx MHz range. If you had 933 receiver plugged in, would it work with rf toy?

    • April 16, 2016 at 8:56 pm

      Yes, if you plug in a 933MHz receiver you should be able to sniff the signal. If the encoding matches what RC-Switch library can decode, it should be able to identify the signal immediately. Otherwise you may have to manually check the sniffed signal and find out the decoding pattern.

  • April 20, 2016 at 5:31 pm

    When a CC1101 module is connected (elechouse, for example), is it necessary to get GO02 pin connected to any RFToy pin? …the IRQ pin is the answer? (in this case, a extra wire is needed).

  • May 12, 2016 at 9:19 pm

    What is the maximum output current for the extra analog pins? I’d like to drive a small speaker.

    • May 13, 2016 at 12:15 am

      I think you mean the PWM pins (digital pins that can output PWM signals). On Arduino the maximum output current is generally around 40mA.

  • June 28, 2016 at 2:18 am

    I’m having some trouble driving simple buzzers and LEDs with the digital breadboard pins (D3 (pin 1), D10 (pin 14)) and reading with the analog pins (A1 (pin 24)). When I write the pins high using the Blink Arduino example, voltage is still zero when measured with the multimeter. Is there an additional step that is necessary with the RFToy? I’m having no problems blinking the internal LED (pin 13).

    • July 1, 2016 at 1:12 am

      I don’t understand what you mean by D1 (pin 1), D10 (pin 14) — what is pin 1 and pin 14?

  • October 16, 2016 at 6:29 am


    After 3 days of successful experiments, today my RFTOY failed.

    Having trouble uploading sketch to board.
    stk500_recv(): programmer is not responding

    Also when powering on dont see activity on LED SCK and OLED doesnt turns on.

    Could be bootloader broken ?

    Thank you.

    • October 24, 2016 at 10:32 am

      It’s possible that the microUSB jack has got disconnected. Can you check the microUSB connector and see if there is any visible damage?

      • October 24, 2016 at 11:35 am

        Thank you for ur reply.

        Problem solved. I somehow fried CH340 and it was mangling TX/RX pins during boot.
        Soldered ISP pins and flashed with Avrisp. Kinda inconvinient but … will order some CH chips.

        By the way ISP pins are reversed on your PCB 😀

        Thank you one more time. You have awesome products.

  • April 11, 2017 at 1:08 pm


    This has been a really great product, however I broke the i2c oled screen. Could you point to me which one to purchase as replacement?

    Thank you,


    • May 29, 2017 at 10:43 pm

      It’s an I2C OLED display (the chip number is SSD1306).

  • April 28, 2017 at 10:50 am

    I am looking for a tool to remote control my garage door and window roller shutters (898Mhz, rolling codes)
    Could this be used for that? Where could I find 868 modules?

    • May 29, 2017 at 10:37 pm

      Rolling code requires proprietary encoding chip. They are not publicly available. Only the manufacturers have them.

  • May 30, 2017 at 7:22 pm

    Just received my RFToy. Maybe a stupid question but is an antenna required to be soldered onto the receiver and transmitter for it to work? I had a very quick play out of the box and was not able to sniff any signals.

    • June 1, 2017 at 7:21 pm

      Antenna is not required. What’s the brand name and model number of your RF socket? It may be that it’s using a protocol not supported by the built-in firmware of RFToy. But there are some work-arounds.

        • June 5, 2017 at 1:31 pm

          OK, I am not familiar with this brand. Do you have Etekcity brand? That should work well with RFtoy.

          • June 5, 2017 at 9:38 pm

            I can’t see that Etekcity produce an Australian socket. Searching online I can see a product (also called RC-13) from Digoo, any experience with that? Another product found is Doss MRC03V2. Struggling to find anything else…

Leave a Reply