Cuprins:

Lumini portabile de petrecere: 12 pași (cu imagini)
Lumini portabile de petrecere: 12 pași (cu imagini)

Video: Lumini portabile de petrecere: 12 pași (cu imagini)

Video: Lumini portabile de petrecere: 12 pași (cu imagini)
Video: 12 lucruri nocive pe care i le faci câinelui tău fără să-ți dai seama 2024, Noiembrie
Anonim
Image
Image
Ideea
Ideea

Proiecte Tinkercad »

Poți aduce lumină la o petrecere și să o faci mai distractivă?

Aceasta era întrebarea. Și răspunsul este DA (desigur).

Acest lucru instructiv este despre realizarea unui dispozitiv portabil care ascultă muzică și creează vizualizare muzicală din inele concentrice ale LED-urilor Neopixel.

S-a încercat ca dispozitivul să „danseze”, adică să se deplaseze la ritmul muzicii, dar detectarea ritmului s-a dovedit a fi o sarcină mai complicată decât sună (nu se intenționează jocul de cuvinte), așa că „dansul” este un pic ciudat, dar încă este acolo.

Dispozitivul este compatibil Bluetooth și va răspunde la comenzile text. Nu am avut timp să scriu o aplicație pentru a controla Party Lights (fie Android, fie iOS). Dacă sunteți la înălțimea sarcinii - vă rog să-mi spuneți !!!

Dacă vă place acest instructable, vă rugăm să votați pentru acesta în concursul Make It Glow!

Provizii

Pentru a construi Party Lights veți avea nevoie de:

  • STM32F103RCBT6 Leaflabs Leaf Maple Mini USB ARM Cortex-M3 Module pentru Arduino (link aici) - creierul dispozitivului. Aceste dispozitive relativ ieftine sunt atât de puternice, încât nu este clar de ce te-ai întoarce vreodată la un Arduino.
  • IC DIP-8 MSGEQ7 Egalizator grafic cu bandă MSGEQ7 (link aici)
  • Modul Bluetooth HC-05 sau HC-06 (link aici)
  • Microfon Adafruit MAX9814 (link aici)
  • Un servomotor standard (link aici) este că doriți ca dispozitivul dvs. să "danseze"
  • CJMCU 61 Bit WS2812 5050 RGB LED Driver Development Board (link aici)
  • TTP223 Touch Key Module Capacitive Setable Self-Lock / No-Lock Switch Switch (link aici)
  • Ultra Compact 5000-mah Ieșiri duble USB Super Slim Power Bank (link aici)
  • Rezistoare, condensatori, fire, lipici, șuruburi, plăci de prototipare etc. etc.

Pasul 1: Ideea

Ideea
Ideea

Ideea este de a avea un dispozitiv portabil care ar putea fi amplasat aproape de o sursă de muzică și care ar crea vizualizări muzicale colorate. Ar trebui să puteți controla comportamentul dispozitivului prin butoane (atingere) și Bluetooth.

În prezent, Party Lights au 7 vizualizări implementate (anunțați-mă dacă aveți mai multe idei!):

  1. Cercuri colorate concentrice
  2. Cruce malteză
  3. Lumini pulsatoare
  4. Șemineu (preferatul meu personal)
  5. Lumini de rulare
  6. Copaci ușori
  7. Segmente laterale

În mod implicit, dispozitivul va parcurge vizualizările în fiecare minut. Cu toate acestea, un utilizator poate alege să rămână cu o singură vizualizare și / sau să le parcurgă manual.

Vizualizările care își rotesc paleta de culori ar putea fi, de asemenea, „înghețate” dacă unui utilizator îi place o anumită combinație de culori.

Și ca câteva alte comenzi, utilizatorul poate schimba sensibilitatea microfonului și poate activa / dezactiva modul de servomotor „dans”.

Pasul 2: Procesare schematică și sunet

Schematică și procesare sunet
Schematică și procesare sunet
Schematică și procesare sunet
Schematică și procesare sunet
Schematică și procesare sunet
Schematică și procesare sunet
Schematică și procesare sunet
Schematică și procesare sunet

Un fișier schematic fritzing este inclus în pachetul de pe Github în subfolderul „fișiere”.

Practic, un cip MSEQ7 efectuează procesarea audio, împărțind un semnal audio în 7 benzi: 63Hz, 160Hz, 400Hz, 1kHz, 2,5kHz, 6,25kHz și 16kHz

