Skip to the content
PCBKitNew board
2 layers167.3 × 103 mmIw-8-controller, the printed circuit board in 3D

Iw-8-controller

mekatrol/electronics

This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

Size
167.3 × 103 mm
Copper layers
2
Thickness
1.6 mm
Parts
212
Nets
147
Pads
734
Tracks, vias
991, 381
Pours
34
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
20 Jul 2026
Updated
7 Nov 2026

Overview

Iw-8-controller is an open-source printed circuit board by mekatrol, from the mekatrol/electronics repository on GitHub. It is a 2-layer board of 167.3 × 103 mm with 212 parts on 147 nets, routed with 991 tracks and 381 vias.

It is built around the BT136S, LM2576S-12 and LM324, with the W25Q128JVSIQ, 74HCT595D and AMS1117-3.3 among its other parts. Its parts include 54 resistors, 43 diodes, 22 connectors, 21 capacitors and 11 ICs. It belongs with the RP2040 boards of this library.

Main components

12

README

README.md

Home Automation Electronics

This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects. Hardware designs are primarily created with KiCad, firmware targets Raspberry Pi Pico/Pico W and MicroPython-compatible boards, and the host-side controller tools are written in .NET, C++, and Python.

Repository layout

text
.
├── firmware/              Embedded C/C++, Arduino, and MicroPython projects
├── hardware/              KiCad projects, libraries, footprints, and 3D models
├── software/              Desktop, command-line, monitoring, and test tools
├── irrigation_wiring.txt  Irrigation wiring notes
└── README.md              Repository overview

Generated build output, IDE state, KiCad backup/session files, and caches are excluded by .gitignore.

Hardware projects

Each board directory contains its KiCad project (.kicad_pro), schematic (.kicad_sch), and PCB layout (.kicad_pcb) where applicable. Some projects also include manufacturing Gerber archives or exported 3D models.

ProjectLocationDescription
Basic controllerhardware/basic_controller/General-purpose controller board with a hierarchical CPU schematic.
IW-8 expansionhardware/iw-8-expansion/Expansion board with separate power and output schematic sheets.
LED controllerhardware/led_controller/Controller board for LED loads.
Output boardhardware/output_board/Standalone output-control board.
Pico controllerhardware/pico/controller/Raspberry Pi Pico-based controller with CPU, input, output, power, and control-panel designs.
Pico IW-8 controllerhardware/pico/iw-8-controller/Pico-based IW-8 controller with input, output, power, and CPU sheets.
Pico output controllerhardware/pico/output_controller/Pico output controller with two output banks and supporting input and power circuitry.
RS-485 boardhardware/rs485_board/RS-485 interface board.
Temperature controllerhardware/temperature_controller/Temperature-control PCB and exported 3D model.
Triac/FET modulehardware/triac_fet_module/Mains-load switching module using an optically isolated zero-cross triac, with KiCad design rules and Gerber/CNC manufacturing files.
WS2812 segmenthardware/ws2812_segment/PCB segment for WS2812 addressable LEDs.

Shared hardware resources include:

  • hardware/kicad/ — the canonical KiCad resource tree, containing symbols, footprints, Python modules, and action plugins.
  • hardware/fusion360_modules/ — Fusion 360 helper scripts.
  • hardware/pcb-checklist.xlsx — PCB design/review checklist.

Open a hardware project by loading its .kicad_pro file in KiCad. Keep the repository layout intact so that relative library and 3D-model references continue to resolve.

Generating JLCPCB production files

Use hardware/kicad/modules/generate_jlcpcb.py to generate the fabrication and assembly files for a board. Run it from the repository root and pass the name of the project under hardware/. For example, to generate the LED controller:

sh
python3 hardware/kicad/modules/generate_jlcpcb.py led_controller

The project argument selects which board is generated; it is not hard-coded in the script. A full project directory, .kicad_pro file, or .kicad_pcb file can also be supplied, for example hardware/led_controller/led_controller.kicad_pro.

The script requires KiCad 7 or newer. It automatically finds a native kicad-cli executable or the org.kicad.KiCad Flatpak. For another installation, provide the executable explicitly:

sh
python3 hardware/kicad/modules/generate_jlcpcb.py \
  --kicad-cli /path/to/kicad-cli led_controller

Files are written to a gerber/ directory beside the board. For a project named led_controller, the upload files are:

FileJLCPCB upload fieldContents
gerber/led_controller-gerbers.zipPCB Gerber fileCopper, solder-mask, silkscreen, board-outline, paste, and drill files.
gerber/led_controller-bom.csvBOM fileParts having a non-empty LCSC Part # schematic field.
gerber/led_controller-positions.csvCPL fileComponent centroid/pick-and-place data.

The Gerber ZIP is generated automatically. Do not add the BOM and CPL to that ZIP: JLCPCB expects the fabrication ZIP, BOM, and CPL as three separate uploads when ordering assembled boards. For a bare PCB order, only the Gerber ZIP is required.

The generator uses these JLCPCB-compatible export settings:

  • One Gerber file per enabled copper layer, including all inner copper layers.
  • Front and back solder mask, silkscreen, and paste layers, plus Edge.Cuts.
  • KiCad's Protel-style Gerber extensions and Gerber X2/netlist attributes.
  • Excellon drill format in millimetres, with plated and non-plated holes in the KiCad default combined drill output.
  • CPL output in millimetres for both board sides, using the board's absolute origin. KiCad's columns are converted to Designator, Mid X, Mid Y, Rotation, and Layer, with the sides written as Top and Bottom.
  • BOM columns Comment, Designator, Footprint, and LCSC Part #. Identical parts are grouped, and symbols without an LCSC Part # are omitted.

Always inspect the uploaded board preview, part matches, placement rotations, and board side in JLCPCB before submitting an order. Component-specific rotation corrections are not applied automatically by this script.

Firmware projects

Raspberry Pi Pico SDK

The root firmware/CMakeLists.txt configures a Pico W build using CMake and the Raspberry Pi Pico SDK. It currently includes these targets:

TargetLocationPurpose
iw_8_controllerfirmware/iw_8_controller/Main C++ IW-8 controller firmware, including messaging, flows, storage, RTC, and PIO-driven outputs.
memory_management_testingfirmware/memory_management_testing/Test target for the custom memory-management implementation.
uart_testingfirmware/uart_testing/Test target for serial/UART communication.

Reusable Pico code lives in firmware/common/ and covers communication, memory management, PIO, RTC, flash storage, CRC, I2C, inter-core synchronization, and general utilities.

To configure and build the Pico SDK targets:

sh
export PICO_SDK_PATH=/path/to/pico-sdk
cmake -S firmware -B firmware/build
cmake --build firmware/build

The project requires Pico SDK 1.3.0 or later and uses C11 and C++17.

MicroPython and Python device firmware

ProjectLocationDescription
Garage monitorfirmware/garage_monitor/Networked garage monitor with mmWave sensing and NeoPixel support.
IW-8 controller prototypefirmware/iw_8_controller_python/Python implementation/prototype of the IW-8 controller.
mmWave sensorfirmware/mmwave_sensor/Networked mmWave sensor firmware with MQTT and NeoPixel support.
Simple controllerfirmware/simple_controller/Small networked controller with sensor and NeoPixel helpers.
Wall sensorfirmware/wall_sensor/Wall-sensor firmware with WLAN, I2C, and NeoPixel helpers.

Device-specific config.py files hold each firmware project's configuration. Review these before deploying to a board and avoid committing private credentials.

Arduino projects

ProjectLocationDescription
Fish feederfirmware/fish_feeder/Fish-feeder control using a stepper motor; Arduino and Python implementations are present.
Reflow controllerfirmware/reflow_controller/Reflow-oven controller with temperature sensing, PID control, stages, plotting, learning, and LCD/UI code.

Development and protocol tools

  • firmware/bluetooth_test/ contains Python Bluetooth client and server test programs.
  • firmware/rp2040_registers.docx is an RP2040 register reference.
  • firmware/common/communication/ defines the device communication and message protocol shared by firmware components.

Support software

.NET controller tools

software/Controller/Controller.sln is a Visual Studio/.NET 6 solution containing:

ProjectDescription
HomeAutomation.CommonShared configuration, dependency-injection, logging, serial communication, protocol, and message implementations.
HomeAutomation.ControllerCLICommand-line controller application built on the common library.
HomeAutomation.MonitorConfigurable monitoring process; includes application settings and a service definition.
HomeAutomation.TerminalSerial terminal utility.

Build the solution with:

sh
dotnet build software/Controller/Controller.sln

Other tools

  • software/CodeTestHarness/ is a Visual C++ test harness for native code experiments.
  • software/mmwave_sensor/ is a Python serial/data-analysis utility using pyserial and numpy.

Install the Python utility dependencies with:

sh
python -m pip install -r software/mmwave_sensor/requirements.txt

Reference material

  • irrigation_wiring.txt documents irrigation-system wiring.
  • Project-specific VS Code configuration and workspace files are retained where they provide useful build, debugging, or MicroPython tooling settings.
  • Fabrication ZIP, Gerber, drill, and CNC files are retained where they represent deliberate manufacturing outputs; automatic KiCad backups, local history, lock files, and session state are ignored.

Working in this repository

  • Preserve the existing directory structure because firmware, KiCad libraries, and 3D models may use relative paths.
  • Do not commit generated build, bin, obj, cache, or automatic backup directories.
  • Review hardware changes with hardware/pcb-checklist.xlsx before ordering boards.
  • Treat device configuration and application settings as potentially environment-specific and check them for secrets before committing.

Parts

212
QtyValueFootprintReferences
181KResistor_SMD:R_1206_3216MetricR1, R2, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42 +2
16100RResistor_SMD:R_1206_3216MetricR4, R7, R8, R11, R12, R13, R14, R17, R18, R21, R22, R24, R25, R26, R27, R28
13100nCapacitor_SMD:C_1206_3216MetricC1, C2, C4, C5, C13, C14, C15, C16, C17, C18, C19, C20, C21
12SparkGapFootprintLibrary:Arc Spark GapE1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12
1110KResistor_SMD:R_1206_3216MetricR3, R5, R9, R19, R20, R23, R47, R48, R51, R52, R53
10CON2TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ3, J4, J15, J16, J17, J18, J19, J20, J21, J22
10MountingHole_PadMountingHole:MountingHole_3.2mm_M3_Pad_ViaH1, H2, H3, H4, H5, H6, H7, H8, H9, H10
94.7KResistor_SMD:R_1206_3216MetricR6, R10, R15, R16, R45, R46, R49, R50, R54
9LEDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD3, D21, D22, D23, D30, D31, D32, D37, D38
9SMAJ48CADiode_SMD:D_SMAD11, D15, D16, D17, D24, D25, D26, D33, D34
9SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged2Bar_RoundedPad1.0x1.5mmJP1, JP7, JP8, JP9, JP13, JP14, JP15, JP18, JP19
8BT136SPackage_TO_SOT_SMD:TO-252-3_TabPin2D18, D19, D20, D27, D28, D29, D35, D36
8HXY2102EIFootprintLibrary:SOT-323_ALTERNATE_PIN_NUMBERQ2, Q3, Q4, Q5, Q6, Q7, Q8, Q9
8Jumper_3_OpenConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP4, JP5, JP6, JP10, JP11, JP12, JP16, JP17
6MBR120Diode_SMD:D_SOD-123D1, D2, D6, D7, D39, D40
6US1M 1ADiode_SMD:D_SMAD4, D5, D8, D9, D10, D14
53V3Package_TO_SOT_SMD:SOT-23D12, D13, D41, D42, D43
5Conn_01x04_MaleConnector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_VerticalJ1, J7, J8, J9, J11
44.7uCapacitor_SMD:CP_Elec_6.3x5.4C7, C8, C9, C12
4FiducialFiducial:Fiducial_1mm_Mask2mmFID1, FID2, FID3, FID4
3220uCapacitor_SMD:CP_Elec_6.3x7.7C3, C6, C10
2Conn_01x04_FemaleConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ12, J13
2EL3H7Package_SO:SOP-4_4.4x2.6mm_P1.27mmU9, U10
2Fuse_SmallFuse:Fuse_Blade_ATO_directSolderF1, F2
2Jumper_2_OpenConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP2, JP3
1+12VTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ2
11000uCapacitor_SMD:CP_Elec_16x17.5C11
1100uInductor_SMD:L_1206_3216MetricL1
124-26VACTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ5
132.768kHz SMD Crystal ResonatorCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY1
174HCT595Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU8
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U2
1AMS1117-5.0Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1AO3401APackage_TO_SOT_SMD:SOT-23Q1
1CR2032Battery:BatteryHolder_Keystone_1058_1x2032BT1
1Conn_01x03_MaleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ10
1Conn_02x10_Odd_EvenConnector_IDC:IDC-Header_2x10_P2.54mm_VerticalJ14
1DS1307ZN+Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU5
1GNDTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ6
1LM2576S-12Package_TO_SOT_SMD:TO-263-5_TabPin3U3
1LM324Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU11
1PicoRPi_Pico:RPi_Pico_SMD_TH_No_SWDU7
1STWD100Package_TO_SOT_SMD:SOT-23-5U4
1TS-1187A-B-A-B Push ButtonButton_Switch_SMD:SW_SPST_TL3342SW1
1TestPoint_2PoleTestPoint:TestPoint_2Pads_Pitch5.08mm_Drill1.3mmTP1
1W25Q128JVSPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU6

