Welcome to ScapeCrunch

We are ScapeCrunch, the place where planted aquarium hobbyists come to build relationships and support each other. When you're tired of doom scrolling, you've found your home here.

Universal Colorimetric Tester

  • Thread starter Thread starter renesis
  • Start date Start date
  • Tagged users Tagged users None
Joined
Apr 23, 2026
Messages
52
Reaction score
188
Location
GTA
Hi All,

This is something I've been wanting to do for years, and I think I finally found a sensor that will work. I've always had trouble reading the API tests, and I've always been miffed that the reefers get the cool digital test readers - and wanted to take a crack at building one that could potentially read any freshwater test given a blank/known concentration as a calibration.

1781623047516.webp


A sensor came out from ams (AS7343) in 2022 that unfortunately has been made EOL, but has a replacement (TCS34488M) with a similar package that might work for future versions.
1781623191534.webp1781623224412.webp

I recently got my hands on a qwic version of the AS7343 sensor from sparkfun, and figured its time to put together something.

Goals:
  • As cheap as possible
  • Universal as possible
  • Fit API glass/plastic vials (not sure yet if the plastic vials will read ok)
  • Start with Nitrate/Phosphate and see if I can add more there

I figure I'll need 2 light sources (warm white, and IR for reading the phosphate test), but can use the same sensor array across most tests. I can use a small-form ESP32 as the MCU to give it USB-C power, wifi/bt connectivity if needed, and keep it small. Small/cheap ~1.3" OLED screen for displaying results/selecting tests.

Enclosure will be 3d printed.


1781624471200.webp1781624649923.webp1781624676599.webp
First pass at a sketch - I might drop the screen if I can give the device a web interface though, which will make the device even smaller/cheaper, reduces the need for physical buttons on the unit, and a 2nd pcb entirely. Also not sure if it will need a cover for the top of the vial, or how much ambient light will affect the reads. TBD. Will order some XIAO ESP32S3 to play with and see how far I can take it.

I'll log progress here, and am very open to suggestions and ideas. If successful, I'll release the files so it can be easily replicated.
 
There are many similar freshwater devices designed for checking parameters of pool water, so why not aquarium water, especially when we have them for saltwater. What is it about freshwater aquariums that makes this difficult or just ignored by companies like Hanna?
 
There are many similar freshwater devices designed for checking parameters of pool water, so why not aquarium water, especially when we have them for saltwater. What is it about freshwater aquariums that makes this difficult or just ignored by companies like Hanna?
Exactly! I don't think it's difficult, I think it's just deemed that the market of people that would buy in is too small to justify the R&D.
 
Hanna does have one for fresh water, it does all the tests no3, po4, NH4, K, Ca, Mg, S Fe2, Fe3 & PH ( model no HI83325)
i have one, but honestly it is not really required unless you are as nerdy as I am ,

if used properly you will know how many ppm of NO3 do your plants consume daily ( down to 0.1 ppm) , but is that really required? the difference between 17.5 ppm of NO3 & 20 ppm of NOP3 hardly makes any diff in plant growth

the Ca, Mg Tests are an abs waste , they just do not work

K is nice to know & I havent come across any other test that does the same

Fe2/Fe3 tests , this is useful , though whenever i test it always show Fe2=0 , so I am guessing it is not super accurate between the Ferrous & ferric , but total Fe is correct

also running the tests is quite tedious , & has to be followed to the T , if the method says shake vigorously for 1 minute, then it means 60 secs, if u do 70 secs or 50 secs you will get a different value , esp for tests like K
if the test says invert the cuvette 10 times , then 10 times it is & even the speed of inverting the cuvette makes a bit of a diff

Reaction time has to be followed to the second ( it does have a built in timer & auto reads the result after the timer has expired so that part is easy)

overall a fun toy to have , but frankly unless aquatic plants nutrition is your thesis topic , you can manage withought it

as for reading the drop tests, this is what I have done , I have made NO3 solutions of 1 ppm, 5 ppm, 10 ppm etc , run the no3 test , took a pic against a white background , kept pics for reference , I take a pic of the current test & compare the 2 pics
 
Hanna does have one for fresh water, it does all the tests no3, po4, NH4, K, Ca, Mg, S Fe2, Fe3 & PH ( model no HI83325)
Nice piece of kit! But yeah, goes against goal #1 to do it economically. And yes, mostly not required, but I'd like to go with a lean dosing system on my upcoming tank, and seems useful to get a bit more resolution out of the standard tests. Not looking for lab-grade results, but also something better than asking my wife if this vial looks orange or orange-yellow.

I dug into the xiao esp32, and seems a web interface is within its capabilities, so I've dropped the oled and am redesigning the case. It also has a built-in charging circuit, so maybe the final version could allow it to be rechargeable/battery operated. Would be more convenient, but a usb-c charger or powerbank is never far away either and will keep parts cost down.

