Miroir infini kaléidoscope DIY – Construire un affichage LED époustouflant
Composants et fournitures
- Arduino 101 × 1
- LEDs adressables non étanches 1m (60) × 1
- Section de fil rigide ou broches de raccordement × 1
- Gaine thermorétractable × 1
- Connecteur jack femelle à vis × 1
- Connecteur jack mâle à vis × 1
- Support 3 piles AA avec interrupteur × 1
- Régulateur step-up Pololu × 1
- Piles AA × 1
- Cadre boîte à ombre 12″ carré × 1
- Miroir 12″ carré × 1
- Chevalet photo 11″ × 1
- Film teinté miroir (optionnel) × 1
- FoamCore × 1
Outils et machines nécessaires
- Fer à souder (générique)
- Cutter avec lame neuve
- Pistolet à colle chaude (générique)
- Pinces à dénuder
Applications et services en ligne
- Arduino IDE (bibliothèque Adafruit NeoPixel requise, noyau Curie pour Arduino 101)
À propos de ce projet
Un croisement entre un kaléidoscope et un miroir infini ! En changeant la rotation du miroir, les lumières changent en réponse. Ce projet est construit avec un miroir et un cadre photo du commerce, et quelques autres composants. La carte de développement Arduino 101 possède un capteur de position intégré que nous pouvons utiliser pour détecter l'angle et contrôler l'affichage lumineux.
Note : Ce projet utilise la même configuration électronique que le Théâtre d'ombres de Noël, essentiellement un Arduino 101, un bandeau LED et un pack de piles. J'utilise un régulateur de tension à 4$ pour que le même pack de piles alimente à la fois les LEDs et l'Arduino 101. Alternativement, vous pouvez utiliser une pile 9V pour alimenter l'Arduino et ignorer le régulateur.
Première partie : Construire le miroir
Étape 1 : À l'aide d'un cutter bien aiguisé, découpez un carré de 12″ × 12″ dans le FoamCore et marquez le centre au crayon. Vous pouvez utiliser le carton arrière du cadre photo comme référence.

Étape 2 : À l'aide d'un compas ou d'une ficelle et d'un crayon, tracez un cercle parfait de rayon 5,25″ centré dans le carré 12×12. Vous pouvez utiliser une règle pour marquer 0,75″ depuis le bord du 12×12 comme point de référence.
Étape 3 : À l'aide d'un cutter avec une lame neuve, découpez soigneusement le cercle. Cette coupe sera visible dans le produit final, alors coupez le plus proprement possible.

Étape 4 : Une fois le trou découpé, choisissez le plus beau côté et placez-le face visible vers le bas sur une surface de travail propre.
Étape 5 : Découpez une bande de FoamCore de ½ pouce de large, environ 36″ de long. Elle peut être assemblée à partir de segments plus courts avec du ruban adhésif si nécessaire. Utilisez une règle et gardez la taille aussi proche que possible d'un 0,5″ uniforme.

Étape 6 : Posez la bande terminée horizontalement sur une table, et coupez des rainures verticales régulières à travers la feuille de papier supérieure tous les 2″ sur toute la longueur.

Étape 7 : Retournez la bande et, à l'aide de colle chaude, fixez le bandeau LED sur toute la longueur de la bande de FoamCore.

Étape 8 : Pliez la bande terminée en un cercle approximatif en utilisant les rainures que vous avez coupées dans le dos du FoamCore comme points de pliage.

Étape 9 : Placez le bandeau LED en anneau sur le trou de votre carré FoamCore 12×12″. Le bandeau LED complet sera trop long. Ajustez votre cercle LED pour qu'il soit juste plus grand que le trou, et coupez les LEDs en trop (environ 6 LEDs). Vous pourrez encore utiliser ces LEDs de rechange pour un autre projet plus tard.

Étape 10 : Placez le bandeau LED en anneau sur la face supérieure (mauvais côté) de votre carré 12×12″, et collez-le à chaud en place juste au bord du trou circulaire. Assurez-vous que l'arrière de l'anneau LED est à au moins 0,25″ du bord du carré 12×12″. (Sinon, les entretoises noires du cadre ne pourront pas passer autour.)



