Lumini de Crăciun computerizate (partea a II-a – software)

Lumini de Craciun computerizate (partea a doua - Software) - HobbytronicaBine te-am găsit !

După ce am vorbit aici în detaliu despre partea hardware a unei instalaţii de lumini de Crăciun sincronizate cu muzică, abordăm în continuare aspectele ce ţin de partea partea software. Pentru a ne ocupa de partea software nu avem nevoie decât de un PC/laptop, un Modul Arduino Uno, puţină imaginaţie şi ceva timp liber. Mai concret, asta înseamnă că poţi lucra la programarea viitoarelor jocuri de lumini chiar şi înainte de procurarea celorlalte elemente hardware.

Cuprinsul prezentării de astăzi include:

Instalarea şi configurarea programului Vixen Lights 2

Acest program se poate descărca gratuit de aici. Îl dezarhivăm undeva unde ne este mai uşor să-l găsim şi unde riscul de a-l şterge din greşeală este minim. Intrăm în arhivă şi pornim programul accesând fişierul Vixen.exe . La prima pornire este posibil să apară o fereastră neagră în care ni se cere în final să apăsăm orice tastă. Ne conformăm şi după acest lucru programul ar trebui să pornească.

Primul lucru care trebuie să-l facem este să creăm un profil personalizat prin care configurăm programul în funcţie de caracteristicile proiectului nostru. Mergem în “Profiles” apoi în “Manage” şi în fereastra care apare dăm un click pe “+” pentru a adăuga un nou profil. Completăm fereastra în care ni se cere un nume pentru profil şi dăm “OK“. Apare o altă fereastră în care observăm un buton numit “Add“. Scriem în dreapta lui câte canale dorim să utilizăm (18, în cazul de faţă) şi apoi dăm click pe el. Dând apoi dublu-click pe fiecare canal în parte, îi putem modifica:

  • numele (în figura 1 se observă că am făcut corespondenţa dintre numele canalelor aşa cum apar ele în Vixen Lights 2  şi aşa cum apar ele în scena de lumini aleasă în figura 6 din Proiect lumini de Crăciun computerizate (partea I – Hardware));
  • culoarea (cu care canalul respectiv este reprezentat în fereastra de programare a jocului de lumini);
  • starea (pornit sau oprit).

Vixen Lights 2, fereastra Edit Profile - Hobbytronica

Figura 1. Vixen Lights 2 – fereastra Edit Profile

În acest moment profilul este setat să utilizeze 18 canale însă trebuie să setăm şi modul în care programul comunica cu exteriorul (cu modulul Arduino Uno). Pentru acest lucru, dăm click în aceeaşi fereastră pe “Output plugins“. În fereastra care apare dăm click pe “Generic serial” şi apoi dăm click pe “Use” (vezi figura 2).

Vixen Lights 2, fereastra Output plugins - Hobbytronica

Figura 2. Vixen Lights 2 – fereastra Output plugins

Dacă avem instalate driverele modulului Arduino Uno, conectăm la laptop/PC modulul Arduino Uno şi verificăm ce port serial i-a fost atribuit aruncând o privire în computer management (click dreapta pe “My Computer” şi alegem “Manage“). La mine, pe Windows 7 apare aşa:

Verificarea portului serial alocat unui modul Arduino Uno - Hobbytronica

Figura 3. Verificarea portului serial alocat unui Modul Arduino Uno

În figura 3, la capitolul “Ports” vedem listat numele modului Arduino folosit (Arduino UNO R3) precum şi portul alocat (COM8). Dacă la tine nu apare aşa ceva, fie nu ai instalate driverele pentru Arduino Uno, fie nu ai conectat modulul Arduino Uno la laptop/PC. Un tutorial foarte bun despre instalarea acelor drivere găseşti aici.

După ce aflăm numărul portului alocat modulului Arduino Uno în fereastra de la figura 6 dăm click pe “Plugin setup“. În fereastra care apare (figura 4) selectăm un (port) COM care să aibe acelaşi număr ca şi cel aflat în etapa anterioară, iar la căsuţa “Baud” alegem “9600” (aceasta fiind viteza cu care se transmit datele către Modulul Arduino Uno, adică 9600 kbps). Atenţie, în cazul meu modulului Arduino Uno i-a fost atribuit (aleatoriu) portul COM8, însă în cazul tău este posibil să i se atribuie un alt port. Aşadar în “Plugin setup” trebuie să treci portul care apare în “Computer management” şi nu cel pe care l-am oferit eu ca exemplu.