I got the size down to just 50x35x64mm... and somehow made it look like a vape.

1781703994635.webp
 
Nice piece of kit! But yeah, goes against goal #1 to do it economically. And yes, mostly not required, but I'd like to go with a lean dosing system on my upcoming tank, and seems useful to get a bit more resolution out of the standard tests. Not looking for lab-grade results, but also something better than asking my wife if this vial looks orange or orange-yellow.

I dug into the xiao esp32, and seems a web interface is within its capabilities, so I've dropped the oled and am redesigning the case. It also has a built-in charging circuit, so maybe the final version could allow it to be rechargeable/battery operated. Would be more convenient, but a usb-c charger or powerbank is never far away either and will keep parts cost down.

I got the size down to just 50x35x64mm... and somehow made it look like a vape.

View attachment 17864
 
Help me understand @renesis , the device you are creating - it will read a bunch of parameters, I get that, but how? Vials? Probes? What would the instruction manual be like … for dummies, lol.

However it works, it sounds amazing!
Thanks! It would just be using the basic API tests we all already know (and love/hate). Or use any other colorimetric test, so its agnostic.

The idea would be to first calibrate the test, so in the case of api nitrate, create a calibration line out of 2 or more known concentrations (weighed and dissolved KNO3) - this sets the device up for future reads and should only need to be done once in a while.

1781795098339.webp

For regular reads, you would place the vial with tank water in the reader, and record a 'blank reading', then add your test reagents like normal into the same vial, mix, and pop it back in the reader after the 5 mins to let colour develop and take another read. The reader will take the difference between the test and blank value and output a ppm.

1781795060222.webp

The device will be able to store multiple tests/calibration curves - so you would just select which test you are running before taking any readings.
1781795022574.webp
 
Very cool! I love the diy.
Like a buy once Hanna Checker that can be adapted to any water test brand and kit.
I have just got some Esp32 boards delivered to play around with creating an auto water changer, they are incredibly cheap for what they are.
Yeah the ESP32 are great, I find myself reaching for them more and more now. Teensys used to always be my go to, but when you don't need the speed, the value, form, and wifi/bt make the ESP32 amazing for value.
 
Got the first version of the case done! I might explore a built-in hinge for the cover to make it a bit easier to close, but for testing this will work.

1781877111940.webp1781877156659.webp

Calling it Universal Colorimetric Tester is getting to be a mouthful fast, leading name candidate is SpectroFin.

Going to try to mix up some nitrate dilutions tonight or this weekend and see if I can get some good reads.
 
I tried to calibrate for nitrate, but quickly ran into issues. The cal. process on the device worked okay, but I think the algorithm that determines the sensor gain isn't compensating for gain differences between calibration and actual tests. So the measured values were reading about half their actual. I also think I can make it work better by taking multiple reads, and using multiple channels instead of a single channel per test especially for colours that span a few channels like nitrate (yellow to orange to red).

The nature of the api tests made things harder too as the colour continues to get darker after 5 mins making it difficult to collect raw sensor data.

I need to dig into the code a bit more, and repeat testing with some serial dilution of something a bit more stable, like food colouring first to get a bit more data and see how the auto gain calculations are working.

The screens show the calibration, and then raw data of 0ppm and 20ppm nitrate which shows the yellow vs orange difference fairly well.

Not discouraged yet, but more work to be done.
 

Attachments

  • Screenshot_20260619_214103_Chrome~2.webp
    Screenshot_20260619_214103_Chrome~2.webp
    100.7 KB · Views: 3
  • 20260619_213403.webp
    20260619_213403.webp
    100.8 KB · Views: 2
  • Screenshot_20260619_214250_Chrome~2.webp
    Screenshot_20260619_214250_Chrome~2.webp
    41.8 KB · Views: 3
  • Screenshot_20260619_214304_Chrome~2.webp
    Screenshot_20260619_214304_Chrome~2.webp
    40.8 KB · Views: 4
Minor updates, added a couple diagnostic modes -

1782144369679.webp
1. Spits out all channel data across all gains in a CSV file - to easily see what a read looks like, and what gain setting is ideal:
1782144350111.webp

2. A capture of the data collected on calibration and test measurements, so I can see the raw reads and compare after the fact also in CSV format.

I also found some bugs in the firmware, the IR read was being saturated by the IR LED, so it was dropping gain to 2X, when the colour read needed 16x gain, so signals were very very low on my earlier nitrate test. So now gain is set independently as it should have been, and the signals are much higher compared to my earlier screenshots:

1782144662978.webp

Will run some tests again soon with food coloring, looks a bit more encouraging now.
 

Top 10 Trending Threads

Back
Top