
UDP w5500
SameSameIndustry/STM32_UDP2CAN_controller
STM32G431 + WIZnet W5500(Ethernet) を使い、PC(Python)から UDP で直接 CAN バス上のアクチュエータ (DJI C610 ESC / TTL サーボ / 差動ワイヤ機構モータ) を制御するための、基板設計(KiCad)・ファームウェア (STM32CubeMX + CMake)・PC側ツール一式です。

Ein herzförmiges PCB mit 46 RGB-LEDs (WS2812B), das eine Lichtshow abspielt. Ein Taster auf der Rückseite schaltet zwischen den Effekten um, Strom kommt per USB-C.
Heart is an open-source printed circuit board by slogic3d-cloud, from the slogic3d-cloud/heart repository on GitHub, published under the MIT licence. It is a 2-layer board of 161.8 × 152.9 mm with 106 parts on 54 nets, routed with 308 tracks and 55 vias.
It is built around the 74AHCT1G125SE, XIAO ESP32C3 and WS2812B, with the SS34 among its other parts. Its parts include 49 capacitors, 47 diodes, 3 resistors, 2 ICs and 1 connector. It belongs with the ESP32 and RISC-V boards of this library.
A heart with a matrix led in heart form.
Ein herzförmiges PCB mit 46 RGB-LEDs (WS2812B), das eine Lichtshow abspielt. Ein Taster auf der Rückseite schaltet zwischen den Effekten um, Strom kommt per USB-C. Gesteuert wird alles von einem Seeed XIAO ESP32-C3, der hinten aufgesteckt ist.

| Größe | ca. 162 × 153 mm, 2 Lagen, 1,6 mm |
| LEDs | 46 × WS2812B-5050, Raster 16 mm, je ein 100 nF Kondensator |
| Controller | Seeed XIAO ESP32-C3 (oder XIAO ESP32-S3, gleiche Pinbelegung) |
| Strom | USB-C 5 V (nur Strom), Software-Limit 1,5 A |
| Bedienung | 1 Taster: kurz = nächster Effekt, lang = Helligkeit |
| Effekte | Herzschlag, Regenbogen, Wellen, Glitzer, Feuer, Scanner, Konfetti, Auto |

