
Iot i2c
jordibinefa/PLB-IoT-I2C
Programming Learning Board - Internet of Things - Inter Integrated Circuit (KiCAD files)

The ESP32 front panel: THT, 2 layers, made at Aisler. Binding source of truth: docs/board-spec.md. Decisions are in the project log (../log/decisions.md).
Balkon borg carrier is an open-source printed circuit board by hgn, from the hgn/balkon-borg repository on GitHub. It is a 2-layer board of 150 × 92 mm with 36 parts on 36 nets, routed with 293 tracks and 5 vias.
It is built around the BME280 and BC337. Its parts include 15 resistors, 4 transistors, 2 capacitors, 2 connectors and 1 fuse. It belongs with the ESP32 boards of this library.
The ESP32 front panel: THT, 2 layers, made at Aisler. Binding source of truth:
docs/board-spec.md. Decisions are in the project log
(../log/decisions.md).
The schematic — including the correct ESP32-DevKitC-V4 pin mapping — is described in code and turned into a KiCad netlist; placement and routing are scripted so the board is reproducible.
gen-netlist.py (SKiDL) → balkon-borg-carrier.net:
make -C pcb netlistbalkon-borg-carrier.kicad_pcb with
kinet2pcb (footprints + nets), or start from the committed board.place-board.py lays out the footprints,
draws the outline, adds the mounting holes and the "HagiOne" silkscreen, sets the
Aisler DRC minimums, exports a Specctra DSN; Freerouting autoroutes it;
apply-ses.py imports the session back. (Freerouting is an external tool, not
vendored.)make -C pcb pour # GND pour (both layers) + antenna keep-outmake -C pcb verify # ERC, DRC, netlist<->board, spec, fab outputsmake -C pcb outputs # gerbers/drill/pos + Aisler zip into output/make -C pcb verify runs the whole check unattended and exits non-zero if
anything is off, so it is safe to trust before spending money on a fab run. Five
stages:
kicad-cli geometry, clearance, track width and silk checks.docs/board-spec.md. This is the one check a DRC cannot
do: it catches a swapped connector pin or a wrong resistor value. The
GPIO-number-to-header-pin mapping is out of scope (it needs the external
DevKitC-V4 pinout as ground truth).gen-netlist.py — SKiDL script, builds the netlist from docs/board-spec.md.place-board.py / apply-ses.py — headless placement and Specctra-session import
(run with the system python, which has the KiCad pcbnew module).add-ground-pour.py — GND pour + antenna keep-out, run in three phases (make pour);
the phases must be separate processes (pcbnew drops the rule area otherwise).scripts/gen-outputs.py — fabrication output via kicad-cli.verify.py — orchestrates the five verification stages (make verify).check-netlist-board.py / check-board-spec.py — the netlist↔board and
board-spec intent checks; netparse.py is the shared netlist parser.Comments/net names in English. THT only, JST-XH 2.5 mm, generous spacing. Change the
schematic only in gen-netlist.py, then regenerate the netlist and re-import.
The cable harness from the carrier board's JST connectors to the external components,
shown two ways. Both are generated from the netlist (make -C pcb harness), so they
cannot silently disagree with the board.
Schematic harness (pinout + wire colours), rendered by WireViz from
wiring-harness.yaml — click for the zoomable SVG:
The same connections on the board render, with callouts placed by
annotate-board.py from the connector positions
(full-resolution PNG):
Terminal assignment and the GPIO/I²C/Wago plan behind these images live in
../docs/wiring.md.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 100 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R5, R6, R7, R8, R10, R12, R14 |
| 4 | 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R9, R11, R13, R15 |
| 4 | BC337 | Package_TO_SOT_THT:TO-92_Inline | Q1, Q2, Q3, Q4 |
| 4 | MountingHole_2.7mm_M2.5 | MountingHole_2.7mm_M2.5 | H1, H2, H3, H4 |
| 4 | Taster | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J_BTN1, J_BTN2, J_BTN3, J_BTN4 |
| 2 | 220 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R2 |
| 2 | 4k7 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R3, R4 |
| 1 | 100nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C2 |
| 1 | 10uF | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C1 |
| 1 | 2A | Capacitor_THT:C_Disc_D7.5mm_W5.0mm_P5.00mm | F1 |
| 1 | 5V in | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J_PWR |
| 1 | BME280 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J_BME |
| 1 | ESP32-DevKitC L | Connector_PinSocket_2.54mm:PinSocket_1x19_P2.54mm_Vertical | J2 |
| 1 | ESP32-DevKitC R | Connector_PinSocket_2.54mm:PinSocket_1x19_P2.54mm_Vertical | J3 |
| 1 | Encoder EC11 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J_ENC |
| 1 | LD2410B | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J_RADAR |
It measures 150 × 92 mm and has 2 copper layers, 1.6 mm thick.
36 parts, built around the BME280 and BC337. 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 hgn/balkon-borg repository on GitHub, at the commit this page was made from: the board is pcb/balkon-borg-carrier.kicad_pcb and its schematic pcb/balkon-borg-carrier.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask hgn before reusing the design.

jordibinefa/PLB-IoT-I2C
Programming Learning Board - Internet of Things - Inter Integrated Circuit (KiCAD files)

roarfred/AmsToMqttBridge
Minimalistic system to read AMS/HAN data from electrical meter



leomil72/LM80C
A Z80-based homebrew computer withTMS9918, AY-3-8910, Z80 CTC, Z80 PIO, and Z80 SIO

pablozg/freeds
Derivador de energía solar excedente creado por Pablo Zerón, Diseño PCB por Amcalo, Tester original por Aeizoon, Wiki por Zoilo Mora

lampmerchant/tashtwenty
An interface for the DCD protocol used by Apple's Hard Disk 20.
CTXz/Video-Glitch-Array
A collection of glitch art circuits dedicated to VGA signal manipulation