Skip to the content
PCBKitNew board
2 layers96.5 × 132.4 mmMoisture sensor, the printed circuit board in 3D

Codewise: an exploration of using embedded rust, specificaly embassy.

Size
96.5 × 132.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
30
Nets
55
Pads
192
Tracks, vias
424, 57
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
1 Apr 2025
Updated
8 Mar 2026

Overview

Moisture sensor is an open-source printed circuit board by bendixsonnenberg, from the bendixsonnenberg/watering_controller repository on GitHub, published under the MIT licence. It is a 2-layer board of 96.5 × 132.4 mm with 30 parts on 55 nets, routed with 424 tracks and 57 vias.

It is built around the MCP2551-I/SN-HG, AMS1117-3.3 and 1N4148W, with the AO3400A and WS2812B among its other parts. Its parts include 12 capacitors, 4 connectors, 3 resistors, 3 ICs and 3 diodes. It belongs with the sensors and measurement boards and the STM32 boards of this library.

Main components

5

README

README.md

Watering Controller

A tinkering project to automate watering plants in a greenhouse and analyzing data afterwards.
Current Progress can be seen in "Status" at the bottom.

Codewise: an exploration of using embedded rust, specificaly embassy.

Short Overview

Hardware

Per pot:

  • 1 STM32F103C8#
  • capacitive moisture sensor
  • valve
  • mcp2551 can RX/TX
  • Mosfet IRFB3006 (there are alternatives, this one worked for us)

Central Controller:

  • Pico 2 W (pico 1 2 would be enough)
  • 2x16 LCD Display
  • MCP2515 for can communication.
  • UX to be determined

Additional Hardware needed:

  • Some kind of reservoir
  • Silicone tubes for delivering water to valves

System Design

The central controller communicates with each moisture sensor over CAN-Bus. The Specs for this Communication can be found here. The implementation is found here. The moisture sensors get a threshold and use their valves to hold that threshold, currently through a simple comparision (potential PID).

Current Status

August '25: Web-functions added, central controller accesses WLAN. Sensorreadings possible through network with webinterface-prototype.

Story and some Context

After building a greenhouse on our little roof terrace for my fiancée, I stumbled upon the biggest problem in the private greenhouse industry. While tomatoes and cucumbers thrived, the biggest recurring problem was watering the plants, as you have to do so every day; on hot days, multiple times a day. The solution was obvious: I turned to my good friend Bendix and we started engineering the hell out of this seemingly small problem. The idea got bigger and bigger, until we suddenly had the first prototype running on a cheap patch panel. Our system was actually reading live moisture data and maintaining a moisture level for several days. The next step was soldering prototype v2, which is currently running in the greenhouse.
Throughout the process, I had lots of ideas for little extras, such as a menu operated through a rotary encoder on an LCD display or RGB LEDs. Because everything is better with RGB. The final version is supposed to support up to 256 pots (far too many for the 2 x 1.2m²), so the system is adaptable for larger greenhouses. We are planning to implement a web interface and push notifications to smartphones, so even while being abroad, there is no need for close monitoring by a third party. But these are future dreams. Our current priority is the watering and monitoring functionality – all while the CAN network does its job.
Bendix has been documenting his progress in code here since day one. I joined GitHub mainly to be a part of it. To be honest: I have absolutely no clue about coding other than basic principles and a rough idea of what computers can do. My main background is being a mechanic by trade. Now I do my part by trying to document our progress and give a little context about what we do. I'll try to update regularly – who knows, this might one day attract public interest.

Small Addition: I startet building a webinterface, all while learning how to work with HTML and JavaScript. If you're interested, click here.

-Philipp

Milestones

June '25: working menu on LCD-Display with individual IDs and live data, navigation possible through rotary encoder and "return"-button
June '25: data saved, showing 9 day continuous watering without crashes or similar issues; moisture level plausible
July '25: Hardware for easier refilling added, also new water container
July '25: Webinterface concept working, reference here.
August '25: Access to live data possible through Webinterface concept.

Status History

Up to July '25: Two pot-sensors together with central controller, currently set up in greenhouse, with CAN-Network and watering function working as far as assessable. Menu working, displayed on LCD.
Up to August '25: Three pot-sensors together with central controller, currently set up in greenhouse, with CAN-Network and watering function working fairly reliable. Menu working, displayed on LCD. RGB-LEDs added for easier identification while changing thresholds. Humidity/Temperaturesensor added. All data is logged on SD-Card.

Parts

30
QtyValueFootprintReferences
6100nPCM_JLCPCB:C_0402C1, C2, C3, C5, C6, C9
310kPCM_JLCPCB:R_0402R1, R2, R3
21N4148WPCM_JLCPCB:D_SOD-123D1, D2
21uPCM_JLCPCB:C_0603C7, C8
222uCapacitor_SMD:C_1206_3216MetricC10, C11
2USB_C_Plug_USB2.0Connector_USB:USB_C_Plug_JAE_DX07P024AJ1P1, P2
1100nCapacitor_SMD:C_0402_1005MetricC14
110uPCM_JLCPCB:C_0603C4
1120RPCM_JLCPCB:L_0603FB1
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U3
1AO3400APCM_JLCPCB:Q_SOT-23Q1
1Conn_01x02_PinConnector_JST:JST_EH_B2B-EH-A_1x02_P2.50mm_VerticalJ2
1Conn_01x04_SocketConnector_PinHeader_1.27mm:PinHeader_1x04_P1.27mm_VerticalJ1
1MCP2551-I-SNPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1STM32F103C8TxPackage_QFP:LQFP-48_7x7mm_P0.5mmU1
1SW_DIP_x08Button_Switch_SMD:SW_DIP_SPSTx08_Slide_6.7x21.88mm_W6.73mm_P2.54mm_LowProfile_JPinSW3
1SW_SPDTPCM_JLCPCB:SOT-23-3_L2.9-W1.3-P0.95-LS2.4-BRSW2
1Tactile Button, 160gfPCM_JLCPCB:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL-2S1
1WS2812BLED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mmD3

Questions

How big is the Moisture sensor PCB?

It measures 96.5 × 132.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Moisture sensor use?

30 parts, built around the MCP2551-I/SN-HG, AMS1117-3.3, 1N4148W and AO3400A. 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 Moisture sensor KiCad files?

From the bendixsonnenberg/watering_controller repository on GitHub, at the commit this page was made from: the board is hardware/sensor/moisture_sensor/moisture_sensor.kicad_pcb and its schematic hardware/prototypes/sensor/Moisturesensor.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Moisture sensor design in my own project?

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).

Similar boards

  • 2 layers148.6 × 192.2 mmBadge, the printed circuit board in 3D

    Badge

    NuttyShell/NuttyBadge

    NuttyBadge: A NuttyShell crafted multi-tool. Opensourced Hardawre and Software

    169 parts31GPL-3.0
  • 2 layers100 × 100 mmCanbus ui, the printed circuit board in 3D

    Canbus ui

    adeboni/math-camp-synth

    Burning Man Math Camp Synthesizers

    106 partsGPL-3.0
  • 4 layers155 × 52 mmDrawer Controller, the printed circuit board in 3D

    Drawer Controller

    Robast-GmbH/PCB_Designs

    This repository contains all the necessary files and instructions for the PCBs that are designed using KiCad. Here is an overview of the main components: - .github: Contains Github-specific configurations, including…

    198 parts1MIT
  • 2 layersShift Control Unit, the printed circuit board in 3D

    Shift Control Unit

    Nomalah/Budget-Racing-Electronics

    All electronics for the budget racing vehicle

    27 parts
  • 4 layers76 × 50 mmWigglecam, the printed circuit board in 3D

    Wigglecam

    jadenrhee/wigglecam-controller

    RP2040 co-processor board for a 4-lens wigglegram camera: constant-current flash, controls, battery telemetry, Pi 5 I2C interface. 4-layer, DRC-clean, fab-ready.

    105 parts
  • 4 layers57 × 56 mmIot led strip pcb, the printed circuit board in 3D

    Iot led strip pcb

    0xjmux/iot_leddriver_hw

    ESP32-based WS2812B LED Strip Driver PCB, designed for music visualization

    85 parts9
  • 4 layers170 × 101 mmFreeDSP G, the printed circuit board in 3D

    FreeDSP G

    freeDSP/FreeDSP-G

    ADAU1467 DSP Board for Electric Guitar Players

    377 parts7CC0-1.0