Das ist die vereinfachte Übersicht. Der echte KiCad-Schaltplan ist hardware/heart.kicad_sch
(als PDF: docs/schematic.pdf), siehe Schaltplan in KiCad.
src/heart_map.h), damit Effekte wie „Feuer“ wirklich von unten nach oben laufen.| Vorderseite (LEDs, +5V-Fläche) | Rückseite (GND-Fläche, XIAO, Taster, Elko) |
|---|---|
![]() | ![]() |
hardware/
gen_pcb.py erzeugt die komplette Platine per Skript (KiCad 7+)
gen_sch.py erzeugt den KiCad-Schaltplan
netlist.py Bauteil- und Netzliste (gemeinsame Basis für den Schaltplan)
check_sch.py prüft: Schaltplan und Platine passen Pin für Pin zusammen
heart.kicad_pro KiCad-Projekt – das hier öffnen
heart.kicad_sch der Schaltplan
drc.py Design-Rule-Check (prüft Abstände, Verbindungen)
export.py Gerber + BOM + CPL für JLCPCB
heart.kicad_pcb die Platine (mit KiCad öffnen)
heart.pretty/ eigener Footprint für den XIAO-Sockel
heart.kicad_sym eigenes Symbol für den XIAO
production/ fertige Bestelldateien (heart_gerber.zip, heart_bom.csv, heart_cpl.csv)
src/ Firmware (PlatformIO / Arduino)
test/test_chain.cpp prüft, dass Firmware und Platine dieselbe LED-Reihenfolge haben
tools/preview.html Lichtshow im Browser ansehen, ganz ohne Hardware
cad/gen_case.py erzeugt Gehäuse, Pixel-Gitter, Diffusor, Tasterstößel und Ständer (CadQuery)
cad/out/ STEP-Dateien für Fusion 360 + 3MF/STL-Dateien zum Drucken
docs/ Bilder und Schaltplan
JOURNAL.md Bau-Tagebuch
einkauf/ links.md (Kauflinks) und price.md (alle Preise in € und $), neu erzeugen: python3 tools/einkauf.pyWas kostet das und wo kaufe ich es? Siehe einkauf/price.md (alle Preise in Euro und Dollar)
und einkauf/links.md (Kauflinks: BerryBase, Amazon, JLCPCB).
Preise und Dollarkurs werden live abgefragt, mit python3 tools/einkauf.py aktualisierst du beides.
Auf jlcpcb.com → Order now → hardware/production/heart_gerber.zip hochladen.
Einstellungen: 2 Layers, Dicke 1.6 mm, Farbe nach Wahl (Rot oder Schwarz sieht beim Herz gut aus), Surface Finish HASL (lead free) reicht.
Unten PCB Assembly einschalten → Assemble top side, Stückzahl z. B. 2 (Minimum bei Bestückung).
BOM = hardware/production/heart_bom.csv, CPL = hardware/production/heart_cpl.csv hochladen.
Im Bauteil-Check sollten alle 8 Positionen gefunden werden (LCSC-Nummern sind drin, geprüft im Oktober 2026):
| Teil | Menge | LCSC |
|---|---|---|
| WS2812B-B/W (5050) | 46 | C114586 |
| 100 nF 0603 | 47 | C14663 |
| 10 µF 0805 | 1 | C15850 |
| 5,1 kΩ 0603 | 2 | C23186 |
| 330 Ω 0603 | 1 | C23138 |
| SN74AHCT1G125DBVR | 1 | C7484 |
| SS34 (SMA) | 1 | C408258 |
| USB-C HRO TYPE-C-31-M-12 | 1 | C165948 |
Ganz wichtig: Bestückungs-Vorschau anschauen! JLCPCB zeigt die Bauteile über der Platine an. Bei manchen Bauteilen (oft LEDs, SOT-23, USB-C) dreht JLCPCB anders als KiCad. Prüfe vor allem:
Preis: Die Platine ist größer als 10 × 10 cm und einige Bauteile sind „Extended Parts“ (Bestückungsgebühr pro Bauteilsorte). Schau dir das Angebot genau an, bevor du bestellst.
| Teil | Wo | Hinweis |
|---|---|---|
| Seeed XIAO ESP32-C3 | U2 | mit 2 × 7-poligen Stiftleisten am XIAO |
| 2 × Buchsenleiste 1×7, 2,54 mm | U2 | auf die Platine löten, XIAO steckt drauf. Bauteile des XIAO zeigen von der Platine weg, seine USB-C-Buchse zur Ausbuchtung im aufgedruckten Rahmen |
| Taster 6 × 6 mm (THT) | SW1 „EFFEKT“ | |
| Elko 1000 µF (10 V oder mehr, z. B. 25 V), Ø 10 mm, Raster 5 mm, max. 20 mm hoch | C50 | Polung! Das eckige Pad ist Plus |
Tipp: Erst Buchsenleisten, dann Taster, zuletzt den Elko löten.
Mit PlatformIO (VS Code-Erweiterung oder pip install platformio):
pio run -e xiao_esp32c3 -t upload # flashen
pio device monitor # Ausgabe ansehen (115200 Baud)Falls der Upload nicht klappt: am XIAO BOOT gedrückt halten, RESET kurz drücken, BOOT loslassen, nochmal hochladen.
Mit der Arduino IDE geht es auch: Board „XIAO_ESP32C3“ auswählen, Bibliothek FastLED installieren,
alle Dateien aus src/ in einen Sketch-Ordner heart/ kopieren und main.cpp in heart.ino umbenennen.
Beim Einschalten läuft einmal ein Regenbogen durch alle 46 LEDs in Ketten-Reihenfolge. Bleibt er an einer Stelle hängen, hat die LED davor oder genau diese ein Lötproblem.
Einstellungen (Pins, Stromlimit, Helligkeitsstufen, Auto-Zeit) stehen in src/config.h.
Neue Effekte schreibst du in src/effects.cpp und trägst sie unten in LIST ein.
tools/preview.html im Browser öffnen. Die Vorschau benutzt dieselbe LED-Anordnung und dieselben Effekte.
| Regenbogen | Feuer |
|---|---|
![]() | ![]() |
hardware/heart.kicad_pro öffnen. Im Projektfenster:
heart.kicad_sch (ein A2-Blatt: oben Strom, XIAO, Pegelwandler; unten die 46 LEDs)heart.kicad_pcbheart (XIAO-Symbol und -Footprint) sind über sym-lib-table / fp-lib-table
im Projektordner eingebunden, da musst du nichts einstellen.Verbunden wird im Schaltplan über Netzlabels (z. B. LED5_DOUT, DATA_5V) und die Power-Symbole
+5V / GND. Gleicher Name = gleiche Leitung. Die Namen sind exakt dieselben wie auf der Platine.
Schaltplan und Platine sind verknüpft. Wenn du im Schaltplan etwas änderst (z. B. einen Wert), kannst du im Leiterplatten-Editor Werkzeuge → Leiterplatte aus Schaltplan aktualisieren (F8) drücken. Geprüft wird das mit:
python3 hardware/check_sch.py # "OK: Schaltplan und Platine stimmen überein"KiCad 8/9 fragt beim Öffnen evtl., ob die Dateien ins neue Format umgewandelt werden sollen. Das ist ok.