Vixen Lights 2,  fereastra Output plugins - Hobbytronica

 Figura 4. Vixen Lights 2 – fereastra Plugin setup

După ce dăm “OK“, “DONE” sau ce se mai cere în acele ferestre, sistemul este 100% configurat şi putem trece la realizarea de secvenţe de jocuri de lumini.

Programarea unei secvenţe în Vixen Lights 2

Înainte de a trece la realizarea de secvenţe trebuie să instalezi pe Modulul Arduino Uno soft-ul de comunicaţie dintre Vixen Lights 2 şi Modulul Arduino Uno. Aşa cum spuneam şi în prima parte, acest soft este disponibill aici. Trebuie doar încărcat pe Arduino Uno folosind Arduino IDE.

Următorul pas, aşa cum se observă şi în figura 5, este crearea unei noi secvenţe standard, adică a unui fişier în care sunt conţinute toate detaliile unui joc de lumini realizat cu Vixen Lights 2.

Vixen Lights 2, crearea unei noi secvente standard - Hobbytronica

Figura 5. Vixen Lights 2, crearea unei noi secvenţe sincronizate

După primul “next”, în fereastra care apare ni se cere să alegem durata minimă a unui eveniment din acel program, un eveniment însemnând în cazul de faţă durata minimă în care un canal poate fi menţinut pornit sau oprit. Sau mai băbeşte spus, este vorba de durata minimă după care starea unui canal poate fi schimbată. O valoarea prea mare a acestei valori nu ne lasă să creăm jocuri de lumini prea “rapide”, iar o valoare prea mică produce erori de transmisie a datelor dintre laptop/PC şi modulul Arduino Uno (adică jocul de lumini o poate lua razna). Eu am folosit valoarea prestabilită, adică cea de 100ms.

Următorul “Next” ne conduce către o fereastră în care ni se cere să alegem profilul asociat secvenţei pe care dorim să o creăm. Din meniul derulant plasat deasupra butonului “Profile Manager” alegem profilul creat anterior. Dăm iar “Next” şi ajungem la fereastra în care ni se cere să alegem o piesă muzicală cu care dorim să sincronizăm secvenţa curentă. Următorul “Next” este ultimul şi ne trimite într-o fereastră care ne permite să modificăm durata totală a secvenţei curente. Valoarea prestabilită a secvenţei este aleasă egală cu cea a piesei muzicale selectate. În continuare, ne uităm în dreapta jos a ferestrei şi găsim butonul “Create it“. Dăm click pe el şi ajungem în fereastra secvenţei proaspăt create, de unde vom putea programa şi rula jocul de lumini, care arată aşa ca în figura 6.

Figura 10. Vixen Lights 2, fereastra de editare si rulare a unei secvente de lumini sincronizate cu o piesa muzicala - Hobbytronica

Figura 6. Vixen Lights 2, fereastra de editare/rulare a unei secvenţe de lumini

În prima coloană (de la stânga la dreapta) din fereastra de editare/rulare se observă că cele 18 canale apar denumite şi colorate sugestiv, aşa cum le-am setat mai sus în etapa de configurare. În dreapta acestei coloane (în zona cu căsuţe gri) este prezentată fereastra în care vom compune efectiv programul jocurilor de lumini. Primul rând de căsute corespunde primului “brad”, al doilea rând corespunde celui de-al doilea brad şi aşa mai departe. Lăţimea unei căsuţe corespunde unei durate de 100ms (sau cât am setat în etapa de configurare la capitolul “durata minimă a unui eveniment”). În porţiunea de program care apare în figura 10 toate căsuţele sunt “gri” ceea ce înseamnă că la rularea acelei porţiuni de program toate elementele luminoase vor fi “stinse”.

Pentru a activa (“aprinde”) manual o căsuţă sau un grup de căsuţe putem să:

  • dăm click pe căsuţa respectivă sau să selectăm cu mouse-ul grupul de căsuţe pe care dorim să-l activăm şi apoi apăsăm tasta SPACE. Tot aşa putem proceda şi atunci când dorim să dezactivăm o căsuţă sau un grup de căsuţe;
  • ţinem tasta CTRL şi butonul stânga de la mouse apăsate. Apoi mişcând mouse-ul vom observa că putem trasa linii de orice lungime şi în orice directţe. La eliberarea butonului stânga al mouse-ului, toate căsuţele intersectate de linia respectivă vor fi activate;
  • putem să inserăm cu mouse-ul o zona din program, să o copiem (apăsând simultan pe tastele CTRL şi C) în altă zonă din program (apăsând simultan pe tastele CTRL şi V). Este exact ca şi cum ai copia un text în Microsoft Office.

