PROJECT: LED Light Controller
Scaling up basic IR-controlled LED lights into a centrally managed home light network using Bluetooth and an Arduino board.
- Overview -
Having a device controlled via infrared (IR) signals usually means that it is operated as a standalone system. This makes sense because most of the time that's how such systems are used. Examples of this are televisions and cable boxes, and most recently LED candles and light strips. When you use these devices you typically have a remote control for each lying around.
Universal remote controls are available that control multiple IR devices. They will have certain device IR frequencies preprogrammed or can learn new ones. Sophisticated versions of these remotes can chain together multiple operations with a single button-press, like turning on both your television and cable box. This is great for many scenarios, although it is limited by IR's requirement to be within a certain distance and line-of-sight with controlled devices.
For controlling devices in unison when they are far apart or when there are a lot of devices another solution it needed.
Centralizing IR Signaling
What's needed for controlling many and far apart IR devices?
- IR transmitters.
- Devices to control the IR transmitters that can be connected at convenient locations within IR range of the IR devices themselves, i.e. other places around your home.
- A logic controller.
For this project, I chose Arduino as the IR transmission controller because it is simple, fast and can drive IR sensors and transmitters. I chose Bluetooth for connectivity between the Arduino and logic controller because it is widely available and operates within the required distances for my project, i.e. around my home.
The logic controller can be anything capable of running a custom program and sending Bluetooth signals. For this project I chose to write a Python program and run it on a desktop computer. I'll mention some of the other potential choices later in this article.
The target devices for this project are independent LED lighting strips. My goal was to have them able to all change to the same color at once, or to change color together according to given patterns.
Materials and Cost
Arduino (IR Transmission Controller)
I used a few of the components that came in an Arduino starter kit that included a Mega 2650 board. A smaller Arduino board, like the Uno, is a better option for shrinking the transmitter footprint, especially if you want to deploy a few of them. A kit costs around $30-$40 on Amazon and includes the resistors and breadboard needed to complete your build.
IR Transmitters/Receivers
The IR transmitters themselves are components that are driven by the transmission controller. They are available on Amazon for $10-$15 in multipacks that also contain receivers. I used an IR receiver to detect/learn the frequencies used by the remote controls that needed to be mimicked.
Bluetooth Receiver
Bluetooth interfaces are available that work easily with Arduino. In this project I used an HM-10 Bluetooth Low Energy (BLE) module which is is available at Amazon for around $10.
Build Procedure
Create Targeted Device Modules
My first task was to document the IR frequency for each function of my LED lighting strip's remote control. The remote has functions for individual color selection amongst around 20 distinct colors, as well as functions for customizing a color's individual RGB intensity and overall brightness. Capturing each frequency was simple using a few lines of Arduino code controlling an IR receiver module. I translated each one of these into a callable command, and compiled the group of commands into a Python module. Each model of targeted device would have its own module.
Create Arduino Transmission Control
Wiring the IR transmitter module to the Arduino using a breadboard and a couple of resistors