Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

DIY Kaleidoskop-Infinity-Mirror – Bauen Sie eine beeindruckende LED-Lichtanzeige

Komponenten und Zubehör

Arduino 101 × 1
1m adressierbare ungefasste LEDs (60) – Dieser Sparkfun-Typ ist für dieses Projekt praktisch verdrahtet, Sie können aber auch Adafruit NeoPixels oder Ähnliches verwenden. × 1
Kurzes Stück Massivdraht oder Jumper-Pins – Um geflochtenen Draht Arduino-kompatibel zu machen. × 1
Schrumpfschlauch – Optional, wenn Sie es schick mögen. × 1
Hohlstecker-Buchse mit Schraubklemmen × 1
Hohlstecker-Stecker mit Schraubklemmen × 1
3x AA-Batteriehalter mit Schalter × 1
Pololu Spannungs-Step-Up-Regler – Dieser 4$ Regler ermöglicht die Stromversorgung des gesamten Projekts mit einem Batteriepack (3 AA-Batterien). Alternativ können Sie diesen Teil weglassen und einen 9V-Block für den Arduino 101 verwenden. Dann benötigen Sie aber trotzdem das 3-AA-Pack für die LEDs. × 1
AA-Batterien × 1
12″ quadratischer „Schattenrahmen“ Bilderrahmen – Die Tiefe und Größe dieses Rahmens ist perfekt! × 1
12″ quadratischer Spiegel – Passt in die Rückseite des Bilderrahmens. × 1
11″ Foto-Aufsteller – Zur Präsentation des fertigen Produkts. × 1
Spiegelnde Sichtschutzfolie – (Optional – verbessert den Effekt erheblich, aber nicht zwingend erforderlich) × 1
FoamCore – Standard 3/16″ oder 1/4″ FoamCore. Ich habe weiß verwendet, schwarz könnte aber auch gut aussehen. Sie benötigen genug für ein 12″ x 12″ Stück sowie für einen 1m langen, 0,5″ breiten Streifen. × 1

Benötigte Werkzeuge und Maschinen

Apps und Online-Dienste

Über dieses Projekt

Eine Mischung aus Kaleidoskop und Infinity-Mirror! Wenn Sie die Drehung des Spiegels ändern, ändern sich die Lichter als Reaktion darauf. Dieses Projekt wird mit einem handelsüblichen Spiegel und Bilderrahmen sowie einigen weiteren Komponenten gebaut. Das Arduino 101 Entwicklungsboard verfügt über integrierte Positionssensorik, die wir nutzen können, um den Winkel zu erfassen und die Lichtanzeige zu steuern.

Hinweis: Dieses Projekt verwendet die gleiche Elektronik wie das Holiday Shadow Theater – im Grunde nur einen Arduino 101, einen LED-Streifen und ein Batteriepack. Ich verwende einen 4$ Spannungsregler, damit dasselbe Batteriepack sowohl die LEDs als auch den Arduino 101 versorgen kann. Alternativ könnten Sie einen 9V-Block für den Arduino verwenden und den Regler weglassen.

Teil Eins: Den Spiegel bauen

Schritt 1: Schneiden Sie mit einem scharfen Cuttermesser oder Hobby-Messer ein 12″ x 12″ Quadrat aus FoamCore und markieren Sie die Mitte mit einem Bleistift. Sie können die Rückpappe des Bilderrahmens als Referenz verwenden.

Schritt 2: Zeichnen Sie mit einem Zirkel oder einer Schnur und Bleistift einen perfekten Kreis mit 5,25″ Radius, zentriert im 12 x 12 Quadrat. Sie können einen Lineal verwenden, um einen Punkt 0,75″ vom Rand des 12x12 Quadrats zu markieren und diesen als Startreferenz zu nutzen.

Schritt 3: Schneiden Sie den Kreis mit einem Cuttermesser oder Hobby-Messer mit neuer Klinge vorsichtig aus. Dieser Schnitt wird im Endprodukt sichtbar sein, also schneiden Sie so sauber wie möglich.

Schritt 4: Sobald das Loch ausgeschnitten ist, wählen Sie die schönere Seite und legen Sie sie mit der guten Seite nach unten auf eine saubere Arbeitsfläche.

