COB LED lights, or Chip-on-Board LED lights, are a type of LED light that has all of the LED chips mounted on a single substrate. This makes them more efficient than traditional LED lights, which have individual LED chips mounted on a circuit board. COB LED lights also produce a more uniform light output, and they can be used in a wider variety of applications.
Here are some of the benefits of using LED COB lights:
- are very efficient, and they can produce up to 100 lumens per watt. This means that they use less energy than traditional light bulbs, and they can save you money on your energy bills.
- produce a more uniform light output than traditional LED lights. This means that they do not create hot spots or shadows, and they provide a more comfortable light to work under.
- are very durable, and they can last for many years. They are not as susceptible to damage from heat or vibration as traditional light bulbs, and they can withstand harsh conditions.
- can be used in a wide variety of applications, including indoor and outdoor lighting, commercial and residential lighting, and automotive lighting.
They can however be quite a pain to power in a traditional 110v/220v AC wired house or workshop, as some of them actually required DC current to work.
I have decided to use a pair of them to provide additional, dimmable light at my electronics workbench, a place where extra light is sometimes a very necessary commodity. The ability to dim the lights will definitely aid in many scenarios as well.
The Variable voltage Power module was designed specifically for this project
The project consists of two main parts, the first being the Variable Voltage Power Module, which I published a few days ago. The particular COB lights that I will be using, were scavenged from a battery-operated emergency light panel, which had some problems which were not economical to repair. The light modules themselves, however, looked good and were perfectly working as well.
The only issue was that they were 6v DC. So using straight 12v there was out of the question. 6V being an odd voltage in my lab, I designed the module above specifically to provide that.
LED COB Controller stacked on top of Variable Voltage Poser Module
The second part of the project consists of a simple Custom ESP-12E PCB. Why ESP12-E? Well, I have a lot of them lying in stock, and since I won’t need any advanced features, commonly found on the bigger ESP32s, I decided to design around something that I have in stock, rather than overcomplicate the design with a bigger more advanced chip. The project features a rotary encoder, to adjust light intensity, as well as push buttons to toggle the lights on or off…
All of this is of course controlled with ESPHome. This choice gives me the option of manual or fully automatic control from HomeAssistant. It also saves me a lot of coding, as everything usually just works.
We shall focus mainly on LED COB Controller PCB.
In order to understand everything, please refer to the picture below:
LED COB controller without Power Module
The board consists of a few sections, which can be divided as follows:
ESP-12E (8266) supporting circuitry
The top area is mainly the supporting circuitry for the ESP-12E, which includes a 6-pin header to flash firmware, the classic ESP32/8266 Auto Flash/Reset circuit, and manual Flash and Reset switches. Note that the board DOES NOT contain any USB-to-Serial circuitry. I usually use those only once or twice, and update firmware OTA after that. Using an external USB-to-Serial adapter is thus sufficient for my purposes.
Power and LED Control circuitry
Power enters the board in the center, using header pins mounted on the bottom of the PCB. From left to right, these are 3.3v and then two variable voltage inputs. These all originate from the Variable voltage Power Module, mounted below the main PCB. The LED Control circuitry consists of two P-Channel Mosfets, the configuration of which was previously tested in another project, the “P-MOS MOSFET Driver Board“, also published a few weeks ago. The SI2301 P-Channel Logic Level MOSFET, used here is capable of switching up to 2.3A at 20v, and thus more than capable of handling the 300mA that the LED COB modules require.
Four cutouts are provided to access test points on the power module below, as well as the potentiometers used to set the voltage that will ultimately be sent to the LED COB Modules.
Wide copper traces connect the Mosfet’s to Screw Terminals for the LED Modules.
The Final part of the PCB is dedicated to control interfaces. A single 6-way screw terminal is provided at the bottom left corner, this is used to connect a rotary encoder, or give direct access to additional GPIO pins. On the Right hand side of the PCB, a series of header pins give access to additional 3.3v and ground connections, in addition to GPIO 4 and 5, which is usually used for I2C…
LED COB Controller stacked on top of Variable Voltage Poser Module
As mentioned above, this device was designed to be used with ESPHome. The configuration is thus a single YAML file and can be greatly customised to suit your exact needs…
With that in mind, I present here a VERY basic YAML file, that will toggle the LED lights on or off on pressing the encoder switch, as well as adjust the brightness by turning the encoder.
esphome: name: led-cob-controller friendly_name: LED_COB-Controller esp8266: board: nodemcuv2 restore_from_flash: True # Enable logging logger: # Enable Home Assistant API api: encryption: key: "<esphome generated>" ota: password: "<esphome generated>" wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Led-Cob-Controller" password: "<your recovery password here>" captive_portal: # I suggest you only copy paste from here on downwards. # Setup the default device in ESPHome, and when it is available, # come back and add the commands below here text_sensor: - platform: wifi_info ip_address: name: IP Address ssid: name: SSID bssid: name: BSSID mac_address: name: Wifi MAC scan_results: name: WiFi Scan Results sensor: - platform: adc pin: VCC name: "ESP8266 Chip Voltage" id: mcu_voltage unit_of_measurement: "V" device_class: "voltage" accuracy_decimals: 2 update_interval: 60s entity_category: "diagnostic" - platform: wifi_signal name: "WiFi Signal Sensor" id: wifi_strength device_class: "signal_strength" unit_of_measurement: "dBm" update_interval: 240s entity_category: "diagnostic" - platform: copy # Reports the WiFi signal strength in % source_id: wifi_strength name: "WiFi Signal Strength" filters: - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0); unit_of_measurement: "%" entity_category: "diagnostic" - platform: copy source_id: rcbright name: "LED Light Brightness" unit_of_measurement: "%" filters: - lambda: return (x * 100); - platform: rotary_encoder name: "Brightness Control" id: rcbright min_value: 0.00 max_value: 100.00 publish_initial_value: True restore_mode: RESTORE_DEFAULT_ZERO pin_a: number: GPIO13 inverted: True mode: input: True pullup: True pin_b: number: GPIO2 inverted: True mode: input: True pullup: True resolution: 1 accuracy_decimals: 2 filters: - lambda: return x / 100 ; on_clockwise: - light.control: id: led_light1 brightness: !lambda |- // output value must be in range 0 - 1.0 return id(rcbright).state ; // /100.0; - light.control: id: led_light2 brightness: !lambda |- // output value must be in range 0 - 1.0 return id(rcbright).state ; // /100.0; on_anticlockwise: - light.control: id: led_light1 brightness: !lambda |- return id(rcbright).state ; - light.control: id: led_light2 brightness: !lambda |- // output value must be in range 0 - 1.0 return id(rcbright).state ; // /100.0; binary_sensor: - platform: gpio pin: GPIO14 id: light_switch name: "Light Switch" device_class: light on_click: then: - light.toggle: led_light1 - light.toggle: led_light2 light: - platform: monochromatic name: "LED1_LIGHT_TEST" id: led_light1 output: output_component1 - platform: monochromatic name: "LED2_LIGHT_TEST" id: led_light2 output: output_component2 # Example output entry output: - platform: esp8266_pwm id: output_component1 pin: GPIO12 - platform: esp8266_pwm id: output_component2 pin: GPIO16
The PCB for this project was sponsored by PCBWay .
Clicking on the PCBWay link will take you to the PCBWay website. It will enable you to get a $5.00 USD voucher towards your first PCB order. (Only if you sign up for a free account).
I shall also receive a 10% commission AT NO COST to you if, and only if, a paid order is generated from the click on this link.
This device does not need a stencil for assembly, but using one will definitely speed up things. I chose to do this build all by hand, from applying solder-paste, up to placing components.
Soldering was done on a hotplate, as usual, to reflow everything at the same time. TH components were then placed and hand-soldered.
Uploading the initial firmware, after adding the device to ESPHome was done with an external USB-to-UART converter. All further firmware changes were made via OTA.
The board performs well, with only slight heating of the LM317G variable voltage regulators on the power module when both LED COB modules are at 100% brightness. The current draw is within limits and seems to peak at about 600mA per COB…
This project took quite a while to move from idea to practical reality, mainly due to being busy with other more important stuff. In the end, I am happy that I sat down and did it, because it definitely will become a valuable tool in my work area.