Lumières de fête portables : 12 étapes (avec photos)
Lumières de fête portables : 12 étapes (avec photos)
Anonim
Image
Image
L'idée
L'idée

Projets Tinkercad »

Pouvez-vous apporter de la lumière à une fête et la rendre plus amusante ?

C'était la question. Et la réponse est OUI (bien sûr).

Cette instructable consiste à fabriquer un appareil portable qui écoute de la musique et crée une visualisation musicale à partir d'anneaux concentriques de LED Neopixel.

Une tentative a été faite pour faire "danser" l'appareil, c'est-à-dire se déplacer au rythme de la musique, mais la détection des battements s'est avérée être une tâche plus compliquée qu'il n'y paraît (sans jeu de mots), donc "danser" est un peu gênant, mais est toujours là.

L'appareil est compatible Bluetooth et répondra aux commandes de texte. Je n'ai pas eu le temps d'écrire une application pour contrôler Party Lights (que ce soit Android ou iOS). Si vous êtes à la hauteur, faites-le moi savoir !!!

Si vous aimez cette instructable, veuillez voter pour elle dans le concours Make It Glow !

Fournitures

Pour construire Party Lights, vous aurez besoin de:

  • STM32F103RCBT6 Leaflabs Leaf Maple Mini USB ARM Cortex-M3 Module pour Arduino (lien ici) - le cerveau de l'appareil. Ces appareils relativement bon marché sont si puissants qu'on ne sait pas pourquoi vous reviendrez un jour vers un Arduino.
  • MSGEQ7 Band Graphic Equalizer IC DIP-8 MSGEQ7 (lien ici)
  • Module Bluetooth HC-05 ou HC-06 (lien ici)
  • Micro Adafruit MAX9814 (lien ici)
  • Un servomoteur standard (lien ici) est-ce que vous voulez que votre appareil "danse"
  • Carte de développement de pilote LED CJMCU 61 bits WS2812 5050 RVB (lien ici)
  • TTP223 Touch Key Module Capacitif Settable Auto-Verrouillage/No-Lock Switch Board (lien ici)
  • Banque d'alimentation ultra compacte à double sortie USB de 5000 mah (lien ici)
  • Résistances, condensateurs, fils, colle, vis, cartes de prototypage, etc. etc.

Étape 1: L'idée

L'idée
L'idée

L'idée est d'avoir un appareil portable qui pourrait être placé à proximité d'une source musicale, et qui créerait des visualisations musicales colorées. Vous devriez pouvoir contrôler le comportement de l'appareil via des boutons (tactile) et Bluetooth.

Actuellement, Party Lights a implémenté 7 visualisations (faites-moi savoir si vous avez d'autres idées !):

  1. Cercles colorés concentriques
  2. Croix de Malte
  3. Lumières pulsées
  4. Cheminée (mon préféré)
  5. Feux de circulation
  6. Arbres clairs
  7. Segments latéraux

Par défaut, l'appareil parcourt les visualisations toutes les minutes. Cependant, un utilisateur peut choisir de s'en tenir à une visualisation et/ou de les parcourir manuellement.

Les visualisations qui font pivoter leur palette de couleurs peuvent également être "gelées" si un utilisateur aime une combinaison de couleurs particulière.

Et en tant que quelques commandes supplémentaires, l'utilisateur peut modifier la sensibilité du microphone et activer/désactiver le mode "danse" du servomoteur.

Étape 2: Schéma et traitement du son

Schéma et traitement du son
Schéma et traitement du son
Schéma et traitement du son
Schéma et traitement du son
Schéma et traitement du son
Schéma et traitement du son
Schéma et traitement du son
Schéma et traitement du son

Un fichier schématique fritzing est inclus dans le package sur Github dans le sous-dossier "files".

Fondamentalement, une puce MSEQ7 effectue le traitement audio, divisant un signal audio en 7 bandes: 63 Hz, 160 Hz, 400 Hz, 1 kHz, 2,5 kHz, 6,25 kHz et 16 kHz

Le microcontrôleur utilise ces 7 bandes pour créer diverses visualisations, mappant essentiellement les amplitudes de bande respectives en intensité lumineuse LED et combinaisons de couleurs.

La source sonore est un microphone avec 3 niveaux de contrôle de gain. Vous pouvez faire défiler les réglages de gain à l'aide de l'un des boutons en fonction de la distance/du niveau sonore de la source sonore.

Le microcontrôleur tente également d'effectuer une détection de « battement » sur la bande « basse » de 63 Hz. Je travaille toujours sur un moyen fiable de détecter et de maintenir l'alignement des battements.

L'utilisation de boutons « tactiles » était une expérience. Je pense qu'ils fonctionnent assez bien, cependant, le manque de commentaires de la presse est quelque peu déroutant.

Étape 3: Roue LED

Roue LED
Roue LED
Roue LED
Roue LED
Roue LED
Roue LED

Le noyau de la visualisation est une roue de 61 LED.

Veuillez noter que la pièce se présente sous forme d'anneaux individuels que vous devrez assembler. J'ai plutôt utilisé des fils de cuivre pour les lignes électriques (qui maintiennent également bien les anneaux ensemble) et des fils de signal minces.

Les LED sont numérotées de 0 à 60 en partant de la LED extérieure inférieure et en allant vers l'intérieur dans le sens des aiguilles d'une montre. La LED centrale est le numéro 60.

Chaque visualisation repose sur des tableaux de données bidimensionnels, qui mappent chaque LED dans une position spécifique pour le segment de visualisation cible.

Par exemple, pour les cercles concentriques, il y a 5 segments:

  • Cercle extérieur, LED 0 - 23, 24 LED de long
  • Deuxième cercle extérieur, LED 24 - 39, 16 LED de long
  • Troisième cercle (centre), LED 40 - 51, 12 LED de long
  • Deuxième cercle intérieur, LED 52 - 59, 8 LED de long
  • LED intérieure, LED 60, 1 LED longue

La visualisation cartographie 5 des 7 canaux audio et allume des LED progressivement en fonction de leur position dans la bande circulaire proportionnellement au niveau sonore dans la bande.

D'autres visualisations utilisent des structures et des formats de données différents, mais l'idée est toujours d'avoir des visualisations pilotées par les tableaux de données, pas tellement par le code. De cette façon, les visualisations pourraient être ajustées à différentes formes (plus ou moins de LED, plus de bandes d'égalisation) sans changer le code, juste les valeurs dans les tableaux de données.

Par exemple, voici à quoi ressemble la structure de données pour la visualisation 1 dans l'esquisse:

// Visualisation 1 & 3 - 5 cercles complets const octet TOTAL_LAYERS1 = 5; octet const LAYERS1[TOTAL_LAYERS1][25] = { //00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 { 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }, { 16, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 }, { 12, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 }, { 8, 52, 53, 54, 55, 56, 57, 58, 59 }, { 1, 60 } };

Étape 4: Visualisations

Visualisations
Visualisations
Visualisations
Visualisations
Visualisations
Visualisations
Visualisations
Visualisations

Jusqu'à présent, il y a 7 visualisations et une animation de démarrage:

Animation de démarrage

Lorsque l'appareil est allumé, une imitation d'un feu d'artifice s'affiche. Ceci était censé être une séquence de test LED et Servo, mais a ensuite évolué vers une version animée d'un tel test

Cercles colorés concentriques

Les lumières font le tour de l'écran en cercles concentriques proportionnels à l'amplitude de la bande d'égalisation respective. Basculement aléatoire entre les aiguilles d'une montre et le sens inverse des aiguilles d'une montre et rotation lente des couleurs sur la roue de 256 couleurs

Croix de Malte

Une bande est la LED centrale. Une autre bande est constituée des lignes verticales et horizontales des LED et des segments restants représentant chacun une bande d'égalisation. Tous les segments font tourner les couleurs en 128 offset pour rester contrastés.

Lumières pulsées

Chaque cercle allume toutes les LED à l'unisson pour une bande d'égalisation dédiée, tout en faisant tourner lentement les couleurs avec un léger décalage. Les bandes d'égalisation sont progressivement déplacées d'un cercle à l'autre, créant une progression vers l'extérieur.

Cheminée

Les bandes sont des demi-cercles éclairés de bas en haut en commençant par un rouge vif et en ajoutant du jaune en montant simulant un feu brûlant dans une cheminée. Des "étincelles" blanches et brillantes occasionnelles jaillissent au hasard. Il n'y a pas de rotation des couleurs

