Simplifying Caddisfly

Making better use of the phone

We have significantly changed the architecture of Caddisfly. This post tries to explain these why these decisions were made and how it impacts the product. Caddisfly continues to be in development, though we now have a very good prototype for a Fluoride test.

At its heart, Caddisfly is a colorimeter. Red, green and blue LEDs flash and a photodiode measures the intensity of the the light as it passes through sample mixed with reagent. The microcontroller then matches this RGB value against a set of calibrated values and then sends the result to a phone via bluetooth. This process is illustrated below.


This is a very simplified process of what goes on inside Caddisfly. There are several challenges that need to be addressed here.

Firstly bluetooth is fickle at best. There are good chances that future users will run into trouble trying to get data off Caddisfly and onto their phones. This would have undermined one of our key promises – real time data aggregation.

Secondly, we could not control all factors involved in the circuitry, components and casing to give us consistent readings. This simply meant that we would have to settle for calibrating each device individually rather than one calibration for all devices.

Thirdly, adding new tests was going to be difficult – involving hardware changes and firmware updates. As of now there was a one way communication between device and phone, would we have to add the extra complication of firmware updates from the phone to the device?

Most importantly, we had to create dies, moulds, PCBs and electronic assemblies in order to build and ship units. That meant goodbye to our inexpensive, rapid iterations. We would have to come up with a design and stick with it. But without the investment up front, we just would not get traction.

Let’s look at what we had at this point: A colorimeter, a cartridge system, and ideas for a dispensing mechanism. As a concept this worked very well – it was just that there were several practical difficulties in execution.

At some point in October 2013, we realized that we were overlooking something obvious. All smartphones come armed with very good cameras, and a camera is a very sensitive color sensor. Designing the rest was simplicity itself. The Indian market is aflood with inexpensive phone back cases – usually made for each model. It was a fairly simple task to a mount our cartridge to the back on the phone, positioned over the camera using these back cases and using the camera and flash to take pictures. We rewrote the android app to perform colorimetric analyses from these pictures.


What happened was that we were able to make and test tens of kits. We could also rapidly iterate rapidly since the parts were fairly simple and inexpensive to fabricate. In fact our first few prototypes were made almost entirely of PVC plumbing pipes and fittings.

We have now eliminated massive complexity from the product. No bluetooth and no electronics. However there were a few areas that remained to be addressed.

Remember the dispensing mechanism that we glibly passed off a few paragraphs ago with “ideas for a dispensing mechanism”? Well we now had to address it, and that brought its own challenges. However, not having to worry about hardware and electronics meant that we could give it more attention.

Phone cameras and flashes, we have found, are hugely variable. There are some models on which Caddisfly stubbornly refuses to work. On others, colors are just awful. We may have to come up with a whitelist of phones that Caddisfly works on, and perhaps a shorter list of recommended phones. Also, because of camera variability, each phone will have to be calibrated individually. We are working on how to ease, simplify or remove this step.

Which brings us to where we are now. We have a fully functional prototype for the Fluoride test, which has been lab and field tested. There’s still some work to be done to make the test more accurate and repeatable. As mentioned earlier, we have to work on simplifying calibration.