Étape 11 : Si vous utilisez le film semi-miroir, sortez le verre de votre cadre boîte à ombre et appliquez le film sur le verre en suivant les instructions du fabricant. J'ai trouvé que c'était l'étape la plus délicate. Assurez-vous de nettoyer le verre d'abord et utilisez de l'eau (ou une solution savonneuse) pour faciliter l'élimination des bulles d'air. L'utilisation du film miroir crée une illusion beaucoup plus forte et cache les LEDs, mais ce n'est pas 100% nécessaire (vous pouvez l'ajouter plus tard si vous le souhaitez !) Si vous utilisez le film, replacez le verre dans le cadre avec le côté film face vers le haut/vers l'intérieur du cadre.
Étape 12 : Avec le cadre face vers le bas et le verre propre, positionnez la mousse sur le verre, le bon côté vers le bas et l'anneau LED vers le haut. Ajoutez deux des entretoises fournies avec le cadre, puis ajoutez votre miroir 12×12″ face vers le bas. Les fils des LEDs doivent sortir par l'arrière du cadre au-delà du miroir. Si l'ajustement du miroir est trop serré pour les fils, vous devrez peut-être creuser délicatement une encoche pour les fils dans le bord du cadre à l'aide d'un cutter.


S'il y a de l'espace, ajoutez le support arrière en carton du cadre, ou sinon maintenez simplement le miroir en place avec les languettes du cadre. C'est fait ! Passons maintenant à la magie de l'électronique.
Deuxième partie : Configuration de l'électronique
Étape 1 Récupérez les 6 LEDs supplémentaires que vous avez coupées à la fin précédemment. Récupérez le faisceau de la fin, en coupant environ 1 cm des lumières. Dénudez les extrémités des fils.

Étape 2 Séparez les broches de header courbées fournies avec votre régulateur de tension, et soudez-en deux aux extrémités des fils verts et jaunes. Cela vous permettra de les brancher facilement sur les broches de l'Arduino 101.

Étape 3 Soudez ensuite le fil rouge sur la borne VIN du régulateur de tension, et soudez deux headers droits dans les broches GND et VOUT comme indiqué.

Étape 4 Connectez maintenant les adaptateurs jack. D'abord, dénuderez les extrémités des fils venant de votre boîtier de piles, puis montez-les dans les bornes du jack mâle et serrez avec un tournevis. LE ROUGE va sur la borne (+), LE NOIR sur la borne (-).

Ensuite, connectez l'adaptateur jack femelle sur les fils libres venant du début du bandeau LED (venant de l'arrière de votre miroir). Sur ce bandeau, LE JAUNE va sur la borne (-), et LE ROUGE sur la borne (+).
Étape 5 Connectez maintenant votre faisceau à l'Arduino 101. Le fil VERT va sur la BROCHE 6, le fil JAUNE sur la broche GND près du #13.
Avec les deux broches de header sur le régulateur de tension, GND va sur GND et VOUT va sur la broche « Vin » de l'Arduino 101. Ne vous trompez pas ! Brancher à l'envers entraîne des odeurs et des brûlures. Je le sais par expérience.


Étape 6 : Connectez les faisceaux de fils sur l'Arduino 101 et le bandeau LED ensemble, puis connectez le jack du pack de piles au jack du bandeau LED et vous êtes câblé !
Étape 7 : Maintenant que votre électronique est terminée, positionnez l'Arduino 101 sur l'arrière du miroir avec son orientation parallèle à n'importe quel côté du miroir. Fixez-le avec du Velcro, du ruban double face ou de la colle chaude. Montez le pack de piles à proximité et sécurisez les fils lâches avec du ruban ou de la colle.
Téléversez l'exemple de code en utilisant un ordinateur, un câble USB et l'Arduino IDE. Alternativement, vous pouvez accéder, modifier et téléverser l'exemple de code en utilisant l'IDE Arduino en ligne.
Essayez-le !

