The perfect Remote, Programmable, Controller for interactive LED strips

By on July 21, 2014
Pin It


Since when white light emitting high brightness LED are available, the handover from traditional lighting bulbs to the solid-state lighting has become irreversible: LEDs have an efficiency (expressed in lumens/watt) higher than that of almost all the traditional lamps (except, at the moment, the large sodium vapor lamps used for street lighting, unusable in closed environments for the high power required and the chromatic aberration they produce) at a cost that is today less prohibitive than it was a few year ago. They are indeed very sturdy and have a very acceptable ratio of luminous flux and size.

In common with the traditional lamps, at least with fluorescent and neon, white LEDs have the characteristic to be produced to emit, depending on the model, a shade of white that ranges from warm (3,000 K) to cold (over 6,000 K). For this reason, when you want to create a lighting solution with light emitting diodes, you must be careful about what you purchase, if you just take the first lamp you can end up having a lighting that is not exactly what you want.

Another problem arises if you want to achieve lighting that can change the shade of the white according to the taste or mood of the moment, or even just to suit the needs of the guests; in this case you need a system which allows to vary the shade of the light emitted. Each LED, however, is made to give a certain color temperature and cannot be changed. Anyway there is a solution: use diodes both in warm and cold white, mixing the light in varying proportions.


This is what the system described in this article does: basically a controller for two groups of white LEDs or for strips consisting of warm and cold white LEDs, driven separately (we tried with this solution) in PWM mode, so to vary the individual luminous flux of the two components and obtain a light that is a mixture of warm and cold white, with the chosen shade.

The system consists of a control circuit for LED strips with remote control receiver, remotely controlled by a radio signal in the UHF band at 433.92 MHz using a standard TX; the transmitter is amplitude-modulated with four channels; with the buttons on the transmitter  you can manage the channels individually: raise and lower the brightness of the different rows of LEDs with warm and cold light.

Since the transmitter is a standard commercial model based on the UMC UM3750 IC (an evolution of the classic MM53200 with 4.096 combinations with binary 12-bit encoding) we won’t describe it; we will focus, instead, on the receiver/controller of which we will publish and describe the circuit diagram in the next paragraphs.


Receiver diagram






The controller is a combination of a hybrid Aurel AC-RX2 receiver tuned on 433.92 MHz and a PIC16F876A microcontroller programmed to act as the decoder of the code of the button pressed on the remote control.  It generates two independent PWM signals and controls with them the gates of two enhancement-mode MOSFET with N-channel, which must drive the two LED strips or, more generally, groups of white LEDs. Since the transistors are configured in common-source, the circuit is suitable to drive common anode LED strips: we’ll in fact make available on the appropriate terminal the positive power supply and the MOSFET drain so that the circuit can drive the diodes bringing the cathodes to ground, with the times and manner prescribed by the PWM.

Let’s take a look at the circuit diagram: after the power-on, the Microchip microcontroller initializes its I/O and sets RC3 as input without pull-up dedicated to capture the data coming from the radio receiver U2, while. always as inputs, but with internal pull-up, sets RB2, RB3, RB4, RB5, RB6, RB7, which will be used to read the dip-switch DS1; instead RB0 is set as the output for the command of the signaling LED during procedures and RC1 and RC2 are set as the output of the PWM signal that drives the gate of the MOSFET T1 and T2.

Before proceeding, it is better specify that the output OUT1 (i.e. T1) controls the cold light LED (cold white) while OUT2 acts on the warm light ones (Warm white).

The wireless U2 receiver module is an AC-RX2 Aurel equipped with antenna signal amplifier (which gives a sensitivity of -106 dB),a superregenerative tuning stage tuned at 433.92 MHz using calibrated compensator at the factory and equipped with RF filter and amplitude demodulator; completes the module equipment, a squaring with a digital signal comparator (TTL level) coming from pin 14 and an LF amplifier of the output signal from the AM demodulator.

When pressing one of the buttons on the transmitter, the radiated RF signal reaches the receiving antenna of the module AC-RX2, which demodulates the data component and sends it to the pin 14; hence, the microcontroller takes the TTL pulse, places them in RAM and analyzes them with an appropriate firmware routine that, first of all, discerns among many signals picked up from the ether, the one that is compatible with the format of the UM3750 encoding. If so, checks if the code is one of those stored during the self-learning procedure and, if not, deletes the data from the RAM and gets ready for a new analysis.


We will later see how to match the transmitter to the circuit, by using self-learning procedure; for now it is enough to know that the firmware expects to learn all four command codes, which are increasing and decreasing the brightness of the cold light LED and increasing and decreasing  the brightness of the warm light LEDs. This choice allows you to adapt the system to both encodings UM3750 (or MM53200/UM86409) and Holtek HT-12, as well as to manage the circuit by means of two different transmitters, i.e. without the constraint of being linked to a single transmitter.

