// the find
tinygo-org/drivers
TinyGo drivers for sensors, displays, wireless adaptors, and other devices that use I2C, SPI, GPIO, ADC, and UART interfaces.
A collection of 140+ hardware drivers for TinyGo, covering sensors, displays, wireless modules, and actuators over I2C, SPI, GPIO, UART, and ADC. It's the de facto driver library for anyone doing embedded Go development — if you're targeting a microcontroller with TinyGo, this is where you look first before writing your own.
Each driver is its own package, so you only pull in what you use and the compile-time footprint stays small. The consistent `New()` + `Configure()` + `Connected()` pattern across drivers means once you learn one, you know the shape of all of them. Test files are present on a meaningful subset of drivers (ds3231, adt7410, ens160, aht20) with expected output fixtures, which is non-trivial work for embedded code that usually goes untested. The networking examples cover the full stack from raw TCP to TLS to MQTT and WebSockets, which is rare for an embedded driver repo.
No hardware-in-the-loop CI — the build workflow compiles drivers but can't actually run them against real silicon, so regressions in behavior (not just compilation) can slip through silently. Documentation quality is uneven: some drivers have no comments beyond the struct fields and you're left reading the datasheet alongside the register file to understand what the methods actually return. Pin mapping for SPI/GPIO examples requires manual editing per board, and the README says so plainly, but there's no tooling or config layer to help — you just edit variables and hope. Driver coverage is wide but shallow; complex sensors like the BNO08x (a 9-DoF IMU with onboard sensor fusion) work but the API exposes only a fraction of what the chip can do.