Christmas gift for my 90+ granny: TV remote with big buttons

Public Chat
Similar projects worth following
Easy to use TV remote with basic functionality

NOV 2020 update : Adding support for multi-digit channel numbers.

My grandma struggles with her standard TV remote:

  • She holds it backwards, pointing it at herself.
  • She thought her TV was broken, because she could no longer switch it off.  It was found later that the batteries of the remote had run out.
  • She navigates herself into menus she can't get out off anymore.
  • She has broken buttons because she pushes them so hard. 
  • She only uses three channels : 1, 3 & 7. 
  • When pushing a key for too long, the TV interprets it as a new key: so 7 becomes 77.

We can do better:

In an ideal world, the remote would have Bluetooth low energy, so you wouldn't have to point it to the TV at all.  TV could then also send data back to the remote.  So your remote would know if your TV received the commands correctly.

Your TV would even have a button to wake-up and make the remote ring so that you can easily find it back when you misplaced it.  Well, we're not there yet.  So let's work with what we do have : infrared remote.

University of Victoria tackled the same problem in another way.  They're replacing the IR transmission by RF transmission.  The downside is that you need to hook up extra hardware to the TV-set.  You have to stick an IR transmitter to the IR receiver of the TV set.  This disables operation of the original TV remote.  You have to be sure that it keeps stuck in the correct spot.  It might fall off when someone cleans the TV.  It makes the mess of wires often found behind a TV set only worse.  The RF receiver must be on all the time, wasting power.

Proposing the following:

  • Bright color will make it easy to find.
  • Key switches from a computer keyboard are designed to be mistreated.
  • Laser diode serves two functions : visible indication that remote is operating.  Visible indication of pointing in the right direction.
  • Limiting the number of keys.  This will make it possible to use larger buttons.  It hides the unneeded features of the remote.
  • The following functionality will be present:
    • 1 button : red : TV on/off (set top box remains always on)
    • 3 buttons for the channels : 1, 3 & 7.
    • 2 buttons : volume up/down
    • 1 button : green : subtitles on/off. : When subtitles are enabled, it's no longer possible to switch channels.  The user has to leave subtitle mode before another channel can be selected.  As the remote has no way of knowing if the set top box is in subtitle mode or not, it would be better to remove subtitles altogether. 



Schematic, assembly drawing and BoM of version R0