Now let’s see what happens if the received signal contains one of the codes learned and retained in the working EEPROM from the PIC16F876: in this case, a routine starts to managing the signal generated by the PWM module inside the microcontroller. The signal is, after the start of the main program, characterized by a 50% duty cycle (unless you have activated the recovery function, that will be explained a few paragraphs below). If the received code is recognized and matches the button learned as UP of the OUT1 (we recommend the one in the upper left corner of the remote control – channel 2), the PWM intended to control OUT1 has one increase in the duty cycle at once, which is proportional to the pressure time; if it matches the button learned as DOWN  of OUT1 (we suggest the lower left one) decreases the duty cycle of the PWM connected with channel 2. Again, if it matches the code learned as UP of OUT2 (button at the top right of the transmitter ) causes an increase of the duty cycle of the PWM that drives OUT2 and finally, if it is the code learned as DOWN  of OUT2, causes a reduction of the duty cycle of the PWM  of OUT2. It is understood that this is the operation in dimmer mode; if the received code lasts for less than a second (as will be explained later) you get the switching on or off of the corresponding light. The verification of the length of the code is done by the firmware.

Each output has a LED light which indicates its activity: for OUT1 is LD2 and for OUT2 is LD3; each diode has a current limiting resistor (R5 for LD2 and R6 for LD3).



R1: 1 kohm
R2: 1 kohm
R3: 4,7 kohm
R4: 470 ohm
R5: 4,7 kohm
R6: 4,7 kohm

C1: 100 nF
C2: 470 µF 35 VL
C3: 100 nF
C4: 220 µF 16 VL
C5: 100 nF
C6: 22 pF
C7: 22 pF

D1: 1N4148

LD1: Led 3 mm green
LD2: Led 3 mm green
LD3: Led 3 mm green

U1: PIC16F876A-I/P
U2: AC-RX2
U3: 7805

Q1: 4 MHz

DS1: Disp-Switch 6 vias

T1: P36N06
T2: P36N06




  • Board Power: 12/24Vdc
  • Strip Power: 12/24Vdc
  • Current: 2A per channel
  • RF Encoding: MM53200/HT12 with self-learning
  • Resume state in the event of blackout
  • Functions: Dimmer, On/Off
  • Handling of two common anode strips (2 channels)



Firmware PBP


The receiver provides for the control of the two channels by a 433MHz remote control with MM53200/HT12 encoding or a compatible one. Each channel is controlled by two buttons (also of distinct transmitters), hence  to manage both channels four buttons are needed, i.e. a four-channel radio control transmitter or two  two-channel transmitters, one used to control the brightness of the warm light and one for the control of cold one.

For example, for channel 1 must be recorded a button for the UP function and one for the DOWN function; the same is true for the second channel. The two UP and DOWN functions allow respectively to increase and decrease the brightness.

In the case of four-channel transmitter TX3750-4CS, we recommend to assign the left buttons to the OUT1 channel and the right ones to OUT2. Furthermore, in order to make the control more intuitive, it is better that the buttons at the top left and right correspond to the UP functions and those at the bottom to DOWN functions of the respective channels. It is understood that, as the system learns separately  the codes for each function of each channel, you can also chose a different order for the buttons.

With regards to the normal operation mode i.e.  what you get when the first 4 DIP  are set to Off, the unit controls the brightness according to the radio commands given by the TX handheld.  In this case, a short press (less than one second) of the button of the remote control, either UP or DOWN, allows to turn off or turn on the respective output based on the current brightness: so if the LED strip is turned on, by pressing one of two buttons of the channel,  the strip itself turns off and pressing it again, it turns on again. If you want to adjust the brightness, press and hold the button for longer than a second, the original brightness will be automatically changed  step by step, until it reaches the maximum or minimum brightness.

When an RF signal belonging to the accepted coding is received, the LED LD1 will light emitting short flashes to indicate the reception.

Each output has a LED (LD2 and LD3) that follows the status of the dimmer, so it can be useful to verify operation without any LED strips connected. The red LED is connected exactly to the output, so if the lights doesn’t light the mosfet might be burnt or the LED might have a reverse polarity.

The unit provides some settings of the operating mode, accessible  via a 6-way  dip-switch through which you can enter in the memorization procedure or enable/disable the resume function in case of blackout for the desired channel. The correspondence between the dips and functions is explicated in table.

Dip State Function
1 ON Recording  key“Up” output OUT1
2 ON Recording  button“Down” output OUT1
3 ON Recording  button“Up” output OUT2
4 ON Recording  button“Down” output OUT2
5 ON Function  restoreactiveon output OUT1
6 ON Functionrestoreactiveon output OUT2