Questions

How big is the Iw-8-controller PCB?

It measures 167.3 × 103 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Iw-8-controller use?

212 parts, built around the BT136S, LM2576S-12, LM324 and W25Q128JVSIQ. 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.

Where can I download the Iw-8-controller KiCad files?

From the mekatrol/electronics repository on GitHub, at the commit this page was made from: the board is hardware/iw-8-controller/iw-8-controller.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Iw-8-controller design in my own project?

Its repository states no licence, so its author keeps all rights: ask mekatrol before reusing the design.

More from mekatrol/electronics

12
  • 2 layers191.5 × 116 mmPiDaughterBoard, the printed circuit board in 3D

    PiDaughterBoard

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    175 parts
  • 2 layers238 × 122 mmOutput controller, the printed circuit board in 3D

    Output controller

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    171 parts
  • 2 layers140 × 100 mmController, the printed circuit board in 3D

    Controller

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    152 parts
  • 2 layers181.7 × 107.5 mm8ZoneTriac, the printed circuit board in 3D

    8ZoneTriac

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    141 parts
  • 4 layers150 × 80 mmMek output expander, the printed circuit board in 3D

    Mek output expander

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    132 parts
  • 2 layers167.3 × 48.9 mmIw-8-expansion, the printed circuit board in 3D

    Iw-8-expansion

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    97 parts
  • 4 layers68 × 88 mmBasic controller, the printed circuit board in 3D

    Basic controller

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    54 parts
  • 2 layers50 × 70 mmLed controller, the printed circuit board in 3D

    Led controller

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    33 parts
  • 2 layers25 × 42 mmMek sub triac, the printed circuit board in 3D

    Mek sub triac

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    21 parts
  • 2 layers24 × 22.1 mmRs485 board, the printed circuit board in 3D

    Rs485 board

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    18 parts
  • 2 layers150 × 100 mmMek core ctrl, the printed circuit board in 3D

    Mek core ctrl

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    17 parts
  • 2 layers25 × 42 mmMek sub fet, the printed circuit board in 3D

    Mek sub fet

    mekatrol/electronics

    This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.

    16 parts

Similar boards

  • 4 layers100 × 100 mmMWGEN G1, the printed circuit board in 3D

    MWGEN G1

    MR-DOS/MWGEN-G1

    12.5 MHz - 6400 MHz (LMX2572) or even up to 20 GHz (LMX2595) generator board with int./ext. reference.

    373 parts18GPL-3.0
  • 2 layers84 × 60 mmHelios, the printed circuit board in 3D

    Helios

    formicidae-tracker/hardware

    Hardware repository for the FORT system

    143 parts1
  • 4 layers161.1 × 82.9 mmAll in one smc, the printed circuit board in 3D

    All in one smc

    nojan1/project-wrass

    The purpose of Project Wrass is to develop the Wrass 1.

    150 parts
  • 2 layers210 × 104 mmAmplifierBoard, the printed circuit board in 3D

    AmplifierBoard

    dangrie158/AmpStation

    A Class D audio amplifier in a n old Teufel Decoder Station 5 case

    243 partsMIT
  • 4 layersPwr v3, the printed circuit board in 3D

    Pwr v3

    LiU-SeeGoals/Electronics

    Schematics etc.

    74 parts
  • 2 layers139.7 × 63.5 mmCTL-2.0, the printed circuit board in 3D

    CTL-2.0

    mekanii/ESU

    Below is the output scope from the sense circuit, where the pad resistance values are 5Ω, 200Ω, 1kΩ, and High Impedance.

    66 parts
  • 4 layers99.1 × 68.6 mmSTM32XP, the printed circuit board in 3D

    STM32XP

    MechatronixLab/STM32XP

    Development board based on the STM32F411RET6

    176 parts14