Projekte/Infinity-Mirror-Catears

From dezentrale wiki
< Projekte
Revision as of 21:36, 15 June 2025 by Wutchilli (talk | contribs) (Created page with "== Infinity mirror Cat Ears == === BOM === * ESP32_Devkit * Kupferlackdraht 0,3 mm * ~ 1m Kabel 3 Adern * ca. 27cm WS2812C-2020 RGB 4mm breite LED 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 *Isol...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Infinity mirror Cat Ears

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));  
     
    }
}
}