Il y a quelques mois, une lampe d'ambiance tonnerre et foudre de 3000 $ est devenue virale dans la communauté des fabricants. C'était une lumière incroyablement belle, mais l'étiquette de prix l'a laissé hors de la portée de n'importe qui avec leur santé mentale intacte. Ce que nous allons faire aujourd'hui n'est pas exactement le même - nous faisons quelque chose de plus pratique, au lieu d'une œuvre d'art, mais cela va être beaucoup plus cool et plus personnalisable.
J'ai choisi d'omettre les haut-parleurs en supposant que vous avez probablement déjà une bonne paire de haut-parleurs dans votre chambre que vous préférez utiliser, et franchement mettre un haut-parleur dans une lampe est un peu bizarre. Au lieu de cela, je vais ajouter un microphone qui permettra à la foudre de réagir automatiquement aux bruits forts - soit d'un orage réel, ou une bande sonore jouée à partir de votre PC ou stéréo.
Nous allons également utiliser une série de LED Neopixel RVB complètes (WS2812B), afin que nous puissions reproduire des couleurs autres que le blanc et contrôler chaque pixel.
Attention : l'alimentation que j'ai utilisée dans ce projet a des bornes à vis qui se connectent à un câble AC sous tension. Si vous ne vous sentez pas à l'aise pour brancher une prise, veuillez vous assurer que vous achetez une source d'alimentation complètement fermée. À tout le moins, vous devrez placer l'unité d'alimentation dans une zone de projet sécurisée.
Étape 0: Introduction
Voici une vidéo de démonstration du projet fini. J'ai mis en place quelques modes différents à ce jour, de la foudre standard à un nuage d'acide trippy et une lampe d'ambiance de couleur, qui peut être choisie à partir de la télécommande.
Le code complet et les bibliothèques nécessaires sont disponibles au téléchargement depuis ce dépôt Github.
Étape 1: Vous aurez besoin
- WS2812B brin, généralement au prix d'environ 50 $ pour 5 mètres. Ne vous inquiétez pas si vous avez un autre type de brin Neopixel, il est presque certainement supporté par l'interface FastLED, mais votre câblage peut être différent (vous pouvez avoir besoin d'une ligne de synchronisation en plus du signal, par exemple).
- Alimentation 5V, 10A + - J'ai acheté des unités 15A pour 11 $ chacune. Ils prennent une entrée CA 120-240V, et produisent une sortie 5V lourde qui sera plus suffisante pour alimenter tous nos pixels à pleine luminosité, et l'Arduino.
- Câblage électrique, interrupteur à fiche et inline
- Enceinte de projet
- Deux Arduinos. Les clones Funduino à 10 $ vont bien. Le second est nécessaire pour le contrôle à distance, tandis que le premier contrôle la logique principale et les LED.
- Deux résistances d'ohms de 2.2k (ou environ) ohms - la valeur exacte n'importe pas tellement, environ 1.5k jusqu'à 47k devrait fonctionner.
- Planche à pain
- TSOP4838 récepteur IR
- Télécommande IR - J'ai acheté en vrac pour environ 2 $ chacun, mais toute télécommande devrait fonctionner avec des modifications de code.
- Grand module de microphone
- Scrap MDF bois pour couper votre base de, et une scie sauteuse.
- Matériau d'emballage en polystyrène / inserts de boîte.
- Bourrage d'oreiller en coton polypropylène. J'ai tiré plus qu'assez de quelques vieux coussins horribles. Si ce n'est pas une option, vous devriez être en mesure d'acheter un nouveau pour environ 10 $, ou utiliser de la laine de coton encore moins cher. J'ai essayé avec les deux - le coton avait besoin de plus de travail pour le démêler et n'était pas aussi moelleux, mais à la rigueur, ça marcherait.
- Chaîne et crochets pour accrocher le nuage - devrait tenir plus de 5 kg.
- Pistolet à colle avec réglage de basse température
- Vaporiser de la colle - plus facile de coller la farce sur votre nuage avec ceci, mais un pistolet à colle pourrait également fonctionner.
Le coût total est d'environ 100 $, sans compter les outils, mais la plus grande partie de ce que j'ai récupéré dans la maison. Tous les composants électroniques sont couramment disponibles; le microphone peut être trouvé dans un kit de capteur ou acheté individuellement.
Étape 2: Coupez la base
Découper une base rugueuse d'un morceau de MDF avec une scie sauteuse - la forme exacte est évidemment à vous, mais pour une raison quelconque, un nuage est en forme de haricot dans mon esprit. Nous allons y attacher des crochets pour accrocher, mais sinon, cela fournit une base solide sur laquelle bâtir. La zone centrale sera réservée à l'électronique, à l'alimentation et à la remise de la chaîne, alors assurez-vous de disposer de suffisamment d'espace pour placer au moins l'enceinte de votre projet avec des crochets qui l'entourent.
Étape 3: couche sur le polystyrène
C'est l'étape la plus difficile et la plus créative, mais nous créons vraiment quelque chose de solide et un peu en forme de nuage pour coller la bande de LED sur. Collez de gros morceaux de polystyrène sur la base (et en dessous), en utilisant un réglage à basse température sur votre pistolet à colle. Si vous n'avez pas un réglage bas, éteignez le pistolet à air chaud et laissez-le refroidir un peu avant d'essayer de coller. Si la température est trop élevée, vous ferez simplement fondre le matériau d'emballage.
Assurez-vous que chaque pièce est solide avant de coller la suivante, et il est préférable de coller plus que pas assez.
Encore une fois, n'oubliez pas de laisser une cavité assez grande à l'intérieur du nuage pour s'adapter à l'électronique, à la chaîne et aux crochets.
Étape 4: découper une forme de nuage 3D
À l'aide d'un couteau à découper, nettoyez votre nuage en arrondissant les coins et en coupant les matériaux inutiles jusqu'à ce que vous obteniez une forme de nuage 3D rugueuse. Peu importe à quel point c'est dur puisque nous couvrirons tout dans la farce plus tard - vous pouvez facilement cacher les erreurs.
Étape 5: Fixer les crochets, ranger
Enfin, fixez trois ou quatre crochets à la base de MDF, à l'intérieur de chaque coin de la cavité du nuage. Vous devrez percer un petit trou pilote car le MDF est difficile à visser directement.
J'ai aussi tout donné une simple couche de peinture en aérosol blanche pour assurer une base de couleur uniforme, mais je ne suis pas sûr que ce soit réellement nécessaire.
Étape 6: Bandes de LED de colle
Avant de commencer à appliquer de la colle sur les LED, commencez à partir d'une nouvelle bande ou comptez combien de LED vous avez au total - vous devrez calculer le nombre de LED que vous avez utilisé plus tard dans l'étape de programmation. Coupez un petit trou dans le côté de votre nuage et percez les fils qui composent le début de votre bande de LED dans la cavité du nuage. Faites très attention à ce que vous commenciez à partir de la bonne extrémité - les bandes LED sont sensibles à la direction, donc assurez-vous que les flèches du signal pointent loin de la cavité.
Travailler lentement, coller les pixels LED à la base de polystyrène dans un modèle circulaire, avant de tirer la bande vers le bas pour couvrir le dessous. Encore une fois - vous n'avez pas besoin d'être parfait ici, car une fois que nous avons tout diffusé et étouffé avec de la farce, tout semble plutôt étourdissant de toute façon.
J'ai utilisé un total de 85 LED, soit un peu plus de 2, 5 m, après avoir entouré le corps principal deux fois et utilisé une seule chaîne de LED sur le dessous.
Étape 7: Schéma de câblage
Le câblage est complexe, mais facilement divisé en sections.
Tout d'abord, branchez l'alimentation électrique et sécurisez-la, de préférence dans un boîtier de projet distinct. Je ne vais pas vous faire la leçon sur la sécurité des câbles AC en direct, donc je vais supposer que vous pouvez gérer cette partie, et vous avez une ligne 5V et GND de celui-ci.
IMPORTANT : lors de la programmation et des tests de l'Arduino, le 5V de votre alimentation doit rester isolé de l'Arduino (les GND sont tous connectés, cependant) - il ne devrait alimenter la bande LED, tandis que l'Arduino utilise le 5V fourni par USB. Lorsque vous avez terminé la programmation, l'USB devrait être déconnecté, et ne fournira plus 5V à l'Arduino - à ce stade, vous devez connecter le 5V de votre alimentation au rail 5V sur le côté gauche de la planche à pain.
Commencez par connecter la terre et les broches 5V de chaque Arduino aux rails latéraux gauche de la planche à pain. Ils partageront la même source d'alimentation, que ce soit le bloc d'alimentation externe ou USB branché sur l'un d'entre eux.
Ensuite, complétez la section de câblage I2C - c'est ce qui permet à nos deux Arduinos de communiquer. Prenez les broches A4 des deux Arduinos sur une seule rangée sur la carte de test, puis connectez une résistance de 2, 2k de cette rangée à 5V rail. Répétez pour A5, les reliant sur une rangée séparée, avec une autre résistance de 2, 2k à 5V.
Connectez le récepteur IR à côté - vérifiez la configuration de la broche si vous avez un autre modèle, mais en gros, la broche de signal devrait aller à D11 sur un Arduino. Téléchargez le sketch thundercloud_ir_receiver.ino sur cet Arduino (tout le code ici), puis débranchez l'USB car nous n'en avons plus besoin.
Sur l'autre Arduino, connectez la broche de signal de données dans le début de votre bande de LED à D6. Le GND de vos LED devrait être commun avec tous les Arduinos, mais à ce stade, le 5V viendra directement de l'alimentation.
Également sur cet Arduino, branchez le module de microphone dans A0. Téléchargez l'autre croquis thundercloud.ino, et gardez l'USB branché pour le moment pendant le débogage. Commencez par modifier la variable NUM_LEDS de manière appropriée.
Étape 8: Colle sur la farce
Comme dernière étape, collez votre stuffing. Il n'y a pas de technique particulière ici - il suffit de vaporiser le nuage avec une couche de colle et d'attraper une poignée de farce. Il est plus facile de travailler avec la farce si vous l'avez déjà taillée pour augmenter la surface.
Si vous avez utilisé la même télécommande que moi, le bouton STROBE le place en mode cloud réactive sonore; FLASH est le mode de couleur trippy, et FADE est la lampe d'ambiance de couleur qui se fane lentement.
Étape 9: Explication du code
Pourquoi deux Arduinos? La programmation du récepteur infrarouge et la bibliothèque de pilotes de pixels WS2818B sont toutes deux très sensibles au chronométrage - si le chronométrage est retardé, le signal IR est corrompu. En donnant à chaque circuit son propre micro-contrôleur et en les laissant parler sur le protocole I2C, nous pouvons nous assurer que le timing est parfait pour chacun. Vous pouvez également trouver des modules IR séparés avec leur propre micro-contrôleur intégré, mais mes recherches ont montré que ceux-ci coûtent plus cher qu'un simple clone Arduino et une LED IR. Le thundercloud_ir_receiever ne devrait pas nécessiter d'explication, mais vous voudrez peut-être lire d'abord les bases de l'I2C.
Sur le contrôleur principal de thundercloud, nous définissons différents modes de fonctionnement, tels que ON (les effets de foudre ne sont pas activés par le son), CLOUD (l'éclair n'est activé que par le son), ACID (le cloud affiche des couleurs trippy) ou simples modes simples. Pour définir un nouveau mode, ajoutez d'abord à l' énumération, puis ouvrez la console et trouvez un bouton de contrôle à distance pour la mapper à - chaque presse distante devrait imprimer une ligne de débogage. Dans la méthode receiveEvent (), nous mappons ces touches sur un mode, ajoutez donc une instruction switch supplémentaire. Enfin, dans la méthode loop () principale, nous acheminons ces sélections de mode vers différentes fonctions d'affichage.
Le code de lissage du microphone est originaire d'Adafruit - je l'ai simplifié pour nos besoins, et j'ai ajouté une gâchette quand un bruit plus fort que la moyenne est entendu.
Étape 10: Modes de foudre
Les éclairages combinent trois "types" d'éclairs différents pour réaliser quelque chose de suffisamment réaliste, ou du moins agréable à l'œil. Le premier type est crack (), où chaque LED est brièvement allumé entre 10-100ms. Le second type est rolling () - où chaque LED a 10% de chances d'être activé, et la boucle entière est répétée 2 à 10 fois, avec un délai de 5 à 100 ms entre chaque cycle. Le troisième type est thunderburst (), qui sélectionne deux sections différentes de la bande, chacune entre 10-20 LED, clignote brièvement ces sections de 3-6 fois. Examinez ces méthodes en détail pour voir comment les LED individuelles sont activées - la roue chromatique HSV est utilisée partout (donc blanc est H = 0, S = 0, V = 255). Je vous encourage à peaufiner ou à écrire de nouveaux éclairages, puis à les partager dans les commentaires si vous en faites un que vous aimez.
Chaque fois que l'éclair est déclenché ou que la boucle est exécutée, le nuage choisit au hasard entre les trois types d'éclairs. Enfin, une méthode reset () éteint toutes les lumières, sinon elles se "souviendront" de leur état précédent.
Questions ou problèmes - veuillez entrer en contact dans les commentaires et je ferai de mon mieux pour vous aider. Si vous avez un compte Github, n'hésitez pas à publier des bugs ou des problèmes sur le suivi des problèmes. Si vous avez apporté des modifications ou écrit de nouvelles fonctions d'éclairage, veuillez partager un lien vers votre code sur Gist ou Pastebin.