Team Brobierä

From Hackteria Wiki
Jump to: navigation, search

What it's all about

If at first you don't succeed, brobier nomau.

In der Blockwoche MedTech DIY befassten wir uns mit "Hacking". Einerseits mit der Bedeutung aus der Software, dem Programmieren, und andererseits mit der Bedeutung aus der Lifehack szene, in der Objekte mit für andere Verwendungszwecke als anfanglich bestimmt benutzt und modifiziert werden. Dabei wurde von uns Studierenden verlangt viel auszuprobieren, schnell von Ideen zu Prototypen zu gelangen und eigene Ideen einfach umzusetzten.

In drei Hacks, einem geführten und zwei freien wurde physical Computing, Software und Hardware verbunden und Dokumentiert.

Members

Noah Gautschi
Alex Selhofer
Isabelle Welti
Sven Rohrer

Noah Gautschi

Student Medizintechnik

Alex Selhofer

Student Wirtschaftsingenieurwesen|Innovation

Isabelle Welti

Studentin Wirtschaftsingenieurwesen|Innovation

Sven Rohrer

Student Maschinenbau

FabLab

Der Arbeitsplatz, in dem wir uns in dieser Blockwoche aufhielten, war das FabLab auf dem Campus der HSLU T&A in Horw. Das Fablab gehört zu eimen globalen Netzwerk von FabLabs in dem alle die Interesse haben, Dinge bauen und entwickeln können und dabei die gewonnenen Erkenntnisse und Baupläne als Open Source zur Verfügung stellen und auch selber Open Source Informationen nutzen können. Alle FabLabs sind ähnlich eingerichtet und haben 3D Drucker, Lasercutter und CNC Maschinen sowie viele andere Hand- und Elektrowerkzeuge.

Bei der Einführung am zweiten Tag lernten wir wie der Lasercutter und der 3D Drucker bedient werden.

Die Anleitungen zum Lasercutter von Fablab gibt genauen Aufschluss über die Bedienung des Geräts.

Gastreferate

Im laufe der Woche durften wir uns drei Referate von Personen aus verschiedenen Branchen anhören.

TeZ

Maurizio Martinucci, alias TeZ, hat uns die ganze Woche begleitet und unterstützt und auch seine Werke aus Kunst und Forschung vorgestellt. Nach dem Apéro gab er uns einen kleinen Einblick in seine Musikkreation.

Deepak Khatri

Der Gründer und Entwicklungsleiter von UpsideDownLabs gab eine Präsentation per Videochat. Er stellte sein Unternehmen und seine Produkte vor. Vor allem die Vorstellung der BioAmp EXG Pill war sehr interessant, da wir diese Hardware zum Messen des ECG, EOG, EMG und EEG verwendet haben. Alle seine Hardware ist OpenSource und kann überall nachgebaut werden. Beispielprogramme für seine Hardware können auf Github gefunden werden.

Thomas Amberg

Dozent für IoT Engineering an der FHNW gab uns seine Präsentation über das Internet of Things mit dem Beispiel eines ECG Gürtels. Er erklärte wie die Informationen über Bluetooth und Wlan abgerufen und gesendet werden um von überall her auf die Daten zugreifen zu können.

Arbeitsjournal

Tag 1

Die Blockwoche beginnt spannend mit einer Einführung ins FabLab mit Führung durch die Räumlichkeiten. Die Arbeitsplätze für die nächsten Tage werden gezeigt und mit allen notwendigen Materialien ausgestattet. Es folgt eine Einführung in das Thema von Microcontroller und als Beispiel den Arduino. In der Intensivwoche MedTech DIY werden alle Teilnehmenden den ESP32 näher kennen lernen. Es werden bereits die ersten Versuche durchgeführt mit dem Lötkolben. Das erste kleine Projekt „Hautwiderstand“ wird vorbereitet und am Breadboard verdrahtet. Mit der ARDUINO IDE wird die Verbindung hergestellt. Der Hautwiderstand wird durch Zahlen im Tool Monitor ausgedrückt. Um den Versuch durchzuführen müssen zwei Finger der gleichen Hand auf die stromleitenden Plättchen gelegt werden. Ein Vortrag von Maurizio Martinucci inspiriert und motiviert die Teilnehmer eigene Projekte zu starten.

Löten der Kontakte des UM Feather S3 zur Verwendung auf einem Breadboard
"Galvanic Skin Response", der Hautwiderstand wird gemessen und als Werte ausgegeben
Code von TeZ zum "Galvanic Skin Response" Experiment

Tag 2

Der zweite Tag begann mit einem Input bezüglich der Arduino Programmierungebung und dem Anschliessen des UM Feather S3 Micocontrollers. Die Probleme mit dem COM-Port können durch ein Rebooten und Reseten der Hardware des Microcontrollers behoben werden. Fürs Ausprobieren der Beispielprogramme auf dem Feather S3 wurden neue Librarys installiert. Darauf folgte eine Videovortrag von Deepak Khatri, dem Gründer und Entwicklungsleiter von UpsideDownLabs. Er hat seine Produkte zur DIY Neuroscience vorgestellt. Diese Hardware wird im Verlauf der Blockwoche eingesetzt und musste zusammengelötet werden. Erfolgreich konnte ein EKG und EMG abgenommen werden von den Probanden. Die neue Version von ARDUINO IDE hat einen Serial Monitor mit Autoscaling (nicht entfernbar) und keinen einzubringenden Filter. «Better Serial Plotter» und «Spike Recorder» sind zwei Alternativen um die Kurven genauer darzustellen. Aus unbekannten Gründen konnten beide Programme zwar erfolgreich installiert aber nicht angewendet werden. Wir erhielten am Nachmittag eine Einführung in die Bedienung der Laser-Cutter und 3D Drucker damit wir in den folgenden Tagen mit diesen Maschinen arbeiten können. Am Abend folgte ein Vortrag über IoT von Thomas Amberg mit einem anschliessenden Apero und einem Kulturbeitrag vom Künstler TeZ.

EMG wird am Arm eines Studierenden getestet
Hand EKG wird an den Unterarmen eines Studierenden getestet
Schematische Verdrahtung und Anwendung des EMG
Schematische Verdrahtung und Anwendung des EKG

Tag 3

Der Tag beginnt mit einem Input zur Skill-Share Session die am vierten Tag stattfinden wird. Alle Teilnehmer der Blockwoche schreiben was sie gut können und anderen beibringen könnten und was sie gerne selber lernen wollen. Mit einer Umfrage wurde erfasst wo die Klasse die meisten Interessen hat. Unsere Gruppe wird eine Skill-Share Session zum Thema Cocktail Creation leiten, da ein Gruppenmitglied eine Ausbildung zum Barkeeper hat. In der Gruppe wurde ein Brainstorming zu den zwei Hacks der nächsten Tage durchgeführt. Der Hack 1 ist ein Feuchtigkeitssensor in einer Windel mit einem Alarm. Es soll mit mehreren LED's und einem Summer ein Alarm ausgegeben werden, wenn die Windel feucht wird. Für den Bau eines Gehäuse für die Elektronik wurde der Lasercutter eingesetzt.


Die Ideen zu den Hacks
Hack 1 in Bearbeitung
Hack 1 ohne Feuchtigkeit mit grüner Anzeige
Hack 1 mit Feuchtigkeit mit roter Anzeige

Tag 4

Skillshare Session Fliegenfischen
Skillshare Session Cocktail Basics
Am Morgen wurden die Skillshare Sessions durchgeführt. Es wurden die Themen TCCC (Tactical Combat Casualty Care), Dumpster Diving, Fliegenfischen, Piano, Cocktail Creation und Open Science Hardware angeboten. Am Nachmittag wurde der Hack zwei gestartet und der Hack eins finalisiert in dem noch der Oszilator integriert wurde. Der Code dafür lautet:
int oscillatorPin = 7; // Pin 7 als Oszillator-Pin
#include <Adafruit_NeoPixel.h>
int GSR_Pin = 3; // input signal pin
int oscillatorPin = 7; // Pin 7 als Oszillator-Pin
#define PIN 6 // Anschluss
#define NUMPIXELS 16 // Anzahl Pixels
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Infos weiterleiten
void setup() {
 pinMode(GSR_Pin, INPUT); 
 pinMode(oscillatorPin, OUTPUT); // Definiere Pin 7 als Ausgang 
 Serial.begin(115200); 
 pixels.begin(); //Initialisierung
 pixels.clear(); // Alle Pixels Clear
}
void loop() {
 float gsrvalue = analogRead(GSR_Pin); 
 Serial.println(gsrvalue);
 delay(5);
 if (gsrvalue >= 150) {
   for (int i = 0; i < NUMPIXELS; i++) { // Für jedes Pixel dasselbe
     pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // von 0,0,0 up bis 255,255,255
  digitalWrite(oscillatorPin, HIGH); // Setze den Pin auf HIGH
   delayMicroseconds(125); // Warte 125 Mikrosekunden (1/2 der Periode von 4 kHz)
   digitalWrite(oscillatorPin, LOW); // Setze den Pin auf LOW
   delayMicroseconds(125); // Warte weitere 125 Mikrosekunden
   }
 } else {
   for (int i = 0; i < NUMPIXELS; i++) { // Für jedes Pixel dasselbe
     pixels.setPixelColor(i, pixels.Color(0, 150, 0)); // von 0,0,0 up bis 255,255,255
   }
 }
 pixels.show(); // Sendet ein Update zu den Pixels
}

Der Hack zwei sollte zuerst ein Wecker/Alarm sein der durch einen physischen Kontakt eine Person aufweckt wenn diese am Steuer einschläft. Das wollten wir durch einen Heartbeat Sensor ermöglichen. Wenn die Herzfrequenz unter einen gewissen Wert fällt sollte die Person wieder durch einen sanften Schlag geweckt werden. Der Sensor wurde aber durch den Elektrosmog im Fablab gestört deshalb musste eine andere Art Sensor gewählt werden.

Tag 5

Für den zweiten oder schon fast dritten Hack haben wir uns auf eine Abänderung des zweiten festgelegt. Es soll ein Gerät gebaut werden mit dem Sekundenschlaf festgestellt werden kann und durch einen Scherenarm ein Aufwachschlag durch eine 3D gedruckte flexible Faust gegeben werden. Durch ein EOG soll festgestellt werden ob geblinzelt wurde oder ob die augen ohne ein aktives Blinzeln zufallen. Im zweiten Fall soll die Faust auslösen und ein Schlag austeilen.


Programmierung EOG

void setup() {
 // put your setup code here, to run once:
 pinMode(A2, INPUT);
 Serial.begin(115200);
}
void loop() {
 // put your main code here, to run repeatedly:
int value = analogRead(A2);  
Serial.println(value);
delay(100);
}

Von den am Tag vier verwendeten Herzschlagsensoren war einer Defekt. Da wir aber den Sekundenschlaf mit dem EOG interessanter fanden haben wir mit dieser variante weitergearbeitet. Während der Scherenarm gebaut und die Faust gedruckt wurde, wurde der Code für den Sensor sowie das EOG geschrieben und versucht miteinander zu kombinieren. Der Absturz eines Laptops hat uns dabei zurückgeworfen da das letzte speichern schon länger zurück lag. Auch gab es Probleme das zuvor funktionierende EOG wieder korrekt zum laufen zu bringen. Der Arm lässt sich direkt über ein Programm für den Sensor steuern. Das verbinden mit dem EOG hat am Ende nicht funktioniert.

Für das EOG wurde 500 als Referenzwert angegeben. Wenn aktiv geblinzelt wird, steigt der Wert über 700 und fällt auf unter 350 bevor wieder der Referenzwert wieder erreicht wird. Wenn die Augen Zufallen ohne aktiv zu blinzeln wie beim Sekundenschlaf gibt es keinen Spike und der Wert fällt auf unter 350. Diese Eigenschaft wollten wir ausnutzen um nur ein Signal auszugeben wenn es keinen Spike vor den Drop gibt.

Nach dem Computerabsturz konnten wir keine Werte um den Referenzwert erhalten und es gab auch kaum Unterschiede zwischen dem Hintergrundrauschen und dem Blinzelsignal. Um am Ende des Tages einen Funktionierenden Prototyp zu haben, wurde ein Druckknopf als Signalgeber eingebaut. Dadurch kann der Scherenarm aus und wieder einfahren.

Electrooculography-Vertical.jpeg

Programmierung Wachmacher

#include <Servo.h>
Servo myServo;
const int spike_threshold = 700; // Spike-Schwelle
const int drop_threshold = 350; // Drop-Schwelle
const int no_spike_threshold = 580; // Schwelle für Drop ohne Spike
const int output_pin = 1; // Ausgangspin für den Output
const int input_pin = A2;
int sensor_value; // Variable für den Sensorwert
bool spike_detected = false; // Flag für Spike-Erkennung
void setup() {
 Serial.begin(9600); // Initialisieren der seriellen Kommunikation
 pinMode(output_pin, OUTPUT); // Initialisieren des Ausgangspins
 pinMode(input_pin, INPUT);
 servo.attach(9); // Servo an Pin 9 anschließen
 pinMode(7, INPUT); // Eingang am Pin 7 definieren
}
void loop() {
   sensor_value = analogRead(A2); // Lesen des Sensorwerts
 Serial.println(sensor_value); // Ausgabe des Sensorwerts im seriellen Monitor
 if (sensor_value > spike_threshold) { // Wenn ein Spike erkannt wird
   spike_detected = true;
 }
 if (spike_detected && sensor_value < drop_threshold) { // Wenn ein Spike erkannt wurde und ein Drop unterhalb der Schwelle erfolgt
   spike_detected = false; // Zurücksetzen des Spike-Flags
   digitalWrite(output_pin, LOW); // Deaktivieren des Outputs
 }
 if (sensor_value < drop_threshold && sensor_value > no_spike_threshold);  // Wenn ein Drop ohne Spike unterhalb der Schwelle erfolgt
   digitalWrite(output_pin, HIGH); // Aktivieren des Outputs
   servo.write(60); // Servo um 60 Grad drehen
   digitalRead(7) == HIGH;  // Überprüfen, ob Eingangssignal HIGH ist
   delay(200); // Halbe Sekunde warten
 else {
   servo.write(0); // Servo auf 0 Grad setzendelay(100); // Verzögerung, um Flackern im Output zu vermeiden
 }
}

Wegen zu vielen Interferenzen, "Elektrosmog", in der Werkstatt konnten keine genauen Signale erkannt und analysiert werden. Am nächsten Tag werden die Präsentationen über unsere Projekte vorgestellt. Zu Vorzeigezwecken die Bewegung des Wachmachers zu demonstieren wurde die Bewegung mit einem Taster verknüpft.

Der Code für den Knopfheadshot lautet

#include <Servo.h>
Servo myservo;  // Objekt zur Servosteuerung erstellen
int button_pin = 2;  // Pin-Nummer des Tasters
int button_state = 0;  // Aktueller Zustand des Tasters
int last_button_state = 0;  // Vorheriger Zustand des Tasters
void setup() {
 myservo.attach(9);  // Servo an Pin 9 anschließen
 pinMode(button_pin, INPUT_PULLUP);  // Taster an Pin 2 anschließen und Pull-up-Widerstand aktivieren
}
void loop() {
 button_state = digitalRead(button_pin);  // Zustand des Tasters lesen
 if (button_state != last_button_state) {  // Wenn sich der Tasterzustand geändert hat
   if (button_state == LOW) {  // Wenn der Taster gedrückt wird
     myservo.write(120);  // Servo auf 120 Grad setzen
   } else {  // Wenn der Taster losgelassen wird
     myservo.write(0);  // Servo auf 0 Grad setzen
   }
 }
 last_button_state = button_state;  // Vorherigen Tasterzustand aktualisieren
 delay(10);  // Kleine Verzögerung, um Flattern zu vermeiden
}


Side Hack Kaffehalterung für Spind
Neben den Hacks 1 und 2 haben wir noch einen zusätzlichen, kleinen Side Hack erstellt. Bei diesem Hack Stand vor allem der Umgang mit dem Lasercutter im Fokus. Im CAD wurden die nötigen Bauteile für die Kaffeehalterung passgenau für den Spind an der HSLU konstruiert. Die Daten wurden in eine dxf-Datei umgewandelt und in das Programm des Lasercutters hochgeladen. Nach einigen anfänglichen Schwierigkeiten mit den eingravierten Mustern ging es mit dem cutten los. An den Hinterseiten der jeweiligen Teilen wurden Magnete angebracht um die Platten im Spind zu befestigt.

Tag 6

Am Samstag Morgen stellten alle Teams ihre Projekte vor. In einer je ca. fünfzehnminütigen Präsentation wurden die beiden Hacks präsentiert und vorgezeigt. Auch wurde erzählt wie es zu den Ergebnissen kam, was gut funktioniert hat und wo Probleme bestanden die gelöst wurden oder weiterhin bestehen. In einer offenen Fragerunde konnten die Teams nach ihren Präsentationen Fragen der Mitstudierenden und der Dozenten beantworten und ein kurzes Feedback erhalten.

In einer geführten Rückblick-Feedbackrunde wurden positive und negative Aspekte sowie Dinge, die gefehlt haben aufgeschrieben. Zu diesen Punkten konnten Kommentare eingebracht werden und Diskussionen geführt werden. Das Feedback soll helfen die nächsten Blockwochen noch besser zu gestalten und den Studierenden das bieten, was sie erwarten.

Reflexion, Learnings und Feedback

Die Blockwoche MedTech DIY hat uns alle weitergebracht. Auch wenn nicht alles Funktioniert hat, konnten wir, für manche von uns neue, Produktionstechnologien kennenlernen und ausprobieren. Damit fällt auch die Hemmschwelle in Zukunft Geräte wie Lasercutter und 3D Drucker zu bedienen.

Die Arbeit in einem Interdisziplinären Team wurde sehr geschätzt. Auch das freie Arbeiten war für einige Teammitglieder ein grosser Pluspunkt. Im Kontrast dazu hätte es für andere ein klareres Ziel gebraucht, um sich nicht in Spielereien zu verlieren. Da nur ein Teammitglied brauchbare Programmiererfahrung mitbrachte, wurde viel Zeit mit Coden verbracht. Das hat die Entwicklung von komplexeren Systemen erschwert, da manchmal nicht einmal die Grundlagen funktioniert haben.

Zurück zu Medizintechnik DIY