Adobe Portable Document Format - 167.55 kB - 10/04/2019 at 19:19


  • Assembly and first tests

    Christoph Tack03/06/2020 at 20:41 0 comments

    Current consumption

    • Sleep mode : 0.7µA
    • Active mode (while pushing a button) : 43.3mA

    First assembly

    The cutouts in the front panel have been made by "mouse-byte" drilling and filing.  Milling would have yielded a cleaner result, but this is acceptable to me.

    closed view
    Screws need to be replaced by countersunk screws. Use paint mark to draw symbols on the buttonsThis LED should be mounted a little bit deeper. It'll get damaged too easily.The internalsThe internals
    front view
    This LED should be mounted a little bit deeper. It'll get damaged too easily.The internals
    inside view
    The internals

  • Front panel

    Christoph Tack01/13/2020 at 19:52 0 comments

    Self adhesive print

    This can easily ordered by online photo print services.  Probably such a label will start to loosen by the edges.  It might get dirty.  It would still require for the housing to be milled.

    PCB Front panel

    Front panel can be drilled, filed until the PCB fits.  It doesn't have to be a perfect job.  It will be covered anyway by the PCB front panel.  The labeling can be done in silkscreen.  Silkscreen is a high quality print, it will not wear or tear off.

    First job, convert the dwg design files to dxf using cloudconvert.  Then clean up and scale the front panel in Librecad.  Then it can be imported in EasyEDA.

    Front panel design

    The final front panel will be ordered in yellow soldermask.  It will be ordered after Chinese New Year because now they charge me $43 if I don't want green soldermask.

  • Schematics

    Christoph Tack05/06/2019 at 19:46 0 comments

    First draft version


    • No switch for reprogramming
    • No LED to show user that programming succeeded. The laser diode can be used to that purpose.
    • Risk of latchup through switches.  They immediately pull up the GPIO, while the boost converter has yet to start.
    • SPI lines should remain free for maybe future addons.

    First prototype


    • R18 must be increased, because the unpowered GPIOs have a too high impedance.  33K as a replacement for R18 seems to work fine.
    • R9 is needed to enable Q4 on startup.  The problem is that it prevents the circuitry from powering down.


    • Total current consumption in power down mode (EN=low) : 700nA

    Revision 1 : as patched on R0 PCB

    The previous designs had problems with reliable startup.  Either the unit didn't boot or it couldn't be turned off.  This R1.0 design fixes those issues.
    To startup, R10 must be pulled down.  This happens when a user presses one of the switches.  The schottky diodes conduct and R10 gets pulled down through R11.
    Once booted, the firmware will pull up R3.  Q4 starts to conduct and the button could be released.

    The firmware still needs to read what button has been pressed.  On the side of the MCU, internal pullups will be used.  The low impedance path from the switches to GND (through R11) must be disabled.  So D4 will be pulled up.  From then on, the MCU can read the state of each switch.

    Once the switches are released, the device will be turned off by pulling R3 low.  The device will not immediately turn on again, because there's no low impedance path from R10 to GND.  R3 has no pullup to 3V3, so there's no way it would be pulled up after the MCU switched off.

  • IR measurements

    Christoph Tack02/17/2019 at 11:29 0 comments

    The remote control combines functionality for the set top box and for the TV.

    Set Top Box : 36kHz

    • Numerical buttons (for selecting channels) : 1, 3, 7
    • 1 button : green : subtitles on/off

    Reverse engineering CISCO IR Protocol

    The output of the TSOP1736 receiver had quite some jitter on it, so I measured the pulses directly on the IR-diode of the remote control.

    Later I compared the output of the IR-diode to the output of the TSOP1736 receiver.  The receiver simply acts too slow.  It needs at least 10 pulses per burst, while RCMM only sends six.

    Capture showing why the TSOP1736 is useless for decoding RCMM.
    The TSOP94336 does a better job in decoding RCMM.

    Data pulses are sent out at a rate of 36kHz.  That corresponds to a pulse period of 27.5µs.

    Capturing the signals has been done using a Saleae Logic Analyzer.

    The CISCO ISB6030 set top box uses pulse distance coding.  The protocol is very similar to the Philips RCMM protocol.  The 32-bit version is also called Nokia32.


    • 16 pulses : 16 x 27.5µs = 441µs
    • 10 pulses pause : 10 x  27.5µs = 275µs

    Data pulses

    Always 6 pulses, followed by a predefined pause length.  The data is encoded in the pause lengths.  We notice that there are four different pause lengths used.  So we can assume that each length encodes two bits.  The bit encoding found on SB-projects is added here as a reference.

    • 10 pulses pause : 10 x  27.5µs = 275µs     --> 00
    • 16 pulses pause : 16 x 27.5µs = 440µs      --> 01
    • 22 pulses pause : 22 x 27.5µs = 605µs    --> 10
    • 28 pulses pause : 28 x 27.5µs = 770µs     --> 11


    A packet is comprised of a header, followed by 17 pulse trains.  So 32 bits are being encoded.  The 17th pulse train is only there to show the pause length after the 16th pulse train.

    Capture of a single packet showing the header followed by 17 pulse trains

    Following keys have been decoded:

    • key subtitles on/off : 0x22C0263C
    • key 1 : 0x22C02601
    • key 3 : 0x22C02603
    • key 7 : 0x22C02607

    The last 20 bits of the measured codes of the numerical keys correspond to data published here.

    Generating RCMM

    [Rafi Khan's] IR-remote library served as a starting point.  The RCMM protocol has been added.  This library implements timings using delays.  For a slow 8MHz controller, this leads to noticeable jitter on the timing of data bursts.  The receiver doesn't always react to the packets.

    The solution is to use the Timer2 COMPB interrupt instead.  It required some rework of the IR library, but the work pays off.  The generated pulse timing shows less error than the original one.

    Using Arduino Pro Mini 3V3 to generate the sequence.

    Remark the active high signal polarity.  When pin 3 of the Arduino is high, the IR LED must be on.

    Double key press avoidance

    The packet lasts about 10ms.  Every 100ms, the packet is repeated.  On the standard remote the packet is repeated as long as the button is pressed. 

    If more than 4 packets are sent, which equates to holding the button down longer than 0.3s, the receiver will interpret this as a double button press.

    Older people don't tend to be that fast, so on our remote only 4 packets will be sent out when a key is pressed.  If you keep holding the button down, after 2.5s the four packet sequence will be repeated. ...

    Read more »

  • Infrared hardware

    Christoph Tack12/07/2018 at 11:29 0 comments

    IR Transmitter


    • powerful
    • wide opening angle
    • common package
    • good availability

    IrDA modules look interesting at first sight because they also include a receiver.  They're expensive however.  At least €4/pce.  They also transmit on a shorter wavelength.

    Selected part : Lumex OED-EL-1L2

    • Viewing angle : +/- 30°
    • Radiant intensity : 60mW/sr @ 50mA
    • Wavelength : 940nm
    • Max continuous current : 100mA
    • Max peak current (1% duty cycle, <100µs) : 1A
    • Max forward voltage : 1.6V
    • Alternative part number : Everlight IR7393C
    • Digikey 67-1001-ND

    IR Receiver

    The remote of the set top box uses the RCMM protocol.  This protocol uses very short data bursts, many receivers can't cope with that.  Vishay, which has the most extensive range of IR receivers allows to filter your search by IR-protocol.

    • TSOP94336 : advised IR receiver by Vishay for RCMM.
      • Supply voltage: 2.0 V to 3.6 V

  • Firmware

    Christoph Tack12/02/2018 at 16:31 0 comments

    Boot loader

    In most cases a serial boot loader is used to upload code to the Arduino.  Using a boot loader has the disadvantage that it takes about a second after power up before the application starts.  In case of the remote, it means you would have to push at least one second for the button to be recognized.  This is undesirable.

    The solution is simple: upload code to the Arduino using a programmer, such as the AVRISPmkII.  That's it.  In PlatformIO, this means you have to select "Upload using programmer" instead of the common "Upload" button.

    Once you've done that, you've broken the boot loader.  So you'll no longer be able to upload code using the USB-UART cable.  If you want to restore the boot loader, connect the AVRISPmkII, open Arduino, select the correct board and do "burn bootloader".

    Similar projects

    Self-learning TV Remote for the elderly

    There's something interesting in every project, no matter how amateurish it may look.

    IR library

  • Button selection

    Christoph Tack12/01/2018 at 15:32 0 comments


    • Durable
    • Big enough but not too big that there's no more room for button caption.
    • Withstand excessive force


    30mm arcade buttons

    • Drawing
    • Switches are too big to fit at least 7 of them on a panel.

    Cherry MX keyboard switches

    • Designed to last, >50 million operations.

  • Housing selection

    Christoph Tack12/01/2018 at 14:45 0 comments


    • Easily found when misplaced
    • Big enough to hold easily but not too big that it's cumbersome
    • Should have a battery compartment so that unskilled personnel can replace batteries without having to open up the housing
    • Room enough for the necessary buttons
    • Nice looking housing, attractive appearance


    Hammon Manufacturing offers a wide range of suitable housings in their 1553 series.  Chinese copies are available from SZOMK: AK-H-30 series.

    Selecting color

    • Gray/black : dull, hard to find when misplaced
    • Red : red color relates to danger or things that are hot.  Preserve this color for objects that are dangerous/hot.
    • Translucent blue : useful for white or blue LEDs on the PCB.  No need to drill extra holes in the housing.
    • Yellow : perfect color

    Selecting size

    There are two options for a yellow case with a battery compartment:


    ABS blocks NIR.  Hammond Mfg. provides a PC (polycarbonate) window : 1553DIR-BULK.  This part can't be bought from the usual online resellers.  It might be better to find a piece of PC with the correct thickness and laser it.  Another option is to keep the current ABS panel and drill a hole for the LED in it.

    Battery compartment

    Room for two AA-cells, or one PP3 9V battery.  Two AA-cells will be used here because they offer the highest energy per dollar.


    1553DYLBKBAT : IP54 Handheld Enclosure, ABS, Yellow, 147 x 89 x 24mm

View all 8 project logs

Enjoy this project?



rengesole wrote 10/30/2021 at 04:28 point

What an impressive work you done here and I would love to share universal remote  project details that is also very similar to this one.

  Are you sure? yes | no

Christoph Tack wrote 11/30/2020 at 13:30 point

Thanks, Dan.  I made one for my children (5y & 2y old).  Not all TV-channels are suited for them.  Three buttons limits their possibilities.  Maybe I should pull out the connector for the laser diode, because it's too much fun for them.

  Are you sure? yes | no

Dan Julio wrote 11/29/2020 at 23:31 point

Nice job, Christoph.  Another potential benefactor of a remote like this might be people suffering with dementia.   My MIL lives in an assisted living apartment and has struggled with her TV and remote.  The remote is too complicated and modern TVs have so many features that are easy for someone like her to screw up - inputs, SAP, captioning, etc.  

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates