

Jardinier2000
Fullstack, lightweight and flexible framework for IoT applications
- Size
- 64 × 62 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 72
- Nets
- 64
- Pads
- 253
- Tracks, vias
- 528, 38
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 18 Sep 2019
- Updated
- 7 Nov 2026
Overview
Jardinier2000 is an open-source printed circuit board by blaizard, from the blaizard/bzd repository on GitHub. It is a 2-layer board of 64 × 62 mm with 72 parts on 64 nets, routed with 528 tracks and 38 vias.
It is built around the ESP32-S3-WROOM-1-N8 and AO3400A. Its parts include 17 resistors, 15 capacitors, 11 connectors, 7 diodes and 4 transistors. It belongs with the home automation and IoT boards and the ESP32 boards of this library.
Main components
2ESP32-S3-WROOM-1-N8
SMD,25.5x18mm-40℃~+85℃ -98.2dBm 2.4GHz 20.5dBm 355mA 3V~3.6V 95mA Bluetooth5.0 ESP32-S3 Chip On-board PCB Antenna UART、SPI、I2C、I2S、USB SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesAO3400A
SOT-23-55℃~+150℃ 1 N-channel 1.45V 1.4W 30V 48mΩ@2.5V 5.7A 50pF 630pF 75pF 7nC@10V N-Channel SOT-23 MOSFETs ROHSAlpha & Omega SemiconductorMOSFETs
README
README.mdbzd Framework
Access the rendered version of this documentation.
Fullstack, lightweight and flexible framework for IoT applications. This mono-repository enables the following technologies:
| C++20 | Rust (2024) | Python 3.13 | Node (v23) | Vue | Bazel | KiCad |
|---|---|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Overview
This framework is built to run on all sorts of embedded platforms, from bare-metal 8-bit microcontrollers to high-performance compute units. It is made to remove any dependency on the STL, but to provide a similar set of components and utilities to develop applications in an efficient and safe manner.
It features the following:
- No dynamic allocations. All storage is declared either at compile time or on the stack.
- The core library is self-contained, with no reliance on third-party libraries, only on the freestanding C++ standard library.
- Flexible error handling model.
- Based on C++ coroutines.
- Compile-time string formatting tool.
- Lightweight.
- Useful set of containers.
Platforms
The following target platforms are currently supported:
| Name | Compiler | Version | Executors | Debug |
|---|---|---|---|---|
| linux_x86_64_clang* | clang | 19.1.7 | host* | |
| linux_x86_64_gcc | gcc | 14.2.0 | host* | |
| esp32_xtensa_lx6_gcc | gcc | 14.2.0 | sim*, uart | x |
| esp32s3_xtensa_lx7_gcc | gcc | 14.2.0 | sim*, uart | x |
* Default.
When debug is supported by the platform, one can run a target with the --config=debug option and a debug environment will
be made available.
Build
Locally
To build everything, just run:
./tools/bazel test //...This will build locally; it will fetch all tools needed to build on your machine.
Remote
To build Bazel targets, simply run ./tools/bazel with --config=remote appended.
For debugging purposes, toolchains can be run locally in a docker sandbox which is very similar to what runs on remote execution.
To enable this configuration, run ./tools/bazel with --config=docker.
Documentation
To build the full project documentation, run:
./tools/bazel run //docsCode Quality
All supported languages come with their own set of code quality related tools. To run all static sanity checks, code formatters and documentation generators at once, run the following command:
./tools/bazel run //:sanitizerTo run all tests, run the following command:
./quality_gateThis is a non-exhaustive list of languages and their supported tools. In addition to that, formatters and linters for YAML, JSON and Markdown are also available.
| Language | Formatters | Code Analyzers | Code Coverage | Test Framework | Documentation |
|---|---|---|---|---|---|
| C++ | clang-format | clang-tidy, asan, lsan, tsan, ubsan | Yes | Yes | doxygen-based |
| Python | ruff | ruff, mypy | Yes | Yes | |
| Node | prettier | eslint | Yes | Yes | |
| Skylark | buildifier | buildifier | stardoc |
Update compile_commands.json
./tools/bazel run @bzd_sanitizer//aspects/compile_commands:buildUpdate rust-project.json
./tools/bazel run @rules_rust//tools/rust_analyzer:gen_rust_project -- //rust/...Naming Convention
The code in this repository follows several principles regarding naming conventions. The following rules are applied across languages.
- Files and directories are named lower case
snake_caseusing only the characters matching the regex:[a-z0-9_/.]. This is enforced by tools/bazel_build/modules/bzd_sanitizer/actions/structure. - Variables, constants, functions, concepts, namespaces are named in
camelCase. - All types are named in
PascalCase. - Non-public members (variables, functions...) are appended with a
_character. - All names avoid abbreviations.
Memory Footprint
All classes offered by this library share the same objective: a fixed memory size. Their footprint or maximum size is determined at compile time, ensuring no memory allocation at runtime, making this library ideal for any safety-critical application.
Parts
72| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 0.1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C2, C5, C6, C7, C13, C14, C15, C16, C18 |
| 8 | 10K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R3, R5, R7, R16, R17, R20, R21 |
| 6 | D_Schottky | Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D1, D2, D3, D4, D6, D7 |
| 4 | 100 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2, R4, R8, R9 |
| 4 | 10u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3, C4, C19, C20 |
| 4 | AO3400A | Package_TO_SOT_SMD:SOT-23 | Q1, Q2, Q3, Q4 |
| 4 | SolderJumper_3_Open | Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm_NumberLabels | JP1, JP2, JP3, JP4 |
| 4 | ~ | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal | J1, J2, J3, J4 |
| 3 | SW_Push | Button_Switch_THT:SW_PUSH_6mm | SW4, SW5, SW6 |
| 2 | 5.1K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R22, R23 |
| 2 | I2C | Connector_JST:JST_XH_B4B-XH-AM_1x04_P2.50mm_Vertical | J7, J11 |
| 1 | 100k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R18 |
| 1 | 13.7k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R19 |
| 1 | 1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R6 |
| 1 | 2.2u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C17 |
| 1 | 3.3uH & 3A | Inductor_SMD:L_Cenker_CKCS6028 | L1 |
| 1 | 3V3 | TestPoint:TestPoint_Pad_2.0x2.0mm | TP1 |
| 1 | ADC1_CH0 | Connector_JST:JST_XH_B3B-XH-AM_1x03_P2.50mm_Vertical | J5 |
| 1 | ADC2_CH0 | Connector_JST:JST_XH_B3B-XH-AM_1x03_P2.50mm_Vertical | J6 |
| 1 | Barrel_Jack_Switch | Connector_BarrelJack:BarrelJack_Horizontal | J12 |
| 1 | ESP32-S3-WROOM-1 | RF_Module:ESP32-S3-WROOM-1 | U4 |
| 1 | JTAG | Connector_JST:JST_XH_B6B-XH-AM_1x06_P2.50mm_Vertical | J9 |
| 1 | LED | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D8 |
| 1 | LMR51430YDDCR | Package_TO_SOT_SMD:SOT-23-6 | U1 |
| 1 | LOGO | LOGO | G*** |
| 1 | NCP1117-3.3_SOT223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | RESET | bzd:push_button_6x3 | SW3 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_G-Switch_GT-USB-7010ASV | J14 |
| 1 | VBUS | TestPoint:TestPoint_Pad_2.0x2.0mm | TP3 |
| 1 | VIN_LDO_3V3 | TestPoint:TestPoint_Pad_2.0x2.0mm | TP4 |
| 1 | VIN_STEP_DOWN | TestPoint:TestPoint_Pad_2.0x2.0mm | TP5 |
| 1 | VOUT_STEP_DOWN | TestPoint:TestPoint_Pad_2.0x2.0mm | TP6 |
Questions
How big is the Jardinier2000 PCB?
It measures 64 × 62 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Jardinier2000 use?
72 parts, built around the ESP32-S3-WROOM-1-N8 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 Jardinier2000 KiCad files?
From the blaizard/bzd repository on GitHub, at the commit this page was made from: the board is apps/jardinier2000/hardware/jardinier2000.kicad_pcb and its schematic apps/jardinier2000/hardware/jardinier2000.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Jardinier2000 design in my own project?
Its repository states no licence, so its author keeps all rights: ask blaizard before reusing the design.
Similar boards
- 6 layers90.1 × 135 mm

