How to interface with SYN115 / SYN480R wireless transmitter and receiver with Arduino


Today we are going to interface two wireless radio frequency (RF) modules with Arduino, more specifically:

  • Synoxo SYN115 315Mhz ASK transmitter
  • Synoxo SYN480R 315Mhz ASK/OOK receiver

As stated in the review of these chips, they are not very good. That being said, it’s a nice introduction to programming wirelessly with Arduino, since they are incredibly easy to use. In this tutorial, we are going to send a signal from the first board to the second board, and this signal will toggle a LED on or off.

This is the result you will obtain:


Parts used in this tutorial

For this tutorial you will need:

  • Arduino x2, I used two Arduino Uno clones
  • Push button x1
  • LED x1
  • 330Ω to 1kΩ resistor x1 (used to limit current to the LED)
  • 51.2kΩ resistor x1 & 100KΩ resistor OR a 5V to 3.3V voltage converter board
  • SYN115 315Mhz ASK transmitter module
  • SYN480R 315Mhz ASK/OOK receiver module

All parts are readily available, the transmitters and receivers can be ordered from Aliexpress or any other supplier.

SYN115 board. Beware, the transmitter and the receiver are sold separately!
SYN115 board. Beware, the transmitter and the receiver are sold separately!


Schematics for the transmitter

SYN115 transmitter Arduino schematics
SYN115 transmitter Arduino schematics

The schematic for the transmitter is quite simple, but they are a few important things to note. First of all, the power line is connected to the 3.3V of the Arduino Uno. The SYN115 is not compatible with 5V and you will fry it by running 5V across it. Secondly, the data line (here pin 12) cannot be connected directly to the data pin. The data signal should also be 3.3V and so a voltage divider works pretty well in this situation. In the schematics above, the resistors used are 51.2kΩ (top) and 100kΩ (bottom). However, if you don’t have these values, 10 and 20kΩ should work just as well.


Schematics for the receiver

SYN480R interfaced with an Arduino Uno
SYN480R interfaced with an Arduino Uno

The receiver schematic is a lot simpler since we don’t have to fiddle around with voltage dividers. The 3.3V data pin from the receiver connects directly to Arduino pin 11, and we will use the pin 8 to connect to a LED.

In the real world, this what it should look like:

SYN115 and SYN480R both connected to Arduino Uno
SYN115 and SYN480R both connected to Arduino Uno


Arduino code for the transmitter

Before we begin fiddling with the code, I would like to address one issue. Many tutorials on the internet mention the library “VirtualWire”. These tutorials are all seriously outdated, and this library is no longer maintained.

Any new wireless project worth its salt should use “RadioHead” instead, which is an enhanced version of VirtualWire. The official page is at, and I encourage you to download the latest version from the official page. As a backup plan, a mirror of the version 1.71 is hosted here.

#include <Button.h>
#include <RH_ASK.h>

uint8_t ledStatus = false;
const char* ON_MESSAGE = new char[1]{0x55}; //binary 0101 0101
const char* OFF_MESSAGE = new char[1]{0x96}; //binary 1001 0110

//setup the driver as such:
// speed: 2400 bits per second
// rxPin - receiving pin: 11 --not used for this transmitting script
// txPin - transmitting pin: 12
// pttPin - transmitting enable pin: 10 --not used for this transmitting script. 
//    RadioHead can enable the transmitter only when transmitting data
//    but this is not supported on the SYN115 breakout board
// pttInverted: true - LOW signal will enable the tranmitter if set to true. Since we don't control the transmitter
//    we want this value to be true
RH_ASK driver(2400, 11, 12, 10, true);

//Uses Button library. Feel free to replace it by raw reading or your own version
Button button(8, INPUT_PULLUP, true);

void setup() {
  //initialize wireless driver

void loop() {


    ledStatus = !ledStatus; //turn LED on or off

      driver.send((uint8_t *)ON_MESSAGE, 1); //send one byte. To send a whole message you can use strlen(MESSAGE)
      driver.send((uint8_t *)OFF_MESSAGE, 1); //send one byte


There are two interesting features to note in the snippet above:

  • We are transmitting a single byte; hence the “1” in the driver.send call.
  • The byte for ON and OFF are respectively 0101 0101 and 1001 0110. It is good to mix and match highs and lows if you can as a byte such as 0000 0000 is not so easy to transmit over the air.


Arduino code for the receiver

The receiver code is even simpler: it keeps checking if the Arduino received a message, and updates the LED on/off accordingly.

#include <RH_ASK.h>
RH_ASK driver(2400, 11, 12, 10, true);

void setup()
    pinMode(8, OUTPUT);

void loop()
    uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen)) // Non-blocking
      if(buflen >= 1){
        if(buf[0] == 0x96){
          digitalWrite(8, LOW);
        else if(buf[0] == 0x55){
          digitalWrite(8, HIGH);



Once both boards are powered on, you should be able to toggle the LED on and off by pressing the push button on the other board. Try having your boards very close to each other at first, then slowly widen the gap between them to test how far you have signal in real life conditions.

I would like to mention that you absolutely need an antenna. Any piece of copper wire is better than nothing at all. An antenna properly fit on both ends will greatly increase the reliability of the system.

That being said, you will see that even on short distances and relatively low speeds, a 3.3V transmitter won’t do miracles. It’s fun enough to play with, but not recommendable for a serious project.

Leave a comment

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

5 thoughts on “How to interface with SYN115 / SYN480R wireless transmitter and receiver with Arduino”