Controlling your light switch using a remote control from the comfort of your bed sounds good and convenient, such wireless communication system is one of the comforts you can create for yourself using arduino.
- In this tutorial you will learn how to make a remote control lamp holder.
Components needed for the prototype design of Arduino remote control light switch include:
- One Arduino UNO board ————– Buy Now
- FicBox CTYRZCH HX1838 Infrared Remote Control ——–Buy Now
- AA3P TK19 Infrared receiver or IR Receiver Module DIY Kit HX183 ————Buy from Amazon
- 5 volts Relay———————Buy from Amazon
- Adjustable 12 volts AC-DC power supply———-Buy from Amazon
- One bread board ————Buy from Amazon
- Bunch of jumper wires ———–Buy from Amazon
- Threaded Lamp holder—————-Buy from Amazon
- One 220Ω 1/2W resistor ———- Buy from Amazon
- One IN4001 diode ————- Buy from Amazon
Most electronic devices at home and offices use remote control; televisions, air conditioner, stereo player, DVD, etc. most buttons on these remote control devices are not often used. Instead of having these buttons useless, you can program them to work with arduino and enjoy more convenience with them. However, to make your design unique, you can use a new remote controller altogether. A typical less expensive, easy-to-get and programmable remote control you can use is the one shown in figures 2 and 3 below. You can buy it here.
The three main components for this project
The three main components to make arduino remote control light switch are the arduino microcontroller board, the IR transmitter (remote control) and the IR sensor receiver.
Arduino microcontroller board:
We have already discussed how to use an arduino board in the previous tutorial; you may want to go through that tutorial first.
Infrared (IR) remote control [Transmitter]:
Infrared (IR) remote control is a remote control that sends out infrared light from an IR LED. Infrared is one of the frequencies or wavelengths found in the electromagnetic spectrum with a wavelength longer than that of the visible light (700nm-1mm), hence we cannot see most infrared radiations with our eyes’ lenses, but, a smart phone camera’s lens can view it. So, put your remote control under a smart phone camera and press a button, you will see the remote control LED blinking (at a frequency of 38,000 Hz or 38 KHz per second). Information can be encoded into this wave at this frequency to make it unique and different from other IR waves in the environment, this process is called modulation, the information can then be sent wirelessly to a receiver sensor which receives and demodulates the information for interpretation and usage with the help of a microcontroller.
Infrared receiver sensor [Receiver]:
This sensor receives the information encoded in the infrared light from the remote control and demodulates the wave to extract the encoded information. The information is subsequently sent to a microcontroller for processing, in this case, the arduino board contains the microcontroller which is an ATmega 32p-pu integrated circuit. For this project, we will use an AA3P TK19 IR sensor receiver shown below.
To use an IR remote control to program a circuit, you need to first extract some information from the remote control, which you can use to program the circuit. To extract the information encoding hexadecimal files of an IR remote control, you need to do some tinkering using arduino and an IR receiver like the AA3Ptk19 shown above. Connect the circuit as shown below:
After you have connected the circuit, connect the arduino board to a PC that has arduino IDE. Follow the steps below to program the circuit. You have to first download the IRremote library by Ken Shirriff.
- Open the arduino IDE
- Go to Sketch → Include library → Manage libraries
- Type and search for IRremote , install the IRremote by Ken Shirriff
- After installing the library, close the download page
- Go to File → Example → IRremote → IRrecvDemo
You will see a sketch like the one shown below
Upload the sketch and open the serial monitor console window to view the extracted codes. Follow the procedure:
Go to: Tools → Serial Monitor or use the shortcut (Ctrl+Shift+M)
Aim the remote control at the AA3P TK19 IR receiver sensor, press the buttons and you will see that any button you pressed has associated with it a code that is displayed on the serial monitor console window. You can copy the codes associated with each button. For the remote we are using, here are the button codes:
Having extracted the codes, it’s time to use the codes to program our circuit.
Firstly, connect the circuit as shown below. I tactically combined Fritzing and some windows Image editor to get the pictorial image.
Circuit connection explanation:
- Connect the 5v pin of the arduino to the middle lead of the IR receiver
- Connect one end lead of the IR receiver (the one nearest to the middle lead) to the ground pin of the arduino
- Connect pin 7 of the arduino to the far end lead of the receiver
- Connect the collector lead of the transistor to the anode lead of the diode and one lead of the power supply leads of the relay.
- Connect the base lead of the transistor to one lead of the 220Ω resistor
- Connect the emitter lead of the transistor to the ground pin of the arduino and the ground point of the AC-to DC power supply
- #Connect the second lead of the resistor to pin 10 of the arduino
- Connect the cathode lead of the diode to the other power supply lead of the relay and the ADJ 12 volts point of the power supply.
- Connect the common lead of the relay to the AC supply point of the AC-DC power supply.
- Connect the normally open lead of the relay to one lead of the lamp holder.
- Connect the other lead of the lamp holder to the other AC point of the AC-DC power supply.
After making the connections, connect your arduino board to the PC, check for COM port connection. Download Code, copy and paste the code. Your sketch should look like this for Arduino IDE:
If you are using Fritzing code editor, your code should look like the image below:
I explained each code line of the sketch after the double solidus character or forward slash. In arduino programming, anything written after the double slash in same line has no impact on the program. It is used to make comment on each line of the sketch as I did in this sketch.
I will make a tutorial in the future to explain the arduino codes and functions.
If you upload the sketch (arduino source code is called sketch) above to the arduino, connect an Alternating current (ac) light bulb to the lamp holder, press the button marked 1 on the remote control, the light bulb will come ON, and when you press the button again, the light bulb will go OFF. Now, if you watch closely, you will discover that we used the hex file data of the remote button marked 1 to write the program. Check figure 7 and line 19 of the arduino IDE sketch screen shot in figure 9 to confirm this. We used the information from the remote to write the sketch. You can use any of the hex file data to write the sketch.
How the circuit is implemented
When you press the button marked 1 the first time, after powering the arduino board, the IR remote control sends out a data modulated signal to the environment, the IR receiver sensor receives the signal, demodulates it, then sends the demodulated information to pin 7 of the arduino microcontroller board, the microcontroller processes the information and prompts pin 10 of the arduino board to output 5volts DC signal, this 5volts is sent to the base of the TIP122 power transistor via the 220Ω current limiting resistor. When the transistor is driven to its saturation point, DC voltage moves from the AC-DC power supply through the relay, enters the transistor’s collector and flows down to its emitter and from the emitter to ground. As current passes through the relay, it is energised to switch. As the relay switches with a click sound, it closes its normally open switch, thereby creating a conducting part for 220volts current to flow from the power supply to one lead of the lamp holder, and then switches ON the light bulb which is connected to the lamp holder, then, it flows to the other lead of the lamp holder and through that part returns to the other 220volts supply point of the power supply. In this process, we have switched ON the light bulb using the remote control.
To turn OFF the light bulb, we press the button marked 1 again, when we do that, the same first three actions taking in the first case will be repeated, however, the microcontroller senses that the button has been pressed the second time, it prompts pin 10 of the arduino to output 0volts, and when this happens, the transistor will switch over to cut-off mode, the relay will be de-energised with its contacts returning to normally closed, and when this happens no 220v current will flow from the power supply to the light bulb and the bulb will go OFF.
The function of the diode is to gradually damp the excess inductive voltage that is generated in the relay coil when it is de-energised.
- With arduino we can design a remote control light switch using IR transmitter and receiver.
- The remote transmits modulated data
- The receiver receives and demodulates the data and sends result to the microcontroller
- The microcontroller switches a transistor through which a relay is energised or de-energised
- The energised or de-energised relay switches ON or OFF the light bulb via 220v ac power supply.
- In our next tutorial we will implement the circuit as a standalone device to be installed in a home or office.
How can you use two buttons of the remote control to turn the light bulb ON and OFF instead of just one button?