Hackster is hosting Hackster Holidays, Ep. 6: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Monday!Stream Hackster Holidays, Ep. 6 on Monday!
Marta WylotSaksham SharmaDouglas van NiekerkSuraj PG
Published

AccuPatch

We're developing a prototype for a cheap and easy-to-use probe with a potential application in detection and monitoring of cancerous tissue.

IntermediateWork in progressOver 1 day3,703
AccuPatch

Things used in this project

Hardware components

Maker Board Starter Kit
Maker Board Starter Kit
×1
Arduino UNO
Arduino UNO
×1
Subdermal Needle Electrodes
×1
Wire-to-board connectors and headers
×1
ZT 301 RMS Digital Multimeter
×1
Resistor 10k ohm
Resistor 10k ohm
×3
I2C LCD Module 16x2 LCD Board Display
×1
Nichrome Wire, 32AWG
×1

Software apps and online services

Arduino IDE
Arduino IDE
XOD

Hand tools and fabrication machines

Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Wire Stripper / Crimper, 10AWG - 20AWG Strip
Wire Stripper / Crimper, 10AWG - 20AWG Strip
Form Cure 3D printer

Story

Read more

Custom parts and enclosures

2-pin probe

2x2 probe

Schematics

Electronic circuit diagram for 2-pin probe

Electronic circuit diagram for 2X2 pin probe

XOD code for 2X2 pin probe

It uses three analog inputs- A0,A1, and A2 from Rich UNO R3 board to display voltage values for 3 probes on watch node.

Form Cure 3D printer

The 3D printer used to cast needle inside the Form Labs resin and cured at 60°C.

Code

2-pin probe

Arduino
It is used to display voltage across the probe on Serial monitor and LCD display.
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

int condVal;
int v1,v2;
int SAMPLES = 20;
int i=0;
float s_val[20];
float sampleSum =0.0;
float sqDevSum = 0.0;
void setup()

{
  analogWrite(9,51);

  Serial.begin(9600);
 lcd.init();                      // initialize the lcd 
lcd.backlight();                  // Print a message to the LCD.
}
 
void loop ()
{
 
  condVal = analogRead(A0);  
  float voltage = condVal*(1/1023.0);

  if (voltage!=0 && i<SAMPLES){
    s_val[i] = voltage;
    sampleSum += s_val[i];

  if(i==SAMPLES-1){
  float meanSample = sampleSum/float(SAMPLES);
  
  for(int j = 0; j < SAMPLES; j++) {
    sqDevSum += pow((meanSample - float(s_val[j])), 2);
  }
  float stDev = sqrt(sqDevSum/float(SAMPLES));
  
  Serial.print("Average voltage of 20 non-zero values:");
  Serial.println(meanSample,5);
  Serial.println("");
  Serial.print(" and Standard deviation:");
  Serial.println(sqDevSum,5);
  sampleSum =0;
  sqDevSum=0;
  }
  i=(i+1)%SAMPLES;
    
 lcd.setCursor(0,0);
 lcd.print(voltage,5);
 delay(100);   
  } 
}

3X4 probe

Arduino
It requires a library - CD74HC4067.h (https://github.com/waspinator/CD74HC4067) which selects one of the 12 pins using 4 digital pins (S0,S1,S2,S3) (my_mux function), to do analogRead() for all the pins using one pin.
#include <CD74HC4067.h>
CD74HC4067 my_mux(6, 5, 4, 3);
int cond_Val[16];
float voltage[16];
const int pin_in_mux =A0;

void setup(){
  analogWrite(9,51);
  pinMode(pin_in_mux,INPUT);
  Serial.begin(9600);  
} 
void loop()
{ 
   for (int i=0;i<12;i++){
    my_mux.channel(i);
    cond_Val[i]= analogRead(pin_in_mux);
    voltage[i]= cond_Val[i]*1/1023.0;
    if(voltage[i] >0.05){

      Serial.print("Sensor");
      Serial.print(i);
      Serial.print(" voltage is: ");
      Serial.println(voltage[i],5);
  }
  else{
    i--;
    }
 }
Serial.println();
 delay(5000);
}

  

Credits

Marta Wylot

Marta Wylot

2 projects • 1 follower
I was born...before hackster even existed and I’m still alive. I’m finishing a PhD in Biochemistry. After that the plan is to save the world
Saksham Sharma

Saksham Sharma

2 projects • 1 follower
Douglas van Niekerk

Douglas van Niekerk

0 projects • 0 followers
Suraj PG

Suraj PG

0 projects • 0 followers

Comments