TESI
Versions · earlier

V2: Custom PCB

Custom PCB around an ESP32 Feather V2, battery powered, over OSC and OOCSI.

V2, board 1: Feather V2, sensors, battery, eight touch pads.
V2, board 1: Feather V2, sensors, battery, eight touch pads.
Status
Earlier
Period
2025-02 – 2026-04
Board
Adafruit ESP32 Feather V2, 8 MB flash, 2 MB PSRAM
Sensors
IMU (BNO055), distance (VL53L1X), capacitive touch (MPR121, eight pads), microphone (MAX4466), light (LDR), potentiometer, push buttons
Power
LiPo battery, power switch, battery monitoring
Firmware
Arduino, ESP32 core 3.1.2
Output
OSC over UDP, OOCSI, Serial
Sound
On the computer: Max, Ableton Live
PCB
KiCad, open source. Designed and assembled at the TU/e d.search lab with Katrien van Riet and Geert van den Boomen

The V1 circuit on a custom PCB, with a battery. Sensor data goes over Wi-Fi to a computer, where Max maps it to sound. Each sensor can be switched on or off and sent over OSC, OOCSI or Serial at its own rate.

Get Started

  1. Install the Arduino IDE (2.0 or later) and the Espressif ESP32 boards package 3.1.2.
  2. Install the libraries: Adafruit BNO055, Adafruit VL53L1X, Adafruit MPR121 (1.1.3), OOCSI.
  3. Copy secrets.template.h to secrets.h and enter the network credentials.
  4. Set DEVICE_INDEX in config.cpp to the number on the board. Each board needs its own.
  5. For OOCSI, uncomment #define USE_OOCSI in config.h and run an OOCSI server.
  6. Upload arduino/tesi to the Feather V2.
  7. Open the Max patches in max/. They need modulo, modulo+, the Sadam Library, FluCoMa and odot.

Sensors

Sensor Variable Interval
Battery BATTERY 5000 ms
Light (LDR) LDR 20 ms
Microphone MIC 30 ms
Potentiometer POT 10 ms
Distance (VL53L1X) DISTANCE 20 ms
Orientation (BNO055, quaternion) QUAT 30 ms
Push button PUSH 5 ms
Capacitive touch (MPR121) CAP 5 ms
Heartbeat PING 1000 ms

Each sensor is one line in config.cpp: {enabled, osc, serial, oocsi, interval, lastUpdate}. Readings are smoothed (exponential moving average) and sent only when they change.

Files