Cu aceste moduri de activare/dezactivare a căsuţelor ai libertatea de a programa orice ordine de aprindere a elementelor luminoase. Secvenţa curentă poate fi oricând rulată dând click pe triunghiul negru din dreapta etichetei “Attached Plugins“. În figura 7 poţi vedea ca exemplu o porţiune dintr-o secvenţă în Vixen Lights 2 făcută de mine, iar aici poţi vedea cum arată scena atunci când respectiva porţiune de secvenţă ajunge să fie rulată. Această etapă depinde strict de creativitatea ta şi de aceea îţi las ţie privilegiul de a-ţi imagina efecte luminoase ;).

Figura 11. Vixen Lights 2, portiune a unui program de jocuri de lumini sincronizat cu muzica - Hobbytronica

 Figura 7. Vixen Lights 2, porţiune a unui program (secvenţă) de jocuri de lumini sincronizat cu muzică

Nu are rost să te mint: programarea unei secvenţe sincronizate cu o piesă muzicală dureaza câteva ore. Mie imi ia în medie 4-5 ore / secvenţă. Însă îmi putea lua şi mai mult dacă aş fi stat şi aş fi potrivit 100% manual jocul luminilor cu ritmul muzicii. Din fericite am descoperit la timp (adică înainte să vină Moş Crăciun 🙂 ) funcţia “Frequency Spectrum Analysis” (din meniul “Add-ins/Frequency Spectrum Analysis“). Mai pe româneşte, această funcţie îţi permite să foloseşti sistemul ca pe o orgă de lumini: fiecărui canal îi poţi asocia o anumită bandă de frecvenţă şi implicit, fiecare canal este “aprins” atunci când în piesa muzicală apar frecvenţele corespunzătoare. Eu însă nu am folosit această funcţie pentru a face rost de o altfel de orgă de lumini ci pentru a identifica precis ritmul piesei muzicale. Ţinând cont că ritmul unei piese muzicale este dat de frecvenţe joase care apar ritmic (de exemplu: bătăi de tobă) am folosit funcţia Frequency Spectrum Analysis” pentru a activa căsuţele canalului 18 atunci când în piesa muzicală apar frecvenţele corespunzătoare ritmului acesteia. Având ritmul “scris” automat în canalul 18, mi-a fost mult mai uşor să sincronizez toate celelalte canale cu ritmul muzicii.

Uite mai exact cum se face. Deschizi opţiunea din meniul “Add-ins/Frequency Spectrum Analysis“. În fereastra care apare (vezi figura 8). Dai “play” dând click pe butonul cu triunghi pe el şi în primul şir de celule de sus studiezi care dintre acestea ajung pe roşu exact în ritmul muzicii. Dacă niciunele nu ajung pe roşu sau sunt prea multe care stau mereu pe roşu ajustezi sensibilitatea sistemului apăsând pe butoanele plasate deasupra etichetei “Scale” astfel încât să fie cât mai clar cu putinţă în care celule se evidenţiază cel mai bine ritmul piesei. Ritmul pieselor muzicale este dat de regulă de frecvenţe situate în gama 50-150 Hz, fapt confirmat şi de spectrul surprins în figura 8.

Figura 13. Vixen Lights 2, optiunea Frequency spectrum analysis - Hobbytronica

Figura 8. Vixen Lights 2, opţiunea Frequency Spectrum Analysis

În figura 9, pe la mijloc, se observă un şir de căsuţe orizontale care reprezintă cele 18 canale ale sistemului în discuţie. După ce ai identificat celula în care ritmul este cel mai bine evidenţiat, te duci cu mouse-ul deasupra căsuţei corespunzătoare canalului pe care vrei să-l faci să se aprindă în ritmul piesei, apeşi şi ţii apăsat butonul stânga al mouse-lui şi apoi duci cursorul mouse-ului către căsuţa în care “se vede clar ritmul piesei”. Eu de obicei am legat canalul 18 cu căsuţa de 80 Hz pentru că de obicei ritmul se vedea cel mai clar în căsuţa de 80Hz. Dai click pe “OK” şi în câteva secunde opţiunea îţi va activa căsuţele canalului ales în funcţie de ritmul piesei. Dai un play de verificare şi urmăreşti rezultatul. Dacă crezi că opţiunea nu ţi-a “scris” suficient de bine ritmul în canalul ales, jonglează fie cu sensibilitatea (din butoanele de deasupra etichetei “Scale” din figura 9) fie cu banda de frecvenţă (asociezi canalul cu o căsuţă de o frecvenţă mai mică sau mai mare).

Figura 12. Vixen Lights 2, folosirea optiunii Frequency spectrum analysis pentru aflarea ritmului unei piese muzicale - Hobbytronica

Figura 9. Vixen Lights 2, folosirea opţiunii Frequency Spectrum Analysis pentru aflarea ritmului unei piese muzicale

Această şmecherie nu merge chiar de fiecare dată (depinde de cât de ritmată şi zgomotoasă este piesa muzicală) însa din proprie experienţă îţi spun că în cel puţin 75% din cazuri funcţionează cel puţin satisfăcător.

O metodă mai puţin eficientă de sincronizare cu muzica este să activezi funcţia “Audio Visualizer” (vezi figura 10) şi să încerci să sincronizezi secvenţa curentă în funcţie de oscilograma piesei. Eu am folosit-o în cazul pieselor în care ritmul nu era foarte clar sau în cazurile în care voiam să sincronizez luminile în funcţie de alte sunete (altele decât cele care dau ritmul piesei).

Figura 14. Vixen Lights 2, optiunea Audio Visualizer - Hobbytronica

Figura 10. Vixen Lights 2, activarea opţiunii “Audio visualiser”

Menţionez că deşi cireaşa de pe tortul acestui sistem de lumini este sincronizarea luminilor cu muzica, sistemul poate fi folosit şi fără muzică. Pur şi simplu poţi crea o secvenţă fără muzica pe care o pui pe repeat (dând click pe butonul cu săgeată roşie deasupra) şi o poţi lăsa sistemul să funcţioneze aşa toată seara (sau noaptea).

Mai mult, Vixen Lights 2 ne permite să creăm şi playlist-uri care pot fi programate să ruleze la anumite ore şi/sau zile. Această opţiune poate fi accesată din meniul “Programs/Manage“. În fereastra care apare dai click pe butonul pe care este desenat un “+” albastru pentru a crea un nou playlist. Îl denumeşti cum crezi de cuviinţă. Presupunând că ai cel puţin o secvenţă salvată, vei observa în coloana din stânga secvenţele salvate. Foloseşti mouse-ul pentru a “trage” secvenţele salvate peste numele playlist-ului creat anterior. Ori de câte ori vei fi “tras” o piesă în playlist, aceasta va apare listată în coloana din dreapta. Dacă vrei să stergi piese din playlist, le poţi pur şi simplu “trage” cu mouse-ul din coloana din dreapta în coloana din stânga.

În acest moment ai cel puţin un playlist creat. Pentru al programa să ruleze la un anumit moment, accesezi meniul “Programs/Schedule“. În fereastra care apare:

  • click pe “Select sequence” pentru a alege o secvenţă pentru rularea automată;
  • click pe “Select program” pentru a alege un playlist pentru rularea automată;
  • alegi de la secţiunea “Execution start” ziua şi ora la care doreşti să înceapă rularea automată;
  • alegi de la secţiunea “Recurence” dacă vrei ca rularea automată să fie rulata zilnic (daily), saptamanal (weekly), lunar (monthly) sau anual (annually).
Observaţii finale

În acest punct sunt prezentate suficiente detalii pentru implementarea proiectului. Rezultatele obţinute de mine pot fi vazute în clipurile de mai jos.

