Colorimeter Build
Concept
A 3D-printed, Arduino-based colorimeter that reads absorbance at multiple wavelengths, covering all three assays from a single device.
Key insight: all three assays read in the 530–650nm range:
- Salicylate: 545nm
- Oxalates: 607nm
- Total amine ratio: 522nm vs 650nm
A multi-channel spectral sensor eliminates the need to swap LEDs between assays.
Recommended Sensor: AS7265x Triad Spectroscopy Sensor
- Manufacturer: AMS/SparkFun
- 18 calibrated spectral channels, 410nm–940nm
- Three integrated sensors (AS72651/52/53) on one board
- I2C interface, Arduino library available (SparkFun)
- Covers all three assay wavelengths simultaneously
- ~$65 from SparkFun
This is a significant upgrade over single-LED + photodiode approaches for this multi-assay application.
Bill of Materials (Hardware)
| Component | Source | Est. Cost |
|---|---|---|
| AS7265x Triad Spectroscopy Sensor | SparkFun (DEV-15050) | ~$65 |
| Arduino Nano or ESP32 | Amazon/AliExpress | $5-15 |
| Plastic cuvettes (100 pack) | Amazon | ~$10 |
| 3D printed cuvette holder | Self (P1S) | ~$1 filament |
| 3D printed enclosure | Self (P1S) | ~$2 filament |
| Misc: wire, resistors, connectors | On hand | ~$5 |
| Total | ~$85-100 |
Design Notes
Cuvette Holder
- Must be light-tight except for sensor window
- Sensor positioned directly against cuvette
- 3D print in black PETG or PLA — light blocking critical
- Standard cuvette dimensions: 10mm path length, 12.5mm square
- Reference: open-source colorimeter designs on Appropedia, Journal of Chemical Education (2025)
Enclosure
- Light-tight overall
- Port for cuvette insertion
- USB connection to Arduino exposed
- Consider OLED display for standalone operation vs USB-serial to laptop
ESP32 Option
- Adds WiFi for direct data logging to Google Sheet or MQTT
- Relevant for community data collection use case
- Only slightly more complex than Nano
Firmware
Core Logic
1. Read blank (distilled water in cuvette)
2. Record baseline voltage per channel
3. Insert sample cuvette
4. Read sample voltages
5. Calculate absorbance: A = log(I₀/I) per channel
6. Output channel values via serial
Assay Modes
- Salicylate mode: report A545
- Oxalate mode: report A607
- Amine mode: report A650/A522 ratio
SparkFun AS7265x library handles raw channel reads. Absorbance calculation in sketch.
Calibration Procedure
- Zero with distilled water blank
- Run known concentration standards for each assay
- Record absorbance vs concentration
- Store calibration curves in EEPROM or companion spreadsheet
References
- SparkFun AS7265x hookup guide
- Journal of Chemical Education (2025) — 3D-printed RGB LED photometer
- Appropedia open-source colorimeter (Anzalone et al. 2013)
- Instructables DIY LED photometer with Arduino
- DIY Colorimeter AS7265x + ESP32 (how2electronics.com)
Print Files
- Cuvette holder STL — to be designed
- Enclosure STL — to be designed