AnasSarkiz/grid-of-LEDs-with-an-ESP32
This circuit integrates a Wi-Fi-enabled ESP32 microcontroller, a 5V power supply, and a chain of 25 WS2812B addressable LEDs with related resistors and capacitors for power stabilization, enabling synchronized LED control via USB-C connection.
Usage: To import and use the "@tsci/AnasSarkiz.grid-of-LEDs-with-an-ESP32" component: 1. Import the component in your project: ```tsx import GridOfLEDsWithESP32 from "@tsci/AnasSarkiz.grid-of-LEDs-with-an-ESP32" ``` 2. Use the component in a tscircuit board: ```tsx export default () => ( <board> <GridOfLEDsWithESP32 /> </board> ) ``` The component creates a board with 25 WS2812B LEDs, an ESP32, USB-C, voltage regulators, and supporting components, all pre-configured and interconnected.
- Version
- 0.0.1
- License
- unset
- Stars
- 4
index.ts
PCB
Schematic
import manualEdits from "./manual-edits.json"
import { useUsbC } from "@tsci/seveibar.smd-usb-c"
import { useAMS1117_3_3 } from "@tsci/AnasSarkiz.AMS1117_3_3"
import { useESP_12F_ESP8266MOD_ } from "@tsci/AnasSarkiz.ESP_12F_ESP8266MOD_"
import {useWS2812B_2020} from "@tsci/seveibar.WS2812B_2020"
import { useA_2_54_1x6P__ } from "@tsci/AnasSarkiz.A_2_54_1x6P__"
import { useA_0603WAF182JT5E } from "@tsci/AnasSarkiz.A_0603WAF182JT5E"
import { useC1206C106K3RACTU } from "@tsci/AnasSarkiz.C1206C106K3RACTU"
import { useA_0603WAF2101T5E } from "@tsci/AnasSarkiz.A_0603WAF2101T5E"
import { useC0603C104K5RACTU } from "@tsci/AnasSarkiz.C0603C104K5RACTU"
import { useResistor, useCapacitor } from "@tscircuit/core"
export default () => {
const ledArray = []
for (let i = 1; i <= 25; i++) {
ledArray.push(useWS2812B_2020(`LED${i}`))
}
const SOT223 = useAMS1117_3_3("SOT223")
const USBC = useUsbC("USBC")
const ESP32_12F = useESP_12F_ESP8266MOD_("ESP32_12F")
const H1 = useA_2_54_1x6P__("H1")
const R1 = useResistor("R1", { resistance: "10k", footprint: "0603" })
const R2 = useResistor("R2", { resistance: "1k", footprint: "0603" })
const C1 = useCapacitor("C1", { footprint: "1206", capacitance: "10uF" })
const C2 = useCapacitor("C2", { footprint: "ca0603", capacitance: "0.1uF" })
return (
<board
autorouter="auto-cloud"
routingDisabled
manualEdits={manualEdits}
width="30mm"
height="70mm"
>
{ledArray.map((LED, index) => {
const row = Math.floor(index / 5)
const col = index % 5
return (
<>
<LED
key={`LED${index + 1}`}
schX={col * 5}
schY={row * 2.6 + 4}
pcbX={col * 5 - 10}
pcbY={row * 5 + 9}
/>
{/* Connect GND */}
<trace from={`.LED${index + 1} > .pin2`} to="net.GND" />
{/* Connect VDD */}
<trace from={`.LED${index + 1} > .pin4`} to="net.VCC_5V" />
{/* Connect DI to DO */}
{index > 0 && (
<trace
from={`.LED${index} > .pin1`}
to={`.LED${index + 1} > .pin3`}
/>
)}
</>
)
})}
<SOT223 schX={8} />
<USBC schX={4} />
<ESP32_12F />
<H1 schX={14} />
<R1 schY={-5} />
<R2 schX={4} schY={-5} />
<C1 pcbRotation={90} schY={-8} />
<C2 schX={4} schY={-8} />
<trace from=".ESP32_12F > .pin19" to=".LED1 > .pin3" />
<trace from=".USBC > .pin1" to="net.GND" />
<trace from=".USBC > .pin2" to="net.GND" />
<trace from=".ESP32_12F > .pin9" to="net.GND" />
<trace from=".SOT223 > .pin1" to="net.GND" />
<trace from=".ESP32_12F > .pin9" to="net.GND" />
<trace from=".H1 > .pin2" to="net.GND" />
<trace from=".USBC > .pin3" to="net.VCC_5V" />
<trace from=".USBC > .pin4" to="net.VCC_5V" />
<trace from=".SOT223 > .pin3" to="net.VCC_5V" />
<trace from=".SOT223 > .pin2" to="net.VCC_3_3V" />
<trace from=".ESP32_12F > .pin8" to="net.VCC_3_3V" />
<trace from=".H1 > .pin1" to="net.VCC_3_3V" />
<trace from=".H1 > .pin3" to=".ESP32_12F > .pin15" />
<trace from=".H1 > .pin4" to=".ESP32_12F > .pin16" />
<trace from=".H1 > .pin5" to=".ESP32_12F > .pin5" />
<trace from=".H1 > .pin6" to=".ESP32_12F > .pin3" />
<trace from=".R1 > .pin1" to=".ESP32_12F > .pin12" />
<trace from=".R1 > .pin2" to="net.VCC_3_3V" />
<trace from=".R2 > .pin1" to=".USBC > .pin6" />
<trace from=".R2 > .pin2" to="net.GND" />
<trace from=".C1 > .pin1" to=".ESP32_12F > .pin3" />
<trace from=".C1 > .pin2" to="net.GND" />
<trace from=".C2 > .pin1" to=".ESP32_12F > .pin4" />
<trace from=".C2 > .pin2" to="net.GND" />
</board>
)
}