Skip to content

A curated list of awesome TinyGo projects and libraries. Inspired by awesome-go.

License

Notifications You must be signed in to change notification settings

tinygo-org/awesome-tinygo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 

Repository files navigation

awesome-tinygo

A curated list of awesome TinyGo projects. Inspired by awesome-go.

Contributing:

Awesome TinyGo

Code Editing

  • VSCode - TinyGo support for Visual Studio Code.
  • Goland - TinyGo support for Goland.
  • Vim - TinyGo support for Vim/NeoVim.
  • bash/zsh/clink - Adds bash/zsh/clink auto-completion to TinyGo.
  • Display Simulator - tinydisplay is a tiny display for TinyGo development.

Continuous Integration

  • setup-tinygo - Sets up a TinyGo environment for GitHub Actions.
  • TinyHCI - Test actual hardware connections for microcontrollers. It is intended to provide smoke test implementations that exercise the basic functionality for each kind of hardware interface for each supported microcontroller.

Display Hardware

  • TinyDraw - Draw primitives on TinyGo displays. It is heavily based on the Adafruit GFX library.
  • TinyFont - Font/text package for TinyGo displays. It is heavily based on Adafruit's GFX library.
  • TinyTerm - A minimal terminal for TinyGo devices supporting 256-color ANSI escape codes.
  • SSD1306 font - Lite SSD1306 OLED font library using TinyGo.

Embedded Systems

General use

  • bouncer - bouncer is a button input handler library supporting press-lengths of different durations, and debouncing.
  • fat - Filesystem implementation using the File Allocation Table in pure Go.
  • go-maquina - Finite State Machine (FSM) implementation with simplicity and maintainability in mind using Go generics.
  • go-pico - Raspberry Pi RP2040 Pico SDK for golang.
  • mm-go - Generic manual memory management for golang.
  • periph/devices - Device drivers.
  • pio - Programmable I/O API for RP2040/RP2350 using TinyGo
  • schedule - Event-loop scheduling library for synchronizing actions over long periods of time.
  • tinyfs - Embedded filesystems for TinyGo like FATfs and LittleFS on microcontrollers.
  • TinyGo Drivers - Provides a collection of hardware drivers for devices such as sensors and displays that can be used together with TinyGo.
  • tinymath - The fastest and smallest Go math library for constrained environments, like microcontrollers or WebAssembly.
  • tinytest - The only assertion library that works with TinyGo

Protocol implementations

  • achicken - Dead-simple serial protocol with CRC for small projects.
  • ether-swtch - Low level Ethernet/IP/TCP/HTTP stack marshaller/unmarshaller for use in tiny places.
  • go-bthome - Minimal package for creating and parsing BTHome service data using Go/TinyGo.
  • go-canard - CAN/OpenCyphal implementation in pure Go. Port of libcanard.
  • go-cayenne-lib - CayenneLPP in Go
  • gomavlib - Mavlink protocol (2.0 and 1.0) implementation in Go for control and instrumentation of autonomous vehicles.
  • mlkem768 - Quantum-resistant key encapsulation method ML-KEM (formerly known as Kyber) implementation in Go.
  • natiu-mqtt - A dead-simple, extensible MQTT implementation well suited for embedded systems.
  • peamodbus - Fault tolerant, TCP modbus implementation in Go that just works. Apt for embedded systems.
  • peasocket - Dead-simple, extensible websocket implementation in Go.
  • seqs - Networking library for use on microcontrollers. Basically a more featureful LWIP.
  • tiny-sproto - A simple Point-to-Point Protocol implementation written in Go.

Instrumentation and control with sensors and actuators

  • fusion - Sensor fusion algorithms (gyroscope/accelerometer) implemented in pure Go.
  • magcal - (Magical) Magnetometer Calibration
  • pctl - "process control" is a package for industrial control in Go. Filtering and control theory algorithms.

Encoders

  • jsony - A blazing fast and safe Go package for serializing JSON
  • protobuf-go-lite - Reflection-free Protobuf for Go.

