flint_hardware 0.0.1-dev copy "flint_hardware: ^0.0.1-dev" to clipboard
flint_hardware: ^0.0.1-dev copied to clipboard

A Dart-first hardware abstraction, simulation, and firmware tooling framework.

Flint Hardware #

Flint Hardware brings Dart into the physical world.

Flint Hardware is an experimental, Dart-first framework for physical computing, embedded systems, IoT, and robotics. Its public APIs describe hardware capabilities without binding applications to Linux, ESP-IDF, Arduino, or a particular board.

This repository is an early 0.1.0-dev foundation. It deliberately does not claim that the Dart VM or normal Dart AOT output runs on an ESP32.

Status #

Area Status What that means
Public board API Implemented Explicit, backend-independent board and capability contracts
Simulator Implemented GPIO, PWM, buses, serial, analog values, sensors, events, and virtual time
ESP32 blink Experimental Generates a native ESP-IDF C project from a small typed firmware IR
ESP-IDF build/flash Experimental Delegates to an installed, supported idf.py toolchain
Linux native backend Planned Will live behind the same public interfaces
Arbitrary Dart to ESP32 firmware Research No supported Dart SDK target currently produces ESP32 firmware

Simulator example #

import 'package:flint_hardware/flint_hardware.dart';

Future<void> main() async {
  final board = SimulatedBoard();
  final led = board.gpio.output(2);

  await led.high();
  await board.clock.delay(const Duration(seconds: 1));
  await led.low();

  await board.close();
}

Boards are explicit dependencies. This makes programs testable and avoids a global current board whose selection rules would differ across hosts, containers, SBCs, and firmware targets.

Run it #

dart pub get
dart analyze
dart test
dart run example/blink.dart
dart run flint_hardware:flint_hardware doctor
dart run flint_hardware:flint_hardware build --target=esp32 --example=blink --pin=2 --generate-only

With ESP-IDF installed and activated, omit --generate-only to invoke idf.py build. See ESP32 support and the hardware lab guide before wiring a board.

Design #

Applications depend on small capability interfaces. A simulator implements them in Dart; a future Linux backend can implement them with native Linux APIs and FFI; ESP32 firmware is produced through a restricted hardware IR and ESP-IDF code generation. Native handles never cross the public boundary.

Read the architecture, upstream research, and compiler design for the reasoning and limitations.

Project direction #

The first milestones cover GPIO, PWM, buttons, LEDs, and an active buzzer on ESP32 DevKit hardware. DHT22 and SG90 support follow after timing-sensitive driver and PWM validation. I2C, SPI, UART, ADC, networking, robotics, and Linux SBC backends remain part of the architecture without being presented as finished hardware support.

License #

Flint Hardware is MIT licensed. No source from dart_periphery or c-periphery is copied into this package; their designs are credited in the research notes.

1
likes
0
points
138
downloads

Publisher

verified publisherflintdart.eulogia.net

Weekly Downloads

A Dart-first hardware abstraction, simulation, and firmware tooling framework.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on flint_hardware