close-circle
Close
0%
0%

Open source Arduino blood glucose meter shield

Open hardware and software blood glucose meter using electrochemical test strips

Similar projects worth following
close

Open source is not open access to the result, it is open access to where the result comes from.

Introduction

Diabetes is a serious disease which affects nearly 400 million people worldwide and is the 8th leading cause of death. Blood glucose meters play a very important role in managing diabetes as they provide the patient the ability to monitor their blood glucose levels from home and at any time of the day. The pharmacy provides a large number of blood glucose meters and accompanying test strips. Typically, the patients insert one of the disposable test strips into the meter, prick their finger, load a droplet of blood into the test strip, wait a few seconds and get an instant reading of the current blood glucose level.

Basic principle of operation

Usually three electrodes are printed into the test strips: a reference electrode, a counter electrode and a working electrode. A fixed voltage is applied and the resulting current after the blood is loaded is monitored. The current response is then related to the glucose concentration through calibration. Since test strips may vary from batch to batch, some models require the user to manually enter in a code found on the vial of test strips or on a chip that comes with the test strip. By entering the coding or chip into the glucose meter, the meter will be calibrated to that batch of test strips. One Touch, the brand of test strips we will primarily use, has standardized their test strips around a single code number, so that, once set, there is no need to further change the code in their older meters, and in some of their newer meters, there is no way to change the code. Figure 1 shows the One Touch Ultra test strip connections.

Figure 1, One Touch Ultra test strip connections

Typically the electrodes are coated such that an enzymatic chemical reaction occurs at the electrode surface and this reaction dictates the resulting current. The details of the electrochemistry can be quite complex. Since commercial strips are used, the details are somewhat unknown as the companies do not release detailed data about their particular test strips operation. Some devices apparently watch the current after a short initial transient (the current will level out to some degree) and then report the current after a fixed time. Another principle looks at the total amount of reaction which has occurred and thus integrates the current with respect to time to obtain the total amount of chemical reaction which has occurred. Our glucose meter will make two measurements to determinate which relates more strongly to the glucose level: one is the current after a fixed time and the other is the total integrated current.

License

This project is released under the MIT license.

fzz - 67.96 kB - 10/17/2016 at 09:49

download-circle
Download

Open source Arduino glucose meter shield Gerber.zip

Gerber files of the shield PCB, rev. 1

octet-stream - 168.18 kB - 07/25/2016 at 15:33

download-circle
Download

Adobe Portable Document Format - 160.37 kB - 05/31/2016 at 11:44

eye
Preview
download-circle
Download

View all 20 components

  • What it means to be a citizen scientist

    M. Bindhammer08/19/2016 at 17:21 4 comments

    I am a citizen scientist. A citizen scientist is in general an amateur scientist. Even I have an academic degree, I consider myself as an amateur scientist, because I quit my academic job a long time ago for a career in private industry.

    If you are a citizen scientist, you do not have an easy life. Professional scientists usually just smile at citizen scientists. Submitted articles to professional science magazines will be nearly 100% rejected. The editor will tell you, that your article is not suitable for publication in his/her magazine, that the results are limited in scope, without clear connection to the magazines topics and that it would not be suitable for their readership.

    A half year ago I had a vision of a niche Hackaday prize, the citizen scientist prize. I put it to the stack here: https://hackaday.io/page/1521-hackaday-science-prize-2016

    Fortunately the Hackaday folks assimilated the idea. The citizen scientist prize achieved in total 216 entries and 20 semifinalists including my project. But what I really want to say is, that citizen scientists need a strong platform like a magazine where they can publish their results without being discriminated because they are amateurs. There are already some intentions in this direction, for example the The Citizen Science Quarterly. Please leave a comment, if you have the same or another opinion!

  • Video!

    M. Bindhammer08/18/2016 at 16:31 1 comment

    Today I had a little bit time to make the required video for the finals. Check out the video below:

    I still need to work a lot on the coding (test strip code implementation, temperature compensation, error codes, pre-meal and post-meal flagging, under-dose detection, low/high glucose warning, storage etc.)

    I didn't add an OLED, buttons, RTC, temperature sensor or a SD card socket to the shield yet, because it will add costs, but future updates of the shield may include all or some of the mentioned things.

  • Glucose oxidase detection reagent

    M. Bindhammer07/25/2016 at 17:49 3 comments

    If we want to produce our own glucose test strips, we need glucose oxidase. I have still no clue where to buy glucose oxidase or if I will be able to produce it by myself (extracted from the fungus Aspergillus niger?), but I came up with a glucose oxidase detection reagent in the mean time. The idea is as following:

    Unfortunately I run out of test strips, so I need to buy more to pursue my idea of a glucose oxidase detection reagent.

  • Open source glucose meter code

    M. Bindhammer07/23/2016 at 11:48 1 comment

    // open source glucose meter code, version 1
    
    int strip_detect = 2;
    int current = 0;
    // measurement starts if transimpedance amp output voltage > threshold
    float threshold = 2.8; 
    
    #include <Wire.h>
    #include "RTClib.h"
    RTC_Millis RTC;
    
    void setup() {
      Serial.begin(9600);
      // set the RTC to the date & time this sketch was compiled
      RTC.begin(DateTime(__DATE__, __TIME__));
      pinMode(strip_detect, INPUT);
    }
    
    void loop() {
      while(1) {
        if(digitalRead(strip_detect) == 1) break;
      }
      Serial.println("APPLY BLOOD");
      float current_voltage;
      while(1) {
        current_voltage = analogRead(0) * (5.0 / 1023.0);
        if(current_voltage > threshold) break;
      }
      // count down timer
      for(int i = 5; i > 0; i--) {
        delay(1000);
        Serial.print(i);
        if(i > 1) Serial.print(", ");
        else Serial.println("");
      }
      // compute concentration
      current_voltage = analogRead(0) * (5.0 / 1023.0);
      float concentration = 495.6 * current_voltage - 1275.5;
      Serial.print(concentration);
      Serial.println(" mg/dL");
      display_time();
      while(1) {
        if(digitalRead(strip_detect) == 0) break;
      }
      delay(1000); //debounce
    }
    
    void display_time() {
      DateTime now = RTC.now();
      Serial.print(now.year(), DEC);
      Serial.print('-');
      Serial.print(now.month(), DEC);
      Serial.print('-');
      Serial.print(now.day(), DEC);
      Serial.print(' ');
      Serial.print(now.hour(), DEC);
      Serial.print(':');
      Serial.print(now.minute(), DEC);
      Serial.print(':');
      Serial.print(now.second(), DEC);
      Serial.println();
    }

  • Measurement series

    M. Bindhammer07/23/2016 at 10:06 0 comments

    Today I started a measurement series by preparing control solutions with different glucose concentration, measuring the concentrations with the commercial glucose meter and comparing the results with the measured transimpedance amp and op amp integrator output voltage of my DIY glucose meter. I used Excel scatter charts to apply linear regression.

    Test code:

    int current = 0;
    int integral = 1;
    float threshold = 2.8;
    
    void setup() {
      Serial.begin(9600);
      pinMode(6, OUTPUT);
    }
    
    void loop() {
      float current_voltage = analogRead(0) * (5.0 / 1023.0);
      float integral_voltage = analogRead(1) * (5.0 / 1023.0);
      if(current_voltage > threshold) {
        // reset integrator
        digitalWrite(6, HIGH); 
        delay(100);
        digitalWrite(6, LOW);
        //delay 5 seconds like the ONE TOUCH ULTRA 2
        delay(5000);
        current_voltage = analogRead(0) * (5.0 / 1023.0);
        integral_voltage = analogRead(1) * (5.0 / 1023.0);
        Serial.print("Current to voltage: ");
        Serial.println(current_voltage,5);
        Serial.print("Integral to voltage: ");
        Serial.println(integral_voltage,5);
        while(1);
      }
    }
    Scatter charts:

    As we can see the relation between the glucose concentration and the transimpedance amp output voltage is nearly linear. We can obtain following formula for computing the glucose concentration by the transimpedance amp output voltage:


  • Synthesizing the control solution

    M. Bindhammer07/16/2016 at 14:29 1 comment

    Today all necessary chemicals arrived, so I started to synthesize the ONE TOUCH ULTRA control solution. I used:

    • Deionized water
    • Polyvinylpyrrolidone
    • Sodium benzoate (min. 99%, Ph. Eur., BP, FCC, LM)
    • EDTA (disodium salt)
    • D(+)-Glucose (chemically pure)
    • Indigo carmine (I was not able to purchase Amaranth)

    Firstly I prepared a solution of 91ml deionized water, 8g polyvinylpyrrolidone, 0.5g sodium benzoate and 0.5g EDTA (disodium salt). As the EDTA (disodium salt) did not dissolve completely under room temperature I heated the solution up to approx. 50°C and stirred it frequently.

    After the EDTA was completely dissolved the solution was allowed to cool down to room temperature again. After that one pinch of indigo carmine was added. The solution had now a volume of exactly 100ml. Then I dissolved 0.12g glucose and expected that the glucose meter would show approx. 120mg/dl, which wasn't the case. The glucose meter displayed: WARNING. Below 20 mg/dL. LOW GLUCOSE.

    I added 0.38g glucose more to the solution. Now I got a proper reading: 135mg/dl, same as the original control solution.

    Conclusion: The glucose meter does not read the real glucose concentration of the control solution. In the end it doesn't matter. I can prepare different control solutions by adding small amounts of glucose, compare the result of the commercial glucose meter with the results of my home brew one and find a mathematical dependence between the results.

    Summarized: A control solution similar to the ONE TOUCH ULTRA one can be prepared by dissolving 8g polyvinylpyrrolidone, 0.5g sodium benzoate, 0.5g EDTA (disodium salt), 0.5g D(+)-Glucose and additionally a pinch of indigo carmine in 91ml deionized water.

  • Blood is thicker than water

    M. Bindhammer06/12/2016 at 12:51 5 comments

    Today I tested the commercial ONETOUCH ULTRA 2 blood glucose meter. I prepared a solution of 100mg D-(+)-Glucose/dL distilled water to test the meter. But the meter didn't recognize the aqueous glucose solution. Always the same ERROR 4 occurred:

    Obviously the electrochemical process does not start with a pure aqueous glucose solution. I tried to prepare some kind of artificial blood by adding 1g potassium ferricyanide to the glucose solution. Now I got readings, but much lower than the actual glucose concentration of the solution:

    Update:

    According to the suggestion of Ryan Bailey I prepared a solution of 0.9g NaCl and 100mg glucose per 100ml distilled water. Result again ERROR 4:

    I think the reason why potassium ferricyanide worked in the test solution is because potassium ferricyanide is used in many amperometric biosensors as an electron transfer agent replacing an enzyme's natural electron transfer agent such as oxygen as with the enzyme glucose oxidase. Potassium ferricyanide is also used as a blood replacement and catalyst for the chemiluminescence demonstration of luminol.

    Next step: I will try to analyze the glucometer calibration solution.

    The ONE TOUCH ULTRA control solution has a blood-red color. No ingredients are mentioned on the bottle. On the instruction leaflet is mentioned that the control solution consists of glucose in water (about 0.11%) with buffers and stabilizers, a viscosity adjusting agent, a preservative, and a red dye.

    The glucose meter shows a concentration of 135mg glucose/dl.


  • Reference blood glucose meter

    M. Bindhammer06/08/2016 at 16:08 0 comments

    I purchased a ONETOUCH ULTRA 2 blood glucose meter for reference measurements to calibrate the Arduino blood glucose meter.

  • PCB design

    M. Bindhammer06/05/2016 at 11:55 0 comments

    The shield has an Arduino Uno form factor. I changed the MAX4575, which resets the op amp integrator by shortening the capacitor by the quad bilateral switch CD4066, because this chip is much cheaper. Initial PCB layout looks as follows:

    Checking if the test strip connector footprint I have drawn matches...

    Blank PCB:

    Populated board, ready for testing:

  • Basic glucose meter schematic

    M. Bindhammer06/02/2016 at 19:06 7 comments

    Here is the first draft of the glucose meter schematic:

    Mathematically interesting is only the op amp integrator (IC1D). The formula for determining voltage output for the integrator is as follows:

    As the non-inverting input is not connected to GND (VR = 0V) but to VR = +2.5V:

    Updated schematic:

    I changed the MAX4575, which resets the op amp integrator by shortening the capacitor by the quad bilateral switch CD4066 (IC2), because this chip is much cheaper. Because integration involves a known start time and end time, a reset circuit must be included to establish the start time before each integration time period. The integration end time occurs when the measurement is read. The CD4066 simply short-circuits the capacitor C1 if digital output D6 goes HIGH. The not used control inputs are tied to ground. Unused CMOS input pins must never be unconnected, because they tend to float towards the dangerous region which is in the middle between VDD and GND.

    The low-dropout regulator TPS76925DBVT (U1) provides a fixed output voltage of 2.5V.

    The output voltage of the TPS76901 adjustable regulator (U2) is programmed using an external resistor divider. The output voltage is calculated using:

    Where: Vref = 1.224V typ (the internal reference voltage).

    As the applied voltage across two of the test strip electrodes should be about 400 mV, I chose R3 = 130k and R4 = 180k which results in a TPS76901 output voltage of 2.108V.

    As mentioned above IC1D is configured as an op amp integrator. Currently I don't use the op amp integrator because the op amp integrator output voltage is not directly or indirectly proportional to the glucose concentration when using ONETOUCH test strips. This might be the case when using other test strips.

    IC1B is configured as a transimpedance amplifier, where basically

    The feedback capacitor C8 is required to improve stability.

    IC1A and IC1C are configured as unity gain buffer amplifiers. In this configuration, the entire output voltage is fed back into the inverting input. The difference between the non-inverting input voltage and the inverting input voltage is amplified by the op-amp. This connection forces the op-amp to adjust its output voltage simply equal to the input voltage:

    For IC1A this is only the case if an electrolytic bridge (blood) between the reference and counter electrode is applied.

    As long as the strip is not inserted, input pin D2 is LOW. If a test strip is inserted, the two strip detect pins on the strip connector getting connected and D2 goes HIGH.

    C4 and C5 are decoupling capacitors.

