Portfolio / TinyML Workstation Assistant
2026 TinyML Edge AI Arduino Offline

TinyML Workstation
Assistant (AWI)

Ambient Workstation Intelligence — an always-on, fully offline keyword spotter running on an Arduino Nano 33 BLE Sense Rev2. Recognises five voice commands and manages a Pomodoro-based productivity state machine. No cloud. No network. 7 KB of flash.

Machine learning on 256 KB of RAM.

This project pushes neural network inference to the absolute edge — a microcontroller with 256 KB SRAM and 1 MB flash. The device continuously listens for one of five voice commands using a PDM microphone, runs a 3-layer fully-connected network to classify them, and controls a Pomodoro-style state machine displayed on a 128×64 OLED.

The entire ML pipeline — from audio capture to classification — runs offline. There is no Wi-Fi, no cloud API, no latency beyond the microcontroller itself. The model weighs ~7 KB in FLOAT32 TFLite format and achieves 91.1% test accuracy on a held-out validation set.

Audio to action in < 1 second

PDM Mic
16 kHz mono capture
VAD
RMS threshold gate
Features
36-dim RMS + ZCR
Normalise
StandardScaler
NN Inference
ArduTFLite 1,266 params
Gating
2-stage confidence filter
FSM + OLED
State update + display

FOCUS

Starts a 25-minute Pomodoro timer and transitions to FOCUS state.

MEETING

Enters meeting mode — timer paused, display updated.

DONE / LEAVE

Ends the current session or exits meeting mode respectively.

STATUS

Displays the current state, elapsed time, and session count.

Specifications

COMPONENTDETAIL
MicrocontrollerArduino Nano 33 BLE Sense Rev2 — nRF52840, 64 MHz
Memory1 MB flash / 256 KB SRAM
MicrophoneMP34DT06JTR PDM — 16 kHz mono
DisplaySSD1306 128×64 OLED via I2C
Model size~7 KB (FLOAT32 TFLite)
Parameters1,266 total — 3-layer fully-connected
Test accuracy91.1% on held-out validation set
Classes6 — focus, meeting, done, leave, status, silence

Technologies used

EMBEDDED
C C++ Arduino
ML INFERENCE
TensorFlow Lite ArduTFLite
TRAINING
Python scikit-learn TensorFlow
PERIPHERALS
Arduino_PDM Adafruit SSD1306