Chocometer is an open source near infrared sensor aiming glucose measurements without pain.

Similar projects worth following
Using near infrared selected wavelength, low-noise electronics and light absorption as work principle, a compact, painless glucose meter will be developed (I expect!).
The design will be totally open source and I will try to do this keeping the costs low, to reach everone that needs daily glucose monitoring.

Diabetes mellitus is a global problem, in 2013, 382 million people have diabetes worldwide, most with more than 45 years, and global economic cost in 2014 was estimated to be $612 billion USD. The future projections are not encouraging.

All forms of diabetes increase the risk of long-term complications (cardiovascular disease, blindness, chronic kidney desease, etc.), however, the complications of diabetes are far less common and less severe in people who have well-managed blood sugar levels.

Today, the diary glucose level check can be done at home, nervertheless, its need a little drop of blood and a chemical reaction strip. So, this check becomes painful and expensive (each strip could cost 0.33 USD). These drawbacks decrease the patient adhesion to treatment.

I propose a glucose meter design based on light absorbance of glucose that already been extensively studied and sucessful applied in laboratory scale.

However, until now, the comercial (FDA approved) glucose meters still using blood samples or cost hundred, thousands of dollars.

Two challenges are found in construction of this type of device: calibration data and ultra-low-noise absorbance measurements. Raw data is not a problem to me, as a diabetic type 1, I have more than 4 measurements per day, which I can trust and use.

The big challenge is therefore how to build a precise sensor but keeping it small and cheap. I think that using very large integration time and simple InGaAs PIN diode we will be able to reach the necessary precision.

Complementary wavelenghts (850 and 940nm) are a good source of information about water and blood quantity.

Since traditional capacitive transimpedance amplifier suffer from saturation and integration time problems, another ADC aproach will be used. With a current controlled oscillator (CCO) and a digital counter, the integration time will be limited only by digital counter output register, and we will far from expensive high resoluton ADCs.

The general design is presented below:

Initially, the couple tlv3201 (comparator) and sn74lv8154 (counter) was chosen to provide a 32bit counter for less than 1$.

I did not find one good CCO IC yet. So, I will try to make my very own oscillator

The op-amp (AD8616) and transistors(ALD1106 and 1107) will cost less than 2$ each one. And the funcionallity was confirmed by SPICE simulations.

It's time to make PCBs!!!!

  • 2 × LED EOLD-1550-525 5mW 1550nm LED
  • 1 × Photodiode PIN 35PD1M-TO Opto and Fiber Optic Semiconductors and ICs / Photodiodes 1600nm
  • 2 × LED 940nm
  • 2 × LED 850nm
  • 1 × Arduino DUE ARM development board
  • 1 × TLV3201 40ns, micro-Power, Rail-to-Rail Input, Single-Channel Comparator with Push-Pull Outputs
  • 1 × SN74LV8154 Dual 16-Bit Binary Counters with 3-State Output Registers
  • 1 × AD8616 Amplifier and Linear ICs / Operational Amplifiers