Feux de circulation

Chaque cercle concentrique est une bande d'égalisation distincte. Les LED principales sont celles sur la ligne verticale sous la LED centrale. Une fois que la LED est allumée proportionnellement à l'amplitude de la bande, elle commence à « courir » autour du cercle respectif en diminuant lentement l'intensité. Les rotations dans le sens horaire et antihoraire sont prises en charge, commutant de manière aléatoire.

Arbres clairs

Les segments sont éclairés en ligne droite à partir de la LED inférieure vers le haut, puis latéralement en demi-cercles concentriques imitant des palmiers. Rotation des couleurs.

Segments latéraux

Il s'agit d'une version de la précédente croix de Malte avec seulement 2 segments diagonaux utilisés. Censé ressembler à l'icône des ondes sonores.

Étape 5: Commandes des boutons tactiles

Commandes à boutons tactiles
Commandes à boutons tactiles

Il y a 4 boutons tactiles:

  1. Faites défiler les visualisations et conservez la visualisation actuelle jusqu'à ce qu'une autre soit choisie (par défaut, les visualisations se succèdent toutes les 30 secondes)
  2. "Geler" / "dégeler" le schéma de couleurs actuel - si vous aimez une combinaison de couleurs particulière, vous pouvez la geler - la rotation des couleurs est désactivée et la visualisation se poursuivra avec cette palette de couleurs uniquement
  3. Ajuster la sensibilité du microphone
  4. Activer/désactiver le "mode danse"

En mode danse, l'appareil essaiera de détecter le "beat" de la musique en cours de lecture et tournera la tête en fonction du rythme. Jusqu'à présent, la "danse" est plutôt maladroite que belle, pour être honnête.

Étape 6: Détection de battement et Servo "dansant"

Détection de battement et servo
Détection de battement et servo

L'appareil essaie constamment de détecter le "battement" de la mélodie actuelle en tant que distance entre des pics consécutifs de la bande 63Hz. Une fois détecté (et uniquement si le mode danse est activé), l'appareil activera son servomoteur pour tourner aléatoirement à gauche ou à droite selon le rythme.

Toutes les idées lumineuses sur la façon de rendre cela plus fiable sont les bienvenues !

L'esquisse 'Music_Test_LED' génère 7 bandes d'égalisation d'une manière adaptée au traçage à l'aide d'Arduino IDE.

Étape 7: Formes 3D

Formes 3D
Formes 3D
Formes 3D
Formes 3D
Formes 3D
Formes 3D

L'ensemble de l'ensemble Party Lights a été conçu à partir de zéro à l'aide d'Autodesk TinkerCAD.

La conception originale se trouve ici. Le dossier "files/3D" sur github.com contient les modèles STL.

Cette conception illustre à quoi ressemble l'appareil assemblé.

Tous les composants ont été imprimés puis assemblés/collés ensemble.

Le "dôme" abrite le microcontrôleur, la carte Bluetooth et un microphone. Le microcontrôleur est placé sur une carte de 40 mm x 60 mm et est soutenu par des rails désignés.

Le servo est situé dans la "jambe" du dôme, tandis que les boutons sont situés dans la base.

Le compartiment de la batterie est imprimé spécifiquement pour le type de batterie mentionné dans la section Fournitures. Si vous choisissez d'utiliser une batterie différente, le compartiment devra être repensé en conséquence.

Étape 8: Alimentation

Source de courant
Source de courant
Source de courant
Source de courant

Une banque d'alimentation ultra-compacte de 5000 mah à double sortie USB semble fournir suffisamment de puissance pour des heures de fonctionnement.

Le compartiment de la batterie est conçu de manière à se détacher du reste de l'appareil et peut être remplacé par celui conçu pour un autre type de batterie.

La prise USB a été positionnée et collée à chaud en place pour connecter la batterie lors de son insertion.

Étape 9: Contrôle Bluetooth

Contrôle Bluetooth
Contrôle Bluetooth

Un module HC-05 est ajouté pour fournir un moyen de contrôler l'appareil sans fil.

Lorsqu'il est activé, l'appareil crée une connexion Bluetooth appelée "LEDDANCE", avec laquelle vous pouvez coupler votre téléphone.

