Skip to content

Latest commit

 

History

History
142 lines (107 loc) · 9.31 KB

README.md

File metadata and controls

142 lines (107 loc) · 9.31 KB

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

  • 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.
  • 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.

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-canard - CAN/OpenCyphal implementation in pure Go. Port of libcanard.
  • 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.

Gaming

  • Hunt the Wumpus - Handheld gaming powered by the Raspberry Pi Pico and TinyGo.
  • tinygba - Tools and helpers for developing GBA programs using TinyGo.
  • gonx - Wrapper around libnx for developing Nintendo Switch programs using 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

Wireless Communication

  • Go Bluetooth - Go Bluetooth is a cross-platform package for using Bluetooth Low Energy hardware from the Go programming language.

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.

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