Goatmire 2026 AtomVM Workshop

This page collects the material for the AtomVM workshop at Goatmire 2026.

During the workshop we write Elixir applications that run directly on the Goatmire badge, an ESP32-S3 board, using AtomVM.

Slides

Workshop examples

All exercises are in this repository:

Each exercise is a standalone Mix project that runs on the badge. They build on each other, so it is best to follow them in order:

  • 01_hello_world Install AtomVM on the badge, then build, flash, and see console output from a first application.

  • 02_temperature Talk to the TMP103 temperature sensor over I²C and print the temperature on the console.

  • 03_atomgl Show the temperature on the badge display with AtomGL.

  • 04_wifi_mqtt Join a Wi-Fi network, connect to an MQTT broker, and publish the temperature.

  • 05_neopixel Animate the badge’s four SK6812MINI-E RGB LEDs, using the SPI peripheral as a waveform generator.

  • 06_keyboard Turn the 6 × 13 key matrix into press and release events, using interrupts instead of polling.

  • 07_analog Measure the battery voltage with the ESP32-S3 ADC.

Getting started

You need Elixir installed on your computer. The mix atomvm.* tasks bring their own esptool, so nothing else has to be installed system-wide.

The first exercise installs AtomVM on the badge (this is needed only once):

cd 01_hello_world
mix deps.get
mix atomvm.esp32.install --image AtomVM-esp32s3-atomgl-ipv6-libsodium-psram-elixir-nightly-0.7

Then flash the application and watch its output:

mix atomvm.esp32.flash
mix atomvm.esp32.monitor --timeout 10

If the badge is not detected: hold BOOT, tap RESET, release BOOT, and retry.

Hardware

The Goatmire badge is built around an ESP32-S3-MINI-1 module and includes:

  • a display with resistive touch panel,
  • a TMP103 temperature sensor and an SC7A20 accelerometer on I²C,
  • a Qwiic connector on the same I²C bus,
  • four SK6812MINI-E addressable RGB LEDs,
  • a 6 × 13 keyboard matrix,
  • an IR transmitter and receiver,
  • and battery and USB voltage sensing.

Pinout and more details are in the badge hardware notes:

Datasheets

Microcontroller:

Temperature sensor:

Display controller:

RGB LEDs:

Accelerometer:

AtomVM documentation

The workshop uses AtomVM 0.7, so these links point to the release-0.7 documentation:

Peripherals:

Networking:

Differences from the BEAM:

  • AtomVM: a tiny Erlang VM for microcontrollers.
  • ExAtomVM: the Mix tasks used to build and flash AtomVM applications.