Microcontrolerul folosește acele 7 benzi pentru a crea diverse vizualizări, mapând practic amplitudinile respective ale benzii în intensitatea luminii LED și în combinații de culori.

Sursa de sunet este un microfon cu 3 niveluri de control al câștigului. Puteți parcurge setările de câștig folosind unul dintre butoane, în funcție de cât de departe / tare este sursa de sunet.

Microcontrolerul încearcă, de asemenea, să efectueze detectarea „bătăilor” pe banda „bas” de 63Hz. Încă lucrez la o modalitate fiabilă de a detecta și menține alinierea bătăilor.

Utilizarea butoanelor „tactile” a fost un experiment. Cred că funcționează destul de bine, cu toate acestea, lipsa de feedback din presă este oarecum confuză.

Pasul 3: Roată LED

Roată cu LED
Roată cu LED
Roată cu LED
Roată cu LED
Roată cu LED
Roată cu LED

Nucleul vizualizării este o roată cu 61 de LED-uri.

Vă rugăm să rețineți că piesa vine ca inele individuale pe care va trebui să le puneți împreună. Am folosit mai degrabă firele de cupru pentru liniile de alimentare (care țin, de asemenea, inelele frumos) și firele de semnal subțiri.

LED-urile sunt numerotate de la 0 la 60 începând de la LED-ul exterior inferior și mergând în sensul acelor de ceasornic spre interior. LED-ul central este numărul 60.

Fiecare vizualizare se bazează pe tablouri de date bidimensionale, care mapează fiecare LED într-o poziție specifică pentru segmentul de vizualizare țintă.

De exemplu, pentru cercurile concentrice, există 5 segmente:

  • Cerc exterior, LED-uri 0 - 23, 24 LED-uri lungi
  • Al doilea cerc exterior, LED-uri 24 - 39, 16 LED-uri lungi
  • Al treilea cerc (centru), LED-uri 40 - 51, 12 LED-uri lungi
  • Al doilea cerc interior, LED-uri 52 - 59, 8 LED-uri lungi
  • LED interior, LED 60, 1 LED lung

Vizualizarea mapează 5 din 7 canale audio și aprinde LED-urile progresiv în funcție de poziția lor în banda circulară proporțională cu nivelul de sunet din bandă.

Alte vizualizări utilizează structuri și formate de date diferite, dar ideea este întotdeauna să aveți vizualizări conduse de matricile de date, nu atât de mult de cod. În acest fel, vizualizările ar putea fi ajustate la diferite forme (mai multe sau mai puține LED-uri, mai multe benzi EQ) fără a schimba codul, doar valorile din matricile de date.

De exemplu, așa arată structura de date pentru vizualizarea 1 în schiță:

// Vizualizare 1 și 3 - 5 cercuri complete octet constant 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}};

Pasul 4: Vizualizări

Vizualizări
Vizualizări
Vizualizări
Vizualizări
Vizualizări
Vizualizări
Vizualizări
Vizualizări

Până în prezent există 7 vizualizări și o animație de pornire:

Animație de pornire

Când dispozitivul este pornit, este afișată o imitație a unui foc de artificii. Aceasta trebuia să fie o secvență de testare LED și Servo, dar ulterior a evoluat într-o versiune animată a unui astfel de test

Cercuri colorate concentrice

Luminile circulă în jurul afișajului în cercuri concentrice proporționale cu amplitudinea benzii echivalente respective. Comutarea aleatorie între sensul acelor de ceas și anti-ceas și rotirea lentă a culorilor peste roata de 256 de culori

Cruce malteză

O bandă este LED-ul central. O altă bandă este liniile verticale și orizontale ale LED-urilor, iar segmentele rămase reprezintă fiecare o bandă EQ. Toate segmentele rotesc culorile cu 128 de offset pentru a rămâne în contrast.

Lumini pulsatoare

Fiecare cerc luminează toate LED-urile la unison pentru o bandă de ecuații dedicată, în timp ce se rotește încet culorile cu un ușor decalaj. Benzile EQ sunt deplasate progresiv de la un cerc la altul creând o progresie spre exterior.

Vatră

Benzile sunt semicercuri aprinse de jos în sus, începând cu un roșu aprins și adăugând galben în sus, simulând un foc aprins într-un șemineu. „Scânteia” albă strălucitoare ocazional se ridică la întâmplare. Nu există rotație a culorii

Lumini de rulare

Fiecare cerc concentric este o bandă EQ separată. LED-urile principale sunt cele de pe linia verticală de sub LED-ul central. Odată ce LED-ul este aprins proporțional cu amplitudinea benzii, acesta începe să „ruleze” în jurul cercului respectiv, scăzând lent intensitatea. Sunt acceptate atât rotațiile în sensul acelor de ceasornic, cât și în sens invers acelor de ceasornic, comutând aleatoriu.

Copaci ușori

Segmentele sunt iluminate în linie dreaptă de la LED-ul inferior în sus și apoi lateral în semicercuri concentrice imitând palmieri. Rotația culorii.

Segmente laterale

Aceasta este o versiune a Crucii Malteze anterioare cu doar 2 segmente diagonale utilizate. Se presupune că seamănă cu pictograma pentru unde sonore.

Pasul 5: atingeți butoanele de comandă

Atingeți butoanele Comenzi
Atingeți butoanele Comenzi

Există 4 butoane sensibile la atingere:

  1. Ciclează prin vizualizări și menține-l pe cel curent până când se alege altul (în mod implicit, ciclul de vizualizări la fiecare 30 de secunde)
  2. Schema de culori curentă „Înghețați” / „dezghețați” - dacă vă place o anumită combinație de culori, o puteți îngheța - rotația culorii este dezactivată și vizualizarea va continua doar cu această paletă de culori
  3. Reglați sensibilitatea microfonului
  4. Activați / dezactivați „modul dans”

În modul dans, dispozitivul va încerca să detecteze „ritmul” muzicii redate în prezent și să întoarcă capul în funcție de ritm. Până acum „dansul” este mai degrabă ciudat decât frumos, ca să fiu sincer.

Pasul 6: detectarea bătăilor și „dansul” servo

Detecție și Servo Beat
Detecție și Servo Beat

Dispozitivul încearcă în mod constant să detecteze „ritmul” melodiei curente ca distanță între vârfurile consecutive ale benzii de 63Hz. Odată detectat (și numai dacă modul de dans este PORNIT), dispozitivul își va activa servomotorul pentru a roti aleatoriu la stânga sau la dreapta în funcție de ritm.

Orice idei strălucitoare despre cum să faceți acest lucru mai fiabil sunt binevenite!

Schița „Music_Test_LED” produce 7 benzi EQ într-un mod adecvat pentru graficarea utilizând Arduino IDE.

Pasul 7: Forme 3D

Forme 3D
Forme 3D
Forme 3D
Forme 3D
Forme 3D
Forme 3D

Întregul ansamblu Party Lights a fost proiectat de la zero folosind Autodesk TinkerCAD.

Designul original este situat aici. Dosarul „fișiere / 3D” de pe github.com conține modelele STL.

Acest design ilustrează modul în care dispozitivul arată asamblat.

Toate componentele au fost tipărite și apoi asamblate / lipite împreună.

„Domul” găzduiește microcontrolerul, placa Bluetooth și un microfon. Microcontrolerul este așezat pe o placă de 40 mm x 60 mm și este susținut de șine desemnate.

Servo-ul este situat în „piciorul” domului, în timp ce butoanele sunt amplasate în bază.

Compartimentul pentru baterii este tipărit special pentru tipul de baterie menționat în secțiunea Consumabile. Dacă alegeți să utilizați o baterie diferită, compartimentul va fi reproiectat în consecință.

Pasul 8: Alimentare

Alimentare electrică
Alimentare electrică
Alimentare electrică
Alimentare electrică

O Ultra-Compact 5000-mah Dual USB Outputs Super Slim Power Bank pare să ofere suficientă energie pentru ore de funcționare.

Compartimentul pentru baterii este proiectat în așa fel încât să se detașeze de restul dispozitivului și să poată fi înlocuit cu cel proiectat pentru un alt tip de baterie.

Fișa USB a fost poziționată și lipită la cald pentru a conecta bateria pe măsură ce alunecă.

Pasul 9: Control Bluetooth

Control Bluetooth
Control Bluetooth

Se adaugă un modul HC-05 pentru a oferi o modalitate de a controla dispozitivul fără fir.

Când este pornit, dispozitivul creează o conexiune Bluetooth numită „LEDDANCE”, cu care puteți asocia telefonul.