| Im Ständer | Rückseite |
|---|---|
![]() | ![]() |
Alle Teile liegen in cad/out/, jeweils als STEP (für Fusion 360) und als 3MF und STL (zum Drucken).
Die Druckdateien liegen schon flach auf dem Druckbett (Unterseite bei z = 0), die STEP-Dateien in Einbauposition.
| Datei | Teil | Material-Tipp |
|---|---|---|
heart_case_shell | Rückschale mit Abstandshaltern, USB-C-Schlitz, Fenster fürs XIAO-Kabel, Tasterloch, 2 Schlüssellöchern | PLA/PETG, Farbe nach Wahl |
heart_case_grid | Pixel-Gitter (16-mm-Raster, 10 mm tief), jede LED leuchtet in ihrem eigenen Quadrat | schwarz, damit kein Licht in die Nachbarzelle scheint |
heart_case_diffuser | 1-mm-Platte vorne, macht aus den LED-Punkten gleichmäßige Pixel | weiß/transluzent. Alternative: Transparentpapier oder milchige Acrylplatte in Herzform |
heart_case_button_plunger | Stößel: drückt von hinten auf den Taster | beliebig |
heart_stand | Ständer für den Tisch, Herzspitze sitzt in einer 90°-V-Tasche, 10° nach hinten geneigt | beliebig |
heart_case_assembly.step | alles zusammengebaut, inkl. Platine (nur zum Anschauen) | – |
heart_pcb.step | die Platine aus KiCad | – |
In Fusion 360 öffnen: Datei → Öffnen → Von meinem Computer… → .step-Datei wählen.
Fusion lädt die Datei in die Cloud hoch und öffnet sie. Die Teile sind „dumme“ Volumenkörper
(ohne Verlauf). Ändern kannst du sie trotzdem direkt, z. B. mit Fläche verschieben (Press Pull).
Für größere Änderungen lieber die Maße oben in cad/gen_case.py anpassen und neu erzeugen:
pip install cadquery
python3 cad/gen_case.py # baut alle Teile neu und prüft auf Kollisionen mit den BauteilenOhne eigenen 3D-Drucker: Die 3MF- (oder STL-)Dateien bei einem Druckdienst hochladen, z. B. bei JLCPCB (bietet auch 3D-Druck an) oder einem anderen Online-Druckdienst. FDM-Druck in PLA ist am günstigsten. Die Rückschale und das Gitter sind die großen Teile, schau dir den Preis an, bevor du bestellst.
Zusammenbau:
Maße: Gehäuse 167 × 158 × 41 mm. Hinter der Platine sind 22 mm Platz (XIAO auf Buchsenleisten,
Elko bis 20 mm hoch). Der Stößel ist für einen 6 × 6-mm-Taster mit 4,9 mm Höhe ausgelegt.
Ist dein Taster anders hoch, BUTTON_H in cad/gen_case.py ändern.
Die Platine wird komplett von hardware/gen_pcb.py erzeugt (Herzform, Bauteile, Leiterbahnen, Kupferflächen).
Du brauchst KiCad 7 oder neuer (mit Python).
python3 hardware/gen_sch.py # Schaltplan neu erzeugen
python3 hardware/gen_pcb.py # Platine neu erzeugen
python3 hardware/check_sch.py # Schaltplan == Platine?
python3 hardware/drc.py # prüfen: muss "0 unconnected pads" und keine Fehler zeigen
python3 hardware/export.py # Bestelldateien neu bauen
g++ -std=c++11 -Isrc test/test_chain.cpp -o /tmp/t && /tmp/t # Firmware passt zur Platine?Du kannst Schaltplan und Platine natürlich auch direkt in KiCad von Hand weiterbearbeiten.
Dann aber gen_sch.py / gen_pcb.py nicht mehr laufen lassen, sonst werden deine Änderungen überschrieben.
Aktueller DRC-Stand: 0 Fehler, 0 offene Verbindungen. Es bleibt eine gewollte Warnung: Beim USB-C-Footprint wurde der Bestückungsdruck entfernt, weil er über den Platinenrand ragen würde.
POWER_MILLIAMPS in src/config.h auf 2500 erhöhen.src/config.h COLOR_ORDER auf RGB ändern.MIT, siehe LICENSE.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 47 | 100nF | Capacitor_SMD:C_0603_1608Metric | C1, C2, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23 +31 |
| 46 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +30 |
| 3 | M3 | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3 |
| 2 | 5k1 | Resistor_SMD:R_0603_1608Metric | R2, R3 |
| 1 | 1000uF 10V | Capacitor_THT:CP_Radial_D10.0mm_P5.00mm | C50 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric | C49 |
| 1 | 330R | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 74AHCT1G125 | Package_TO_SOT_SMD:SOT-23-5 | U1 |
| 1 | Effekt | Button_Switch_THT:SW_PUSH_6mm | SW1 |
| 1 | SS34 | Diode_SMD:D_SMA | D47 |
| 1 | USB-C Power | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
| 1 | XIAO_ESP32C3 | heart:Seeed_XIAO_Socket | U2 |