Idéalement, il devrait y avoir une application qui permet de contrôler PartyLights (choisir une palette de couleurs, simuler des pressions sur des boutons, etc.). Cependant, je n'en ai pas encore écrit.

Si vous souhaitez participer à l'écriture d'une application Android ou iOS pour Party Lights, faites-le moi savoir !

Pour contrôler l'appareil, vous pouvez actuellement utiliser l'application de terminal Bluetooth et envoyer les commandes suivantes:

  • LEDDBUTT - où est '1', '2', '3' ou '4' simule une pression sur un bouton respectif. Ex.: LEDDBUTT1
  • LEDDCOLRc - où c est un nombre de 0 à 255 - position de la couleur souhaitée sur une roue chromatique. L'appareil passera à la couleur de LED spécifiée.
  • LEDDSTAT - renvoie un nombre à 3 caractères composé de "0" et "1" uniquement:

    • première position: '0' - les couleurs ne tournent pas, '1' - les couleurs tournent
    • deuxième position: '0' - le mode danse est désactivé, '1' - le mode danse est activé
    • troisième position: '0' - le microphone est en gain normal, '1' - le microphone est en gain élevé

Étape 10: Contrôlez l'application basée sur Blynk

Application de contrôle basée sur Blynk
Application de contrôle basée sur Blynk
Application de contrôle basée sur Blynk
Application de contrôle basée sur Blynk
Application de contrôle basée sur Blynk
Application de contrôle basée sur Blynk
Application de contrôle basée sur Blynk
Application de contrôle basée sur Blynk

Blynk (blynk.io) est une plate-forme IoT indépendante du matériel. J'ai utilisé Blynk dans mon système d'irrigation automatique des plantes IoT instructable et j'ai été impressionné par la facilité et la robustesse de la plate-forme.

Blynk prend en charge la connexion aux appareils périphériques via Bluetooth - exactement ce dont nous avons besoin pour PartyLights.

Si vous ne l'avez pas déjà fait, veuillez télécharger l'application Blynk, vous inscrire et recréer l'application Blynk PartyLights en utilisant les captures d'écran jointes à cette étape. Veuillez vous assurer que les affectations de broches virtuelles sont les mêmes que sur les captures d'écran, sinon les boutons de l'application ne fonctionneront pas comme prévu.

Le fichier "blynk_settings.h" contient mon UID Blynk personnel. Lorsque vous créez votre projet, il vous en sera attribué un nouveau que vous pourrez utiliser.

Téléchargez le croquis PartyLightsBlynk.ino, lancez l'application. Associez-le à un appareil Bluetooth et profitez de la fête.

Étape 11: Croquis et bibliothèques

Croquis et bibliothèques
Croquis et bibliothèques

Le croquis principal et les fichiers de support se trouvent sur Github.com ici.

Les bibliothèques suivantes ont été utilisées dans l'esquisse Party Lights:

  • TaskScheduler - multitâche coopératif - ici (développé par moi)
  • AverageFilter - filtre moyen basé sur un modèle - ici (développé par moi)
  • Servo - Servo control - est une bibliothèque Arduino standard
  • WS2812B -Contrôle NEOPixel - fait partie du package STM32

Cette page Wiki explique comment utiliser les cartes STM32 avec Arduino IDE.

Étape 12: Améliorations futures

Améliorations futures
Améliorations futures

Certaines choses pourraient être améliorées dans cette conception, que vous pourriez considérer si vous vous lancez dans ce projet:

  • Utilisez ESP32 au lieu de la carte Maple Mini. ESP32 dispose de 2 processeurs, de piles Bluetooth et WiFi, et peut fonctionner à 60 MHz, 120 MHz et même 240 MHz.
  • Conception plus petite - l'appareil résultant est gros. Pourrait être plus compact (surtout si vous laissez tomber l'idée de danse et le servo associé)
  • La détection des battements pourrait être infiniment améliorée. Ce qui nous vient naturellement à nous les humains, semble être une tâche difficile pour un ordinateur
  • Beaucoup plus de visualisations pourraient être conçues et mises en œuvre.
  • Et, bien sûr, une application pourrait être écrite pour contrôler l'appareil sans fil avec une interface utilisateur sympa.