WiFi-enabling a remote IR RGB bulb with a Raspberry PI
Table of Contents
1 Description
This page describes how I use a Raspberry PI to control an infrared remote-controlled RGB LED bulb mounted inside a lamp.
2 News
- 8 Mar 2015: initial
3 Hardware
- Raspberry PI Model A+
- An expensive micro SD card (expensive to decrease chance of SD card corruption after unclean shutdowns of the PI)
- Edimax EW-7811Un wifi usb adapter
- Cheap RGB LED E47 with remote from ebay (picture)
- IKEA FADO table lamp
- Samsung 5V 0.7A microusb charger (0.7A seems to work)
- 1838 IR receiver module (What I had lying around)
- NPN transistor
- 100k resistor
- 47 resistor
- 5mm IR LED
5 Making the IR transmitter and receiver
I used the schematic from the Rasbberry PI IR schematic from alexba.in. My IR receiver have the pins different and I replaced one of the IR LEDs with a 47 resistor. I do not know if replacing a IR LED with a 47 resistor is good, bad or irrelevant.
Here is how it looks:
And here is an annotated version showing what is connected to what on
the other side. GPIO23
is an input pin and GPIO22
is an output pin
from the PIs perspective:
6 Setting up LIRC
- Install LIRC
sudo apt-get update sudo apt-get install lirc
- Load modules by adding the following lines to
/etc/modules
:
lirc_dev lirc_rpi gpio_in_pin=23 gpio_out_pin=22
- Allow loading the modules by adding the following line to
/boot/config.txt
:
dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22
- Set up LIRC by setting editing relevant lines in
/etc/lirc/hardware.conf
:
DRIVER="default" DEVICE="/dev/lirc0"
- Reboot
7 Recording IR signals
- Ensure LIRC is set up, see previous section.
- Shut down the LIRC service
sudo /etc/init.d/lirc stop
- Start recording signals from our receiver to a conf file
sudo irrecord -d /dev/lirc0 ~/lircd.conf.mine
- Follow instructions and record keys of the remote. You can name keys anything as long as you use lower-case letters. I had to do this three times before it recorded the signals correctly for it to work when sending signals though LIRC. My problems might be because I was too quick filling out the second line of dots in the first step of the irrecord program. I just clicked the same button as fast as I could instead of holding it down for a second and using different buttons.
- Give your newly recorded signals a name by editing
~/lircd.conf.mine
and changing the line starting withname
:
name ledremote
- Tell LIRC to use your signals:
sudo cp ~/lircd.conf.mine /etc/lirc/lircd.conf
- Start up the LIRC service again
sudo /etc/init.d/lirc start
8 Sending IR signals
- Ensure LIRC is set up and running
- Figure out your remote name from
/etc/lirc/lircf.conf
, for this example, the name isledremote
. - Figure out which of the recorded signals from
/etc/lirc/lircf.conf
you want to send, for this example, we want to send theblue
signal. - Run irsend
irsend SEND_ONCE ledremote blue
9 My recording of the RGB LED remote
Download: lircd.conf.ledremote
Or see what the file looks like here:
# led remote # KEY_Fn are buttons starting top left going left to right, top to bottom begin remote name ledremote bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9123 4460 one 627 1640 zero 627 510 ptrail 629 repeat 9125 2194 pre_data_bits 16 pre_data 0xFF gap 108219 toggle_bit_mask 0x0 begin codes on 0xA25D off 0xE21D run 0x22DD rgb 0xE01F brightness_up 0xA857 brightness_down 0x906F red 0x6897 green 0x9867 blue 0xB04F orange 0x30CF light_green 0x18E7 light_blue 0x7A85 purple 0x10EF yellow 0x38C7 lighter_blue 0x5AA5 light_purple 0x42BD beige 0x4AB5 white 0x52AD KEY_F1 0xA25D KEY_F2 0x629D KEY_F3 0xE21D KEY_F1 0xA25D KEY_F4 0x22DD KEY_F5 0x02FD KEY_F6 0xC23D KEY_F7 0xE01F KEY_F8 0xA857 KEY_F9 0x906F KEY_F10 0x6897 KEY_F11 0x9867 KEY_F12 0xB04F KEY_F13 0x30CF KEY_F14 0x18E7 KEY_F15 0x7A85 KEY_F16 0x10EF KEY_F17 0x38C7 KEY_F18 0x5AA5 KEY_F19 0x42BD KEY_F20 0x4AB5 KEY_F21 0x52AD end codes end remote
10 Putting it together
The PI and IR circuit fits snugly inside the lamp, I used plenty of blu-tack to hold everything in place.