SameSameIndustry/STM32_UDP2CAN_controller
STM32G431 + WIZnet W5500(Ethernet) を使い、PC(Python)から UDP で直接 CAN バス上のアクチュエータ (DJI C610 ESC / TTL サーボ / 差動ワイヤ機構モータ) を制御するための、基板設計(KiCad)・ファームウェア (STM32CubeMX + CMake)・PC側ツール一式です。
SimulatedFlow/kicad-board-2026-07-27-bluepixelmatrix
BluePixelMatrix - STM32 Bluepill addressable RGB pixel matrix board. Hand-solderable THT, bare PCB. KiCad source files.

Yashwanth786/Centralized_Power_Distribution_System
University EE labs share 10 workbenches between many student groups. Today, a lab staff member must physically walk to each table to switch power on or off, and there is no record of who used which table, when, or for…

AID-IOT/IOT-Memento-Design
A keepsake PCB built at the AICTE IDEA Lab, Poornima College of Engineering. It is a working board as well as a memento: a Seeed XIAO ESP32C3 drives four WS2812B LEDs and reads a BMP280 pressure/temperature sensor, and…



Catsarepro21/hackpad_v2
Wireless ESP32-S3 macropad: KiCad PCB, case STEP models, and Gerber/drill fabrication files.

jonny190/TableLight
A 3D-printable, battery-powered, USB-C rechargeable table lamp in the classic "Poldina" shape - honeycomb disc base, thin stem, down-firing cone shade with a white top - running WLED on an ESP32, with a capacitive touch…
It measures 161.8 × 152.9 mm and has 2 copper layers, 1.6 mm thick.
106 parts, built around the 74AHCT1G125SE, XIAO ESP32C3, WS2812B and SS34. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the slogic3d-cloud/heart repository on GitHub, at the commit this page was made from: the board is hardware/heart.kicad_pcb and its schematic hardware/heart.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).