MCU + Sensor + Regulator
Build a complete Arduino + BME280 sensor + voltage regulator system from library parts and validate every connection.
Goal
Build a real-world 3-part system from the Protoboard parts library: an Arduino Uno Rev3 microcontroller, a BME280 environmental sensor, and an MCP16251T boost regulator. You'll wire power and data connections, run DRC, fix any issues, and review the BOM. This is the flagship tutorial; it covers the full Protoboard workflow in depth.
What you're building
An environmental monitoring system that reads temperature, humidity, and barometric pressure. The MCP16251T voltage regulator steps up a low-voltage source to provide clean 3.3V power to the BME280 sensor, while the Arduino Uno Rev3 communicates with the sensor over the I2C bus (SCL and SDA lines).
This is a common pattern in real hardware projects: a microcontroller needs to talk to a sensor, but the sensor requires a different voltage rail than what the MCU provides directly. The regulator bridges that gap.
Steps
Search and place the Arduino Uno Rev3
Open the Parts Bin (cuboid icon in the left sidebar). Type "Arduino Uno" in the search field.
When the Arduino Uno Rev3 appears, drag it onto the left side of the canvas. Click it once to select it, and glance at the Inspector panel on the right. You'll see its full list of interfaces and resources:
Electrical domain with multiple power domains (VIN at 7-12V, 5V regulated, 3.3V output)
I2C interface (master role) with SCL and SDA lines
Digital and analog GPIO resources
SPI, UART interfaces
Search and place the BME280 sensor
Clear the search in the Parts Bin and type "BME280". Drag the BME280 Environmental Sensor Breakout onto the canvas to the right of the Arduino.
The BME280 breakout board (Adafruit variant) has these key properties:
Power input: Accepts 3V to 5.5V (the onboard regulator and level shifters handle the rest)
I2C interface (slave/device role): this is how it reports sensor readings
SPI interface (alternative to I2C; we won't use it in this tutorial)
Search and place the MCP16251T voltage regulator
Clear the search and type "MCP16251T". Drag the MCP16251T-I/CH onto the canvas between the Arduino and the BME280 (or below them, wherever feels natural).
The MCP16251T is a synchronous boost regulator from Microchip:
Input range: 0.35V to 5.5V (can start from a single-cell battery)
Output: Adjustable 1.8V to 5.5V (we'll use it configured for 3.3V)
Role: Steps up a low-voltage source to provide clean, regulated power
Connect the regulator to the sensor (power harness)
Now create the first harness: the power connection from the MCP16251T to the BME280.
Hover near the edge of the MCP16251T part until a connection handle appears
Click and drag toward the BME280 to create a harness
Protoboard auto-detects compatible interfaces; it should find the regulator's power output and the sensor's power input
In the Inspector panel, review the proposed interface link. You should see:
The regulator's output power domain paired with the BME280's input power domain
Function links for VOUT to VIN and GND to GND
Great. The interface link is created and function links are proposed. Review them in the Inspector to make sure the power output role connects to the power input role.
Select the harness, open the Inspector, and create the interface link yourself. Pair the MCP16251T's power output interface with the BME280's power input interface. Then create function links mapping VOUT to VIN and GND to GND.
Connect the Arduino to the BME280 (I2C data harness)
Create the second harness: the I2C data connection from the Arduino Uno Rev3 to the BME280.
Hover near the edge of the Arduino Uno Rev3 until a handle appears
Drag toward the BME280 to create a harness
Protoboard should auto-detect the I2C interfaces on both parts
This is a data connection, not just power. The interface link should pair:
Arduino's I2C master interface with the BME280's I2C slave interface
The function links inside should map:
SCL output
SCL input
Clock line
SDA bidirectional
SDA bidirectional
Data line
VCC (5V)
VCC
Bus power
GND
GND
Common ground
Run the Design Rule Check (DRC)
Click the Board Review icon (shield icon) in the left sidebar. The DRC engine scans every harness, interface link, and function link on your board.
For each connection, you'll see one of four states:
CONFIGURED (green): fully valid, all functions mapped, roles are complementary
PARTIALLY_CONFIGURED (amber): some function links exist but others are missing
NOT_CONFIGURED (red): an interface link exists but no function links have been created
INCOMPATIBLE (red): fundamental mismatch (wrong protocol, conflicting roles, etc.)
What to look for in the results:
This should ideally show CONFIGURED. If it shows PARTIALLY_CONFIGURED, check whether both VOUT-to-VIN and GND-to-GND function links are present.
This might show PARTIALLY_CONFIGURED if resource allocation hasn't been completed. The Arduino has multiple pins that can serve as I2C, and Protoboard needs to know which specific pins you're using (A4 for SDA, A5 for SCL on the Uno).
Fix any DRC issues
Here are the most common issues you'll encounter with this build, and how to resolve each one:
Issue 1: Resource allocation needed (amber)
The I2C harness may need explicit pin assignment on the Arduino side. The Uno has dedicated I2C pins (A4/SDA, A5/SCL), but Protoboard needs you to confirm the allocation.
Fix: Select the I2C harness, open the Inspector, and look for the resource allocation section. Assign the Arduino's A4 pin to SDA and A5 pin to SCL. Alternatively, ask ProtoBot to auto-allocate.
Issue 2: Voltage domain configuration (amber or red)
The DRC may flag that the regulator's output voltage domain isn't explicitly configured to match the sensor's expected input range.
Fix: Select the MCP16251T on the canvas, open the Inspector, and check its output voltage configuration. Ensure the output is set to a value within the BME280's acceptable input range (3V to 5.5V). A 3.3V output setting works perfectly.
Issue 3: Missing ground reference (amber)
If the GND function links aren't present on one or both harnesses, the DRC will flag incomplete connections.
Fix: Open each harness in the Inspector and ensure GND-to-GND function links exist for both the power harness and the I2C harness.
Select each flagged harness in the Inspector. Use the interface link detail view to add missing function links, assign resources (pins), and configure voltage domains. Re-run DRC after each fix.
Open ProtoBot (bot icon in the left sidebar) and try a prompt like:
"Fix all DRC issues on my board. Allocate I2C pins on the Arduino and make sure voltage domains are configured correctly."
ProtoBot can auto-allocate resources, add missing function links, and suggest configuration changes. It has access to over 100 tools for board manipulation.
Re-run DRC after making fixes. Repeat until all connections show CONFIGURED (green).
Review the Bill of Materials (BOM)
Click the BOM icon (cart icon) in the left sidebar. You'll see a list of all three parts:
Arduino Uno Rev3
Arduino
A000066
Varies
BME280 Environmental Sensor Breakout
Adafruit
2652
Varies
MCP16251T-I/CH
Microchip Technology
MCP16251T-I/CH
Varies
From the BOM panel you can:
Refresh prices to pull the latest supplier data
Export to CSV for purchasing spreadsheets
Export to PDF for documentation or project proposals
Review supplier links and availability
What you just learned
Library parts
Pre-defined components with full metadata, domains, interfaces, and resources
Power harness
A connection that carries voltage and ground between parts
Data harness
A connection that carries communication signals (I2C, SPI, UART, etc.)
I2C bus
A two-wire protocol (SCL + SDA) with master/slave roles
Resource allocation
Assigning specific physical pins to logical functions
Voltage domain
A defined voltage range that parts operate within
BOM
The bill of materials: your shopping list with costs and suppliers
Understanding the architecture
Here's how the three parts relate in this design:
Common failures
Taking it further
Once your 3-part system validates clean, try these extensions:
Add a second sensor (e.g., a VL53L0X time-of-flight sensor) to the same I2C bus and see how Protoboard handles multiple devices on one bus
Swap the Arduino Uno for a Seeed XIAO ESP32C3 to explore how a different MCU affects compatibility
Remove the regulator and connect the BME280 directly to the Arduino's 3.3V output pin to see how the DRC results change
Use ProtoBot to suggest improvements: "How can I make this design more power-efficient?"
Next steps
Motor Control Chain: Model a battery-to-motor power flow with real parts
Common DRC Failures: Learn what broken builds look like and how to fix them
Validation (DRC): Deep dive into how the design rule check works
ProtoBot Overview: Learn how the AI assistant can speed up your workflow
Last updated

