La Machine: The Useless Box reloaded with Erlang and AtomVM

Paul Guyot


Why and how Erlang and AtomVM were used to develop the personality of a lovable IoT device while maximizing its battery life.

Session will include video demos of La Machine ( and most importantly the Erlang journey towards the product:

  • hardware prototyping including a small ESP32c3 board powering it
  • usage of rebar3 to flash Erlang code on it
  • usage of console
  • usage of AtomVM API for GPIO and servo (PWM)
  • usage of CI with dialyzer and tests, including qemu
  • specific AtomVM API for ESP32 deep sleep
  • how a C library was ported as an AtomVM NIF for audio decoding, with a glimpse on AtomVM SMP builds (even if ESP32C3 is single core)
  • quick overview of memory management on AtomVM

Key Takeaways:

  • How to use AtomVM to prototype and build IoT devices using Erlang or Elixir.
  • This includes using existing libraries (GPIO, PWM will be explicitely mentioned, but I2C is straightfoward), as well as porting more complex ESP32 component libraries as NIFs.

Target Audience:

  • Erlang developers
  • Elixir developers
  • IoT enthusiasts and hackers

La, Machine, in, Erlang