Block Diagram
Looking at other projects and relevant research, we identified the necessary components required for the glucometer and came up with this block diagram:
Block diagram
Schematic Diagram
Using the block diagram, we came up with the schematic design for the circuit. The main components are highlighted and labelled in the diagram below. One important component we changed in the circuit is the peak detector circuit, where instead of recording the voltage change over a certain period (also known as an integrator circuit), we have used a circuit where the absolute peak is recorded over a certain period of time.
We also tested the circuit using an online circuit simulation software to test if the circuit works as intended.
Test Strip Selection
Many glucose test strips are commercially available. For this project, we decided to use Accu-Chek Performa test strips to measure the glucose concentration in sweat. Accu-Chek Performa test strips were chosen since one study managed to successfully measure the glucose concentration in tears using these test strips. Given that the glucose concentration in tears and sweat are similar, these test strips should be able to detect and measure the glucose concentration in sweat.
Accu-Chek Performa Test Strips
Connector Design
An important component of our circuit is the connector that provides the connection between the single-use test strip that is inserted and the rest of the PCB. Initially, we were planning to get the pre-fabricated connector from a company but due to the delay on their side, we had to design our own connectors.
We attempted 2 designs; one using wires to connect to the contact points, while we used pogo pins to connect to the contact points of the strip for the 2nd design. The initial print of the 1st design is shown below. However, the two halves did not fit properly and the grooves were not sufficiently precise. The 1st design was reprinted with slight modifications for better fit. There was an improvement but the fit was too loose. The 2nd design (pogo pin bracket) was printed as well. The 2nd design seemed to have holes that were too small due to the limitations of the nozzle size of the 3-D printer. Further modifications were necessary. The next day, the designs were reprinted with the modifications. The 1st design appeared to be more successful allowing for some proper contact with the test strip. The holes for the 2nd design were printed better but the snap-fit design still needed improvement.
3D model of Design 1
Design 1
3D model of Design 2
Design 2. The newer print is on the right (in black).
After a few revisions, we realized that the limitations of the precision of the 3D printer meant that it was very difficult to obtain a precise fit. We decided to use another standard connector that we bought online. This, however, was still not ideal as the test strip could not slot in properly and needed to be adjusted by hand to obtain proper contact.
1mm pitch JST connector
Running out of options, we bought a second-hand glucometer and stripped it apart to obtain the actual glucometer connector, ensuring that we can get the proper connection needed.
accu-chek performa connector
Case Design
The case was designed to be “snap fit” and have precise slits for the necessary ports (USB, test strip connector and velcro). It was also designed to be as compact as possible while holding the internal components (PCB, wireless charging receiver, magnets for wireless charging coil alignment) in place. Design 1 is based on PCB design 1 while the remaining case designs are all based on PCB design 2. More precise dimensions and positioning of the ports were mainly adjusted from design 3 onwards.
Design 1
Design 1 is based on PCB design 1 which means that it is quite big in dimension to accommodate the Arduino mega. There are holes for the ports, cantilever protrusions for a snap-fit design and internal pillars to hold the PCB and Arduino mega in place.
While waiting for the PCB to be delivered, we tried to 3D-print the case for the glucometer. The design was a cantilever snap-fit design but it seems that the actual cantilever portion was too rigid and brittle. The cantilever protrusions broke off while attaching the two halves. However, the grooves along the wall of the design seem to be sufficient to hold the two halves in place which will be used for the next case design.
3D model of case design 1
cantilever protrusion of case design 1 (top half)
Case Design 1
Design 2
Design 2 is based on PCB design 2 so it is smaller in size. The snap fit mechanism with cantilever protrusions was also tested in this design. However, it was not very successful and it will be removed in the following designs.
3D model of case design 2
Case Design 2
Design 3
Design 3 is based on PCB design 2, but it is larger in size than case design 2 to accommodate the wireless charging receiver and magnets to align the wireless charging coils. A casing for the wireless charging transmitter was also created.
Both cases needed slight adjustments in size and fit but the general features will not require much change.
3D model of case design 3
Case Design 3
3D model of wireless charging transmitter
Wireless charging transmitter case
Design 4
Design 4 involved slight alterations to Design 3, which included repositioning the slits for the ports and also adding some holes for velcro. The velcro is used to tighten the finger on the oximeter sensor for more accurate readings to be obtained. The wireless charger case was redesigned to better fit the wireless charging module.
Both designs required some realignment for the ports.
Case Design 4
Wireless charging transmitter case 2
Design 5
Design 5 has a slightly shorter case thickness with realigned holes for the ports. The wireless charger case was also slightly redesigned with the addition of a protrusion that can hold the USB charging port in place.
Design 5 has precise fits and alignments but when using the oximeter, the finger does not rest properly on the sensor. Further refinement was necessary for the sensor hole. The wireless charging case, on the other hand, was finalised and this print will be used as the final design.
Case Design 5
Wireless charging transmitter case 3
Design 6
Design 6 has a larger hole (1.5 x 1.5cm) for the sensor that is better aligned and a slight depression for the finger to be placed. The words “Vitality Meter” were also embossed on the top.
However, the 3D print did not turn out very precise and the depression needed to be redesigned. The embossed words were also printed poorly. The subsequent print will have the words that are embossed all the way through (as holes).
Case Design 6
Designs 7-8
Design 7 has a redesigned depression for the finger to be placed. The words “Vitality Meter” were also embossed all the way through the top, appearing as holes. Design 8 is the same as that of Design 7 but with a tighter tolerance for a better fit.
The finger was better placed on the sensor in this new design and resulted in more reliable readings for the oximeter sensor. This is the finalised design for the case.
3D model of case design 7/8
Case Design 7/8
Pcb Design
Design 1
Schematic Diagram of PCB Design 1
PCB Design 1
PCB Design 1 included the circuit for the glucometer and the arduino mega was used as the microcontroller. The power supply will be through the power port (micro USB) on the arduino. The schematic diagram shows the circuit in more detail. The main circuit components are as follows: test strip connector, I to V connector, voltage peak detector, quad bilateral switch, 16-bit ADC, 2 voltage regulators and arduino mega.
Circuit Components
- Resistors (0805): 36k, 100k, 130k, 180k, 1M
- Capacitors (0805): 10nF, 100nF, 1uF, 10uF
- Operational Amplifier: LMC6484
- Quad bi-lateral Switch: CD4066BM
- 2.5 V Voltage Regulator: TPS76925DBVR
- Variable Voltage Regulator: TPS76901DBVT
- Diode: 1N4148W
- ADS1115 16-Bit ADC
- Microcontroller: Beetle BLE DFR0339
- MAX30102 Pulse Oximeter and Heart Rate Sensor
- Accu-chek Performa Test Strip Connector
- Wireless Charger Transmitter and Receiver
When the parts and PCB arrived, we managed to solder the parts successfully. All the components were surface-mount components with relatively small pads for soldering. We had a bit of trouble with precision but it went quite smoothly and we were able to finish soldering in about 2-3 hours. Using a multimeter, we checked the voltage at the included test points. We found that the voltage output for the fixed 2.5V voltage regulator was not accurate and had to resolder a few legs of the regulator. We managed to obtain the correct voltages in the end.
Design 2
Schematic Diagram of PCB Design 2
PCB Design 2
PCB Design 2 included the circuit for the glucometer and a MAX30102 module that has heart rate and oxygen saturation sensors. Bluno Beetle was used as the microcontroller. The power supply will be through a wireless charging coil transmitter. An additional change is the inclusion of a strip detect circuit that will allow the microcontroller to detect the insertion of a test strip into the connector. The schematic diagram shows the circuit in more detail. The main circuit components are as follows: test strip connector, I to V connector, voltage peak detector, quad bilateral switch, 16-bit ADC, 2 voltage regulator, Bluno Beetle, MAX30102, wireless charging power supply and fill sufficiency circuit.
Unlike the previous PCB that involved direct soldering, we used solder paste for PCB Design 2. After accurately positioning a stencil on the PCB, we applied solder paste onto it with a scraper. Next, the stencil was removed and the components were placed on the PCB with a tweezer. The PCB with the components was placed on a heating plate to allow the solder paste to melt and bind to the components. This whole process was done much faster than direct soldering. Next, we had to directly solder the ADC, Bluno Beetle, MAX30102 and the test strip connector. The SCL and SDA connection points on the Bluno Beetle, unlike the other connection points, had pads instead of pins. Hence, we had to use wires to connect the pads to the PCB. This proved to be rather difficult as a slight misalignment in the wires made it hard to align the rest of the pins of the Bluno Beetle. After some time, we were able to successfully solder all the parts onto the PCB.
Application of solder paste
Positioning of PCB components
Heating the PCB on a heating plate
Android App Design
Given that our glucometer circuit does not include an output display, an app was necessary to receive data from our microcontroller via Bluetooth Low Energy (BLE) and display it to our user. Several BLE apps are available in the Android App Store. However, out of the 9 apps that we tried, only 1 managed to connect to our Beetle BLE and successfully read and write data. However, the user interface was rather plain and basic. As such, given the sufficient time we had, we decided to design and create our own app.
User interface of the only app that could connect to our BLE microcontroller
Before creating the app, we listed out several criteria for our app:
- Able to connect to our microcontroller via Bluetooth Low Energy.
- Able to send data to and receive data from the microcontroller.
- User-friendly and simple to use
- If possible, be aesthetically pleasing
Android Studio was used to create our app. As both of us did not have any experience in making an Android application, we had to learn everything from scratch. Fortunately, YouTube contains many useful videos that clearly explain the steps needed to create an Android app. We referred to the Android Development for Beginners – Full Course Part 1 and Part 2, which provides a very comprehensive explanation of app development. As Android Studio uses the programming language Java, we had to learn its syntax and features as well. After watching the 15-hour long tutorial, we were finally able to get our hands dirty and start creating our own application.
However, one thing still remains – while the tutorial video covers most of the basic knowledge required for developing an Android application, it did not mention anything about Bluetooth. As such, further research still had to be done on how to incorporate BLE into our app. Unfortunately, this time, there was no easy tutorial for us to refer to. All the tutorial videos we viewed were too difficult to understand and we lost track after a while. In fact, a simple search on the internet shows that many app developers found implementing BLE on Android to be a headache – which we too, agree, in hindsight.
After countless times of searching and trying to understand how BLE works, we managed to find a BLE library for Android in GitHub titled BLESSED (a true blessing indeed). This library took care of many aspects of BLE which allows us to just focus solely on connecting to, reading data from, and writing data to a BLE device.
With the BLESSED Library, we were able to successfully connect the Beetle microcontroller to our app and send data from our app to the microcontroller. However, we were unable to receive any data from the microcontroller. Unwilling to abandon the BLESSED library, we search high and low for any possible solution. After much effort, we found out that someone has raised this issue before, and the solution was to refactor a part of the BLESSED library.
After countless rounds of optimization and debugging, we managed to create the app that we envisioned. The full Android Studio code for our Vitality Meter app and the Arduino code for our Beetle microcontroller can be found in the GitHub link below:
Source Code for Vitality Meter App and Microprocessor
GLUCOMETER calibration
After the PCB and coding has been developed, we moved on to calibrate the voltage change in the circuit with actual glucose concentrations. To conduct the calibration, we prepared solutions to simulate sweat and blood. The solutions were prepared at the biology lab under Assoc Prof Hoi-Yeung Li.
Chemicals Used During Calibration
- D-(+) Glucose
- Phosphate Buffer Saline Solution
- Sodium Chloride
- Hydrochloric Acid
- Sodium Hydroxide
- Urea
- Lactic Acid
The blood solution was simulated with phosphate buffer saline (PBS) while the sweat solution was prepared with:
- 0.5 wt% NaCl
- 0.1 wt% Urea
- 0.1 wt% Lactic acid
- Sodium hydroxide (to adjust pH to 6.3)
The 12mmol/L artificial blood solution was made by dissolving 0.324288g (0.3246g) with 150ml of PBS. The subsequent solutions are diluted from this 12mmol/L solution.
The final solutions were mixed to obtain the following concentrations:
For BLOOD
Concentration of glucose (mmol/L) | Volume of 12mmol/L soln required (ml) | Volume of PBS soln required (ml) |
3 | 3 | 9 |
4 | 5 | 10 |
5 | 5 | 7 |
6 | 6 | 6 |
8 | 10 | 5 |
9 | 9 | 3 |
10 | 10 | 2 |
12 | 15 | – |
The sweat solution was prepared using the following steps:
- Make artificial sweat solution (250ml). Add 1.25g NaCl, 0.25g Urea, and 0.25g lactic acid. Add sodium hydroxide or HCl by burette to adjust the pH to 6.3.
- Make a 10mmol/L solution by dissolving 0.180156g in 100ml of artificial sweat solution.
- Extract 10ml and top up with 90ml artificial sweat solution to make the 1mmol/L glucose solution.
- Make the other solutions by diluting the 1mmol/L solution as shown below.
For SWEAT
Concentration of glucose (mmol/L) | Volume of 1mmol/L soln required (ml) | Volume of artificial sweat soln required (ml) |
0.05 | 1 | 19 |
0.1 | 1 | 9 |
0.2 | 3 | 12 |
0.4 | 6 | 9 |
0.5 | 7 | 7 |
0.6 | 9 | 6 |
0.8 | 12 | 3 |
1.0 | 15 | – |
To obtain the calibration curve, solutions of different glucose concentrations were tested to obtain the corresponding voltage increase. 2 readings of each concentrations were done in order to obtain the average voltage increase for better reliability of the readings. While the concept is relatively simple, multiple calibration tests had to be done due to initial inaccurate results. The calibration curve is expected to be linear but the first few tests gave inconsistent results. The graph below is one such inaccurate calibration curve we obtained.
We attempted to troubleshoot the circuit and found that one possible problem area could be the strip detect circuit disrupting the flow of electrons from the test strip. The PCB wires for this circuit was cut and the results improved. However, some inconsistencies still remained. We tried to experiment with different dipping methods and times and also remade the solutions to see if the solutions were the issue. We ultimately standardized the procedure such that the test strip is dipped in the solution for 2 seconds. Upon closer inspection, we found that for certain readings, there would be a sudden spike in the initial voltage before the voltage stabilized to the expected value. This indicated that the circuit might be too sensitive (reading noise) and that the sudden closure of the circuit has affected the voltage reading. To counter this, we looked at different methods within the code to output the proper expected reading while ignoring the initial inaccurate spike.