Skip to content

Commit a1e957f

Browse files
committed
final V0.8, edited readme
1 parent 6b01e83 commit a1e957f

5 files changed

+89
-64
lines changed
653 KB
Loading

codm-wifi-pixel-controller.brd

Lines changed: 75 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
<layer number="255" name="routoute" color="7" fill="1" visible="no" active="yes"/>
150150
</layers>
151151
<board>
152-
<fusionsync huburn="a.cGVyc29uYWw6dWUyYzE1ODk4" projecturn="a.cGVyc29uYWw6dWUyYzE1ODk4IzIwMTkwNTIyMTk1MjcwNTc2" f3durn="urn:adsk.wipprod:dm.lineage:Nk1PyQTMTvCat4ddAu2akg" pcbguid="" lastpulledtime="2022-01-24T14:18:16Z" lastsyncedchangeguid="" latestrevisionid="644c5c88-4598-48f8-bb30-b3b27406aa41" lastsyncedrevisionid="644c5c88-4598-48f8-bb30-b3b27406aa41" lastboardhashguid="43147491-ffdc-860a-c325-d9ae77bc0f79" lastpushedtime="2022-02-04T09:11:24Z" linktopcb3d="true"/>
152+
<fusionsync huburn="a.cGVyc29uYWw6dWUyYzE1ODk4" projecturn="a.cGVyc29uYWw6dWUyYzE1ODk4IzIwMTkwNTIyMTk1MjcwNTc2" f3durn="urn:adsk.wipprod:dm.lineage:Nk1PyQTMTvCat4ddAu2akg" pcbguid="" lastpulledtime="2022-01-24T14:18:16Z" lastsyncedchangeguid="" latestrevisionid="175f26d7-25c8-49a1-9617-3b9ad50c9638" lastsyncedrevisionid="175f26d7-25c8-49a1-9617-3b9ad50c9638" lastboardhashguid="3203c956-ed61-614c-2d3d-8fccb22407a2" lastpushedtime="2022-03-15T11:10:58Z" linktopcb3d="true"/>
153153
<plain>
154154
<dimension x1="0" y1="0" x2="3.45" y2="0" x3="1.725" y3="-4.8" textsize="1.778" layer="48"/>
155155
<dimension x1="0" y1="0" x2="0" y2="3.5" x3="-5.83" y3="1.75" textsize="1.778" layer="48"/>
@@ -6344,39 +6344,71 @@ chip</description>
63446344
<class number="0" name="default" width="0" drill="0">
63456345
</class>
63466346
</classes>
6347-
<designrules name="aisler_2_layer_complex">
6348-
<description language="de">&lt;b&gt;Aisler Design Rules - 2 Layers - complex&lt;/b&gt;
6349-
6347+
<designrules name="Multi-CB_2L_125um-Tracks_OL35um">
6348+
<description language="de">&lt;b&gt;Multi-CB EAGLE Design Rules für 2 Lagen Standard (ohne Aufpreis)&lt;/b&gt;
6349+
&lt;br&gt;
6350+
125µm Leiter, 0.2mm Drill, ca. 35µm End-Kupfer (18µm Startkupfer)
63506351
&lt;p&gt;
6351-
Please note that the design rules provided here constitute the limit of our manufacturing capabilities. Especially in combination with the autorouter, boards are not guaranteed to be functional. So if possible, try not to exploit the drc minimum.
6352-
6353-
Everything else you will find on https://aisler.net/help</description>
6354-
<description language="en">&lt;b&gt;Aisler Design Rules - 2 Layers - complex&lt;/b&gt;
6355-
6352+
&lt;b&gt;Bitte beachten:&lt;/b&gt;
6353+
&lt;ul type=&quot;square&quot;&gt;
6354+
&lt;li&gt;Vias kleiner/gleich 0.45mm werden mit Lötstopp abgedeckt. Eine Freistellung der Vias kann unter Masks/Limit gesetzt werden.&lt;/li&gt;
6355+
&lt;li&gt;Bitte nur Vektorschrift verwenden! Im Control-Panel unter Optionen/Benutzeroberfläche: Immer Vektor-Schrift.&lt;/li&gt;
6356+
&lt;li&gt;Langlöcher im Layer 46 werden als durchkontaktierte Schlitze (DK) gefertigt, falls von Kupfer umgeben. NDK-Langlöcher müssen im Layer 20 definiert sein (Preisvorteil).&lt;/li&gt;
6357+
&lt;li&gt;Dieses .dru-File ist für Boards mit Fräskontur. Geritzte Kontur erfordert Distance/Copper/Dimension: 0.5mm.&lt;/li&gt;
6358+
&lt;li&gt;Falls Lötstopp-Brücken im gleichen Netz erwünscht: Clearance/Same Signals anpassen (empfohlen: 8mil)&lt;/li&gt;
6359+
&lt;li&gt;Supply/ Generate thermals ist standardmäßig aktiviert; kann auch deaktiviert werden.&lt;/li&gt;
6360+
&lt;li&gt;Zum Reduzieren der Pad-Größe für SMD-Schablonen kann Masks/Cream angepasst werden.&lt;/li&gt;
6361+
&lt;/ul&gt;
6362+
Für kleinere Werte (Leiterbahn, Drill) verwenden Sie bitte ein Advanced .dru-File von Multi-CB.&lt;br&gt;
6363+
Weitere Hinweise finden Sie unter &lt;b&gt;Design-Hilfe&lt;/b&gt; auf unserer Webseite &lt;a href=&quot;http://www.multi-circuit-boards.eu/leiterplatten-design-hilfe/einfuehrung.html&quot;&gt;www.multi-cb.de&lt;/a&gt;.
6364+
&lt;/p&gt;
63566365
&lt;p&gt;
6357-
Please note that the design rules provided here constitute the limit of our manufacturing capabilities. Especially in combination with the autorouter, boards are not guaranteed to be functional. So if possible, try not to exploit the drc minimum.
6358-
6359-
Everything else you will find on https://aisler.net/help</description>
6366+
Ihr Multi-CB Team
6367+
&lt;br&gt;&lt;br&gt;
6368+
&lt;em&gt;Alle Angaben ohne Gewähr! Eine perfekte Einstellung der Design-Rules kann verständlicherweise nur durch den Anwender erfolgen.&lt;/em&gt;
6369+
&lt;/p&gt;</description>
6370+
<description language="en">&lt;b&gt;Multi-CB EAGLE Design Rules for 2 layers standard (w/o surcharge)&lt;/b&gt;
6371+
&lt;br&gt;
6372+
125µm tracks, 0.2mm drills, ca. 35µm final copper (18µm start copper)
6373+
&lt;p&gt;
6374+
&lt;b&gt;Please note:&lt;/b&gt;
6375+
&lt;ul type=&quot;square&quot;&gt;
6376+
&lt;li&gt;Vias less/equal 0.45mm will be covered with solder mask. An exemption of the vias can be placed under Masks / Limit.&lt;/li&gt;
6377+
&lt;li&gt;Please only use vector fonts! In Control Panel under Options / User Interface: Always vector font.&lt;/li&gt;
6378+
&lt;li&gt;Oblong holes in the layer 46 are manufactured as plated-through slots (PTH), if surrounded by copper. NPTH-slots must be defined in the layer 20 (price advantage).&lt;/li&gt;
6379+
&lt;li&gt;This .dru-File is for boards with milling contour. V-scoring contour requires Distance / Copper / Dimension: 0.5mm.&lt;/li&gt;
6380+
&lt;li&gt;If solder-stop bridges on the same network are desired: Adjust Clearance / Same signal (recommended 8mil)&lt;/li&gt;
6381+
&lt;li&gt;Supply / Generate thermals is enabled by default; can also be deactivated.&lt;/li&gt;
6382+
&lt;li&gt;To reduce the pad size for SMD-Stencils: Masks/Cream can be customized.&lt;/li&gt;
6383+
&lt;/ul&gt;
6384+
For smaller values (conductors, drill) please use an Advanced .dru file of Multi-CB.&lt;br&gt;
6385+
For more information, see &lt;b&gt;Design-Aid&lt;/b&gt; on our website &lt;a href=&quot;http://www.multi-circuit-boards.eu/en/pcb-design-aid/introduction.html&quot;&gt;www.multi-cb.de&lt;/a&gt;.
6386+
&lt;/p&gt;
6387+
&lt;p&gt;
6388+
Your Multi-CB Team
6389+
&lt;br&gt;&lt;br&gt;
6390+
&lt;em&gt;All statements without guarantee! A perfect setting of design rules can understandably only be performed by the user.&lt;/em&gt;
6391+
&lt;/p&gt;</description>
63606392
<param name="layerSetup" value="(1*16)"/>
6361-
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
6362-
<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
6393+
<param name="mtCopper" value="0.018mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.018mm"/>
6394+
<param name="mtIsolate" value="1.55mm 0.71mm 0.36mm 0.2mm 0.2mm 0.2mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
63636395
<param name="mdWireWire" value="0.125mm"/>
63646396
<param name="mdWirePad" value="0.125mm"/>
63656397
<param name="mdWireVia" value="0.125mm"/>
63666398
<param name="mdPadPad" value="0.125mm"/>
63676399
<param name="mdPadVia" value="0.125mm"/>
63686400
<param name="mdViaVia" value="0.125mm"/>
6369-
<param name="mdSmdPad" value="0.125mm"/>
6370-
<param name="mdSmdVia" value="0.125mm"/>
6371-
<param name="mdSmdSmd" value="0.125mm"/>
6372-
<param name="mdViaViaSameLayer" value="8mil"/>
6401+
<param name="mdSmdPad" value="0mil"/>
6402+
<param name="mdSmdVia" value="0mil"/>
6403+
<param name="mdSmdSmd" value="0mil"/>
6404+
<param name="mdViaViaSameLayer" value="0.2mm"/>
63736405
<param name="mnLayersViaInSmd" value="2"/>
6374-
<param name="mdCopperDimension" value="0.3mm"/>
6375-
<param name="mdDrill" value="0.25mm"/>
6406+
<param name="mdCopperDimension" value="0.2mm"/>
6407+
<param name="mdDrill" value="0.2mm"/>
63766408
<param name="mdSmdStop" value="0mil"/>
63776409
<param name="msWidth" value="0.125mm"/>
63786410
<param name="msDrill" value="0.2mm"/>
6379-
<param name="msMicroVia" value="9.99mm"/>
6411+
<param name="msMicroVia" value="0.2mm"/>
63806412
<param name="msBlindViaRatio" value="1"/>
63816413
<param name="rvPadTop" value="0.25"/>
63826414
<param name="rvPadInner" value="0.25"/>
@@ -6385,37 +6417,37 @@ Everything else you will find on https://aisler.net/help</description>
63856417
<param name="rvViaInner" value="0.25"/>
63866418
<param name="rvMicroViaOuter" value="0.25"/>
63876419
<param name="rvMicroViaInner" value="0.25"/>
6388-
<param name="rlMinPadTop" value="0.2mm"/>
6389-
<param name="rlMaxPadTop" value="100mm"/>
6390-
<param name="rlMinPadInner" value="0.2mm"/>
6391-
<param name="rlMaxPadInner" value="100mm"/>
6392-
<param name="rlMinPadBottom" value="0.2mm"/>
6393-
<param name="rlMaxPadBottom" value="100mm"/>
6394-
<param name="rlMinViaOuter" value="0.2mm"/>
6395-
<param name="rlMaxViaOuter" value="100mm"/>
6396-
<param name="rlMinViaInner" value="0.2mm"/>
6397-
<param name="rlMaxViaInner" value="100mm"/>
6398-
<param name="rlMinMicroViaOuter" value="2.5mm"/>
6399-
<param name="rlMaxMicroViaOuter" value="100mm"/>
6400-
<param name="rlMinMicroViaInner" value="2.5mm"/>
6401-
<param name="rlMaxMicroViaInner" value="100mm"/>
6420+
<param name="rlMinPadTop" value="0.125mm"/>
6421+
<param name="rlMaxPadTop" value="0.75mm"/>
6422+
<param name="rlMinPadInner" value="0.125mm"/>
6423+
<param name="rlMaxPadInner" value="0.75mm"/>
6424+
<param name="rlMinPadBottom" value="0.125mm"/>
6425+
<param name="rlMaxPadBottom" value="0.75mm"/>
6426+
<param name="rlMinViaOuter" value="0.125mm"/>
6427+
<param name="rlMaxViaOuter" value="0.75mm"/>
6428+
<param name="rlMinViaInner" value="0.125mm"/>
6429+
<param name="rlMaxViaInner" value="0.75mm"/>
6430+
<param name="rlMinMicroViaOuter" value="0.125mm"/>
6431+
<param name="rlMaxMicroViaOuter" value="0.75mm"/>
6432+
<param name="rlMinMicroViaInner" value="0.125mm"/>
6433+
<param name="rlMaxMicroViaInner" value="0.75mm"/>
64026434
<param name="psTop" value="-1"/>
64036435
<param name="psBottom" value="-1"/>
64046436
<param name="psFirst" value="-1"/>
64056437
<param name="psElongationLong" value="100"/>
64066438
<param name="psElongationOffset" value="100"/>
6407-
<param name="mvStopFrame" value="0"/>
6439+
<param name="mvStopFrame" value="1"/>
64086440
<param name="mvCreamFrame" value="0"/>
6409-
<param name="mlMinStopFrame" value="0mil"/>
6410-
<param name="mlMaxStopFrame" value="0mil"/>
6441+
<param name="mlMinStopFrame" value="2mil"/>
6442+
<param name="mlMaxStopFrame" value="2mil"/>
64116443
<param name="mlMinCreamFrame" value="0mil"/>
64126444
<param name="mlMaxCreamFrame" value="0mil"/>
6413-
<param name="mlViaStopLimit" value="0mil"/>
6445+
<param name="mlViaStopLimit" value="0.45mm"/>
64146446
<param name="srRoundness" value="0"/>
64156447
<param name="srMinRoundness" value="0mil"/>
6416-
<param name="srMaxRoundness" value="100mm"/>
6417-
<param name="slThermalIsolate" value="10mil"/>
6418-
<param name="slThermalsForVias" value="0"/>
6448+
<param name="srMaxRoundness" value="0mil"/>
6449+
<param name="slThermalIsolate" value="0.2mm"/>
6450+
<param name="slThermalsForVias" value="1"/>
64196451
<param name="dpMaxLengthDifference" value="10mm"/>
64206452
<param name="dpGapFactor" value="2.5"/>
64216453
<param name="checkAngle" value="0"/>
@@ -6628,7 +6660,7 @@ Everything else you will find on https://aisler.net/help</description>
66286660
<attribute name="SPICEPREFIX" value="R" x="-2.6" y="29.9" size="1.778" layer="27" display="off"/>
66296661
<attribute name="VALUE" x="11.765" y="21.995" size="1.27" layer="27"/>
66306662
</element>
6631-
<element name="LED" library="led" library_urn="urn:adsk.eagle:library:259" package="CHIP-LED0805" package3d_urn="urn:adsk.eagle:package:15818/2" value="150080RS75000" x="8.7" y="23.9" smashed="yes" rot="R90">
6663+
<element name="LED" library="led" library_urn="urn:adsk.eagle:library:259" package="CHIP-LED0805" package3d_urn="urn:adsk.eagle:package:15818/2" override_package3d_urn="urn:adsk.eagle:package:34599476/2" override_package_urn="urn:adsk.eagle:footprint:15672/1" value="150080GS75000" x="8.7" y="23.9" smashed="yes" rot="R90">
66326664
<attribute name="NAME" x="6.75" y="23.9" size="0.8128" layer="25" align="center-right"/>
66336665
<attribute name="VALUE" x="9.97" y="26.44" size="1.27" layer="27" rot="R180"/>
66346666
</element>
@@ -6950,7 +6982,6 @@ Everything else you will find on https://aisler.net/help</description>
69506982
<wire x1="45.3" y1="7.9" x2="45.6" y2="7.9" width="0.1524" layer="1"/>
69516983
<wire x1="45.6" y1="9.9" x2="45.6" y2="7.9" width="0.1524" layer="16"/>
69526984
<wire x1="31.875" y1="5.6" x2="32" y2="5.6" width="0.254" layer="1"/>
6953-
<wire x1="31.875" y1="5.375" x2="31.875" y2="5.6" width="0.254" layer="1"/>
69546985
<wire x1="34" y1="5.2" x2="33.2" y2="5.2" width="0.254" layer="1"/>
69556986
<wire x1="32.4" y1="5.2" x2="33.2" y2="5.2" width="0.254" layer="1"/>
69566987
</signal>
@@ -7362,16 +7393,6 @@ Everything else you will find on https://aisler.net/help</description>
73627393
<mfgpreviewcolor name="coppercolor" color="0xFFFFBF00"/>
73637394
<mfgpreviewcolor name="substratecolor" color="0xFF786E46"/>
73647395
</mfgpreviewcolors>
7365-
<errors>
7366-
<approved hash="4,16,1aa5776d766d6395"/>
7367-
<approved hash="4,16,26e81b8bd90cdfad"/>
7368-
<approved hash="4,16,38a508322ba8416d"/>
7369-
<approved hash="4,16,19623c98beb3e3b5"/>
7370-
<approved hash="19,16,cf014bd17def792f"/>
7371-
<approved hash="19,16,c38343d375ed75a1"/>
7372-
<approved hash="19,16,cc6d4dd57beb7a53"/>
7373-
<approved hash="19,16,cc6b73cb45f57a51"/>
7374-
</errors>
73757396
</board>
73767397
</drawing>
73777398
<compatibility>

codm-wifi-pixel-controller.jpg

-20.5 KB
Binary file not shown.

codm-wifi-pixel-controller.sch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20788,7 +20788,7 @@ chip</description>
2078820788
<part name="GND11" library="supply1" deviceset="GND" device=""/>
2078920789
<part name="+3V31" library="supply1" deviceset="+3V3" device=""/>
2079020790
<part name="R3" library="rcl" deviceset="R-EU_" device="R0603" package3d_urn="urn:adsk.eagle:package:23555/3" value="2k7"/>
20791-
<part name="LED" library="led" library_urn="urn:adsk.eagle:library:259" deviceset="LED" device="CHIP-LED0805" package3d_urn="urn:adsk.eagle:package:15818/2" value="150080RS75000"/>
20791+
<part name="LED" library="led" library_urn="urn:adsk.eagle:library:259" deviceset="LED" device="CHIP-LED0805" package3d_urn="urn:adsk.eagle:package:15818/2" override_package3d_urn="urn:adsk.eagle:package:34599476/2" override_package_urn="urn:adsk.eagle:footprint:15672/1" value="150080GS75000"/>
2079220792
<part name="C6" library="rcl" deviceset="C-EU" device="C0603K" package3d_urn="urn:adsk.eagle:package:23680/2" value="100n"/>
2079320793
<part name="R4" library="rcl" deviceset="R-EU_" device="R0603" package3d_urn="urn:adsk.eagle:package:23555/3" value="10k"/>
2079420794
<part name="C5" library="rcl" deviceset="C-EU" device="C0603K" package3d_urn="urn:adsk.eagle:package:23680/2" value="1u"/>

readme.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
# Wi-Fi Pixel Controller
22

3-
ESP8266 based Wi-Fi Pixel Controller to drive adressable LED stripes like Neopixel/SK6812/WS2801/etc using [WLED](https://github.com/Aircoookie/WLED).
4-
Version 0.6 includes an 74AHCT125D level shifter for the 5V logic of the typical pixel. 12V stripes could also be used, as they too have 5V data lines. See the wiring examples:
3+
ESP32 based Wi-Fi Pixel Controller to drive adressable LED strips like Neopixel/WS281x/SK6812/WS2801/WS2815/etc using [WLED](https://github.com/Aircoookie/WLED).
4+
Version 0.8 now includes can be used with 5V and 12V strips without the need of external dc-dc converters and we've updated the microcontroller from an ESP8266 to an ESP32. Therefore handling or more LED's and multiple strips are no problem. See https://kno.wled.ge/features/multi-strip/
55

6-
* [Wiring Example WS281x/SK6812](https://shop.codm.de/media/pdf/c6/80/6c/Anschlussplan-cod-m-PixelController-0-6-WS2812-SK6812.pdf)
7-
* [Wiring Example WS281x/SK6812 12V](https://shop.codm.de/media/pdf/g0/b8/fe/Anschlussplan-cod-m-PixelController-0-6-WS2812-SK6812-12V.pdf)
8-
* [Wiring Example WS2801/APA102](https://shop.codm.de/media/pdf/4b/d0/af/Anschlussplan-cod-m-PixelController-0-6-WS2801-APA102.pdf)
6+
There now is a button (`IO15`) which can be freely confirugred via WLED. See https://kno.wled.ge/features/macros/#buttons
7+
8+
* [Wiring Example WS281x/SK6812 5V/12V](https://shop.codm.de/media/pdf/53/e0/3b/Anschlussplan-codm-pixel-controller-V0-8-WS281x-SK6812-1-0.pdf)
9+
* [Wiring Example WS2801/APA102 5V/12V](https://shop.codm.de/media/pdf/81/70/48/Anschlussplan-codm-pixel-controller-V0-8-WS2801-1-0.pdf
10+
* [Wiring Example WS2815 12V](https://shop.codm.de/media/pdf/1b/ac/0b/Anschlussplan-codm-pixel-controller-V0-8-WS2815-1-0.pdf)
911

1012
You can buy it at our webshop: [Wi-Fi Pixel Controller (WLED)](https://shop.codm.de/automation/pixel/30/wlan-pixel-controller-wled)
1113

12-
[![cod.m GmbH Wi-Fi Pixel Controller](codm-wifi-pixel-controller.jpg)](https://shop.codm.de/automation/pixel/30/wlan-pixel-controller-wled)
14+
[![cod.m GmbH Wi-Fi Pixel Controller](codm-pixel-controller-wled-0.8-case-top.jpg)](https://shop.codm.de/automation/pixel/30/wlan-pixel-controller-wled)
1315

1416
The board comes preflashed with the current version of WLED, but can be used with any firmware you like, as we've added a flash and reset button for easy flashing.
1517

@@ -20,21 +22,23 @@ Please read the [Adafruit Neopixel Uberguide](https://learn.adafruit.com/adafrui
2022
Based on the LoxPixel-idea from Dennis (www.unser-smartes-zuhause.de) we've discussed a board layout and in the beginning developed our own software based in Dennis' initial code.
2123
In the end we've settled to expand the absolutely astonishing WLED project with the needed features for Loxone. In Version 0.11 WLED can now understand Loxone values.
2224

25+
* ESP32 4MB
26+
* usable in 5V and 12V installations
2327
* compact (72x30x16mm)
2428
* reverse polarity protection
2529
* wiring through srew-plug terminal
26-
* open source, using ESP-WROOM-02D 4MB
2730
* real 74AHCT125D level shifter
2831
* drives up to 850 pixel
2932
* detailed instructions
3033
* could be easily (re-)programmed
34+
* open source (CC-BY-NC-SA 4.0)
3135

3236
# Thanks
3337
* [Aircookie](https://github.com/Aircoookie) and the folks from [WLED](https://github.com/Aircoookie/WLED)
3438
* Dennis Henning for the inital idea of the [Lox!Pixel](https://unser-smartes-zuhause.de/2019/10/20/loxpixel-rgbw-neopixel-integration-in-loxone/)
3539
* [m0fa](https://github.com/m0fa)
3640

3741
# License
38-
[CC-BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/de/)
42+
[CC-BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/de/)
3943

40-
cod.m GmbH, Patrik Mayer, 2020
44+
cod.m GmbH, Patrik Mayer, 2022

0 commit comments

Comments
 (0)