Gaming

  • firefly-go - Go SDK for making Firefly Zero games
  • Flapy Boot - clone of flappy bird for the GBA written using TinyGo.
  • gonx - Wrapper around libnx for developing Nintendo Switch programs using TinyGo.
  • Hunt the Wumpus - Handheld gaming powered by the Raspberry Pi Pico and TinyGo.
  • koebiten - Koebiten is a 2D game engine that runs on TinyGo. It’s inspired by Ebitengine and is characterized by its simple API.
  • tinygba - Tools and helpers for developing GBA programs using TinyGo.
  • wasm4go - Framework for making WASM-4 games with Go (and TinyGo).

WebAssembly

DOM Manipulation

  • TinyDom - DOM manipulation library. For use in WASM
  • GoUI - A web framework for making user interfaces

WebSockets

  • TinyWebSocket - Wraps the syscall/js api to provide a better developer experience, while being compilable by TinyGo

WASI and WASM Unknown

  • go-modules - WebAssembly, WASI, and Component Model tools for Go
  • wasmCV - Go bindings for wasmCV computer vision interfaces using WebAssembly.
  • wypes - Go library to define type-safe host functions in wazero and other WebAssembly runtimes.

Wireless Communication

  • Go Bluetooth - Go Bluetooth is a cross-platform package for using Bluetooth Low Energy hardware from the Go programming language.
  • lorawan - LoRaWAN implementation for embedded devices using TinyGo.

Awesome TinyGo Creations

Hardware and software implementations

  • Arduino Mega Programmer - Read ROMs, EPROM, Flash of older computers such as a Commodore C128 ROM chip.
  • LED Cube - 6x32x32 LED cube, inspired by a LED cube I've seen at CCC and the SquareWave Dot cube.
  • HeadTracker - Bluetooth DIY Head Tracker, for Nano 33 BLE and XIAO BLE Sense boards.
  • RC PWM to RGB LED - WS2812 LED strip color and brightness control with two RC PWM channels
  • USB HID Keyboard firmware for TinyGo - keyboard firmware for tinygo
  • Gopherbot - A robotic gopher plushie that you can code using TinyGo
  • Gobadge - TinyGo powered badge using Adafruit Pybadge Hardware
  • TinyGlobo - A pico balloon floats into the great big world, towing a RP2040 Pico programmed with TinyGo using LoraWAN to communicate along the way.
  • FPV Combat Gadget - FPV Combat configurator with display and a rotary encoder (multi-level menu system with input), runs on XIAO.
  • gopher-board - Original board with Gopher design for Waveshare RP2040-Zero and XIAO.
  • gopher.pretty - Kicad footprint file of Gopher design. Lets you make your own board.
  • go-haystack - Track personal Bluetooth devices via Apple's "Find My" network using OpenHaystack and Macless-Haystack with tools written in Go/TinyGo. No Apple hardware required!
  • wasmVision - wasmVision gets you going with computer vision using WebAssembly with processors written using TinyGo/Rust/C.

Awesome Libraries

Packages that make life easier or more awesome in TinyGo

  • cbor - Library for encoding and decoding Concise Binary Object Representation data and Sequences (RFC8949).
  • cereal - All-you-need serial device tooling integrating bugst, goburrow, tarm and sers serial libraries.
  • float16 - IEEE 754 half-precision floating-point format (binary16) library.
  • godsp - Basic digital signal processing functions using the discrete wavelet transform (DWT).
  • lap - Extremely lightweight linear algebra package similar to gonum.
  • math32 - 32bit math functions in pure Go.
  • mathgl - A pure Go 3D math library.
  • tvd - Total Variation Denoising filter ideal for capturing edge transitions.
  • u-root - Go versions of many standard Linux tools, such as ls, cp, or shutdown among other awesome OS stuff.

Resources

Websites

TinyGo Community

Tutorials

About

A curated list of awesome TinyGo projects and libraries. Inspired by awesome-go.

Topics

Resources

License

Stars

Watchers

Forks