În urma implementării proiectului am concluzionat o serie de recomandări de care te sfătui să ţii cont dacă vrei ca totul să funcţioneze în cele mai bune condiţii:

  • fiecare instalaţie cu led-uri are câte un controller al ei (cutiuţa de plastic dintre ştecher şi primul led). Iniţial am crezut că dacă setezi din acel controller ca toate led-urile să rămână mereu aprinse, acest lucru va rămâne valabil şi după întreruperea alimentării. Ei bine, am observat că la fiecare pornire a instalaţiei controller-ul poate porni în alt program şi mă pot găsi în situaţia în care sistemul meu comandă aprinderea unei instalaţii, iar controller-ul de pe acea instalaţie îî pâlpâie led-urile dupa cum are el chef. Pentru a evita acest lucru îţi recomand să şuntezi controller-ului de pe fiecare instalaţie;
  • asigură-te că elemente luminoase sunt aşezate într-o simetrie cât se poate de precisă pentru că în caz contrar efectele luminoase reale poate fi doar o caricatură a efectelor pe care ţi le-ai imaginat cât ţi-ai programat secvenţele;
  • dacă foloseşti un cablul USB prea lung sau de proastă calitate, sistemul se poate bloca. De exemplu, cu un cablu USB de 1,5 metri sistemul nu mi se bloca niciodată, însă cu un cablu USB de 5 M (de 15 RON), sistemul se putea bloca uneori chiar şi de 2-3 ori pe seară (în funcţie de cât era de ger afară 😀 ). Nu ştiu dacă ai cum să verifici asta, dar un cablu USB de calitate are firele interioare răsucite în spirală la fel ca şi firele din cablurile de retea.
  • elementele luminoase au uneori aprinderi accidentale foarte scurte (poţi vedea acest lucru şi în clip-urile de mai sus). Nu am identificat complet cauza însă cel mai probabil asta se datorează sensibilităţii excesive a triacelor BT131 din modulul driver. Dacă consideri deranjante aceste aprinderi accidentale, poţi încerca să înlocuieşti aceste triace cu unele mai putin sensibile (ca de exemplu acesta) sau să adaugi între poarta (G) fiecărui triac şi masă câte o rezistenţă de 1-10K care să le mai taie din sensibilitate. Oricum, după ce voi identifica soluţia optimă la această problemă voi introduce modificările necesare atât în schema modulului driver cât şi în cablajul propus pentru acesta.

Am ajuns la final ! Dacă ai ajuns până aici înseamnă că deşi presupune ceva muncă eşti într-adevăr interesat de acest proiect. De aceea consider că meriti un cadou: 5 secvenţe realizate de mine, împreună cu piesele muzicale aferente. Găseşti totul în arhiva de AICI.

Cu bine,

Ciprian

12 thoughts on “Lumini de Crăciun computerizate (partea a II-a – software)

  1. Care poate fi problema ca modulul Driver sa nu emite acele 220V la canale?
    Am procurat Arduino Uno, in stare normala. Am instalat driverele, am gasit portul COM3, am incarcat softul atasat de tine, si ca paralel Blink, este diferenta, un LED(la Blink) da impulsuri iar la softul(atasat aici) in continuu ON, deci placa functioneaza. Am asamblat modulu driver cu MOC3021, nimic bun, am analizat datasheet si am schimbat pe MOC3022,aceeasi poveste. Porturile le-am cuplat dupa instructie, canalul 18-A5,canalul 17-A4. Poti sa-mi explici ce nu fac corect?

  2. merci, am rezolvat modificand com-ul atribuit pentru arduino. Acum am download-dat cele 5 segvente si merge doar una am gresit eu

    • In afara de impresia ca merge, nu prea am inteles nimic :). Dar important e ca merge.

      Te rog sa filmezi ce ti-a iesit, sa pui pe youtube si sa-mi dai si mie link-ul sa-l public pe facebook ca sa putem stimula si pe altii :).

          • Salut, (sa facem lumina) la stabilirea numarului portului com nu pot modifica numai pana la nr4 (in Vixen) si atunci am modificat in arduino (am pus 2) => acum functioneaza. Am deschis cele 5 secvente facute de tine si din astea merge doar cea numita Dj Schwede. Intrebarea era: unde am gresit? cand deschid celelalte secvente nu apare nimic in campul acela de lucru

            • Ai urmat exact instructiunile cuprinse in fisierul “Instructiuni.txt”. Ai dezarhivat totul asa cum scrie acolo ? Iti apare vreo eroare ceva ? Da mai multe detalii pentru ca un simplu “nu merge” nu-mi da nici o informatie care sa ma ajute sa-mi dau seama unde e problema.

  3. salut,
    super meriti cel putin o cana de vin fiert cu scortisoara ;), incerc sa fac si eu dar m-am izbit de o problema: nu pot selecta com21, cat am eu atribuit la arduino, eu pot modifica maxim 4 adica 1, 2, 3, 4 la com

    • Salut.

      Multumesc de aprecieri. Anul asta o sa ma stradui sa merit o sticla intreaga de vin, pentru ca la anul sa pot aspira la un butoi intreg :).

      Referitor la problema ta, nu stiu ce sa-ti spun, cauzele pot fi enorm de multe. Daca ai cum, fa un film la problema, cu un telefon ceva si trimite-mi-l.

  4. super, meriti nota 1000 , incerc sa-mi imaginez cat ai muncit (migalit) la toate , trebuie sa ai mare satisfactie, felicitari , i-mi place, i-mi doresc sa te urmez.Sper sa reusesc o mica parte din ce ai facut tu.

Leave a Comment