Projekte/Infinity-Mirror-Catears
< Projekte
Jump to navigation
Jump to search
Infinity mirror Cat Ears
Wir alle lieben Katzenohren, wir sind alle fasziniert von Infinity Mirror.
Wieso also nicht beides kombinieren? :D
BOM
- ESP32_Devkit
- Kupferlackdraht 0,3 mm
- ~ 1m Kabel 3 Adern
- ca. 27cm WS2812C-2020 RGB 4mm breite Streifen 300 LED/m
- Micro USB Kabel + Powerbank als Stromversorgung
- Behältniss für den ESP
- 4 Breadboard Kabel unterschiedlicher Farbe , Buchse-Buchse
- 2mm starkes Plexiglas
- Spiegelfolie
- Sekundenkleber
- Heißkleber
- Schrumpfschlauch
- Isolierband
- 3d-Druck Filament
- Lötzinn
Werkzeug
- Lötkolben
- Lasercutter
- 3d-Drucker
- Heißklebepistole
- Skapell + Schneidbrett
- Schraubzwinge
- Computer
- Cuttermesser/Abisolierwerkzeug
- Seitenschneider
Arbeitsschritte
- Ohren drucken und bei Bedarf nacharbeiten (insbesondere auf die Kabelschächte achten)
- erstmal eine Testscheibe lasern und bei Bedarf Skalierung anpassen da Drucker und Laser unterschiedliche Toleranzen haben (bei mir passten 99% leicht klemmend)
- 4 Ohrscheiben lasern
- Spiegelfolie mit dem Skapell zuschneiden indem die Folie mit der Schraubzwinge zwischen der Ohrscheibe und dem Schneidbrett eingeklemmt wird und die Ohrscheibe als Führung dient
- Spiegelfolie gemäß den Herstellerangaben auf die Scheiben anbringen
- mit Arduino IDE den Code auf den ESP32 flashen
- vom LED Streifen zwei 3 Segment und zwei 5 Segment Streifen abschneiden
- zweimal jeweils ein 3 an ein 5 Segment Streifen mit ca 5mm langen Kupferlackdraht Stücken löten (LED Richtung beachten !!!, die Daten gehen erst durch das 5 Segment Stück)
- Adern des Kabels durch den Haarreifkabelkanal durchfädeln und bis ins letzte Ohr fädeln (wenn euere Adern zu dick sind kann auch der Kupferlackdraht verwendet werden)
- Ende der Adern an das 5 Segment Ende eines LED Streifens löten, darauf achten dass der Streifen auf den Adern liegen muss und keine “Verlängerung” ist
- LED Streifen testweise ins Ohr legen und im Anderen Ohr markieren wo der 2. LED Streifen angelötet werden muss
- bisschen mehr Kabel in die Ohren schieben um die markierte Stelle zum Bearbeiten rauszuschieben, die Stelle abisolieren und den Zweiten LED Streifen anlöten
- von 3 Breadboard Kable ein Stecker Abschneiden und die Stecker an das Katzenohrkabel löten, Schrumpfschlauch nicht vergessen
- Kabel auf den ESP32 stecken (+ auf 5v, - auf GND, und Datenleitung auf Pin16)
- 4. Breadboardkabel als Jumper zwischen Pin 5 und GND auf den ESP32 verwenden
- Als Test den ESP32 mit Strom versorgen, die LED Streifen sollten jetzt alle blau leuchten
- Wenn der Test erfolgreich war die LED Streifen in den Rahmen kleben
- Ohrscheiben mit der Spiegelfolie nach innen in den Rahmen einsetzen und bei Bedarf mit Sekundenkleber festkleben
- Mit Heißkleber, Schrumpfschlauch und Isolierband eine Zugentlastung fürs Kabel improvisieren
- ESP32 in das Behältniss eurer Wahl einbauen
- ESP32 mit dem USB Kabel an die Powerbank anstecken
- Katzenohren aufsetzen und cute sein :3
Hinweise
- je nachdem welchen Pin der Jumper mit Gnd verbindet leuchten die Ohren anders. (19= wandernder Regenbogen, 18 = Orange blinkend, 5 = Blau, 17=weiß )
- Die Ohren werden zwar warm haben sich bei mir aber auch nach stundenlangem tragen nicht zerstört
- Mir wurde das Feedback gegeben dass die Ohren teilweise blenden.
- Zurzeit sind die Ohren Parallel und können nicht unabhängig voneinander angesteuert werden
Download
3d Modelle
Ohrscheibe
Code
// CC-BY Wutchilli //sudo chmod 666 /dev/ttyUSB0 (personal memory of a Linux command) #include <Adafruit_NeoPixel.h> #define PIN_WS2812C 16 // The ESP32 pin GPIO16 connected to WS2812C #define NUM_PIXELS 40 // The number of LEDs (pixels) on C LED ws2812c Adafruit_NeoPixel ws2812c(NUM_PIXELS, PIN_WS2812C, NEO_GRB + NEO_KHZ800); const int Jumper19 = 19; // GIOP19 pin connected to Jumper19 const int Jumper18 = 18; const int Jumper5 = 5; const int Jumper17 = 17; int currentState19; // the current reading from the input pin int currentState18; int currentState5; int currentState17; void setup() { ws2812c.begin(); // initialize ws2812c object (REQUIRED) pinMode(Jumper19, INPUT_PULLUP); //Jumper19 as Input defined pinMode(Jumper18, INPUT_PULLUP); pinMode(Jumper5, INPUT_PULLUP); pinMode(Jumper17, INPUT_PULLUP); } void loop() { ws2812c.show(); ws2812c.clear(); // set all pixel colors to 'off'. It only takes effect if pixels.show() is called currentState19 = digitalRead(Jumper19); currentState18 = digitalRead(Jumper18); currentState5 = digitalRead(Jumper5); currentState17 = digitalRead(Jumper17); if ((currentState19 == LOW) ) { for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) { // rainbow effect for(int i=0; i<ws2812c.numPixels(); i++) { int pixelHue = firstPixelHue + (i * 65536L / ws2812c.numPixels()); ws2812c.setPixelColor(i, ws2812c.gamma32(ws2812c.ColorHSV(pixelHue))); } ws2812c.show(); delay(5); } } if ((currentState18 == LOW) ) { // flashing orange signal light for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { ws2812c.setPixelColor(pixel, ws2812c.Color(255, 75, 0)); } ws2812c.show(); delay(1500); ws2812c.clear(); ws2812c.show(); delay(1500); } if (currentState5 == LOW) { // blue for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { ws2812c.setPixelColor(pixel, ws2812c.Color(0, 0, 255)); } } if (currentState17 == LOW) { // white for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { ws2812c.setPixelColor(pixel, ws2812c.Color(255, 255, 255)); } } }