# /hardware/bom

Bill of Materials for your KiCad project.

## Purpose
This directory contains Bill of Materials (BOM) files generated from your KiCad schematic and additional BOM-related documentation.

## File Types
- **`.csv`**: Comma-separated values format (most common)
- **`.xlsx`**: Excel spreadsheet format
- **`.xml`**: XML format for automated processing
- **`.html`**: HTML format for web viewing
- **`.pdf`**: PDF format for documentation

## Generating BOM from KiCad
1. Open your schematic (`.kicad_sch`)
2. Go to **Tools → Generate Bill of Materials**
3. Select or configure a BOM plugin
4. Set output directory to `hardware/bom/`
5. Click **Generate**

## Recommended BOM Formats

### Basic BOM (`ProjectName-BOM.csv`)
- Reference designators
- Values
- Footprints
- Quantities
- Manufacturer part numbers
- Supplier part numbers

### Extended BOM (`ProjectName-BOM-Extended.xlsx`)
- All basic information plus:
- Descriptions
- Manufacturer names
- Supplier links
- Pricing information
- Stock availability
- Alternative parts

## BOM Structure and Fields

### Required Fields
- **Designator**: Component reference (R1, C1, U1, etc.)
- **Qty**: Quantity required
- **Manufacturer Part Number**: Official MPN from manufacturer
- **Manufacturer**: Component manufacturer name
- **Package**: Physical package/footprint
- **Description**: Detailed component description
- **RoHS**: RoHS compliance status (Yes/No)

### Additional Recommended Fields
- **Value**: Component value (10K, 100nF, etc.)
- **Tolerance**: Component tolerance (1%, 5%, etc.)
- **Voltage Rating**: Maximum voltage rating
- **Power Rating**: Power dissipation rating
- **Temperature Range**: Operating temperature range
- **Unit Price**: Cost per unit in USD
- **Extended Price**: Total cost (Qty × Unit Price)
- **Datasheet URL**: Link to manufacturer datasheet
- **Notes**: Assembly notes and component purpose

### Supplier Part Numbers
- **Digi-Key Part Number**: Digi-Key supplier part number
- **Mouser Part Number**: Mouser Electronics part number
- **LCSC Part Number**: LCSC (JLCPCB) part number for PCB assembly

### Example BOM Structure
See `example-project_bom_v1.0.0_2024-08-04.csv` for a complete example BOM with all recommended fields including:
- STM32F401 microcontroller-based design
- Power regulation circuit
- USB and power connectors
- Status LEDs and user interface
- Test points for debugging
- Multiple supplier part numbers for sourcing flexibility

## BOM Management Best Practices
- Include manufacturer part numbers (MPN)
- Add supplier part numbers for purchasing
- Include alternative/substitute parts
- Document any special requirements
- Update BOM with design changes
- Version control BOM files
- Include pricing and availability data

## Recommended BOM Plugin
We highly recommend using **InteractiveHtmlBom** for generating BOMs. This plugin creates interactive HTML BOMs that provide:
- Visual component highlighting on the PCB
- Interactive component selection and filtering
- Easy assembly guidance with visual feedback
- Export capabilities to various formats
- Professional presentation for manufacturing and assembly

To install and use InteractiveHtmlBom:
1. Install the plugin from the KiCad Plugin and Content Manager
2. Open your PCB file (`.kicad_pcb`)
3. Go to **Tools → External Plugins → InteractiveHtmlBom**
4. Configure output settings and generate the interactive BOM

## File Naming Convention
Following [FILE-NAMING-AND-VERSIONING.md](../../FILE-NAMING-AND-VERSIONING.md) standards:
- `project-name_bom_v1.0.0_2024-08-04.csv` - Basic BOM
- `project-name_bom-extended_v1.0.0_2024-08-04.xlsx` - Detailed BOM with pricing
- `project-name_bom-assembly_v1.0.0_2024-08-04.csv` - Assembly-specific BOM
- `project-name_bom-production_v2.1.0_2024-08-04.csv` - Production BOM

### Versioning Strategy
- **MAJOR**: Component changes affecting compatibility
- **MINOR**: Component value changes, new optional components
- **PATCH**: Documentation updates, supplier changes
