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_worldInstall AtomVM on the badge, then build, flash, and see console output from a first application. -
02_temperatureTalk to the TMP103 temperature sensor over I²C and print the temperature on the console. -
03_atomglShow the temperature on the badge display with AtomGL. -
04_wifi_mqttJoin a Wi-Fi network, connect to an MQTT broker, and publish the temperature. -
05_neopixelAnimate the badge’s four SK6812MINI-E RGB LEDs, using the SPI peripheral as a waveform generator. -
06_keyboardTurn the 6 × 13 key matrix into press and release events, using interrupts instead of polling. -
07_analogMeasure 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: