Noodles

github

Noodles is a physical MQTT controller — a central input device for selecting and driving other MQTT-connected devices. Built on the Arduino Nano 33 IoT with a NeoTrellis 4x4 illuminated keypad, two rotary encoders, and a button pair.

noodles controller

Hardware

  • Board: Arduino Nano 33 IoT
  • NeoTrellis 4x4 — illuminated keypad for app selection and control (I2C)
  • Rotary Encoder 1: D3 / D4
  • Rotary Encoder 2: D5 / D6
  • Button Pair: D9 / D8
  • Kill Switch: D2
  • Piezo Buzzer: D7

How It Works

Three modes managed by StateManager:

  • HOME — idle display on the NeoTrellis, navigable with buttons
  • SELECTING — browse available app targets on the keypad
  • CONTROL — encoder turns and key presses publish MQTT messages to the selected app's control topic

Configured app targets:

  • Yodel — apps/yodel/control
  • Skippy — apps/skippy/control
  • Jibbers — apps/jibbers/control
  • Pickles — apps/pickles/control
  • Puddles — apps/puddles/control
  • Nurbo — apps/nurbo/control

Building

Built with PlatformIO.

Libraries

  • InputHandler — routes encoder, button, and trellis events to the right handler
  • NeoTrellis — wraps the Adafruit NeoTrellis for pixel control and key callbacks
  • RotaryEncoderEncoderChannel abstraction with direction callbacks
  • SimpleButtonPairController — debounced two-button input
  • StateManager — manages HOME / SELECTING / CONTROL state transitions and display
  • WiFiMQTTManager — handles Wi-Fi connection and MQTT publish/subscribe