Team Hacker

From Hackteria Wiki
Revision as of 16:37, 16 February 2018 by M.Gnos (talk | contribs) (Arduino Code)
Jump to: navigation, search
DIY-Hacking-Logo.png

Kurzbeschreib des Moduls Medizintechnik DIY

Die Verantwortlichen des Moduls beschreiben es auf der Wikiseite Medizintechnik DIY folgendermassen: "Das Modul verbindet Anwendungen der Medizintechnik mit Do It Yourself (DIY) Ansätzen. Dadurch wird das tiefere Verständnis von Medizintechnischen Geräten durch einen direkten, interdisziplinären und möglichst selbstgesteuerten Zugang gefördert. Basierend auf verschiedenen elektrophysiologischen Messmodulen (EMG, EKG, EOG, EEG) entwickeln die Studierenden im Team Ideen für innovative Projekte. Erste Prototypen werden mit den Mitteln der Digitalen Fabrikation hergestellt und getestet."

Team

Das Team Hacker besteht aus vier Studenten der Studienrichtungen Wirtschaftsingenieur, Maschinentechnik und Medizintechnik. Sie befinden sich in verschiedenen Semestern und haben sich für dieses Modul als Blockwoche eingeschrieben.

Bissig Christian | Wirtschaftsingenieur
Gnos Marco | Maschienentechnik
Kaufmann Michaela | Medizintechnik
Schnider Patrick | Wirtschaftsingenieur

Teamevent

IMG 20180216 151647.jpg

Um den Kopf zu verlüften und neue Ideen zu sammeln, machte das Team einen Teamevent. Sie spielten zwei gegen zwei im Tischfussball. Dies hat den Teamzusammenhalt gefördert und Spass gemacht. Die bessere Zweiergruppe hat gewonnen.

Backyard Brains Experimente

Muscle SpikerShield Experiment

Mittels dem Muscle SpikerShield von Backyard Brain und dem Mikrocontoller Arduino will die Gruppe die elektrische Muskelaktivität messen. Zunächst mussten alle benötigten Komponenten auf das Muscle SpikerShield gelötet werden. Dabei ist die Gruppe nach der Anleitung vorgegangen. Sie hat die Löthalterung auf der Abbildung unten links ausprobiert, aber schnell gemerkt, dass sich diese nicht gut eignet, da sie nicht sehr stabil ist. Deswegen haben sich zwei Gruppenmitglieder abgewechselt mit Löten und Halten des Shields. Dieses Vorgehen ist auf der rechten Abbildung unten zu sehen. Obwohl die Gruppenmitglieder keinerlei Erfahrung im Bereich des Lötens mit sich brachten, hat es sehr gut funktioniert. Lediglich einmal musste eine Komponente neu angelötet weden.

IMG 20180212 150143.jpg IMG 20180212 150424 Kopie.jpg

Auf das Arduino wurde der Code led_strip2014 geladen. Das vollständige SpikerShield wurde dann auf das Arduino gesteckt. Ein Gruppenmitglied klebte zwei Elektroden auf den Bizeps und verkabelte diese mit dem SpikerShield. Schliesslich konnte die Muskelaktivität nachgewiesen werden. Die LED-Lämpchen auf dem Shield beginnen zu leuchten, sobald der Bizeps kontrahiert wird und hören wieder auf, wenn der Muskel entspannt wird. Der Ablauf des Experiments ist dem nachfolgenden Video zu entnehmen.

Muscle SpikerShield Experiment

IMG 20180214 093726.jpg

Heart and Brain SpikerShield Experiments

Mit diesen Experimenten soll es möglich sein, die Potenziale des Herzens und des Hirns zu visualisieren und aufzunehmen. Für diese Experimente muss das Heart and Brain SpikerShield wie rechts abgebildet auf das Arduino Board montiert werden. Beim Brain SpikerShield musste nicht selbst gelötet werden. Das Shield wurde bereits fertig geliefert, sodass der Aufbau durch das Zusammenstecken mit dem Arduino sehr einfach war.

Brain Waves Experiment

IMG 20180213 114645.jpg

Mit diesem ersten Experiment wurde versucht, die Hirnströme zu messen und in einem Elektroenzephalogramm (EEG) darzustellen. Dies gibt Aufschluss über die Aktivität des Gehirns. Dazu werden die Spannungsschwankungen an der Oberfläche des Kopfes gemessen und mit der Software BYB Spike Recorder aufgezeichnet. Die Elektroden befanden sich wie auf dem Bild zu sehen hinten am Kopf und wurden mit dem Elektroden-Gel befeuchtet. Leider hat das Experiment auch nach mehrmaligem Probieren nicht funktioniert. Möglicherweise lag es an den Haaren, die den direkten Kontakt zwischen Elektrode und Haut verhinderten. Eine andere Fehlerquelle könnte sein, dass zu viele Störsignale der Umgebung aufgenommen wurden und deswegen die Änderungen der Hirnströme nicht sichtbar waren. Vielleicht hat die Gruppe auch falsche Einstellungen an der Software getroffen.

Heartbeat Experiment

Mit dem zweiten Experiment wurde versucht, die Herzschläge zu messen und in einem Elektrokardiogramm (EGK) darzustellen. Dies gibt Aufschluss über die Aktivität des Herzens. Dazu werden die Spannungsschwankungen an der Hautoberfläche gemessen und mit der Software BYB Spike Recorder aufgezeichnet. Die Elektroden wurden wie auf den Bildern zu sehen an den Handgelenken und auf dem Handrücken angeklebt. Die erste Messung geschah im Ruhezustand. Dann bewegte sich der Proband, bevor die zweite Messung gemacht wurde. Der Unterschied war deutlich zu erkennen. Bei der zweiten Messung hat das Herz schneller geschlagen und es gab mehr Ausschläge pro Minute. Das Experiment hat sehr gut funktioniert und die Resultate sind nachvollziehbar.

Eye Movementment Experiment

Mit der Elektrookulografie (EOG) kann die Bewegung der Augen gemessen werden. Dazu werden Schwankungen des Potentials auf dem Netzhaut gemessen und mit der Software BYB Spike Recorder aufgezeichnet. Zwei Elektroden wurden links und rechts der Augen und eine hinter dem Ohr angeklebt. Dann schaute der Proband abwechselnd mit beiden Augen nach rechts und nach links. Beim Wechsel der Richtung schlägt die Kurve auf dem Computer wie auf der Abbildung unten dargestellt aus. Das Experiment hat sehr gut funktioniert.

Augenscan.JPG IMG 20180213 145512.jpg

Skill Share Sessions

Studenten bringen ihr Fachwissen eines Themengebietes anderen interessierten Studenten bei. Die folgenden Kurse wurden vom Team Hacker besucht:

Arduino Basics

Der Arduino ist ein Mikrocontroller mit Ein- und Ausgängen. Auf einen Arduino kann genau ein Programm geladen werden. Im Workshop haben wir die Arduino-Software heruntergeladen und einige Programme ausprobiert. Zum Beispiel wurde als erstes Pogramm "Blink" verwendet, um das LED-Lämpchen auf dem Arduino-Shield alternierend zum Leuchten zu bringen.

Bread Boarding

Bei dieser Skill Share Session wurden die Grundlagen von elektrischen Schaltkreisen angeschaut. Es wurde weniger darauf geschaut theoretische Inhalte im Detail anzuschauen. Hauptsächlich wurden praktische Erfahrungen mit elektrischen Komponenten und Schaltkreisen gesammelt. LED's, Widerstände, Kondensatoren und Spannungsquellen wurden auf Prototyplatten zusammengeschaltet.

Photoshop

Es gab einen Crashkurs zum Thema Photoshop. Die Studenten, welche ihn leiteten zeigten mit ihrem Fachwissen nützliche Tipps um das Programm noch effizienter nutzen zu können. Alle Besucher des Kures brachten bereits erste Erfahrungen zum Thema mit. Die wichtigsten Funktionen wurden noch einmal erläutert und es gab viele Aha-Momente.

3D Druck

Beim 3D-Druck können Gegenstände gedruckt werden, indem ein Material schichtweise aufgetragen wird. In dem Workshop wurden die Grundlagen der 3D-Druck-Technik erklärt. Beispielsweise gibt es verschiedene Arten von 3D-Druck wie Extrusion, pulverbasiert, Harze oder Jetting. Zudem hat ein Mitstudent erklärt, wie man eine STL Datei mit dem Slicer in eine druckbare Datei umwandelt.

Laser Cutter

Der Laser Cutter kann sehr gut MDF-Platten, Sperrholz-Platten und Plexiglas-Platten durchtrennen. Am besten macht man als Student eine Zeichnung in einem CAD Programm. Diese fügt man in den Adobe Illustrater ein, um die Datei vorzubereiten, die auf den Laser Cutter geladen wird. Schliesslich muss der Koordinatenursprung des Lasers auf der Platte eingestellt werden, bevor das Teil ausgeschnitten werden kann.

Roboter

Das Thema Roboter wird von der Gruppe Hacker vorgestellt. Mehr zum Thema steht auf der Seite DIY-MedTech Roboter Basics - Team Hacker.

Prototyping

Mitsubishi Movemaster EX Roboter

IMG 20180214 112630.jpg
IMG 20180214 140931.jpg

Da sich die Mitglieder des Teams Hacker für Roboter interessieren, haben sie sich dazu entschieden, einen Prototypen zu diesem Thema zu erstellen. Die Gruppe durfte den nicht mehr gebrauchten Roboter Mitsubishi Movemaster EX verwenden, auseinandernehmen und neu verkabeln. Die Bilder rechts zeigen die Arbeit am Roboter. Das Ziel ist es, die einzelnen Achsen mit dem Mikrocontroller Arduino und dem daraufgesteckten MotorShield zu steuern. In einem ersten Schritt ist es gelungen, dass die z-Achse wie im Video unten bewegt werden kann.

Mitsubishi Movemaster EX Bewegung um Z-Achse

Mitsubishi Movemaster EX Bewegung um vier Achsen

Drehung verschiedener Achsen mit Muskel

Mitsubishi Movemaster EX gesteuert von Arduino und Muskel

Arduino Code

Programm 1:

/* 
This is a test sketch for the Adafruit assembled Motor Shield for Arduino v2
It won't work with v1.x motor shields! Only for the v2's with built in PWM
control

For use with the Adafruit Motor Shield v2 
---->	http://www.adafruit.com/products/1438
*/

#include <Wire.h>
#include <Adafruit_MotorShield.h>

// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61); 

// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *myMotor1 = AFMS.getMotor(1);
Adafruit_DCMotor *myMotor2 = AFMS.getMotor(2);
Adafruit_DCMotor *myMotor3 = AFMS.getMotor(3);
Adafruit_DCMotor *myMotor4 = AFMS.getMotor(4);
// You can also make another motor on port M2
//Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2);

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Adafruit Motorshield v2 - DC Motor test!");

  AFMS.begin();  // create with the default frequency 1.6KHz
}

void loop() {
  delay(5000);

  myMotor2->run(BACKWARD);
  myMotor2->setSpeed(130);
  delay(300);
  myMotor2->run(RELEASE);

  myMotor4->run(FORWARD);
  myMotor4->setSpeed(130);
  delay(1200);
  myMotor4->run(RELEASE);

  myMotor1->run(FORWARD);
  myMotor1->setSpeed(130);
  delay(1000);
  myMotor1->run(RELEASE);
                                                                                                      
  myMotor4->run(BACKWARD);
  myMotor4->setSpeed(130);
  delay(1200);
  myMotor4->run(RELEASE);

  myMotor2->run(FORWARD);
  myMotor2->setSpeed(130);
  delay(300);
  myMotor2->run(RELEASE);

  delay(3000);

  myMotor2->run(BACKWARD);
  myMotor2->setSpeed(130);
  delay(1300);
  myMotor2->run(RELEASE);

  myMotor1->run(FORWARD);
  myMotor1->setSpeed(130);
  delay(650);
  myMotor1->run(RELEASE);

  delay(3000);

  myMotor1->run(BACKWARD);
  myMotor1->setSpeed(130);
  delay(640);
  myMotor1->run(RELEASE);

  myMotor2->run(FORWARD);
  myMotor2->setSpeed(130);
  delay(1000);
  myMotor2->run(RELEASE);

  delay(3000);

  myMotor2->run(BACKWARD);
  myMotor2->setSpeed(130);
  delay(300);
  myMotor2->run(RELEASE);

  myMotor4->run(FORWARD);
  myMotor4->setSpeed(130);
  delay(1200);
  myMotor4->run(RELEASE);

  myMotor1->run(BACKWARD);
  myMotor1->setSpeed(130);
  delay(900);
  myMotor1->run(RELEASE);

  myMotor4->run(BACKWARD);
  myMotor4->setSpeed(130);
  delay(1200);
  myMotor4->run(RELEASE);

  myMotor2->run(FORWARD);
  myMotor2->setSpeed(130);
  delay(250);
  myMotor2->run(RELEASE);
   
}

Programm 2:

#include <Stepper.h> //Librería para el control del Motor.
#define PASOS 48  //Número de pasos que tiene el motor.
Stepper motor(PASOS, 2, 3, 4, 5);  // Especifica el número de pasos del motor y los pines.




#include <Wire.h>
#include <Adafruit_MotorShield.h>

Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 

Adafruit_DCMotor *myMotor3 = AFMS.getMotor(3);



#define MAX 20   // Máxima lectura posible.¡JUEGA CON ESTE VALOR!.
#define PASOSMAX 10 // Este es el número máximo de pasos que avanzará (Puedes modificar este valor).
int lecturas[10];  
int lecturaFinal;
byte multiplicador = 1;
byte pasosAvanza = 0;
int  cuentaPasos = 0;

void setup(){
  Serial.begin(9600); //begin serial communications
  motor.setSpeed(200);  // Se especifica la velocidad del motor RPMs.

  AFMS.begin();

}//Fin de void setup.

void loop(){
  
  for(int i = 0; i < 10; i++){    //Toma diez lecturas en ~ 0,02 segundos.
    lecturas[i] = analogRead(A0) * multiplicador;
    delay(2);
  }
  for(int i = 0; i < 10; i++){   //Promedia las diez lecturas.
    lecturaFinal += lecturas[i];
  }
  lecturaFinal /= 10;
  
  

  lecturaFinal = constrain(lecturaFinal, 0, MAX); //Restringe "lecturaFinal" a un rango definido(0->MAX).
  
  pasosAvanza = map(lecturaFinal, 0, MAX, 0, PASOSMAX); //Convierte el valor de "lecturafinal" a un numero de pasos a avanzar.

  
  
      if(pasosAvanza == 0) //Si no hay lectura, el motor se detiene.
      
      {  
      motor.step(0);

      motor.step(1);
      myMotor3->run(BACKWARD);
      myMotor3->setSpeed(255);
      delay(10);
      myMotor3->run(RELEASE);

      delay(10);

      }
      
      else{
            for(cuentaPasos = 0 ; cuentaPasos <= pasosAvanza ; cuentaPasos++)  
      
      {
      Serial.println(cuentaPasos);

      motor.step(1);
      myMotor3->run(FORWARD);
      myMotor3->setSpeed(255);
      delay(10);
      myMotor3->run(RELEASE);

      delay(10);
      }
          }
    
    
    delay(10);
}//Fin de void loop.
    

Fieberthermometer

Temperatursensor.jpg

Nicht alle Gruppenmitglieder haben am Roboter weitergearbeitet. Zwei haben Ideen für einen zweiten Prototypen gesucht. Sie haben den Temperatursensor rechts im Bild an eine Spannungsquelle geschlossen und mit 12V Spannung ausprobiert. Der Sensor hat auf Änderungen der Temperatur in seiner Umgebung reagiert, jedoch war nicht klar, ob der Sensor genau die richtige Temperatur anzeigte. Die Idee war es dann, mithilfe dieses Sensors ein Fieberthermometerband zu entwickeln. Bei herkömmlichen Fieberthermometer, die die Temperatur unter den Achseln messen, muss man das Fieberthermometer für eine bestimmte Zeit unter der Achsel einklemmen. Für einige Patienten ist das eine Anstrengung oder ein unangenehmes Gefühl. So dachte sich die Gruppe, dass es eine gute Idee wäre, ein Schulterband zu entwickeln, an dem der Temperatursensor befestigt ist. So kann man das Band um die Schulter anziehen und das Band wiederum zieht den Sensor in die Achsel. So muss der Arm nicht während der gesamten Messung nach unten gedrückt werden. Das Display könnte an einer Verlängerung etwas weiter unten am Arm befestigt werden, sodass der Patient darauf blicken kann. Die Idee wurde verworfen. Die Stelle unter dem Arm müsste immer frei und über das Band zugänglich sein. Das setzt voraus, dass die Person ein Kleidungsstück trägt, das bis über die Schulter zurückgekrempelt werden kann. Zudem braucht das Band inklusive Anzeigedisplay mehr Platz zum Verstauen als ein herkömmliches Fieberthermometer und die Anwendung ist doch etwas komplizierter. Die Gruppe dachte sich, dass die Patienten dann doch lieber den Arm während der Messung an den Körper drücken, als das imaginäre Band zu verwenden.

Getränkehalter an Krücke mit Temperaturmesser

Getränkehalter mit Temperaturmessung für Krücken

Weil an Krücken gebundene Personen keine freie Hand mehr zur Verfügung haben, ist es ihnen nicht möglich ohne Rucksack/Tasche ein Getränk mitzunehmen. Deshalb hat die Gruppe Hacker einen Getränkehalter für Krücken entworfen. Das Grundgerüst besteht aus 3mm dicken MDF Platten und wurde ausgelasert. Dazu wurde von den entsprechenden Teilen zuerst ein CAD Modell erstellt. Mit den daraus abgeleiteten Zeichnungen konnte weitergearbeitet werden.

IMG 20180216 103616.jpgIMG 20180216 113718.jpgIMG 20180216 151132.jpgIMG 20180216 154523.jpgIMG 20180216 154727.jpgIMG 20180216 154734.jpg

Reflexion

Weiterführende Links

Backyard Brains

Backyard Brains - Neuroscience For Everyone!
https://backyardbrains.com/

Backyard Brains - Muscle SpikerShield
Maschinen, Elektronik und Prozesse steuern über die elektrische Aktivität deiner Muskeln
https://backyardbrains.com/products/muscleSpikerShield
DIY Version
https://backyardbrains.com/products/diyMuscleSpikerShield

Heart and Brain SpikerShield Bundle
Mit dem Brain SpikerShield kannst Du actions Potentiale deines Herzen und Hirn (EEG/EKG) visualisieren und aufnehmen.
https://backyardbrains.com/products/heartAndBrainSpikerShieldBundle

Backyard Brains - Experimente
https://backyardbrains.com/experiments/

Arduino

Arduino - Open Source Elektronik Platform mit einfach zu bediender Hard und Software
https://www.arduino.cc/

Löt(l)en

Soldering is easy
https://mightyohm.com/files/soldercomic/FullSolderComic_EN.pdf

Hackteria

Hackteria - Globales Netzwerk und Webplaform für Open Source Biological Art, DIY Biology, Generic Lab Equipement

https://www.hackteria.org/

HSLU

Medizintechnik - Experten an der Schnittstelle von Technik und Medizin
https://www.hslu.ch/de-ch/technik-architektur/institute/medizintechnik/

Innovation und Technologiemanagement - Gemeinsam überzeugt die Zukunft gestalten
https://www.hslu.ch/de-ch/technik-architektur/institute/innovation-und-technologiemanagement/

Maschinen- und Energietechnik - Innovationstreiberin an der Schnittstelle der Ingenieursdisziplinen
https://www.hslu.ch/de-ch/technik-architektur/institute/maschinen-und-energietechnik/