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.