
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.

This repository contains the electronics, embedded firmware, support software, and reference material for a collection of home-automation and workshop projects.
PiDaughterBoard is an open-source printed circuit board by mekatrol, from the mekatrol/electronics repository on GitHub. It is a 2-layer board of 191.5 × 116 mm with 175 parts on 128 nets, routed with 1,294 tracks and 61 vias.
It is built around the ADM2483BRW, TPS54331D and LM339, with the 74HC165D, 74HC595 and PCF8563T/5 among its other parts. Its parts include 70 resistors, 31 capacitors, 16 diodes, 16 connectors and 14 transistors.
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.
.
├── 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 overviewGenerated build output, IDE state, KiCad backup/session files, and caches are excluded by .gitignore.
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.
| Project | Location | Description |
|---|---|---|
| Basic controller | hardware/basic_controller/ | General-purpose controller board with a hierarchical CPU schematic. |
| IW-8 expansion | hardware/iw-8-expansion/ | Expansion board with separate power and output schematic sheets. |
| LED controller | hardware/led_controller/ | Controller board for LED loads. |
| Output board | hardware/output_board/ | Standalone output-control board. |
| Pico controller | hardware/pico/controller/ | Raspberry Pi Pico-based controller with CPU, input, output, power, and control-panel designs. |
| Pico IW-8 controller | hardware/pico/iw-8-controller/ | Pico-based IW-8 controller with input, output, power, and CPU sheets. |
| Pico output controller | hardware/pico/output_controller/ | Pico output controller with two output banks and supporting input and power circuitry. |
| RS-485 board | hardware/rs485_board/ | RS-485 interface board. |
| Temperature controller | hardware/temperature_controller/ | Temperature-control PCB and exported 3D model. |
| Triac/FET module | hardware/triac_fet_module/ | Mains-load switching module using an optically isolated zero-cross triac, with KiCad design rules and Gerber/CNC manufacturing files. |
| WS2812 segment | hardware/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.
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:
python3 hardware/kicad/modules/generate_jlcpcb.py led_controllerThe 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:
python3 hardware/kicad/modules/generate_jlcpcb.py \
--kicad-cli /path/to/kicad-cli led_controllerFiles are written to a gerber/ directory beside the board. For a project
named led_controller, the upload files are:
| File | JLCPCB upload field | Contents |
|---|---|---|
gerber/led_controller-gerbers.zip | PCB Gerber file | Copper, solder-mask, silkscreen, board-outline, paste, and drill files. |
gerber/led_controller-bom.csv | BOM file | Parts having a non-empty LCSC Part # schematic field. |
gerber/led_controller-positions.csv | CPL file | Component 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:
Edge.Cuts.Designator, Mid X, Mid Y,
Rotation, and Layer, with the sides written as Top and Bottom.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.
The root firmware/CMakeLists.txt configures a Pico W build using CMake and the Raspberry Pi Pico SDK. It currently includes these targets:
| Target | Location | Purpose |
|---|---|---|
iw_8_controller | firmware/iw_8_controller/ | Main C++ IW-8 controller firmware, including messaging, flows, storage, RTC, and PIO-driven outputs. |
memory_management_testing | firmware/memory_management_testing/ | Test target for the custom memory-management implementation. |
uart_testing | firmware/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:
export PICO_SDK_PATH=/path/to/pico-sdk
cmake -S firmware -B firmware/build
cmake --build firmware/buildThe project requires Pico SDK 1.3.0 or later and uses C11 and C++17.
| Project | Location | Description |
|---|---|---|
| Garage monitor | firmware/garage_monitor/ | Networked garage monitor with mmWave sensing and NeoPixel support. |
| IW-8 controller prototype | firmware/iw_8_controller_python/ | Python implementation/prototype of the IW-8 controller. |
| mmWave sensor | firmware/mmwave_sensor/ | Networked mmWave sensor firmware with MQTT and NeoPixel support. |
| Simple controller | firmware/simple_controller/ | Small networked controller with sensor and NeoPixel helpers. |
| Wall sensor | firmware/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.
| Project | Location | Description |
|---|---|---|
| Fish feeder | firmware/fish_feeder/ | Fish-feeder control using a stepper motor; Arduino and Python implementations are present. |
| Reflow controller | firmware/reflow_controller/ | Reflow-oven controller with temperature sensing, PID control, stages, plotting, learning, and LCD/UI code. |
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.software/Controller/Controller.sln is a Visual Studio/.NET 6 solution containing:
| Project | Description |
|---|---|
HomeAutomation.Common | Shared configuration, dependency-injection, logging, serial communication, protocol, and message implementations. |
HomeAutomation.ControllerCLI | Command-line controller application built on the common library. |
HomeAutomation.Monitor | Configurable monitoring process; includes application settings and a service definition. |
HomeAutomation.Terminal | Serial terminal utility. |
Build the solution with:
dotnet build software/Controller/Controller.slnsoftware/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:
python -m pip install -r software/mmwave_sensor/requirements.txtirrigation_wiring.txt documents irrigation-system wiring.build, bin, obj, cache, or automatic backup directories.hardware/pcb-checklist.xlsx before ordering boards.| Qty | Value | Footprint | References |
|---|---|---|---|
| 29 | 100K | Resistor_SMD:R_0402_1005Metric | R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31 +13 |
| 19 | 100R | Resistor_SMD:R_1206_3216Metric | R5, R10, R11, R12, R13, R15, R35, R36, R37, R43, R48, R49, R50, R55, R61, R62 +3 |
| 16 | 10K | Resistor_SMD:R_0805_2012Metric | R2, R14, R38, R39, R44, R45, R51, R52, R57, R58, R65, R66, R67, R68, R69, R70 |
| 14 | 0.1u | Capacitor_SMD:C_0603_1608Metric | C1, C6, C14, C15, C16, C17, C18, C21, C22, C23, C24, C26, C27, C31 |
| 12 | ST_01x04 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-4-5.08_1x04_P5.08mm_Horizontal | J4, J5, J6, J7, J8, J9, J10, J11, J13, J14, J15, J16 |
| 10 | AO3401A | Package_TO_SOT_SMD:SOT-23 | Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10 |
| 8 | 4.7u | Capacitor_SMD:C_0805_2012Metric | C7, C8, C10, C13, C19, C20, C25, C28 |
| 8 | SMAJ48CA | Diode_SMD:D_SMA | D5, D6, D7, D8, D9, D10, D11, D12 |
| 4 | BOARD | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H5, H6, H7, H8 |
| 4 | LED | LED_SMD:LED_0805_2012Metric | D13, D14, D15, D16 |
| 4 | RPI | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H1, H2, H3, H4 |
| 4 | SS8050 | Package_TO_SOT_SMD:SOT-23 | Q11, Q12, Q13, Q14 |
| 3 | PB_MOM | Button_Switch_SMD:SW_SPST_TL3342 | SW1, SW2, SW3 |
| 2 | 0.01u | Capacitor_SMD:C_0402_1005Metric | C9, C12 |
| 2 | 2200u | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C4, C30 |
| 2 | 220u | Capacitor_SMD:C_Elec_6.3x5.4 | C5, C29 |
| 2 | 33u | Capacitor_SMD:C_1210_3225Metric | C2, C3 |
| 2 | 6.8u | Inductor_SMD:L_Wuerth_HCI-1365 | L1, L2 |
| 2 | LM339 | Package_SO:TSSOP-14_4.4x5mm_P0.65mm | U3, U4 |
| 1 | 0R | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | 1.8k | Resistor_SMD:R_0805_2012Metric | R3 |
| 1 | 2.7K | Resistor_SMD:R_0603_1608Metric | R8 |
| 1 | 2A | Fuse:Fuse_Bourns_MF-RHT200 | F2 |
| 1 | 32.768k | Crystal:Crystal_SMD_3215-2Pin_3.2x1.5mm | Y1 |
| 1 | 330K | Resistor_SMD:R_0805_2012Metric | R4 |
| 1 | 39p | Capacitor_SMD:C_0603_1608Metric | C11 |
| 1 | 47k | Resistor_SMD:R_0805_2012Metric | R6 |
| 1 | 4v7 | Diode_THT:D_A-405_P2.54mm_Vertical_AnodeUp | D3 |
| 1 | 5A | Fuse:Fuse_Bourns_MF-RHT400 | F1 |
| 1 | 68K | Resistor_SMD:R_0805_2012Metric | R9 |
| 1 | 74HC165 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U5 |
| 1 | 74HC595 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U9 |
| 1 | ADM2483 | Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm | U7 |
| 1 | B340A | Diode_SMD:D_SMA | D1 |
| 1 | EXT_SR | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J12 |
| 1 | IN4004 | Diode_SMD:D_SOD-123 | D4 |
| 1 | Jumper_2_Open | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | JP1 |
| 1 | LM7812_TO220 | Package_TO_SOT_THT:TO-220-3_Vertical | U8 |
| 1 | PCF8563T | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U6 |
| 1 | RTC_CLK | TestPoint:TestPoint_THTPad_2.5x2.5mm_Drill1.2mm | TP1 |
| 1 | RTC_INT | TestPoint:TestPoint_THTPad_2.5x2.5mm_Drill1.2mm | TP2 |
| 1 | Raspberry PI Header | Segmentum:Raspberry_Pi_Header_FaceDown | J3 |
| 1 | ST01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal | J2 |
| 1 | STWD100 | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | ST_01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal | J1 |
| 1 | TPS54331 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U1 |
| 1 | WO4 | Diode_THT:Diode_Bridge_Round_D9.0mm | D2 |
It measures 191.5 × 116 mm and has 2 copper layers, 1.6 mm thick.
175 parts, built around the ADM2483BRW, TPS54331D, LM339 and 74HC165D. 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 mekatrol/electronics repository on GitHub, at the commit this page was made from: the board is hardware/PiDaughterBoard/PiDaughterBoard.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask mekatrol before reusing the design.

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

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

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

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

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

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

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

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

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

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

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

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

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

hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!


MeesCode/gameboy-pcb
custom gameboy-esque pcb running an stm32 and my own tiny game engine


MartinVerges/womolin-waterlevel
DIY project to build a smart fuel sensor for RVs or in other projects. It is based on air pressure and is able to measure fresh water as well as grey and black water levels with high precision.