Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
kbx81 committed Nov 18, 2020
0 parents commit 1be001e
Show file tree
Hide file tree
Showing 29 changed files with 121,934 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.DS_Store
209 changes: 209 additions & 0 deletions ESPHome/esp_16ch_led_controller_demo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,209 @@
esphome:
name: esp_16ch_led_controller_demo
platform: ESP32
board: featheresp32

wifi:
ssid: "abcdefghijklmnop"
password: "abcdefghijklmnop"

# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "esp_16ch_led_controller_demo"
password: "abcdefghijklmnop"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
password: "abcdefghijklmnop"

ota:
password: "abcdefghijklmnop"

status_led:
pin:
number: GPIO5
inverted: true

binary_sensor:
- platform: gpio
id: leds_off_button
pin:
number: GPIO0
inverted: true
on_click:
min_length: 50ms
max_length: 500ms
then:
- light.turn_off:
id: j1_led_lights
- light.turn_off:
id: j2_led_lights
- light.turn_off:
id: j3_led_lights
- light.turn_off:
id: j4_led_lights
- platform: gpio
id: j1_led_on_button
pin:
number: GPIO35
inverted: true
on_click:
min_length: 50ms
max_length: 500ms
then:
- light.turn_on:
id: j1_led_lights
brightness: 0.5
red: 1.0
green: 1.0
blue: 1.0
white: 1.0
- platform: gpio
id: j2_led_on_button
pin:
number: GPIO34
inverted: true
on_click:
min_length: 50ms
max_length: 500ms
then:
- light.turn_on:
id: j2_led_lights
brightness: 0.5
red: 1.0
green: 1.0
blue: 1.0
white: 1.0
- platform: gpio
id: j3_led_on_button
pin:
number: GPIO39
inverted: true
on_click:
min_length: 50ms
max_length: 500ms
then:
- light.turn_on:
id: j3_led_lights
brightness: 0.5
red: 1.0
green: 1.0
blue: 1.0
white: 1.0
- platform: gpio
id: j4_led_on_button
pin:
number: GPIO36
inverted: true
on_click:
min_length: 50ms
max_length: 500ms
then:
- light.turn_on:
id: j4_led_lights
brightness: 0.5
red: 1.0
green: 1.0
blue: 1.0
white: 1.0

light:
- platform: rgbw
id: j1_led_lights
name: "J1 Lights"
red: j1_pwm_red_channel
green: j1_pwm_green_channel
blue: j1_pwm_blue_channel
white: j1_pwm_white_channel
effects:
- random:
- strobe:
- flicker:
- platform: rgbw
id: j2_led_lights
name: "J2 Lights"
red: j2_pwm_red_channel
green: j2_pwm_green_channel
blue: j2_pwm_blue_channel
white: j2_pwm_white_channel
effects:
- random:
- strobe:
- flicker:
- platform: rgbw
id: j3_led_lights
name: "J3 Lights"
red: j3_pwm_red_channel
green: j3_pwm_green_channel
blue: j3_pwm_blue_channel
white: j3_pwm_white_channel
effects:
- random:
- strobe:
- flicker:
- platform: rgbw
id: j4_led_lights
name: "J4 Lights"
red: j4_pwm_red_channel
green: j4_pwm_green_channel
blue: j4_pwm_blue_channel
white: j4_pwm_white_channel
effects:
- random:
- strobe:
- flicker:

output:
- platform: ledc
id: j1_pwm_red_channel
pin: GPIO15
- platform: ledc
id: j1_pwm_green_channel
pin: GPIO17
- platform: ledc
id: j1_pwm_blue_channel
pin: GPIO12
- platform: ledc
id: j1_pwm_white_channel
pin: GPIO14
- platform: ledc
id: j2_pwm_red_channel
pin: GPIO16
- platform: ledc
id: j2_pwm_green_channel
pin: GPIO18
- platform: ledc
id: j2_pwm_blue_channel
pin: GPIO13
- platform: ledc
id: j2_pwm_white_channel
pin: GPIO27
- platform: ledc
id: j3_pwm_red_channel
pin: GPIO22
- platform: ledc
id: j3_pwm_green_channel
pin: GPIO23
- platform: ledc
id: j3_pwm_blue_channel
pin: GPIO21
- platform: ledc
id: j3_pwm_white_channel
pin: GPIO19
- platform: ledc
id: j4_pwm_red_channel
pin: GPIO25
- platform: ledc
id: j4_pwm_green_channel
pin: GPIO26
- platform: ledc
id: j4_pwm_blue_channel
pin: GPIO33
- platform: ledc
id: j4_pwm_white_channel
pin: GPIO32
Binary file added LEDController-Bottom.stl
Binary file not shown.
63 changes: 63 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# kbx's 16-channel ESP32 Powered LED Strip Controller

![kbxLEDController-16ch](images/boards_small.jpg "kbxLEDController-16ch")

## What?

Just another LED strip/tape controller...because the world needs more blinky!
It was designed with [ESPHome](https://esphome.io) in mind but should work fine
with [Tasmota](https://tasmota.github.io/docs/) or any other app, really.

## Why?

I've been using more and more LED tape around my home. In some areas, I have
multiple sections of the tape but didn't want to have a dedicated controller
(and that many more Wi-Fi devices on my network) for each section. Sooooo why
not make a single controller that can control a whole bunch of strips from a
single ESP32? Here we are.

A benefit of the ESP32 over the ESP8266 is that the ESP32 has dedicated hardware
for generating PWM. This means that dimming of the LEDs is flicker-free,
extremely consistent and smooth. While possible on the ESP8266, control
just...isn't as slick.

These boards are laid out for RGBW strips/tape, but they can be wired up to
more or less any kind of strips, whether monochrome, RGB, RGBW, RGBWW, the
variable-color-temperature type...whatever.

They will work with a range of voltages, from 5 volts up to 24 volts. Note
that the 3.3-volt regulator will likely get **HOT** with a power supply
of much greater than 12 volts, however, and in such a state its voltage
output may drop which will trigger the ESP-32's brownout detection, resetting
the processor. Something to keep in mind.

With the transistors in the BoM, it should be good for up to about 60 watts
per channel -- but, again, watch for excess heat. Also...don't expect to
be able to run all 16 channels at the full 60 watts. You're asking for smoke
and flames if you do so. Still, the layout should be pretty accommodating for
high currents, especially if the boards are fabricated with 2 oz copper (as
they should be because current and heat).

## How?

Please see the BoM [here](kbxLEDController-16ch.bom.csv) or
[here](https://octopart.com/bom-tool/OrMoA1no) for a list of parts needed to
build one. I had the PCBs fabricated by [Elecrow](https://www.elecrow.com) but
nearly any PCB fabricator should be able to manufacture these without any issues.

If you have PCBs fabricated, I *highly* recommend having them made with 2 oz
copper -- it costs a little more but *significantly* improves heat dissipation.

The schematic and PCB were drawn in [KiCAD](https://www.kicad-pcb.org).

See the [ESPHome](ESPHome/) directory for a "demo" configuration you can use with
[ESPHome](https://esphome.io) to test the device after construction.

## Legal stuff and License

The circuit schematics and PCB found here are licensed under the
[Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/).

![Creative Commons License badge](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)

_Happy building!_
Loading

0 comments on commit 1be001e

Please sign in to comment.