To be able to store, for example, the TX button on a remote control and link it to the increase of brightness (UP) of the output OUT1 (brightness control of warm white), you must bring DIP 1 on ON (leave the DIP2, DIP3, DIP4  on Off): at this point the green LED LD1 will light up continuously. With the LED continuously lit, press the button you want to link and release it when the green LED will begin to flash, indicating that the recording has been correctly done. Recording a code will overwrite any previously recorded code. The same procedure must be carried out for the DIP2, DIP3 and DIP4 which allows to learn the codes assigned to the keys 2, 3, 4 of the radio remote control, i.e. those you who want to associate with the remaining UP and DOWN functions.

If you want to remove a button from the memory you can do both deleting all the buttons from the memory, or just the one you want. To delete, turn off the power, then bring to ON the one of the 4 DIP switches associated with the button whose code you want to remove (or even more than a DIP together, if you want to cancel many codes at once) then give power to the board. Once the circuit is powered, the LD1 LED will remain lit for about 2 seconds to indicate the cancellation of the button from the memory; after that the device will boot normally. When the circuit will enter in the normal operation mode, you must open the dip that you closed – disconnect the power supply  then reopen the dip and, after at least ten seconds, give power again to the circuit.

Note that normally, when the controller/receiver is powered in “normal power” (i.e. with the first four DIP on Off, i.e. open), the LED LD1 will emit a series of flashes to indicate that the system starting correctly.

We conclude with DIP5 and DIP6, which allow to set the resume function respectively on the first and second output; resume means that in the event of power failure, when the circuits restarts, outputs are brought back to what it was before the power failure. This function is obtained by simply saving in a special area of the EEPROM of the PIC16F876A the status of each output whenever it is changed remotely, via the transmitter of the radio control. When it turns on again, after the initialization of the I/O, the main program of the microcontroller goes to check if the EEPROM has the restoration function flag on and, if so, looks for the data regarding the settings of the duty-cycle of the PWM and then resets the duty cycle as written in the memory. If it’s not the case (no resume function) it starts with the default value of 50%.

Remember that the resume function is activated if the corresponding DIP is set to On.



Remember that to “+” and “-“ PWR you must apply power drawn by a power supply (a switching is fine, also because it has a much higher return than a linear one, whose cleanliness and qualities of the voltage supply, in this particular application, are pretty useless…) capable of delivering 12 to 24 Vcc (depending on what is the rated voltage of the LED strips you used) and a current of 4 A (or less, depending on the absorption of the LED strip used) .

The strip must be connected to the outputs OUT1 and OUT2 making sure that the common positive (it is usually the red wire) goes to the “+ “ side of the terminal between OUT1 or OUT2 and that the other two wires are connected to the “-“  of the terminal of the OUT1 and OUT 2, recalling that the one corresponding to the warm light LEDs goes on “-“ of OUT1, while that of cold light LEDs must end on OUT2. If you reverse these two wires, the buttons of the OUT1 channel will control OUT2 and vice versa.

The connection described applies to the strip used in our tests, which has three wires; but if you find one with  four, i.e. with the “+” and “-“ different for the warm light and cold light LED strips of LED, connect the “+” and “-“ to the corresponding terminals, separately.

We conclude by recalling that the circuit can also control groups of LEDs put together at will in a DIY fashion. Remember, however, the available voltage (so that the power supply) and bear in mind that the voltage fall on a white LED at full brightness exceeds 4 volts.  With 12 V you can lit two LEDs in series (the rest should fall on the MOSFET and on the series resistor that will be connected). Otherwise with 13 V you can turn on 3 LEDS in series (always interposing a resistance calculated on the current in the LEDs) and with 24 V you will light up 5 (with the usual series resistance).

In addition, you can also connect more than two LED strips: it depends on their absorption; the important thing is that they don’t need more than a total of 4 amps (2 A for warm white and the same for cool white).

Go buy some leds!



About Boris Landoni

Boris Landoni is the technical manager of Skilled in the GSM field, embraces the Open Source philosophy and its projects are available to the community.
  • Merrut Electronics Projects

    Dear Sir

    This one help me a lot to design my new product.


    Ravi Saini


    • Gilbert laurente

      My pleasure sir of having familiar with your design, more power!

  • Manish

    Dear Sir, Can u email me the program Hex Files of PIC for remote LED project because I don’t know about programming.Thanks.

  • Seregka Sa

    Here esche have been common control, or can have someone nebut emulator UMC UM3750, MM53200

  • Seregka Sa

    Who would write encoder MM53200 to PIC?