Schritt 5: Schneiden Sie einen separaten ½-Zoll-Streifen FoamCore, ca. 36″ lang. Dieser kann bei Bedarf aus kürzeren Segmenten mit Klebeband zusammengesetzt werden. Halten Sie die Breite so gleichmäßig wie möglich bei 0,5″.

Schritt 6: Legen Sie den fertigen Streifen horizontal auf einen Tisch und schneiden Sie alle 2″ entlang der Gesamtlänge gleichmäßige vertikale Ritzen durch die obere Papierschicht.

Schritt 7: Drehen Sie den Streifen um und kleben Sie die LED-Lichterkette mit Heißkleber entlang der Länge des FoamCore-Streifens fest.

Schritt 8: Biegen Sie den fertigen Streifen mithilfe der auf der Rückseite des FoamCore geschnittenen Ritzen als Biegepunkte zu einem groben Kreis.

Schritt 9: Legen Sie den LED-Streifen ringförmig über das Loch in Ihrem 12x12″ FoamCore-Quadrat. Der komplette LED-Streifen wird zu lang sein. Passen Sie Ihren LED-Kreis so an, dass er gerade etwas größer als das Loch ist, und schneiden Sie die überzähligen LEDs ab (ca. 6 LEDs). Diese Reserve-LEDs können Sie später für ein anderes Projekt verwenden.

Schritt 10: Platzieren Sie den LED-Streifen ringförmig auf der Oberseite (schlechter Seite) Ihres 12x12″ Quadrats und kleben Sie ihn am Rand des Kreislochs fest. Achten Sie darauf, dass die Rückseite des LED-Rings mindestens 0,25″ vom Rand des 12 x 12″ Quadrats entfernt ist. (Andernfalls passen die schwarzen Kunststoffabstandshalter des Rahmens nicht drumherum.)

Schritt 11: Falls Sie die halbspiegelnde Folie verwenden, nehmen Sie das Glas aus Ihrem Schattenrahmen und bringen Sie die Folie gemäß der Herstelleranleitung auf dem Glas an. Ich fand dies den fummeligsten Schritt. Reinigen Sie das Glas zuerst und verwenden Sie Wasser (oder Seifenlauge), um Luftblasen leichter entfernen zu können. Die Spiegelfolie erzeugt eine viel stärkere Illusion und verbirgt die LEDs, ist aber nicht zwingend erforderlich (und kann später nachgerüstet werden!). Falls Sie Folie verwenden, legen Sie das Glas mit der folierten Seite nach oben/innen in den Rahmen zurück.

Schritt 12: Mit dem Rahmen nach unten und dem sauberen Glas positionieren Sie den FoamCore auf dem Glas, gute Seite nach unten, LED-Ring nach oben. Fügen Sie zwei der mitgelieferten Abstandshalter hinzu, dann legen Sie Ihren 12x12″ Spiegel mit der Vorderseite nach unten darauf. Die LED-Kabel sollten an der Rückseite des Rahmens am Spiegel vorbeiführen. Falls der Spiegel zu fest sitzt für die Kabel, müssen Sie eventuell mit einem Cuttermesser oder Hobby-Messer vorsichtig eine Kerbe für die Kabel in den Rahmenrand schneiden.

Falls Platz ist, fügen Sie den Karton-Rahmenrücken hinzu, oder halten Sie den Spiegel einfach mit den Rahmenklammern fest. Das war's mit dem Spiegelbau! Jetzt kommt die Elektronik-Magie.

Teil Zwei: Elektronik einrichten

Schritt 1: Suchen Sie die zusätzlichen 6 LEDs, die Sie zuvor abgeschnitten haben. Sammeln Sie den Kabelbaum vom Ende, schneiden Sie ca. 1 cm von den Lichtern ab. Isolieren Sie die Kabelenden ab.

Schritt 2: Trennen Sie die gebogenen Header-Pins, die Ihrem Spannungsregler beilagen, und löten Sie zwei davon an die Enden der grünen und gelben Drähte. Damit können Sie sie einfach in die Pins des Arduino 101 stecken.

Schritt 3: Löten Sie nun den roten Draht an den VIN-Anschluss des Spannungsreglers und löten Sie zwei gerade Header in die GND- und VOUT-Pins wie gezeigt.

Schritt 4: Verbinden Sie nun die Hohlstecker-Adapter. Zuerst die Enden der Kabel vom Batteriehalter abisolieren, dann in die Klemmen des männlichen Hohlsteckers montieren und mit einem Schraubendreher festziehen. ROT geht an (+), SCHWARZ an (-).

Als Nächstes verbinden Sie den weiblichen Hohlstecker-Adapter mit den losen Kabeln vom Anfang des LED-Streifens (kommend von der Rückseite Ihres Spiegels). An diesem Streifen geht GELB an (-) und ROT an (+).

Schritt 5: Verbinden Sie nun Ihren Kabelbaum mit dem Arduino 101. Der GRÜNE Draht geht an PIN 6, der GELBE Draht an den GND-Pin in der Nähe von #13.

Mit den beiden Header-Pins am Spannungsregler: GND an GND und VOUT an den „Vin“-Pin am Arduino 101. Verwechseln Sie das nicht! Falschherum eingesteckt führt zu Geruch und Verbrennungen. Ich weiß das aus Erfahrung.

Schritt 6: Verbinden Sie die Kabelbäume am Arduino 101 und am LED-Streifen miteinander, dann verbinden Sie den Batteriepack-Hohlstecker mit dem Hohlstecker des LED-Streifens – und Sie sind fertig verdrahtet!

Schritt 7: Positionieren Sie nun den Arduino 101 auf der Rückseite des Spiegels, wobei seine Ausrichtung parallel zu einer beliebigen Seite des Spiegels verläuft. Befestigen Sie ihn mit Klettband, doppelseitigem Klebeband oder Heißkleber. Montieren Sie das Batteriepack in der Nähe und sichern Sie lose Kabel mit Klebeband oder Kleber.

Laden Sie den Beispielcode mit einem Computer, einem USB-Kabel und der Arduino IDE hoch. Alternativ können Sie den Beispielcode mit der webbasierten Arduino IDE aufrufen, bearbeiten und hochladen.

Probieren Sie es aus!

Der Beispielcode ändert die Farben der LEDs basierend auf dem Winkel des Spiegels, wie er vom Beschleunigungssensor des Intel Curie Compute Module gelesen wird. Aktuell schaltet eine Position alle Lichter aus, und ein Winkel erzeugt einen Verfolglichtereffekt mit der zuletzt verwendeten Farbe. Fühlen Sie sich frei, in den Code einzutauchen und verrückte Lichteffekte zu erstellen! Der ausgezeichnete Adafruit NeoPixel Uberguide ist ein großartiger Startpunkt.

WICHTIG! Wenn Sie diesen Spiegel dauerhaft installieren möchten, können Sie ein Steckernetzteil statt des Batteriepacks verwenden, aber achten Sie darauf, dass es 3,5V - 5V liefert! Höhere Spannung (wie ein 9V-Block) kann den LED-Streifen überlasten.

Code

Arduino 101 Infinity Mirror Sketch

Einfacher Sketch, der den Winkel des Arduino 101 vom internen Beschleunigungssensor liest und den Winkel verwendet, um die Farben eines NeoPixel LED-Streifens zu steuern.

/* Copyright (c) 2016 Intel Corporation. All rights reserved. See license notice at end of file.
Arduino 101 "Infinity Mirror." The rotation angle of the Arduino 101 changes the lights in a Neopixel strip.
This code uses the Adafruit Neopixel library.
Library installation instructions here: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-installation
If using the desktop version of the Arduino IDE, make sure you have the latest Intel Curie Core installed.
For more info, visit https://www.arduino.cc/en/Guide/Arduino101 */
#include "CurieIMU.h"
#include <Adafruit_NeoPixel.h>
#define PIN 6 //// what pin are the NeoPixels connected to?
Adafruit_NeoPixel strip = Adafruit_NeoPixel(54, PIN, NEO_GRB + NEO_KHZ800);
/// the strip is 15 pixels long. You can change this for the number of pixels in your individual strip.
int tr = 0; //Some variables to hold "color-target" and "color-current" for smoothing...
int tg = 0;
int tb = 0;
int r = 0;
int g = 0;
int b = 0;
int rawX = 0; ///// to hold values from the Curie's accelerometer
int rawY = 0;
//int rawZ = 0;
float angle = 0.0;

void setup() {
  //Serial.begin(9600); //for debug.
  CurieIMU.begin();
  CurieIMU.setAccelerometerRange(2); // Set the acceleromiter range to 2g.
  strip.begin(); // intialize neopixel strip
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  // read accelerometer:
  int rawX = CurieIMU.readAccelerometer(X_AXIS);
  int rawY = CurieIMU.readAccelerometer(Y_AXIS);
  int rawZ = CurieIMU.readAccelerometer(Z_AXIS);
  angle = atan2(rawX, rawY); // the funtion atan2() converts x and y forces into an angle in radians. cool! Output is -3.14 to 3.14
  
  if (abs(angle) > 2.5) { // digital pins are down
    // turn lights off in this position
    tr = 0; tg = 0; tb = 0;
    runlights();
  }
  if ((angle > 1.5) && (angle < 2.5)) { //make lights white in this position (equal r, g and b.) Color values can go up to 255, but I find it's bright enough at 100.
    tr = 100; tg = 100; tb = 100;
    runlights();
  } else if ((angle < 1.5) && (angle > 0.5)) { //make lights red in this position
    tr = 100; tg = 0; tb = 0;
    runlights();
  } else if ((angle < 0.5) && (angle > -0.5)) { //make lights green in this position
    tr = 0; tg = 100; tb = 0;
    runlights();
  } else if ((angle < -1.5) && (angle > -2.5)) { //make lights blue in this position
    tr = 0; tg = 0; tb = 100;
    runlights();
  } else if ((angle < -0.5) && (angle > -1.5)) { //// picking one corner angle for something fun!
    theaterChase(); /// these functions are written out at the bottom of the sketch.
    //rainbowCycle(2);
  } else { //// in case of some unexpected angle, turn lights off.
    tr = 0; tg = 0; tb = 0;
    runlights();
  }
}

void runlights() {
  /// color smoothing. Current color moves toward target color... If target is more than curent, move up, if less, move down.
  if (tr > r + 1) { r++; }
  if (tg > g + 1) { g++; }
  if (tb > b + 1) { b++; }
  if (tr < r) { r--; }
  if (tg < g) { g--; }
  if (tb < b) { b--; }
  //turn all the LEDS to the current r, g, b values.
  for (int i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, r, g, b);
  }
  strip.show();
  delay(10); // time delay for simple fade timing.
}

/////////////Special light functions from Adafruit Strandtest Example Code
// Rainbow! Note- this function blocks new position inputs until it's finished.
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;
  for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

////Theater Chase lights from Adafruit strandtest example code. This takes whatever the curent RGB value is, and does a "theatre chase" effect with it.
void theaterChase(){
  for (int j = 0; j < 3; j++) { //3cycles of chasing
    for (int q = 0; q < 3; q++) {
      for (uint16_t i = 0; i < strip.numPixels(); i = i + 3) {
        strip.setPixelColor(i + q, r, g, b); //turn every third pixel on
      }
      strip.show();
      delay(50);
      for (uint16_t i = 0; i < strip.numPixels(); i = i + 3) {
        strip.setPixelColor(i + q, 0); //turn every third pixel off
      }
    }
  }
}

// Input a value 0 to 255 to get a color value. Used for rainbow effect above.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

////////////////////////////////////////////////////////////////////////////////////////////
/* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */

Herstellungsprozess

  1. Das Kaleidoskop: Von Brewsters Wissenschaft zum modernen Design
  2. Wissenschaft und Handwerk moderner Spiegel
  3. Infinity Gears: 41-stufiges Getriebe erreicht 346 Trillionen Jahre Rotationszeit
  4. Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
  5. FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
  6. DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
  7. DIY Taupunkthygrometer (Chilled Mirror) mit Arduino – Präzise Feuchtemessung
  8. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  9. Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
  10. Infinity Mirror Clock: Endlose Eleganz trifft präzise Zeitanzeige