In developmentNot released yet — features and data may change without notice.

Getting Started — From One Sketch to Your First Verification

No schematic needed. Upload an .ino file and ibouPCB reads out the pins and parts, simulates it in the browser, and produces an 8-stage verification report.

5 min readUpdated Sep 8, 2026

The only input ibouPCB needs is something you already have: an Arduino sketch (.ino), or one of the examples. There is no step where you draw a schematic or search for and place parts. This guide walks through the four steps from signing up to receiving your first verification report.

1. Upload a sketch

Create a new project and upload your .ino / .cpp / platformio.ini. The parser reads the following out of the code.

What it reads from the codeWhat it infers
#define TRIG_PIN 9, const int LED = 13Pin assignments (logical name → physical pin)
pinMode / digitalWrite / analogReadPin direction · signal type (digital / analog / PWM)
Wire.beginTransmission(0x27)I²C in use + slave address
SPI.begin(), SS pin in useSPI in use + CS pin
analogWrite(5, x), attachInterrupt(...)PWM · external-interrupt pin requirements
#include <DallasTemperature.h>Part inference — DS18B20 temperature sensor
#include <Adafruit_SSD1306.h>SSD1306 OLED (I²C or SPI)
board = uno (platformio.ini)Target board
Your list of library includes is your parts list. There is nothing new to create. If an item cannot be inferred, you are asked about that item only; everything else is left alone.

Some modules cannot be detected from code: PIR sensors, LDRs, plain switches, motors — parts that use only digitalRead / analogRead with no library. Add these from the catalog in the module checklist. One dev board + N modules becomes the project's Design Intent.

2. Review the inference

Right after upload, the screen shows the pin list (logical name, physical pin, direction, and the line of code it came from), detected buses (including I²C addresses), and part candidates (catalog ID, confidence). Low-confidence items are highlighted in yellow, so you only need to check those. The pin list confirmed here becomes the project's Pin Contract — a promise that holds even as you move between levels.

3. Run the L0 simulator

Press ▶ Run and the server compiles with arduino-cli, then the browser executes the resulting binary. Arduino Uno runs on avr8js and Raspberry Pi Pico on rp2040js, both inside the browser; ESP32 runs on Espressif QEMU on the server. Pin states, the serial monitor, and real-time pacing are shown on screen.

  • Sensors found in the code are attached automatically as virtual devices — DS18B20 (1-Wire), DHT22, HC-SR04, BME280 / BMP280 / MPU6050 / DS3231 (I²C register responses).
  • Passing the simulation is the condition for opening the logic gate, but the browser never sets the gate itself. The server re-derives the expected pin directions from the sketch and checks them against the browser's evidence before recording a pass.
  • There are things the simulator cannot catch — power-supply noise, ground bounce, EMI, sensor timing variation, component tolerances. That is why the logic gate is only one of three gates.

4. On to your first board

Press "Make a board" and choose a target: an L2 Shield / HAT that carries your dev board as-is, or L3, where a module such as ESP32-WROOM or Pico is mounted directly on the board. The 8-stage verification then runs (P1 schema → P2 catalog grounding → P3 golden patterns → P4 ERC → P5 Pin Contract → P6 consensus → P7 KiCad DRC → P8 simulation regression), and the results screen shows the three gates separately.

✅ Logic verification passed        Behaves as intended in simulation
✅ Electrical verification passed   ERC 0 / DRC 0
⚠️ Physical verification pending    Confirmation on the real board is still required

Once logic and electrical are both green, the Gerber · BOM download opens. Physical verification never turns green automatically. You check it yourself after the board arrives and you have confirmed it in person.

Read next

  • The four-level continuum — why the project never moves
  • 8-stage verification — what each stage prevents
  • Auto-inserted parts — why parts that were not in my code appeared