În mod ideal, ar trebui să existe o aplicație care să permită controlul PartyLights (alegerea unei palete de culori, simularea apăsării butoanelor etc.). Cu toate acestea, nu am scris încă una.

Dacă sunteți interesat să ajutați la scrierea unei aplicații Android sau iOS pentru Party Lights, vă rugăm să ne anunțați!

Pentru a controla dispozitivul, puteți utiliza în prezent aplicația terminal Bluetooth și puteți trimite următoarele comenzi:

  • LEDDBUTT - unde este „1”, „2”, „3” sau „4” simulează apăsarea unui buton respectiv. Ex.: LEDDBUTT1
  • LEDDCOLRc - unde c este un număr de la 0 la 255 - poziția culorii dorite pe o roată de culoare. Dispozitivul va trece la culoarea LED specificată.
  • LEDDSTAT - returnează un număr de 3 caractere format doar din '0 și' 1:

    • prima poziție: „0” - culorile nu se rotesc, „1” - culorile se rotesc
    • a doua poziție: „0” - modul dans este dezactivat, „1” - modul dans este activat
    • a treia poziție: „0” - microfonul are un câștig normal, „1” - microfonul are un câștig mare

Pasul 10: Controlați aplicația bazată pe Blynk

Aplicație de control bazată pe Blynk
Aplicație de control bazată pe Blynk
Aplicație de control bazată pe Blynk
Aplicație de control bazată pe Blynk
Aplicație de control bazată pe Blynk
Aplicație de control bazată pe Blynk
Aplicație de control bazată pe Blynk
Aplicație de control bazată pe Blynk

Blynk (blynk.io) este o platformă IoT hardware-agnostică. Am folosit Blynk în sistemul meu automat de irigare a plantelor IoT, instructabil și am fost impresionat de ușurința și robustețea platformei.

Blynk acceptă conectarea la dispozitive Edge prin Bluetooth - exact ceea ce avem nevoie pentru PartyLights.

Dacă nu ați făcut-o deja, vă rugăm să descărcați aplicația Blynk, să vă înregistrați și să recreați aplicația Blynk PartyLights folosind capturile de ecran atașate la acest pas. Vă rugăm să vă asigurați că atribuțiile de pin virtual sunt aceleași ca în capturile de ecran, în caz contrar, butoanele din aplicație nu vor funcționa conform intenției.

Fișierul „blynk_settings.h” conține ID-ul meu personal Blynk. Când vă creați proiectul, i se va atribui unul nou de utilizat.

Încărcați schița PartyLightsBlynk.ino, lansați aplicația. Asociați-vă cu dispozitivul Bluetooth și bucurați-vă de petrecere.

Pasul 11: Schițe și biblioteci

Schițe și biblioteci
Schițe și biblioteci

Schița principală și fișierele de sprijin sunt localizate pe Github.com aici.

Următoarele biblioteci au fost utilizate în schița Party Lights:

  • TaskScheduler - multitasking cooperativ - aici (dezvoltat de mine)
  • AverageFilter - filtru mediu cu șablon - aici (dezvoltat de mine)
  • Servo - Servo control - este o bibliotecă standard Arduino
  • WS2812B -NEOPixel control - vine ca parte a pachetului STM32

Această pagină Wiki explică modul de utilizare a plăcilor STM32 cu Arduino IDE.

Pasul 12: Îmbunătățiri viitoare

Îmbunătățiri viitoare
Îmbunătățiri viitoare

Câteva lucruri ar putea fi îmbunătățite în acest design, pe care le-ați putea lua în considerare dacă vă angajați în acest proiect:

  • Folosiți ESP32 în locul plăcii Maple Mini. ESP32 are 2 procesoare, stive Bluetooth și WiFi și poate rula la 60 MHz, 120 MHz și chiar 240 MHz.
  • Design mai mic - dispozitivul rezultat este mare. Ar putea fi mai compact (mai ales dacă renunțați la ideea de dans și servo asociat)
  • Detectarea bătăilor ar putea fi îmbunătățită infinit. Ceea ce vine în mod natural pentru noi, oamenii, pare a fi o sarcină dificilă pentru un computer
  • Ar putea fi concepute și implementate mult mai multe vizualizări.
  • Și, bineînțeles, o aplicație ar putea fi scrisă pentru a controla dispozitivul fără fir cu o interfață grafică.

Recomandat: