
TinyGo Embedded Workshop
Table of Contents
Welcome to the TinyGo Embedded Workshop!
About this workshop#
By participating in this workshop, you will gain hands-on experience with embedded development using TinyGo on ESP32 microcontrollers. Through practical assignments, you will learn to create IoT applications using the Go programming language, from simple LED control to Wi-Fi connectivity and edge AI concepts.
TinyGo brings the simplicity and safety of Go to microcontrollers, making embedded development accessible to Go developers while maintaining the performance needed for resource-constrained devices.
Agenda#
If you have met the prerequisites, we can start with the individual chapters:
- Introduction: TinyGo and ESP32: Overview of TinyGo, ESP32 architecture, and development boards
- Assignment 1: Install TinyGo: Setting up the development environment
- Assignment 2: Blinky: Your first embedded program - LED control
- Assignment 3: Display: Graphics, text, and images on LCD displays
- Assignment 4: Sensors: Reading data from I2C sensors
- Assignment 5: Wi-Fi Client: Connecting to networks and fetching data
- Assignment 6: Wi-Fi Server: Running a web server on ESP32
- Assignment 7: AI Edge Models: Introduction to edge AI and machine learning concepts
go.mod files and build instructions. Clone the repo to access ready-to-build examples for all assignments.Prerequisites#
To follow this workshop, you will need both hardware and software equipment.
Required hardware:
- Computer running Linux, Windows or macOS operating system
- ESP32 development board:
- Recommended: M5Stack Core2 (ESP32, 320x240 display, touchscreen, sensors)
- Alternative: M5Stack StampC3 (ESP32-C3, compact, Wi-Fi)
- Alternative: XIAO-ESP32C3 or XIAO-ESP32S3
- USB-C cable (supporting power + data) compatible with your board
Required software:
Recommended software:
- Git
- Serial monitor tool (
screen,minicom, or platform-specific alternatives)
Time Requirements#
What makes TinyGo special?#
TinyGo is a compiler for Go designed for small devices. Here’s why it’s great for embedded development:
- Go language benefits: Memory safety, garbage collection, concise syntax
- Small binaries: Optimized for flash-constrained devices
- Hardware support: Drivers for common sensors, displays, and communication protocols
- Wi-Fi and networking: Built-in support for Wi-Fi, HTTP, MQTT on ESP32
- Simplicity: No build systems or complex toolchains like C/C++
- Modern tooling: Excellent VS Code integration, fast compile times
Workshop objectives#
By the end of this workshop, you will be able to:
- Set up a TinyGo development environment
- Write embedded programs using Go
- Control GPIO pins, read sensors, and drive displays
- Connect to Wi-Fi networks and implement network communication
- Understand edge AI concepts and explore machine learning on microcontrollers
- Build your own IoT projects using TinyGo
Feedback#
If you have any feedback about the workshop, feel free to start a new discussion on GitHub.
Resources#
- TinyGo Documentation
- TinyGo 0.41 Release Notes
- TinyGo Drivers Repository
- M5Stack Core2 Documentation
- Espressif Developer Portal
Conclusion#
We hope that this workshop will provide you with a solid foundation for embedded development using TinyGo. Thank you for your time and interest, and we look forward to seeing the projects you will create!
