Arduino DTMF Decoder and Relay Controller

Another Arduino project I’ve been working on is a DTMF decoder used to control a relay board. Using a ham radio receiver, I can switch lights, radios, computers…anything…on or off from miles away. Here’s the video:

Here’s the wiring diagram. And here’s the Arduino code.

I’m using a Sainsmart 4 relay board, although pretty much any relay board would work. You’ll also need a MT8870 DTMF decoder – these run about $2 on ebay. And of course, you’ll need an Arduino Uno. Again, check out ebay for these as well. The total cost here should be less than $12 and you’ve got a fully functioning radio controlled DTMF relay controller!

Michael Brown, KG9DW, is a regular contributor to and writes from Illinois, USA. Contact him at [email protected].

17 Responses to “Arduino DTMF Decoder and Relay Controller”

  • Stefan DO4NOB:

    Hi Michael,

    thank you for publishing this code.

    I will use it in my High Altitude Balloon Project. I will remotely cutdown the balloon from the payload over DTMF. Hope it works 😉



  • Ron WB8YFL:

    Did you have a time library installed in your arduino ide?

  • Ron WB8YFL:

    Timer library that is.

  • Ron WB8YFL:

    Added timer library, to clear errors from that. Now i’m left with the below. (i’m new to arduino can you tell?)
    Any suggestions.

    Arduino: 1.0.6 (Mac OS X), Board: “Arduino Uno”
    /Users/lucy/Downloads/ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106 -I/Users/lucy/Downloads/ -I/Users/lucy/Downloads/ -I/Users/lucy/Downloads/ -I/Users/lucy/Documents/Arduino/libraries/Timer-master /var/folders/Wv/Wv5lPBaAEjuGr0r-BcC3ik+++TI/-Tmp-/build45350888285611995.tmp/dtmf_relay.cpp -o /var/folders/Wv/Wv5lPBaAEjuGr0r-BcC3ik+++TI/-Tmp-/build45350888285611995.tmp/dtmf_relay.cpp.o
    dtmf_relay.ino: In function ‘void setup()’:
    dtmf_relay:86: error: ‘class EEPROMClass’ has no member named ‘get’
    dtmf_relay:107: error: ‘class EEPROMClass’ has no member named ‘put’
    dtmf_relay:108: error: ‘class EEPROMClass’ has no member named ‘put’
    dtmf_relay:109: error: ‘class EEPROMClass’ has no member named ‘put’
    dtmf_relay:110: error: ‘class EEPROMClass’ has no member named ‘put’
    dtmf_relay.ino: In function ‘void loop()’:
    dtmf_relay.ino:137: warning: comparison between signed and unsigned integer expressions

  • Ron WB8YFL:

    Looks like I needed to update my IDE.

  • audiofill42:

    Hello, Very nice project. But I would like to ask if it is possible to add a sequence at startup, where you should “login” first then give commands to the arduino.
    This way will be safer in use this project!

    Thanks a lot.

  • Firas:


  • WB7EGF:

    I too cannot locate the Timer.h library. Am I missing something? The sketch compiles if I comment out the timer line.

  • Sean wx8l:

    Ever figure out the timer.h issue. What library? Running genuino here…

  • Sean wx8l:

    Figured out the timer.h library issue.

    Using the Arduino compiler add the timer-master zip found here:


    FWIW, I used a 4 relay shield instead of the shown relay board and had to modify the relay pins before compiling (2, 3, 4, 5 in the included code, my shield uses 4, 5, 6, 7)

  • YO4SJI:


    I try to connect a radiometrix Rx2A to DTMF module. Should I use the Vin pin and maybe some other circuit?
    It seems that the output of the RX2A Radiometrix is not decoded.

    When I use a different DTMF source (portable radio) the output is decoded and correctly displayed.


  • Guillermo CE2IEN:

    hi, great proyect.

    we used it to remotely turn on and off an RPT.


  • DL5BCA Thomas:

    Hi Michael,
    Did you continue to work on the sketch?

    73 Thomas

  • SV1CRB Christos:

    Hi Michel.I want to work 8 relays.How can I do it…!!!!

  • KAsthuriarachchi:

    CAn i use any bulb or what ever the thing with output to relay module without having any extra code please?

  • Rick, WZ8N:


    Just wanted to let you know I built this little gadget in 2016 and installed it at our Repeater site about 20 miles form my place for remote shutdown & start up of the Repeater. There is no Internet service there. Later I added switching for battery power, separate from the usual auto transfer for extended battery life during a Utility power interruption. Now I just need to find someone in our group who is interested enough to maintain this little project after I am unable.

    Thanks for the design work and the video.


  • TA4AQG:

    How can i change the password? Can you help me please

Leave a Comment

Subscribe FREE to's
Amateur Radio Newsletter
News, Opinion, Giveaways & More!

Join over 7,000 subscribers!
We never share your e-mail address.

Also available via RSS feed, Twitter, and Facebook.

Subscribe FREE to's
Amateur Radio Newsletter

We never share your e-mail address.

Do you like to write?
Interesting project to share?
Helpful tips and ideas for other hams?

Submit an article and we will review it for publication on!

Have a ham radio product or service?
Consider advertising on our site.

Are you a reporter covering ham radio?
Find ham radio experts for your story.

How to Set Up a Ham Radio Blog
Get started in less than 15 minutes!

  • Matt W1MST, Managing Editor

Sign up for our free
Amateur Radio Newsletter

Enter your e-mail address: