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

*** UPDATE ***

Now that glucose oxidase is available from bakeries and wineries, an open-source glucose test strip has become possible. Here are the first two experiments I conducted with glucose oxidase:

The working electrode, counter electrode, and reference electrode of the One Touch Ultra test strips consist of conductive black ink, presumably a binder, and graphite. The carrier material consists of acrylonitrile-butadiene-styrene.

Such test strips could easily be produced using a laser-cut stencil. Such stencils are often used to apply solder paste when assembling PCBs. 1:1 representation of the electrodes on the test strip:

Introduction

Such test strips could easily be produced using a laser-cut stencil. Such stencils are often used to apply solder paste when assembling circuit boards. 1:1 representation of the electrodes on the test strip:

Diabetes is a serious disease that 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 with 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 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 that has occurred and thus integrates the current with respect to time to obtain the total amount of chemical reaction that has occurred. Our glucose meter will make two measurements to determine 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.

x-zip-compressed - 168.60 kB - 12/25/2020 at 11:59

Download

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

Download

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

Preview
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 1 comment

    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 6 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 8 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

Complements Home wrote 02/10/2024 at 22:38 point

cccccc

  Are you sure? yes | no

jhandry1397 wrote 11/29/2023 at 16:31 point

Hi, alguien sabe donde se consigue el codigo o la shield

  Are you sure? yes | no

joshuakoshy wrote 11/06/2023 at 16:32 point

Can you please share the code?

  Are you sure? yes | no

01011010 wrote 03/22/2023 at 02:39 point

can i get the code !
zack.hj01@gmail.com

  Are you sure? yes | no

AzazelFallen1 wrote 09/09/2022 at 06:02 point

Can u share the code 🥺 engr.mhamzatahir@outlook.com

  Are you sure? yes | no

ettop_post wrote 08/19/2022 at 17:58 point

Hello . can you send me sample code this project to my email ? 

ettop_post@yahoo.com

  Are you sure? yes | no

shuvraprof wrote 04/18/2022 at 15:05 point

REQUIRED Open source Arduino blood glucose meter shield AS EARLY AS POSSIBLE

  Are you sure? yes | no

Aaron G. wrote 03/25/2021 at 20:36 point

Hello, I am interested in acquiring a plate to work with it and use it in my final degree project. my email is: aarongalvez@correo.ugr.es

  Are you sure? yes | no

Peabody1929 wrote 01/07/2021 at 18:21 point

The test strips are the expensive part of a glucose measuring system.  Commercial products use the "Razor, Razor Blade" value proposition--give away the razor and make money on selling blades.  Any new product that requires finger sticks and test strips does not meet the consumer marketing success proposition:  "Fulfill unmet customer needs at a reasonable price"

  Are you sure? yes | no

M. Bindhammer wrote 01/07/2021 at 19:15 point

All true, but I'm not selling a commercial glucose meter but an Arduino shield that you can use to learn how a glucose meter works, that you can integrate into your own projects, write your own programs, and experiment.

  Are you sure? yes | no

jhandry1397 wrote 11/29/2023 at 16:31 point

Hi, alguien sabe donde se consigue el codigo o la shield

  Are you sure? yes | no

DeedleMan wrote 10/15/2020 at 05:04 point

I bet that glucometers using strips is obsolete. My choice is accu check mobile. That is the most handy device nowadays. But it has one problem: its size. It is too big though. I have a dream about principally new type of glucometer. Look at the lancet accu check fastclix with changable drum for 6 needls. Just imagine that a glucometer is integrated in such lancet wich makes tests using needls only! One needle - one test! I'm not scintist, and that is why I'm interesting whether it is possible or not? I appriciate your opinion and thank you for your job! 

  Are you sure? yes | no

Dheey wrote 11/16/2020 at 01:23 point

This Idea is really impressing. I love your reasoning. I feel this idea is possible, It's implementable

  Are you sure? yes | no

bow wrote 01/27/2020 at 13:37 point

hello M.bindhammer

I would like to ask if the code you are using is also an open source, if it is where can I get it?

  Are you sure? yes | no

Bill Clawson wrote 12/20/2019 at 21:57 point

FWIW, Glucose Oxidase is used in baking.  It might be possible to get some from a bakery supply store.  Google is your friend in this matter.  I saw a place that was selling it, no price given, but the amount was 22 kg per order, so a bit too much, if you ask me.  I also saw cheap test strips on Amazon.  Something like 24 cents per strip. 

  Are you sure? yes | no

malakkhashogji2550 wrote 11/13/2019 at 08:12 point

Hello M.Bindhammer ,

I would like to ask if you purchased the shields PCB or you printed it?

Regards

  Are you sure? yes | no

M. Bindhammer wrote 11/13/2019 at 10:41 point

I gave the Gerber files to a PCB printing fab.

  Are you sure? yes | no

jagadishmacharla99 wrote 08/21/2019 at 15:16 point

Can you please share the sample code for this project.

  Are you sure? yes | no

juan.rodriguez wrote 09/09/2019 at 07:43 point

Any news about sample code? Thanks in advance.

Juan

  Are you sure? yes | no

M. Bindhammer wrote 05/31/2020 at 08:55 point

Just read my logs of this project!

  Are you sure? yes | no

[deleted]

[this comment has been deleted]

M. Bindhammer wrote 05/31/2020 at 08:54 point

The gerber have no bugs, just tested them again.

  Are you sure? yes | no

abdelrahman.m.galal22 wrote 02/21/2019 at 17:33 point

Hi M.Bindhammer, 

I really like ur project and I was asking if the one touch test strips are replaceable as they are expensive and if they weren't could u supply me with the strip structure...

Understand that u may be busy...

Many thanks in advance...

Abdelrahman

  Are you sure? yes | no

Santiago wrote 10/09/2018 at 18:41 point

Hi everyone, here (https://bit.ly/2A19Yuh) you can download a 3D model of the test trip connector for ONE TOUCH Ultra test strips I did on my own. Once printed, you will need to add the contacts to make it work. I haven't tested yet but I think it worths a try.

  Are you sure? yes | no

Berm Thong wrote 06/18/2018 at 14:51 point

Dear M.Bindhammer,

I like your project,and I think that should apply to measure liquid of fruit which have glucose within that also.

So,let's ask you.

How do I get your glucose meter shield for Arduino and one touch ultra test strip using together ?

Buy or any ?

Thank you in advance for the answer.

Regards,

Berm Thong

  Are you sure? yes | no

davide.romano.9937 wrote 03/16/2018 at 15:44 point

i'm looking for the test strip connector but i can't find it, could someone help me telling me where i can buy it?

  Are you sure? yes | no

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

Similar Projects

Does this project spark your interest?

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