An open-source microcontroller board that supports a wide range of sensors, and gives divers real-time depth/altitude feedback, drives a dual-channel camera intervalometer, and logs time-stamped sensor data — small enough to fit inside the smallest BlueRobotics 2″ underwater housing.
FireFish is a compact board that can provide scientific divers with (1) real-time feedback on depth, altitude, and other positional data to guide image acquisition; (2) a programmable dual-channel intervalometer for one or two cameras; and (3) time-stamped logging of sensor data that can be used for downstream photogrammetry model orientation. Its open design adapts well beyond photogrammetry — e.g. synchronized irradiance measurements or for underwater navigation – and provides an easy platform to make sensors designed for underwater vehicles accessible to divers.
- 🎯 Live sensor readout on a 2.4″ TFT — allowig divers to maintain a consistent altitude
- 📷 Dual-channel intervalometer — focus + shutter for one camera, or alternate-trigger two cameras
- ⏱️ Synchronized logging to onboard flash with a temperature-compensated RTC — easy model orientation
- 🔌 Flexible I/O — I²C (Qwiic / STEMMA QT), 2× UART, RS-232, and 2x analog inputs
- 🔋 Onboard LiPo charging — charge, download, and update firmware through the housing, no opening required
- 🤿 Dive-ready — fits standard 2″ (Ø50 mm) housings with 3D printed carrier; depth rating to 225 m
- 🛠️ Fully open — KiCad design, firmware, enclosure STLs, and an Arduino board-support package
| Microcontroller | ATSAMD51J19A — 32-bit Arm Cortex-M4F, 120 MHz, hardware FPU |
| Display | 2.4″ TFT, 320 × 240 (ST7789) |
| Storage | 16 MB onboard SPI flash (MX25L12833F) |
| Timekeeping | DS3231MZ temperature-compensated RTC (battery-backed) |
| Power | MCP73831 single-cell LiPo charger; 3.3 V & 5 V rails |
| Sensing / I/O | ADS1115 16-bit ADC; I²C, UART, RS-232 (MAX3232); tap gesture control |
| Camera control | Dual-channel optically-isolated intervalometer (TCMT1100) |
| Board size | 72 × 43 mm (two-layer PCB) |
| Housing | Standard 2″ (Ø50 mm) BlueRobotics enclosure; depth rating to 225 m |
| Folder | Contents |
|---|---|
hardware/ |
KiCad 8 project — schematic, PCB layout, Gerbers, BOM, and pick-and-place files |
firmware/ |
Arduino board-support package (firefish_m4_v4b), an example sketch, and the bootloader |
enclosure/ |
3D-printable PETG carrier STLs (short / short-simple / long-simple) + clamp |
docs/ |
Figures and documentation |
The full editable schematic is hardware/firefish.kicad_sch (KiCad 8).
The full step-by-step build and operation instructions are in the HardwareX article (see Citation); this repository holds the files those instructions refer to:
hardware/— fabricate and populate the board (Gerbers + BOM + placement files)firmware/— flash the bootloader (J-Link) and upload the example sketch over USBenclosure/— slide the board into 3D printed carrier and place into a 2″ housing
If you use FireFish, please cite the article:
Bongaerts, P. (2026). FireFish: an open-source microcontroller for real-time sensor feedback and data logging in underwater photogrammetry. HardwareX (under review).
@article{Bongaerts2026FireFish,
author = {Bongaerts, Pim},
title = {FireFish: an open-source microcontroller for real-time sensor
feedback and data logging in underwater photogrammetry},
journal = {HardwareX},
year = {2026},
note = {Under review; DOI to be added}
}📌 The archival version of record (design files + firmware) is deposited on Zenodo: https://doi.org/10.5281/zenodo.23073946. This GitHub repository is the development mirror.
Open-source hardware, licensed by part (full details in LICENSE.md):
| Part | License |
|---|---|
| Hardware — KiCad, Gerbers, STLs, BOM | CERN-OHL-S v2 |
| Software / firmware — original code | MIT |
| Documentation & figures | CC BY 4.0 |
Third-party firmware keeps its upstream license (Adafruit SAMD core → LGPL-2.1; uf2-samdx1 → MIT; ChaN FatFs → BSD-style). Copyright © 2024–2026 Pim Bongaerts.
Figures © Pim Bongaerts, reproduced from the FireFish HardwareX article under CC BY 4.0.
Built by learning from the open-source hardware community — in particular Adafruit and SparkFun — with generous input from John Atkins and Joey Castillo. Field testing and deployment were supported by the Hope for Reefs Initiative at the California Academy of Sciences and Inkfish.