L'exemple de code change les couleurs des LEDs en fonction de l'angle du miroir, tel que lu par l'accéléromètre du module Intel Curie Compute. Actuellement, une position éteint toutes les lumières, et un angle crée un effet de lumière « chasing » avec la dernière couleur utilisée. N'hésitez pas à plonger dans le code et à créer des effets d'éclairage fous ! L'excellent guide Adafruit NeoPixel Uberguide est un excellent point de départ.
IMPORTANT ! Si vous souhaitez installer ce miroir de façon permanente, vous pouvez utiliser une alimentation secteur au lieu du pack de piles, mais assurez-vous qu'elle fournit 3,5V - 5V ! Toute tension plus élevée (comme une pile 9V carrée) pourrait surcharger le bandeau LED.
Code
Sketch Arduino 101 Miroir Infini
/* Copyright (c) 2016 Intel Corporation. All rights reserved. See license notice at end of file.
Arduino 101 "Infinity Mirror." La rotation de l'Arduino 101 change les lumières d'un bandeau Neopixel.
Ce code utilise la bibliothèque Adafruit Neopixel.
Installation de la bibliothèque : https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-installation
Si vous utilisez la version desktop de l'Arduino IDE, assurez-vous d'avoir le dernier noyau Intel Curie installé.
Pour plus d'infos, visitez https://www.arduino.cc/en/Guide/Arduino101 */
#include "CurieIMU.h"
#include <Adafruit_NeoPixel.h>
#define PIN 6 //// quelle broche pour les NeoPixels ?
Adafruit_NeoPixel strip = Adafruit_NeoPixel(54, PIN, NEO_GRB + NEO_KHZ800);
/// le bandeau fait 54 pixels. Vous pouvez changer ce nombre pour votre bandeau.
int tr = 0, tg = 0, tb = 0; // couleur cible pour lissage
int r = 0, g = 0, b = 0; // couleur courante
int rawX = 0, rawY = 0; // valeurs de l'accéléromètre Curie
float angle = 0.0;
void setup() {
CurieIMU.begin();
CurieIMU.setAccelerometerRange(2); // plage accéléromètre 2g
strip.begin();
strip.show(); // initialise toutes les pixels à 'off'
}
void loop() {
rawX = CurieIMU.readAccelerometer(X_AXIS);
rawY = CurieIMU.readAccelerometer(Y_AXIS);
int rawZ = CurieIMU.readAccelerometer(Z_AXIS);
angle = atan2(rawX, rawY); // atan2() convertit forces x,y en angle en radians (-3.14 à 3.14)
if (abs(angle) > 2.5) { // broches numériques vers le bas
tr = 0; tg = 0; tb = 0; runlights(); // éteint
}
else if ((angle > 1.5) && (angle < 2.5)) { // blanc
tr = 100; tg = 100; tb = 100; runlights();
}
else if ((angle < 1.5) && (angle > 0.5)) { // rouge
tr = 100; tg = 0; tb = 0; runlights();
}
else if ((angle < 0.5) && (angle > -0.5)) { // vert
tr = 0; tg = 100; tb = 0; runlights();
}
else if ((angle < -1.5) && (angle > -2.5)) { // bleu
tr = 0; tg = 0; tb = 100; runlights();
}
else if ((angle < -0.5) && (angle > -1.5)) { // angle pour effet spécial
theaterChase(); // effet "theatre chase"
}
else { // angle inattendu
tr = 0; tg = 0; tb = 0; runlights();
}
}
void runlights() {
// lissage des couleurs : la couleur courante se rapproche de la cible
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--;
for (int i = 0; i < strip.numPixels(); i++)
strip.setPixelColor(i, r, g, b);
strip.show();
delay(10);
}
// Fonctions d'effets spéciaux (depuis Adafruit Strandtest)
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256*5; j++) {
for(i=0; i< strip.numPixels(); i++)
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
strip.show();
delay(wait);
}
}
void theaterChase(){
for (int j = 0; j < 3; j++) {
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);
strip.show(); delay(50);
for (uint16_t i = 0; i < strip.numPixels(); i = i + 3)
strip.setPixelColor(i + q, 0);
}
}
}
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);
}
/* Licence GNU LGPL v2.1 ou ultérieure... */
Processus de fabrication
- Le kaléidoscope : de la science de Brewster au design moderne
- La science et l'art du miroir moderne
- Infinity Gears : un réducteur à 41 étages pour une rotation de 346 quintillions d'années
- Construire un Spybot Arduino piloté par Bluetooth
- FlickMote : Télécommande IR à gestes pour maison connectée
- TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
- Hygromètre à miroir refroidi DIY Arduino – Surveillance précise température et humidité
- Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
- Horloge Miroir Infini : Élégance Infinie et Précision Temporelle