home / skills / wedsamuel1230 / arduino-skills / bom-generator
This skill generates a complete BOM for Arduino/ESP32/RP2040 projects, including parts lists, pricing estimates, and supplier links.
npx playbooks add skill wedsamuel1230/arduino-skills --skill bom-generatorReview the files below or copy the command above to add this skill to your agents.
---
name: bom-generator
description: Generates Bill of Materials (BOM) from project descriptions for Arduino/ESP32/RP2040 projects. Use when user needs component lists, parts shopping lists, cost estimates, or asks "what parts do I need". Outputs formatted BOMs with part numbers, quantities, suppliers (DigiKey, Mouser, Amazon, AliExpress), and compatibility warnings. Run scripts/generate_bom.py for xlsx/csv export.
---
# BOM Generator
Creates comprehensive Bill of Materials for maker projects with supplier links and compatibility checks.
## Resources
- **scripts/generate_bom.py** - Python script for xlsx/csv/markdown BOM generation (requires openpyxl)
- **references/example-bom.md** - Complete example BOM
- **assets/example-project.json** - Sample project configuration for script
## Quick Start
Generate BOM interactively:
```bash
uv run --no-project scripts/generate_bom.py --interactive
```
Generate from JSON configuration:
```bash
uv run --no-project scripts/generate_bom.py --json assets/example-project.json --output bom.xlsx
```
List component database:
```bash
uv run --no-project scripts/generate_bom.py --list
```
Export formats: xlsx (default), csv, md, json
## When to Use
- User describes a project and needs parts list
- User asks "what components do I need for X"
- User wants to order parts for a design
- User needs cost estimates
## Workflow
### Step 1: Gather Project Requirements
Ask user for:
```
1. Project description (what does it do?)
2. Target microcontroller (Arduino UNO/Nano/Mega, ESP32, RP2040)
3. Power source (USB, batteries, wall adapter)
4. Quantity (how many units to build?)
5. Budget constraints (optional)
6. Supplier preference (optional)
```
### Step 2: Generate BOM
Run `scripts/generate_bom.py --interactive` for guided generation, or use this template format:
```markdown
# Bill of Materials: [Project Name]
**Generated:** [Date]
**Target Board:** [MCU]
**Quantity:** [N] unit(s)
**Estimated Total:** $[X.XX] - $[Y.YY] (per unit)
## Core Components
| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| 1 | [MCU Board] | [specs] | $X.XX | [DigiKey](#) / [Amazon](#) |
| ... | ... | ... | ... | ... |
## Sensors & Input
| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |
## Output Devices
| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |
## Power Components
| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |
## Passive Components
| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |
## Mechanical & Connectors
| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |
## Tools Required (if not owned)
- [ ] Tool 1
- [ ] Tool 2
## Compatibility Warnings
ā ļø [Any voltage/current/timing concerns]
## Substitution Notes
š” [Alternative components if primary unavailable]
```
## Component Database
### Microcontrollers
| Board | Voltage | GPIO | Flash | Price Range | Best For |
|-------|---------|------|-------|-------------|----------|
| Arduino UNO R3 | 5V | 14 | 32KB | $12-25 | Beginners, most tutorials |
| Arduino Nano | 5V | 14 | 32KB | $3-20 | Compact projects |
| Arduino Mega | 5V | 54 | 256KB | $15-40 | Many I/O, large programs |
| ESP32 DevKit | 3.3V | 34 | 4MB | $5-15 | WiFi, Bluetooth, IoT |
| ESP32-C3 | 3.3V | 22 | 4MB | $4-10 | Low-cost WiFi |
| RP2040 Pico | 3.3V | 26 | 2MB | $4-6 | Dual-core, PIO |
| RP2040 Pico W | 3.3V | 26 | 2MB | $6-8 | Pico + WiFi |
### Common Sensors
| Sensor | Interface | Voltage | Price | Use Case |
|--------|-----------|---------|-------|----------|
| DHT22/AM2302 | 1-Wire | 3.3-5V | $3-8 | Temperature + humidity |
| BME280 | I2C/SPI | 3.3V | $5-15 | Temp + humidity + pressure |
| BMP280 | I2C/SPI | 3.3V | $2-8 | Temp + pressure (no humidity) |
| DS18B20 | 1-Wire | 3-5.5V | $2-5 | Waterproof temperature |
| HC-SR04 | GPIO | 5V | $1-3 | Ultrasonic distance |
| VL53L0X | I2C | 3.3V | $5-12 | Laser distance (accurate) |
| MPU6050 | I2C | 3.3V | $2-8 | Accelerometer + gyroscope |
| BNO055 | I2C | 3.3V | $25-35 | 9-DOF IMU (best accuracy) |
| VEML7700 | I2C | 3.3V | $4-8 | Ambient light (lux) |
| MAX30102 | I2C | 3.3V | $5-12 | Heart rate + SpO2 |
### Displays
| Display | Interface | Resolution | Price | Notes |
|---------|-----------|------------|-------|-------|
| 16x2 LCD | I2C | 16 chars | $3-8 | Need I2C backpack |
| 20x4 LCD | I2C | 20 chars | $5-12 | Larger text display |
| SSD1306 OLED | I2C | 128x64 | $3-8 | Sharp, no backlight needed |
| SSD1306 OLED | I2C | 128x32 | $3-6 | Compact OLED |
| ST7735 TFT | SPI | 128x160 | $5-10 | Color, fast refresh |
| ILI9341 TFT | SPI | 240x320 | $8-15 | Larger color display |
| E-Paper | SPI | Various | $15-40 | Low power, no refresh |
### Motors & Actuators
| Type | Driver Needed | Price | Notes |
|------|---------------|-------|-------|
| SG90 Servo | None (PWM) | $2-5 | 180°, weak torque |
| MG996R Servo | None (PWM) | $5-10 | Strong, metal gears |
| 28BYJ-48 Stepper | ULN2003 | $3-6 | Cheap, slow, weak |
| NEMA17 Stepper | A4988/DRV8825 | $8-15 | Strong, precise |
| DC Motor + Gearbox | L298N/TB6612 | $5-15 | High speed available |
| Linear Actuator | L298N | $15-40 | Push/pull motion |
### Motor Drivers
| Driver | Channels | Max Current | Voltage | Price |
|--------|----------|-------------|---------|-------|
| L298N | 2 | 2A/ch | 5-35V | $3-8 |
| TB6612FNG | 2 | 1.2A/ch | 4.5-13.5V | $3-8 |
| A4988 | 1 stepper | 2A | 8-35V | $2-5 |
| DRV8825 | 1 stepper | 2.5A | 8.2-45V | $3-6 |
| TMC2209 | 1 stepper | 2A | 4.75-28V | $8-15 |
### Power Components
| Component | Specs | Price | Use Case |
|-----------|-------|-------|----------|
| LM7805 | 5V 1A linear | $0.50 | Simple 5V reg |
| AMS1117-3.3 | 3.3V 1A linear | $0.30 | 3.3V from 5V |
| LM2596 Module | Adj. 3A buck | $2-4 | Efficient step-down |
| MT3608 Module | Adj. 2A boost | $1-3 | Step-up voltage |
| TP4056 Module | LiPo charger | $1-2 | Battery charging |
| 18650 Holder | 1-4 cells | $1-5 | Battery mounting |
| JST Connectors | 2-pin | $2-5/10pk | Battery connections |
### Passive Components (Buy Kits!)
| Kit Type | Typical Contents | Price | Recommendation |
|----------|------------------|-------|----------------|
| Resistor Kit | 600+ pcs, 1/4W | $8-15 | Get once, use forever |
| Capacitor Kit | Ceramic + electrolytic | $10-20 | Essential |
| LED Kit | 5mm various colors | $5-10 | Common needs |
| Button Kit | Tactile switches | $5-8 | Various sizes |
| Diode Kit | 1N4148, 1N4007, etc | $5-8 | Protection circuits |
## Supplier Guide
### Speed vs Cost Trade-offs
| Supplier | Shipping | Price | Best For |
|----------|----------|-------|----------|
| **DigiKey** | 1-3 days | $$$ | Precise specs, datasheets, urgent |
| **Mouser** | 1-3 days | $$$ | Wide selection, quality |
| **Amazon** | 1-2 days | $$ | Quick delivery, returns easy |
| **Adafruit** | 3-5 days | $$$ | Quality, tutorials, support |
| **SparkFun** | 3-5 days | $$$ | Breakout boards, learning |
| **AliExpress** | 2-6 weeks | $ | Bulk, budget, clones |
| **LCSC** | 1-2 weeks | $$ | Chinese components, good quality |
### Part Number Patterns
```
DigiKey: Descriptive codes
- 1N4007-TP ā 1N4007 diode
- SER0006 ā Servo motor
Mouser: Manufacturer part numbers
- Search by exact MPN
Amazon: ASIN codes
- Search by product name + specs
AliExpress: Store + product ID
- Check reviews, sold count
```
## Compatibility Checks
### Voltage Level Matrix
```
Can Connect To:
From: 3.3V Logic 5V Logic
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
3.3V MCU ā
Direct ā ļø Level shifter
5V MCU ā ļø Divider ā
Direct
3.3V Sensor ā
Direct ā ļø May work*
5V Sensor ā Damage! ā
Direct
* Some 3.3V sensors are 5V tolerant - check datasheet
```
### Current Budget Check
```
Source Limits:
- Arduino 5V pin: 500mA max (from USB)
- Arduino GPIO: 40mA max per pin
- ESP32 3.3V: 500mA max
- ESP32 GPIO: 40mA max
- RP2040 GPIO: 16mA max
Always calculate:
Total current = Σ(component currents)
If total > source limit ā external power needed
```
### I2C Address Conflicts
Common I2C addresses to watch:
```
0x3C - SSD1306 OLED
0x27 - PCF8574 LCD backpack
0x3F - PCF8574A LCD backpack
0x68 - MPU6050, DS3231 RTC
0x76 - BME280 (default)
0x77 - BME280 (alternate), BMP280
0x48 - ADS1115 ADC
0x50 - AT24C32 EEPROM
```
## Output Format Options
### Markdown Table (Default)
Best for documentation, GitHub READMEs.
### CSV Export
```csv
Qty,Component,Specifications,Unit Price,Total,Supplier,Link
1,Arduino UNO R3,ATmega328P,15.00,15.00,Amazon,https://...
```
### Shopping Cart Links
Provide direct "Add to Cart" links where possible.
## Example BOM Output
See [references/example-bom.md](references/example-bom.md) for complete example.
This skill generates detailed Bills of Materials (BOMs) for Arduino, ESP32, and RP2040 maker projects. It produces formatted BOMs with quantities, part numbers, supplier links, and compatibility warnings to help you shop, estimate cost, and avoid integration issues. Exports are available in xlsx, csv, md, and json formats.
Provide a project description, target microcontroller, power source, and quantity; the skill inspects required subsystems (MCU, sensors, displays, power, drivers, passives) and maps them to recommended parts. It annotates each item with estimated price ranges, supplier choices (DigiKey, Mouser, Amazon, AliExpress), compatibility checks (voltage, current, I2C addresses), and substitution notes. For spreadsheet exports the skill runs the BOM generator to create xlsx/csv outputs.
What inputs does the generator need?
A project description, target board (Arduino/ESP32/RP2040), power source, quantity, and optional budget or supplier preferences.
Which export formats are supported?
xlsx (default), csv, markdown, and json exports are supported for documentation and procurement.
Does it check voltage and current compatibility?
Yes. It highlights voltage-level mismatches, current budget issues, and common I2C address conflicts with warnings and mitigation notes.