View all 12 components

  • walking...

    marcelclaro06/07/2015 at 21:32 0 comments

    First, Thanks all for the support and the blog mention.

    I was out of home in the last weeks, and I will be busy for the next two weeks also. So, I had a little progress and few opportunities to answer the comments (the bad and good ones).

    The hardware still running, but, since I'm out of home most of time, I did few measuments. Because of that, I think it will be important to make the portable hardware soon as possible. However, the Lightblue Blue still at customs.

    Within the small data that I already have, I tried some regression algorithms, one of the best is the Self-organizing map. I will study it and try to use this algorithm in the next weeks to do some previsions and try to see if it works. As a self-leaning algorithm the previsions would become better as the time advances. Until now I used orange to do the data visualization and regressions.

    I plan to do some changes in the next hardware versions. It will be portable and as I'm not totally happy with the noise level, I will try to improve it. First, I will try to put the photodiode and the ADC in the same board without cables, and with a metalic shield.

    I also brought some laser diodes. While the LED has emissions with a width of 150nm, the laser diode has only 5-10nm. I brought 650, 808 and 1610nm laser diodes. With a narrow emission, I think it will be more selective to the glucose (and 1610nm is better than 1550nm in theory)

  • Data mining

    marcelclaro05/23/2015 at 20:01 0 comments

    Today I start to colect the raw data with 5s integration time.

    In the first columns I read the ambient+LED emission without any absorber, next with absorber (the earlobe), next the calculated transmission and finally the glucose level by a Optium Xceed glucometer.

    I did 5 measurements in 5 differentes earlobe position (I always need to take of from the earlobe to measure the values without earlobe).

    I plan to do it for the next days while I design a definitive and portable version of this hardware. As I win a LightBlue Bean, is a good idea to use it to get the data from my phone.

  • Checking pulse oscillations

    marcelclaro05/23/2015 at 19:44 0 comments

    Here is a check for pulse detection in 940nm when a put the Diode+LED through finger tip.

    As you can see it's work fine!

  • Advances

    marcelclaro05/17/2015 at 19:25 0 comments

    I did some test with the InGaAs photodiode and 940nm LED.

    Due to large area (and capacitance) of InGaAs diode, I had some instabilities in the oscillator. I corrected part of the problem adding capacitors to voltage sources and voltage reference. However, sometimes few seconds are necessary before the circuit starts to oscillate right. The next PCB version will correct this, I think... by adding more capacitance, individual voltage regulators, etc.

    Here I show some measurements with ambient light only (The flourencent lamp have a very very low 800-1700nm emission) varying light position, facing or not facing to the lamp.

    When I turn on the 940nm LED, with 50mA (~50mW) the ADC output goes to ~123000. With earlobe between LED and photodiode the output goes to ~16000. So, a earlobe absorbs 92% of light with 940nm.

    The conclusions:

    - The ambient/background plus dark current is very low in comparison to the work conditions.

    - The circuit is very sensitive and could be better using different settings (smaller 3.3-vref, bigger integration time).

    - The ADC max value is enourmous (max output = 4 bi) and, with integration time of 1 sec, I used only a small part (150k) of its maximum, so, I can use integration time of days!! I think it will be enough to get the necessary precision.

    - The earlobe absorbs 92% of 940 nm light.

  • 3D printed parts (2)

    marcelclaro04/27/2015 at 02:07 0 comments

    I finally printed the LEDs and diode support, and it worked fine.

    I will solder this and try to extract some data in the next days if I can (some busy days are comming).

  • Custom ADC ready!

    marcelclaro04/16/2015 at 02:51 0 comments

    The PCB from OSHPark arrived some days ago and I finished the solder. I used a conventional solder iron, so it takes some time! :)

    I did some tests and the electronics works fine! I will post more details in the next few days.

    But, bad luck! The x-axis stepper motor drive from the 3D printer (I'm using a printrboard) bugged few minutes before the first print, so, I need to wait a replacement from ebay. A RAMPS 1.4 board with extra Pololu.

    Since the reproductibility of measurement is very important, I will wait for a proper diode and led support for the real tests

  • 3D printed parts

    marcelclaro04/04/2015 at 07:45 0 comments

    1st design of LEDs and diode support, a clip for earlobe or thumb:

    The space was overstimed, so I'm able to put only 4 LEDs. Problaby I will choose 2 of 1550nm, 1 of 940nm and 1 of 850nm.

    I'm just waiting the power source of my new Prusa to print this.

View all 7 project logs

Enjoy this project?



kushal wrote 01/24/2016 at 06:23 point

Even I am working on a similar project(in initial stage) . Thanks for sharing useful info.

  Are you sure? yes | no

Ada wrote 12/01/2015 at 02:41 point

That's such a nice project,but this bothers me a little bit.By what means can you get the training datasets?

  Are you sure? yes | no

bijtaj wrote 05/27/2015 at 18:55 point

Have you looked into reflectance-based chocometers?

  Are you sure? yes | no

IT-Wizard wrote 05/26/2015 at 17:25 point

Your goal is great, your chosen path also. 

When it will work, try a crowfunding campain to spread it. Lots of people are in need of this kind of device.

Just a tech question : would it be an optional external connection for smart phone ?

  Are you sure? yes | no

Peter Walsh wrote 05/25/2015 at 17:08 point

Congrats for getting featured on the main blog.

Thinking about your project got me wondering if applying some type of balm (oil, hand lotion, moisturizer) to the skin on the earlobe would make it more transparent. Moisturizing creams supposedly cause the skin to absorb moisture, which might reduce opacity caused by dried skin.

Any thoughts?

  Are you sure? yes | no

marcelclaro wrote 05/25/2015 at 22:35 point

Thanks Peter, actually the water is the problem. It is the problem every time you think in infrared 1um, 5-8um, beyond 14um, water absorbs ever. I already think about plasmons amplification, but it is not easy to do it at home at all. And nanoparticles could be toxic!

  Are you sure? yes | no

Peter Walsh wrote 04/30/2015 at 18:13 point

Congrats on winning the HAD interim prize!

  Are you sure? yes | no

marcelclaro wrote 04/30/2015 at 18:22 point

Thank you Peter!

Thanks to the Judges!

  Are you sure? yes | no

Sean Hodgins wrote 04/15/2015 at 19:48 point

Hey cool, I was actually working on a similar project, but have not advanced very far. I do however have a built working(in a sense, no determining glucose levels yet) prototype. Runs on a Atmega328p.

There is one factor I didn't see you mention. The amount of skin will vary the attenuation of the light skewing the volume of blood present between the sensor the and LEDs. More skin less blood, vice versa. You need to know the volume to get the mmol/l.

I found some research papers(Ill try to dig them up) on using a green LED to determine how much skin is in the way.

My sensor has 8 LEDs, 2xGreen(571nm), 1xRed(631nm), 1xIR(940nm), and 2xNIR(1550nm).

I was having a lot of difficulties getting stable results and I really think its clever software that is needed for something like this. Learning algorithms specifically. I may be moving away from this idea and onto a different technique altogether though. I didn't want to hijack your project, anyone working on this stuff is good news to me(Type 1 D here). Wanted to give some input and show a similar design.

  Are you sure? yes | no

marcelclaro wrote 04/16/2015 at 00:01 point

Cool!! Maybe we can share some data and experiences if you wanna!

I mentioned briefly about the volume of blood and water, which I think is more important than tissue absorption. I plan to measure this by 850 and 940nm wavelength, like an oximeter does. I read about another project using red and green led also, but I'm not sure if this wavelenghts really matter. But, it's only a guess. As you say, only a statistical or a machine learning algorithm could solve this.

Maybe the instabilities of your results cames from signal/to noise ratio, which in this case is really low as the papers says, what type of ADC you use?

Formally, I work with Long Wavelength Infrared (LWIR), wherein the background and signal are comparable or worse and if you not use a lock-in or another trick you will see nothing. Because of that, I will try very long integration time first and lock-in techniques after.

  Are you sure? yes | no

Peter Walsh wrote 04/16/2015 at 03:25 point

Machine learning is the wrong approach. It's fine for choosing the parameters of an existing model, but from the text here I get the impression that you don't have an established model yet.

If you take lots of data and can't easily correlate it, you could put it up on Kaggle ( and people will compete for "best algorithm". Those people are really sharp, and you'd probably get a lot of response for something like this.

It occurs to me that you can detect a person's heart rate by noticing the slight change in color of the skin in videos. If you use a similar method and detect the heart rate in your system, you can correlate the changes in glucose reading with the periodic changes in color coming from the heart pulses - there may be a statistical inference you can make from that that helps eliminate noise.

At the very least, if you go the Kaggle route be sure to put up all the information you have. If there is a correlation, people would pick up on it.

  Are you sure? yes | no

Sean Hodgins wrote 04/16/2015 at 15:03 point

The way a pulse oximeter works is by looking at the whole system blood and all subtracting the "stagnant" things like skin, fluids, and anything else that will absorb some light. The way this is done is by looking at the pulsatile waveform that is created from the pressure change in the blood. Essentially what you said about the change in light on a camera, this is already factored into this method. Heart rate is a byproduct of finding oxygen levels. Oxygen levels are a byproduct of finding glucose levels.

I somewhat disagree on what you said about Machine learning.  Machine learning is meant to correlate data or classify a set of inputs. There are already methods to finding blood glucose levels accurately in the world. You can run the new system along side a continuous glucose monitor and get literally days worth of training data for an SVM or alike. You have your inputs and outputs laid out for you.

Kaggle is a good idea if you wanted to go that route. 

@marcelclaro - I am using a op-amp to a MCP3421. Probably not the best method, but I was going for some funding so I wanted to get a device together. My initial proposal to this project was to create something that did not give specific "values" of glucose levels, but more of a guideline for where the levels are. For example there are cases where you feel as though you are a hypo or hyper, but they are just false-hypo/hypers. Now say I'm riding my bike and I get my heart rate up, maybe get some adrenalin pumping, it can feel the same as a hypo - this can lead to a little anxiety about going low which can further give the effect of feeling low. So I have to stop my bike, get off and check my BG. Normally I'm not low and its just my brain thinking the symptoms are of me being low. I've essentially just wasted a test strip which is ~$0.50. Instead of doing this the devices could classify areas of Low, in Range, and High. I could check while still riding my bike. If the device says I'm in range, then I can relax and keep riding. If it says Low, then I can stop, check the actual value and see how much glucose I should take. Same goes for driving.

This doesn't just benefit active people either. The most beneficial reason is pretty much mentioned in your project. It could stop people from having to test in random situations. Sure they would still have to check before/after meals as usual, but it could eliminate "unnecessary" checks when you feel weird. Those cost savings would still be huge. Test strips, for the meantime unfortunately, are still the most accurate way of testing. This is due to the chemistry of how they work. 

P.S. I'm also working on some reverse engineering on continuous glucose monitors/sensors. The Dexcom system to be precise. 

  Are you sure? yes | no

marcelclaro wrote 04/16/2015 at 16:33 point

I didn't know Kaggle, thank you for the advice.

@Sean Hodgins - I think MCP3421 is a good ADC but if you used only a op-amp and resistor for amplification, the real integration time was short. A Capacitive Transimpedance amplifiers could be more suitable for this application. The IVC102 ( has the op-amp, transistors and capacitors in the same packcage, reducing the noise. I had good experiences with this component.

I agree with you, only a guideline is a huge advance. Maybe the requirement of precision delayed the FDA approval of bloodless devices (maybe a lobby, who can tell?). I'm very sensitive to hypos, so, for me, the most important is the night glucose level control. I have common overshoots at night or at early morning and it is really hard to predict, its depends on exercises, hormones and food consumption during the the day.

I guess is really hard to do reverse engineering on these continuos glucose monitors, maybe the most important components are ASICs not common ones. Personally, I don't like them because the attached sensor cause a extra pain and is annoying during exercises (and sex).

  Are you sure? yes | no

Sean Hodgins wrote 04/16/2015 at 17:14 point

Oh for me, I would love to use a CGM. Costs don't allow me to at the moment. I have taken apart one of Dexcoms $700 transmitters that only last 6-8 months. It wasn't easy being completely encased in epoxy, a couple components went with it. Its just a TI CC2511. The sensors just measures current of an anode/cathode pair wire in the interstitial fluid. The rate of reduction is related to the amount of glucose in the fluid. That is why the sensors only last about 7 days, the reduction process stops working. Also with higher BG the sensors don't last as long. I want to make my own open source transmitter that would cost magnitudes less than theirs and have replaceable batteries, instead of someone having to pay ~$700 twice a year because their coin cell batteries ran out...

Have you seen this?

Or how about a closed loop system using a raspberry pi:

Both are amazing projects. I'm developing some boards for the xDrip project to make it more accessible to people with less "maker" skills.

  Are you sure? yes | no

marcelclaro wrote 04/17/2015 at 16:06 point

Ow! Cool projects!

It's unbelievable that they make money by this way! Judging by the Dexcom stocks price, they will continue doing this with support for a long time...

  Are you sure? yes | no

bijtaj wrote 05/27/2015 at 18:53 point

"I read about another project using red and green led also" which project is that? I'd like to know...

  Are you sure? yes | no

Peter Walsh wrote 04/01/2015 at 21:55 point

I attended a lecture in December where the developers created an ear sensor for measuring body information. I *believe* their blood sensor was looking at the ear canal and not the eardrum.

They were able to get pulse rate and pulse-ox directly. Then they noticed that their microphone could hear the heartbeat, and the difference in time of arrival of the sound versus the vascular pulse measured a ballistocardiogram.

Just thought I'd mention all this. If you have some spare brain power, you might want to look into measuring other things using LED light.

The lecture is below, the interesting bits start at about 11:00 into the video.

Also, if you hit a problem and want to talk to someone, I'll bet that if you asked Charlie Sodini (MIT researcher, lecturer from the video), he could put you in touch with researchers who have experience with ear sensor designs.

Just some info for your project, hope you find it useful.

  Are you sure? yes | no

marcelclaro wrote 04/05/2015 at 22:36 point

Thanks Peter, It's a nice Lecture, very useful. I already seen some lectures from They use only mid-infrared, but it is the same philosophy

  Are you sure? yes | no

Peter Walsh wrote 03/26/2015 at 17:28 point

I've often thought that glucose monitoring could be effectively done using this method.

As a suggestion, if you can effectively monitor glucose, consider building/exploring a sensor into an earbud. You might get more consistent results from the blood supply in the eardrum than on a patch of skin.

  Are you sure? yes | no

marcelclaro wrote 03/26/2015 at 20:07 point

Awesome idea! I don't know if the eardrum is thick or vascularized enough but I will investigate this method for sure, I already seen some experiments based on scattering, and this is an answer to my concerns about aesthetic. Earbuds are better than a weird thing in the earlobe

  Are you sure? yes | no

O. Alan Jones wrote 03/12/2015 at 06:42 point

This is an awesome project! I look forward to seeing your project take shape.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates