Leuchtender Shisha-Schlauch DIY Personal Fabrication Lucas Grunenberg Michaela Wensing Christian Schlumberger Zusammenfassung—Ziel des Projektes Leuchtender ShishaSchlauch ist es einen Handelsüblichen Latex Shisha Schlauch so zu modifizieren, dass er abhängig von der Dichte des Shisha Rauchs leuchtet. Dabei sollen Die konkreten Leuchteigenschaften durch eine einfache Programmierung variabel gehalten werden. • Notwendige Elektronik inklusive Stromversorgung soll möglichst unauffällig und robust am Schlauch selbst angebracht werden. • Die Reinigung aller dem Rauch ausgesetzten Teile leicht möglich sein. • Der gesamte Aufbau portabel bleiben. In diesem Dokument wird zunächst das Konzept und der generelle Aufbau des Projekts beschrieben. Darauf folgt jeweils ein Kapitel zur erläuterung der verwendeten Mechanik, Elektronik und Informatik. • I. KONZEPT A. Genereller Aufbau Shisha Es wird eine Handelsübliche Shisha verwendet. Wichtig ist lediglich, dass ein herkömmlicher Silikonschlauch, Durchmesser ca. 19mm ansteckbar ist. Kleinere Schläuche sind zu eng um den LED-Schlauch zu beherbergen. LED − Streif en Um eine zusätzliche Stromquelle zur Versorgung der LEDs zu vermeiden empfiehlt es sich einen LED-Streifen zu wählen der vom Microcontroller selbst versorgt werden kann. In unserem Projekt wurden LEDs vom Typ W S2812 mit 5V Versorgungspannung gewählt. Sensorik Die Dichte des Rauchs im Schlauch wird mit Hilfe einer Steuerungs-LED und gegenüberliegendem Lichtwiderstand im Schlauch selbst gemessen. P latine Tragendes Element der Elektronik ist eine mit Eagle CAD entworfene Platine. M icrocontroller Als Microcontroller wurde aus platztechnischen Gründen der AtTiny13 von Atmel gewählt. Auf bau Die Sensorik ist komplett im Adapter zwischen Shisha und Schlauch versenkt. Über den Adapter wird ein mit dem 3D-Drucker erstellter Ring geschoben, welcher die Platine einschliesslich Microcontroller enthält. Der LED-Streifen wird durch den Schlauch gezogen um Abbildung 1. Konzept diesen von innen zu beleuchten. Im eingeschalteten Zustand misst der Lichtwiderstand wieviel Licht der gegenüberliegenden Steuerungs-LED durch den Rauch ankommt. Im Microcontroller wird diese Information periodisch ausgelesen, verarbeitet und seriell an die Datenleitung des LED-Streifens weitergegeben. II. M ECHANIK A. Robustheit Eine Shisha wird meist von mehreren Menschen geteilt, wodurch oft an ihr gerüttelt wird. Beim Aufbau wird mit glühenden Kohlen und Wasser hantiert. Bei der Abbildung 2. OpenSCAD Abbildung 3. Hülle und Platine Benutzung ist der Shisha-Schlauch selbst in Beweung und wird in verschiedene Richtungen gebogen. Um die Sensorik zu schützen und von Bewegungen des Schlauchs möglichst unabhängig zu machen haben wir beschlossen die Steuerungs-LED und den lichtabhängigen Widerstand direkt im soliden Verbindungsstück zwischen Shisha und Schlauch zu versenken. Der Abstand zwischen LED und Sensor bleibt dadurch bei Bewegungen im Schlauch konstant und der Schlauch selbst schützt die Sensorik vor äusseren Einwirkungen. Um die Platine vor Feuchtigkeit und anderen äußeren Einflüssen zu schützen, wurde mit OpenSCAD eine Hülle erstellt, die mit dem U ltimaker2 gedruckt wurde. Die Datei kann man zum erleichterten Nachbau inklusive Text in Abbildung 2 sehen. Sie besteht aus 2 Teilen, welche die Platine umschließen und am Ende zusammengeklebt werden. In Abbildung 3 sieht man die Platine und die Hüllen nebeneinander, in Abbildung 4 ineinander gelegt. In die Platine wurde anschließend noch ein Loch der Größe des Schlauchs gesägt, damit beides über den Schlauch geschoben werden kann. B. Reinigung Ein Shisha-Schlauch verklebt bei der Benutzung leider schnell. Es ist demnach wünschenswert sowohl den Schlauch selbst als auch alle dem Rauch ausgesetzten Teile nach dem Rauchen ordentlich zu reinigen. Solange sich der LED-Stripe im Schlauch befindet kann weder der Schlauch gebürstet, noch der LED-Stripe gewaschen werden. Die Verbindung zwischen Platine und LED-Stripe muss allerdings durch die Hülle des Schlauchs gehen und ist um wasserdicht zu bleiben extra versiegelt. Möglich wäre eine Steckverbindung zwischen LEDStripe und den Kabeln der Platine innerhalb des Schlauchs, welche allerdings schwer zu benutzen wäre und potentiell anfällig für die im Schlauch vorherrschende Feuchtigkeit. Wir haben uns stattdessen entschieden ein ca 10cm breites Stück Abbildung 4. Platine in Hülle des Schlauchs abzutrennen und mit einem gedrehten Adapter aus Aluminium wieder zu verbinden. So kann die Sensorik, die Platine als auch der LED-Stripe fest verbunden montiert werden. Zum Reinigen muss man nur das lange Ende abziehen und danach der LED-Stripe wieder einführen. Als praktischer Nebeneffekt kann so auch der lange Schlauch ausgetauscht werden um Länge oder Lichtdurchlässigkeit zu ändern. C. Energieversorgung Für die Energieversorgung wurde bei der Platinenerstellung der Anschluss zu einem micro USB-Port gelegt. So können die LED sowohl über Kabel, als auch über eine Powerbank betrieben werden, wenn keine Steckdose in der Nähe ist. Durch diese Möglichkeit, kann der Schlauch auch problemlos im Freien beleuchtet werden. III. E LEKTRONIK A. Voraussetzungen Zunächst muss festgelegt werden, welche Eigenschaften die im Projekt enthaltene Elektronik aufweisen muss. Zu diesen zählt folgendes: • Kleine Abmessungen: da der modifizierte ShishaSchlauch optisch so wenig wie möglich von einem handelsüblichen zu unterscheiden sein soll, muss Elektronik möglichst klein und und unauffällig sein. • Messung der Lichtdurchlässigkeit im Schlauch • Ansteuerung eines LED-Streifens • Möglichkeit zur portablen Stromversorgung Wie die einzelnen Anforderungen bewerkstelligt wurden, soll nun im Einzelnen beschrieben werden. B. Messung der Lichtdurchlässigkeit Die Lichtdurchlässigkeit des Schlauchinhalts wird über eine Lichtschranke bestehend aus einer LED und einem lichtabhängigen Widestand (engl. light-dependent resistor, LDR) bewerkstelligt. Die LED der Lichtschranke ist wie üblich mit einem einfachen Vorwiderstand zum Einstellen des Stromes durch sie ausgestattet. Auf eine aktive Stromquelle wurde zum Zweck der Platzund Aufwandsersparnis verzichtet. Da die Eingangsspannung der Elektronik mit nahezu 5 Volt kaum schwankt, gehen damit keine nennenswerten Nachteile einher. Lediglich die Dimensionierung des Vorwiderstands muss geklärt werden. Unter Berücksichtung der Gegebenheiten von 5 Volt Versorgungsspannung, einer Diodenspannung von 1,6 Volt und einem maximalen Strom durch die LED von 20 Miliampere ergibt sich für den Wert des Widerstands UR Uges − UD 5V − 1, 6V = = = 170Ω RV = I I 20mA Dieser Widerstandswert wird durch ein Poti und einen Festwiderstand realisiert. Der Festwiderstand von 150 Ohm setzt den maximalen Strom durch die LED und mit dem 470 Ohm Poti kann der Strom bei Bedarf reduziert werden. Die Beschaltung des lichtabhängigen Widerstandes stellt einen Spannungsteiler dar. Die Mittelspannung ADC dieses Spannungsteilers PH1 R1 GND ist dementsprechend +5V lichtabhängig und kann mit dem AnalogAbbildung 5. caption Digital-Wandler eines Mikrocontrollers gemessen und anschließend ausgewertet werden. Als idealer Widerstand für R1 hat sich ein Wert um 50 Kiloohm ergeben. Laut Datenblatt des verwendeten Mikrocontrollers besitzen dessen Ein- und Ausgangspins einen PullUp-Widerstand welcher per Software aktiviert werden kann. Dieser hat einen Wert zwischen 30 und 50 Kiloohm und kann dementsprechend als Widerstand für den Spannungsteiler dienen und somit Platz auf der Platine einsparen. Zwar ist ein Mischbetrieb aus Pull-Up-Widerstand und Analog-DigitalWandlung nicht vorgesehen, ein Test hat jedoch ergeben, dass dies ohne Einschränkungen funktioniert. C. LED-Beleuchtung Als Beleuchtung für den Schlauch soll ein moderner, frei adressierbarer LED-Streifen auf Basis der WS2812 Bausteine zum Einsatz kommen. Diese Bausteine können in einer individuellen Farbe pro LED beleuchtet werden und können dadurch beliebige Muster erzeugen. Die genaue Funktionsweise dieser LEDs soll hier nicht weiter erläutert werden, da diese schon mehrfach im Rahmen der DIY-Vorlesung verwendet und entsprechend dokumentiert wurden. Was jedoch zu klären ist, ist der Strombedarf. Eine EinzelLED benötigt bei voller Helligkeit einen Strom von ca. 60 mA. Da zur Stromversorgung die USB-Schnittstelle verwendet wird, welche laut Spezifikation einen maximalen Strom von 500 mA liefern kann wären hierbei nur weniger als 10 LEDs möglich. Da der Shisha-Schlauch aber sowieso hauptsächlich in schlecht Beleuchter Atmosphäre benutzt wird, kann ohne Probleme die Leuchtstärke der LEDs verringert werden. Es hat sich ergeben, dass ein Helligkeitswert von unter 25 Prozent für den Zweck immernoch ausreichend hell ist und sich die Stromaufnahme pro LED dabei auf ca. 10 mA reduziert. D. Mikrocontroller Als Mikrocontroller soll ein AVR-Chip des Herstellers Atmel zum Einsatz kommen. Für diesen spricht vorallem die einfache Programmierbarkeit. Abbildung 6. AtTiny13 Da ein signifikanter Einflussfaktor die Platinengröße sein soll, wurde der kleineste von Atmel hergestellte Chip aus dieser Serie gewählt. Dies ist der AtTiny 13 im DFN-Gehäuse. Dieser Chip hat eine sehr kleine Abmessung von nur 3 x 3 mm. Mit der Wahl dieses Mikrocontrollers gehen allerdings auch Nachteile einher. Zum Einen besitzt er einen sehr kleinen Abstand der Kontakte von nur 0.5 mm, was hohe Anforderungen an die Fertigung der Platine stellt und diese somit im FAU FabLab nur schwer hergestellt werden kann. Ausserdem sind die Kontakte ohne Lötbeine ausgeführt, was das Löten entsprechend erschwert. R2 R3 Zum Anderen besitzt der Mikrocontroller einen sehr eingeschränkten Programmspeicherplatz von nur 1 Kilobyte, 2C weshalb bei der Programmierung des Mikrocontrollerprogramms auf eine Speicherplatzsparende Arbeitsweise geachtet werden muss. Durch die Wahl des MikroconAbbildung 7. Platine trollers und anderer platzsparender Kniffe konnte die Platine auf eine Kreisform mit 27,5 mm Durchmesser und 19 mm Mittelloch reduziert werden, die auf den Shisha-Schlauch gesteckt werden kann. TPB1,27 TPB1,27 TPB1,27 TPB1,27 TPB1,27 1C X1 TPB1,27 Setup Im Setup werden die benötigten Pins als IN;- bzw. OUTPUT definiert um später einfach darauf zugreifen zu können. In diesem Fall wird je ein digitaler Pin als Output für die Steuerungs-LED und den LED-Schlauch benötigt. Der Lichtsensor befindet sich an einem Analogen Eingang und muss nicht im Setup definiert werden. Da die Steuerungs-LED immer mit demselben festen Wert leuchtet kann diese bereits im Setup auf die gewählte Helligkeit gesetzt werden. 1 2 3 4 5 6 int LED = 8; //Steuerungsled #define helligkeit 64 void setup() { pinMode (LED, OUTPUT); pinMode (schlauch, OUTPUT); 7 analogWrite(LED, helligkeit); 8 9 IV. I MPLEMENTIERUNG Die Anforderungen an den Mikrocontroller sind beim leuchtenden Shisha-Schlauch denkbar gering. Er muss: • • • Eine Steuerungs-LED versorgen um den Lichtsensor zu bestrahlen Regelmässig den Lichtwiderstand messen Gemäss dem gemessenen Licht LED’s im Schlauch anschalten } Loop Der Loop wird als Endlosschleife ausgeführt und stöst in jedem Durchlauf das Auslesen der Lichtwerte (analogRead) und das Setzen der LEDs im Schlauch (setLeds) an. Wenn man für verschiedene Effekte wie Beispielsweise “fading” die vorherigen Lichtwerte benötigt empfiehlt es sich die alten Werte hier zu speichern und an die setLeds Methode weiterzureichen. A. Arduino Variante 1 Arduino bietet sich dank einer einfach benutzbare IDE (hier verwendet Arduino 1.6.7), mit vielen Codebeispielen und einfachem Übertragen der Software auf einen Arduino per USB mithilfe des integrierten Bootloaders für eine schnelle und einfache Lösung an. Im folgenden werden die für einen leuchtenden Shisha-Schlauch benötigten Funktionen und ihre Zusammenarbeit dokumentiert. LEDSetup Der WS2812 LED-Schlauch hat eine Datenleitung welches sich leider nicht gemäß eines standardisierten seriellen Interfaces verhält. Stattdessen ist das WS2812 Interface sehr Zeitkritisch. Logisch 1 und 0 werden als Rechteckimpuls dargestellt. Die Länge des Impulses bestimmt hierbei den Wert. Für den Arduino existieren fertige Libraries zum Ansteuern des Schlauches, z.B. die “Adafruit_NeoPixel” Library, welche die Zeitliche Abstimmung mit Abbildung 8. timing diagram dem Schlauch für uns übernimmt. 2 3 4 5 6 8 3 4 int schlauch = 7; //LED-Schlauch #define max = 87; //Anzahl LEDs im Schlauch Adafruit_NeoPixel leds = Adafruit_NeoPixel (LED_COUNT, PIN, NEO_GRB + NEO_KHZ800); old = new; 9 10 } setLeds Die setLED Methode bestimmmt das gesamte Verhalten des Shisha-Schlauchs. Der verwendete Sensor liefert Werte zwischen 0 und 1024. Im oben beschriebenen Aufbau liegen die tatsächlich gemessenen Werte zwischen 0 und 500. Der LED-Schlauch is mit 87 LEDs bestückt. Eine sehr einfache Implementierung setzt einfach mit Hilfe der setP ixelColor library new/6 LEDs. 1 2 3 4 5 6 7 8 9 2 setLeds(new, old); 7 10 1 int in = A0; //Lichtsensor int old = 0; void loop() { int new = analogRead(eingang); 11 12 13 14 voi setLED(int new, int old) { int thresh = new / 6; if(thresh > max) tresh = max; int i; for(i = 0; i < max; i++){ if(i < thresh) { leds.setPixelColor(0,0,64); } else { leds.setPixelColor(0,0,10); } } } Anhand des vorherigen Werts kann man aber ausgefallenere Muster wie zB. “fading” einbauen oder bei besonders starken Zügen ausgefallene Muster anzeigen lassen. ausgeführt werden muss um die geforderten 0.35µs zu warten, bevor das Bit zurückgesetzt wird und die restlichen 0.8µs gewartet wird (siehe Abb. 8). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 if ((new - old) > 50) { rainbow(); } int fade = 54 / (old - new); int tmp = 54; for(i = 0; i < max; i++){ if(i < thresh) { if(i > old) { leds.setPixelColor(0,0,10 + tmp); tmp -= fade; } else { leds.setPixelColor(0,0,64); } } else { if(i < old) { leds.setPixelColor(0,0,10 + tmp); tmp -= fade; } else { leds.setPixelColor(0,0,10); } } } Generell sind beim Arduino der Kreativität des Programmierers (kaum) Grenzen gesetzt. Erweiterungen durch zusätzliche Taster und Sensoren sind leicht realisierbar. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 __asm__ volatile ( "sbi %[port], %[bit] \n\t" ".rept %[onCycles] \n\t" "nop \n\t" ".endr \n\t" "cbi %[port], %[bit] \n\t" ".rept %[offCycles] \n\t" "nop \n\t" ".endr \n\t" :: [port] "I" (_SFR_IO_ADDR(PORTB)), //Port des Schlauchs^ [bit] "I" (3), //Bit des Schlauch Pins [onCycles] "I" (NS_TO_CYCLES(350) - 2), [offCycles] "I" (NS_TO_CYCLES(800) - 2) ); wrapper Der WS2812 LED-Schlauch erwartet die Helligkeiten seiner LEDs in der Reihenfolge grün, rot, blau, beginnend mit dem jeweils höchsten Bit. Die sendBit Methode sendet aber immer nuer ein einzelnes Bit auf den Datenkanal. Es muss also eine einfache Wrapperfunktion erstellt werden welche sendBit für jedes Byte der Farbcodierung 8 mal in der richtigen Reihenfolge aufruft. B. AtTiny13 Variante Die Programmierung auf dem AtTiny13 Microchip verläuft ähnlich wie auf dem Arduino. Es gibt aber auf dem AtTiny13 deutlich weniger Arbeitsspeicher und deshalb passende Bibliothek zur Steuerung der NeoPixel, welche einfach vorgeladen werden kann. Stattdessen muss der Zeitkritische Teil der Kommunikation selbst per Assembler realisiert werden. def ines Um den Assembler-Teil einigermassen übersichtlich zu gestalten und die Verzögerungen in Nanosekunden angeben zu können sind einige defines zur Umrechnung notwendig. 1 2 3 4 5 #define NS_PER_SEC (1000000000L) #define CYCLES_PER_SEC (F_CPU) #define NS_PER_CYCLE ( NS_PER_SEC / CYCLES_PER_SEC ) #define NS_TO_CYCLES(n) ((n)/NS_PER_CYCLE) Jetzt können Verzögerungen gemäs der Spezifikation in Nanosekunden angegeben werden und mit N S_T O_CY CLES in Taktzyklen umgerechnet werden. sendBit Das Anschalten und Abschalten der LEDs funktioniert analog, nur die Wartezeiten müssen entsprechend geändert werden. Hier wird das Abschalten einer LED im Schlauch beschrieben. Die Kommunikation mit dem Led-Schlauch ist Zeitkritisch, weshalb hier per Inline Assembler nach dem Setzen des Bits am entsprechenden Port die richtige Menge an NOPs timeouts Wird dem LED-Schlauch mindestens 50µs keine weitere LED-Farbe mitgeteilt interpretiert dieser die Pause als Reset und wird den nächsten Befehl wieder auf die erste LED anwenden. Für die setLed Methode bedeutet dies einerseits, dass am Ende der Methode ein simples _delay_us(50) genügt um das Setzen der LEDs zu beenden. Leider muss aber auch die Komplexität der Berechnungen beim setzen der LEDs gering genug gehalten werden, dass der auf 9.6MHz getaktete AtTiny nicht länger als 50µs für seine Berechnungen braucht. Die oben skizierte ausführlichere setLed Methode überschreitet diesen Wert in unseren Tests regelmässig. Der geringe Arbeitsspeicher eines AtTiny13 lässt auch nicht zu die Helligkeitswerte jeder LED vor der Schleife zu berechnen und zwischen zu speichern. Es ist aber durch durch einfache lineare Schleifenrestrukturierung möglich Berechnungen für ein binäres Fading vor die Schleife zu ziehen, oder Werte für Gruppen von LEDs zu speichern ohne über die Zeit;- bzw. Platzbegrenzung zu kommen. V. S CHLUSSFOLGERUNG Zum aktuellen Stand des Projektes kann man als Ausblick und Verbesserungsmaßnahme folgendes anbringen: A. Probleme • • • Abschirmen des Photowiderstandes um den Einfluss von Tageslicht zu verringern - hierfür soll eine größere Hülle gedruckt werden, die sowohl die Platine schützt, als auch LED und Widerstand einschließen um so das Licht abzuschirmen Der Rauch im Schlauch verflüchtigt sich nicht schnell genug damit ein schöner Rückgang der Lichtintensität entsteht; er wird nie ganz auf Null sinken, da der Rauch im Bauch der Shisha auch nie ganz verschwindet der Mikrocontroller ist nicht Leistungsfähig genug um interessantere Effekte als einen einfachen Bargrafen auf dem LED-Streifen darzustellen. B. Wünschenswertes Ausserdem sind noch diverese Erweiterungen zum aktuellen Stand denkbar. die Hülle in einer Farbe passend zur Shisha (erst möglich, wenn es neues Filament gibt) • ein schnellerer Mikrocontroller um die möglichen Abfolgen und Farben variieren zu können. Hier bietet sich ein ARM-Mikrocontroller, da sämtliche Mikrocontroller der verwendeten Serie größere Gehäuseabmessungen haben. • das erwähnte Zwischenstück einbauen, um bessere Reinigung und Portabilität zu gewährleisten • Durchfluss- oder Komponentensensoren bilden eine weitere Möglichkeit, den Rauch zu messen. Die Programmierung müsste dann an die neuen Werte angepasst werden. • Der Einbau einer Programmiermöglichkeit direkt in das Gehäuse, damit man den Mikrocontroller je nach Stimmung oder Umgebungshelligkeit leicht umprogrammieren kann. so kann man z.B. an einem Abend auf eine Farbe beschränken oder die Leuchtintensität anpassen, je nachdem wo man sich befindet und wie hell ist, damit der Schlauch nicht blendet, in hellen Räumen aber trotzdem zur Geltung kommt •
© Copyright 2025 ExpyDoc