Firmware libraries and hardware components are different things.
A firmware library gives your code an API. A hardware component is a physical part with pins, packages, electrical limits, datasheets, footprints, symbols, and sometimes 3D models. Embedr keeps those ideas separate so the project can reason about both software and hardware.
What a component record can contain
A component record can describe:
- part name and aliases,
- category and tags,
- manufacturer and part number,
- mounting style,
- package,
- pin names,
- protocols such as I2C, SPI, UART, PWM, or analog,
- datasheet links or extracted datasheet context,
- KiCad symbols,
- KiCad footprints,
- 3D models,
.zensnippets or generated hardware source.
The agent can search the component library before choosing parts or writing hardware source. This helps ground the design in known components instead of inventing pin names or footprints.
When to use it
Use the component library when you need to:
- choose between similar sensors or modules,
- find a part with a known footprint,
- create schematic source for a real part,
- check pin names before wiring firmware,
- fetch a datasheet or hardware asset,
- keep examples consistent across a class or team.
For a simple blink sketch, you may not need a component record. For a board with sensors, regulators, connectors, and modules, it becomes useful quickly.
Component assets
Assets are files or structured data attached to a component record. Common assets include:
- datasheet PDF,
- datasheet markdown,
- KiCad symbol,
- KiCad footprint,
- 3D model,
.zendocumentation or snippet,- validation notes.
Assets matter because a component name alone is not enough to build a board. A "DHT22" record is useful only if the project can also understand pins, electrical limits, and package shape.
Components in embedr.yaml
The manifest can store project-level components and connections:
components:
- id: dht22-sensor
version: latest
instance: room_sensor
connections:
- from:
component: room_sensor
pin: data
to:
component: esp32
pin: GPIO4
wire_color: yellow
This does not replace schematic source. It gives the project a readable hardware map that can help the app, CLI, and agent reason about the design.
Connections are intent
A connection says "these two pins should be electrically related." It is not the same as a copper trace, a breadboard jumper, or a full schematic symbol.
Use connections for:
- wiring tables,
- student lab documentation,
- early hardware planning,
- agent context before a full PCB workflow exists.
Use .zen source and KiCad files when you need formal schematic and board generation.
Agent workflow
Good requests:
Search the component library for a DHT22-style temperature sensor with a usable footprint, then explain the pins I need for ESP32 firmware.
Use the component library before editing pcb/boards/main.zen. I want a status LED, current-limiting resistor, and JST power connector with real footprints.
The important instruction is not the exact phrasing. It is that the agent should ground hardware choices in component records before writing board source.