- 2 layers42.3 × 42.3 mm

Wireless Stepper Motor Controller
Circuit-Digest/Wireless-Stepper-Motor-Controller
The Wireless Stepper Driver is a compact and efficient motion control system designed to control stepper motors over Wi-Fi.
62 parts17MIT - 4 layers59.6 × 48.3 mm

Plant1337
chl33/Plant133
Firmware, circuit design, and 3D-printable components for an automated plant-watering system.
61 parts6MIT - 2 layers37 × 70.9 mm

Opendiag
maximus64/opendiag-hardware
OpenDIAG - Open Source OBD2 Interface (Hardware)
148 parts5CERN-OHL-S-2.0 - 2 layers93.3 × 128.4 mm

MonpolyElectronicV2
Pegoku/Monopoly-Electronic-V2
Gameplay focuses on NFC interaction instead of menus.
104 parts5 - 2 layers32.3 × 87.6 mm

ESP32-Gimbal
Visaging/ESP32-Gimbal
A high-performance, open-source 3-axis smartphone gimbal built from scratch using a custom PCB and the SimpleFOC library. It features real-time stabilization, native USB-C programming, and custom motion modes.
60 parts4MIT - 4 layers35 × 99.9 mm

Snips controller
thePunderWoman/SnipsControllers
The controllers built to work with Amidala
95 parts3GPL-2.0 - 2 layers42 × 66 mm

Wafflehw rev0.1
Jankyneering/Waffle_hw
Hardware designs for Waffle, a compact Pager and general RF multitool.
42 parts2GPL-3.0






