Hello! I wanted to show off my ongoing project.
It's a diy colorimeter (a device that measures the true color of things) with high precision. Since it is based on an AS7341 10-channel spectrometer, it can also provide a very coarse spectrum, which is especially useful for me, because it allows me to analyze dying strengths and concentrations based on the Kubelka-Munk mechanism.
Similar devices can be bought, but they cost in between of 200-2000EUR, which I am unwilling to spend. Plus, this has been a super cool project in the overlap between programming, 3D-printing, functional design, electronics, colorimetry, chemistry and (at least for me specifically) natural dyes.
My device is able to achieve a relative precision of about 0.1-0.5 delta E (relative color difference in the CieLAB color space), depending on the area (blues are a bit noisy, and pinks are generally difficult). I have spent 200-300 Euros on it so far, but if I wrote down a BOM of what I got now and know to work, it would be at most 100EUR.
It consists of:
- An Adafruit AS7341 Spectrometer (the AS7343 should also fit with no hardware changes necessary and only minor software changes, adding 2-3 more channels)
- A single Nichia Optisolis LED, shining in 45 degrees onto the sample
- An ESP32-C3 Zero from Waveshare doing all the thinking & data storing
- An 0,96" OLED screen with SSD1306 driver
- A small hand-soldered PCB
- A couple JST PH cables and sockets
- 2 small buttons
- A 3D printed body
- A couple of M2x6 screws and M2 press-in inserts
- A cheap 700nm 9mm IR-cut filter
- An even cheaper piece of polarizing plastic sheet for LCD displays
I also built a surprisingly good beam trap from an IKEA steel bottle and some black fabric. And a relatively good white reference from some wound up and compressed PTFE-tape.
The software includes all the logic to communicate with the sensor, doing repeated and series measurements, performing calibrations, exporting measurements via serial connection and Bluetooth, presenting the measurements as reflectance spectra with NIR corrections, and conversion of the spectral data into common color descriptions like CieLAB and RGB (if possible).
One remaining issue is absolute calibration. "Absolute white" samples made from compressed and fused PTFE or BaSO4 powder is expensive, and calibrated color sample cardboard cards cost like 70EUR and would only be necessary once. And they don't help with calibrating the spectral data, only the colors that come out of it (the correction matrix would basically counter the spectral errors, and these would remain unreliable). I was thinking of using 3D-printing-filament swaps from reputable brands, with specified printing settings and careful sanding as calibration standards and even relative white references, but that would need someone to fabricate such a sample to specification and put it into a proper spectrometer and share the data.
I was thinking of open-sourcing the print-files, the software and the wiring diagrams if there's enough interest for it. Reproducing it should be way easier than building it for the first time (don't ask how much time I've spent optimizing the light paths), and if more people contribute, this could actually become a really awesome distributed project.