View all 11 project logs

View all 3 instructions

Enjoy this project?

Share

Discussions

Clovis Sobrinho wrote 10/23/2017 at 12:11 point

Bindhammer, I have a question: How can I get a copy to buy? more specifically import? I am an electrical engineering student and I greatly enjoyed his creation.

  Are you sure? yes | no

Mitchell Monahan wrote 07/06/2017 at 05:26 point

Hello, I'm thinking of trying to develop a custom glucometer, but the strips that I have already are for the Contour Next meter, not the OneTouch meter, and they use their own test strip socket/contacts. Is there a way to get sockets for this? Here's the best picture I found of the strip, if it helps: 

(edit: apparently hackaday likes to embed huge images on here. who knew.)

  Are you sure? yes | no

Infamoushedayati wrote 06/22/2017 at 06:39 point

hi. I try to build a glucometere and use it via android phones. And i use one touch ultra strip. But i have big problem. Electorde of the strip seems to be insulator and i cant get a voltage from it. Dose the strip connector use a specific conductance?? Please help me it is very urgent. Thank you

  Are you sure? yes | no

getaneh wrote 05/08/2017 at 11:13 point

can any one please help me,on project of blood glucose testing using arduino uno if you have the  simultation on proteus and arduino source code send me on email-getshman397@gmail.com for learning and understanding purpose

  Are you sure? yes | no

Din Muhammad wrote 07/07/2017 at 05:46 point

have u get the details of this project ?? 

  Are you sure? yes | no

bilalugurlu93 wrote 04/30/2017 at 15:31 point

how can ı get blood glucose meter card from you ? as soon as necessary , please. Thanks.

  Are you sure? yes | no

Rowan M wrote 10/17/2016 at 09:34 point

Dear M. Bindhammer,

I'd like to say thanks for the effort you have put in to create the glucometer shield. I am planning on using this as part of my university project with your permission? I am aiming to write a companion "health" app for a smartphone.

I have a couple of questions, I have spoken with the technicians at my university to get the PCB printed, however upon us viewing the Gerber files there seem to be few partly unrouted tracks. (unless we are doing something incorrect) Do you think it would be possible to get hold of the original artwork? 

Secondly, would you be able to pass on the contact details of someone at Ample or Switchtech that you were in contact with? I have tried fruitlessly to get in contact with them so far..

Thanks :)

  Are you sure? yes | no

M. Bindhammer wrote 10/17/2016 at 09:56 point

Hi Rowan,

I have added the original artwork under files. I do not think there are some unrouted tracks, because I have been using this Gerber files to manufacture the PCBs. Please note, the PCB has two layers.

Regarding switchtech I was in contact with Robert Wang (robert at switchtech.com.tw) to order samples of the connector.

Good look,

Markus

  Are you sure? yes | no

Rowan M wrote 10/17/2016 at 17:55 point

Hi Markus,

Thank you for uploading the original artwork, after re-generating the gerber files all the tracks are now there.

Thanks for the contact details as well :)

Rowan

  Are you sure? yes | no

Nicolás wrote 09/09/2016 at 15:24 point

Hi, M. Bindhammer,

First of all, congratulations for this and your other projects. I'm particularly interested in this one, as I'm developing something similar as a project for college (I study electronics and I'm from Argentina).

I'm having a really hard time getting the strip connectors. From the providers you've recommended, one of those (Ample Technologies) never responded, and the other one (Switchtech) says they can send me 10 samples but they need a courier account, and FedEx is charging me USD 140 for the shipping, which is absolutely crazy.

Are you aware of any other company where I can get the strip connectors? I'm really worried about this.
Thanks in advance!

  Are you sure? yes | no

M. Bindhammer wrote 09/09/2016 at 15:32 point

Hi Nicolas,

Actually they provide 50 samples free of charge, but you have to pay for the shipment. Maybe you can order them through your college. They should have a carrier account. 

Good luck!

  Are you sure? yes | no

[deleted]

[this comment has been deleted]

M. Bindhammer wrote 08/26/2016 at 17:25 point

Hi,

How it comes you spend already close to $100 in getting the connectors? I provide all information here open source, but that does not mean I provide all materials. Or support anybody to get the materials.

  Are you sure? yes | no

erico4boys wrote 08/21/2016 at 12:09 point

Dear M. Bindhammer

I will like to use this medium to say a big thanks for the open source arduino glucose meter project you published. I need your special help in understanding the circuit schematic, such as explaining the operations and uses of the OpAmp involved in the schematic. I will also be grateful if you can explain how the reference electrode, counter electrode and working electrode operates.

All in all, I will appreciate if you can break down the explanation of the schematic as simple as possible as I am new to this field.
Thanks for your anticipated responce.
Best regards

  Are you sure? yes | no

M. Bindhammer wrote 08/21/2016 at 14:41 point

I added more details on the project log 'Basic glucose meter schematic' (https://hackaday.io/project/11719-open-source-arduino-blood-glucose-meter-shield/log/39412-basic-glucose-meter-schematic). I hope it is helpful. 

  Are you sure? yes | no

Brian Howell wrote 07/19/2016 at 20:37 point

I too thought about attempting this same project … Good on ya Bindhammer! 

Are there plans to reverse engineer the strips themselves? I use a OneTouch Ultra Mini myself and I find the meter to be the cheap component while the strips are expensive. 

  Are you sure? yes | no

M. Bindhammer wrote 07/20/2016 at 06:13 point

Hi Brian,

The strips are expensive because you're forced to use them at least 3 times a day.

I have some ideas to reverse engineer the strips, using thin PCBs.

  Are you sure? yes | no

Tom Meehan wrote 07/19/2016 at 04:09 point

Congratulations for winning the Citizen Scientist round, great work and keep it up!

  Are you sure? yes | no

Pusalieth wrote 07/15/2016 at 23:10 point

I had this exact same idea a while back, but just didn't get around to making it. Kudos man! I hope you get it working. If you need help just let me know. Things like this in the medical industry needs to change.

  Are you sure? yes | no

M. Bindhammer wrote 07/16/2016 at 14:40 point

Thanks, Pusalieth! I am confident it will work!

  Are you sure? yes | no

Jack Orman wrote 07/12/2016 at 14:57 point

The OneTouch Ultra Control solution claims to have:

91% Deionized water
 8% Polyvinylpyrrolidone
>1% Amaranth
>1% Sodium benzoate
>1% Disodium EDTA
>1% Glucose

This information is obviously incorrect as it adds up to more than 100%. The >1% numbers should have been <1%.

Amaranth is C.I. Food Dye Red 9; PVP is a thickener and stabilizer while the benzoate and edta are preservatives.

  Are you sure? yes | no

M. Bindhammer wrote 07/12/2016 at 19:54 point

Thanks, Jack. This is really useful, I might be able to synthesize the control solution. It seems it depends very much on the thickener. 

  Are you sure? yes | no

[deleted]

[this comment has been deleted]

M. Bindhammer wrote 07/12/2016 at 19:55 point

What are you talking about?

  Are you sure? yes | no

M. Bindhammer wrote 07/11/2016 at 06:53 point

Thanks, that would be helpful. I bought a calibration liquid bottle for the ONE TOUCH, but there are no ingredients mentioned.

  Are you sure? yes | no

connor findlay wrote 07/11/2016 at 06:38 point

I can read the back of the calibration liquid bottle for you at work tomorrow, if that's any help. We have Roche meters rather than ONE TOUCH ones, but I'm still willing to get a list of things in the test solution.

  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