Project showcase
Super simple Remote Control

Super simple Remote Control © GPL3+

Simple Remote made with Arduino, for people like my wife who gets dizzy when they see a remote. Only 2 knobs: volume, channel and off/on.

  • 2,399 views
  • 0 comments
  • 5 respects

Components and supplies

About this project

The idea is to make the remote as simple as possible (for the user).

Actually I had to build a preliminary project to catch the codes of real remotes: from the TV set the On/OFF code and the Volume UP/Down code (in my case a Samsung TV.

From the Cable receiver I took channel up/down codes.

I used: Ken Shirriff's blog: An Arduino universal remote: record and playback IR signals

Once I got the codes and checked that they work one by one with a push button, I built the prototype using two mechanical rotary encoders for the Knobs, and a push button for the On/OFF switch.

It turned out that the rotary encoders are very noisy and create "bouncing" channels and volume went up and down almost randomly until I found the "bouce.h" library, tweaking with a delay managed to send clean pulses in every notch in the knob.

I made a plywood box as small as I could, (I ordered some Arduino Nano to make all the thing smaller, (but the mail in Israel is Snail mail) for the Knobs i used two plastic caps from juice bottles with some epoxy putty inside.

Code

Super Simple RemoteArduino
With the remote codes for a Samsung TV and the Israel cable receiver (Thomson)
#include <Bounce2.h>
#include <IRremote.h>
IRsend irsend;//ir led in pin D3

#define pin1 11 //rotary encoder for channel
#define pin2 12 //rotary encoder for channel
#define pin4 9 //rotary encode for volume
#define pin3 10 //rotary encode for volume
#define pushbutoon 4 //pushbutton for on off

int khz=38;  //frequency for ir send

//TV ON/OFF
unsigned int Signal_0_0[] = {4550,4400,600,1650,550,1650,600,1650,550,550,600,500,600,550,550,550,600,500,600,1650,600,1600,600,1650,550,550,600,500,600,550,600,500,600,500,650,450,650,1600,600,500,650,450,650,500,600,500,600,500,600,550,600,1600,600,500,650,1600,650,1550,650,1600,650,1550,650,1600,650,1600,600}; //AnalysIR Batch Export - RAW
// volume up
const unsigned int S_vup[68]={4600,4350,650,1550,700,1500,700,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,450,650,1550,700,1500,700,1550,700,1500,700,1550,650};

// volume down
const unsigned int S_vdown[68]={4600,4350,700,1550,650,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,450,650,1550,700,400,700,400,700,450,700,400,700,400,700,400,700,1550,700,400,700,1500,700,1500,700,1550,700,1500,700};





// Instantiate a Bounce objects
Bounce bouncer1 = Bounce( ); //channel
Bounce bouncer2 = Bounce( ); //volume
Bounce bouncer3 = Bounce( ); //on-off

void setup() { 
  pinMode(pin1,INPUT);
bouncer1 .attach( pin1 );
 bouncer1 .interval(5);
 pinMode(pin2,INPUT);
  pinMode(pin1,INPUT);
bouncer2 .attach( pin3 );
 bouncer2 .interval(5);
 pinMode(pin2,INPUT);
bouncer3 .attach( pushbutoon );
 bouncer3 .interval(5);

  
  Serial.begin(9600);
  
}

void loop() {
 // Update the debouncer
  bouncer1.update ( );
bouncer2.update ( );
bouncer3.update ( );
 // Turn on or off the LED and
 // increment or decrement the counter
 if ( bouncer1.risingEdge()) {
   if (digitalRead(pin2)){
     Serial.println("CHANNEL UP");
  irsend.sendNEC(0xC0C8C73, 32);
     
   }else{
     Serial.println("CHANNEL DOWN");
      irsend.sendNEC(0xC0C0CF3, 32);
   }
 } 


 if ( bouncer2.risingEdge()) {
   if (digitalRead(pin4)){
for (int i = 0; i < 3; i++) {
 irsend.sendRaw(S_vup, sizeof(S_vup)/sizeof(int), khz); //AnalysIR Batch Export - RAW  delay(40);
 delay(20);
 }
     Serial.println("Volume UP");   
   }else{
        for (int i = 0; i < 3; i++) {
 irsend.sendRaw(S_vdown, sizeof(S_vdown)/sizeof(int), khz); //AnalysIR Batch Export - RAW  delay(40);
 delay(20);
 }
     Serial.println("Volume DOWN");
   }
}

if ( bouncer3.risingEdge()) {
   if (digitalRead(pushbutoon)){

    for (int i = 0; i < 3; i++) {
        irsend.sendRaw(Signal_0_0, sizeof(Signal_0_0)/sizeof(int), khz); 
        delay(40);
      }
    Serial.println("On OFF");
   }
}

}

Schematics

supersimpleremote proto building
Supersimpleremote%20schema

Comments

Similar projects you might like

Control an LED with the Remote Control

Project showcase by Nicholas_N

  • 11,114 views
  • 5 comments
  • 16 respects

Servo Control with TV Remote Control

Project showcase by eldo85

  • 12,172 views
  • 6 comments
  • 34 respects

Control Your Computer With A Remote Control

Project tutorial by Arduino_Scuola

  • 8,021 views
  • 1 comment
  • 9 respects

Turn LEDs On/Off via Remote Control

Project tutorial by ismystore

  • 9,736 views
  • 1 comment
  • 8 respects

IR Remote Control Car - Updated

Project tutorial by comptek4

  • 4,725 views
  • 6 comments
  • 3 respects
Add projectSign up / Login