Skip to main content
Featured image for TinyGo Embedded Workshop

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:

Source Code Repository: All workshop examples are available in the developer-portal-codebase repository. Each assignment includes complete working source code with 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
#

Estimated time: 120 min (2 hours)

What makes TinyGo special?
#

TinyGo is a compiler for Go designed for small devices. Here’s why it’s great for embedded development:

  1. Go language benefits: Memory safety, garbage collection, concise syntax
  2. Small binaries: Optimized for flash-constrained devices
  3. Hardware support: Drivers for common sensors, displays, and communication protocols
  4. Wi-Fi and networking: Built-in support for Wi-Fi, HTTP, MQTT on ESP32
  5. Simplicity: No build systems or complex toolchains like C/C++
  6. 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
#

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!


Next: Introduction: TinyGo and ESP32