Bradul Spyhce – „conectat” la cartier

Spyhce, compania pentru care lucrez la Cluj, organizează de obicei de Crăciun un concurs care să lege cumva ideea de software și acel Christmas feeling. Anul ăsta am fost prea înghesuiți de evenimente ca să organizăm un concurs, dar am aplicat ideea pentru concurs la un proiect intern cu care să marcăm cumva sărbătorile.

Toată treaba a început din cauza bradului din curte, dacă e să căutam vinovați. A fost primul Crăciun pe care l-am prins în casa asta (ne-am mutat pe sfârșitul verii), și întâmplarea a făcut să avem un brăduț arginitiu în curte. Așa că discutând cu Andrei Candale, colegul cu care ne-am ambalat să facem proiectul ăsta, am zis că musai trebuie să facem ceva cu brăduțul nostru de Crăciun.

Discutând, din idee în idee, am hotărât să îmbrăcam bradul în LED-uri programabile și să îi punem un microfon undeva ca bradul să beculească în diferite feluri și culori în funcție de ce se întâmplă în jurul lui, în cartier.

Sună destul de simplu, nu? Oh well …

Proof Of Concept

Am dat comanda de 5 strip-uri de 5m, 50 led-uri / metru, 750 de led-uri în total. Cum au ajuns, am stat într-o seară cu Andrei și le-am testat – au ceva mufe de se pot lega una în continuarea celeilalte, în așa fel încât pot fi alimentate și comandate ca o singură entitate.

Sursa ce a împrumutat-o Andrei pentru această ocazie mergea bine, comanda (pe care o dădeam la 5V, deși strip-urile merg la 12V) părea să fie suficientă și prin Arduino și prin ESP8266. Am făcut câteva teste cu bibliotecile de la NeoPixel (Adafruit) pe Arduino și Color Chord pe ESP și ne-am distrat îmbrăcând brăduțul pe care Spyhce l-a pus în casă, la intrare, în 25 de metri de leduri colorate.

În aceeași seară ne-am uitat la bradul din curte și am încercat să ne dumirim cum putem să facem același lucru pe el. Am conclus destul de repede că bradul nostru, în timp ce-i foarte fain, e ascuns de gardurile relativ înalte ce le avem, și nu s-ar vedea nimic în stradă. Așa că am decis să inventăm un brad „atârnat” din led-uri.

IMG_20170108_204926
Prima idee, cu tot cu poziționarea față de casă

Am găsit și un colț bun al casei, unde avem câte un balcon la fiecare etaj și dedesubt ușa garajului, cu vedere foarte bună și din stradă și cu potențial mic să încurce lumea.

De aici lucrurile devin un pic tehnice

Ce aveam acuma nevoie să facem este să găsim o metodă deșteaptă să luăm cei 25 de metri de benzi de led-uri, să îi protejăm cumva de umiditate și de vânt și să le transformăm într-un brad stilizat, suspendat undeva în dreptul unuia dintre balcoanele superioare. Super. Dar cum?

Un pic de matematică

Am plecat de la desenul de mai sus – și întâmplarea face că eram cu Pătrat când mă gândeam la asta, și cum pătrat e muuuult mai bun la matematică decât mine, a calculat el cu WolframAlpha cum ar trebui să arate spirala ca să consume cei 25m de led-uri, să se încadreze în înălțimea dintre balcoane și să aibă niște proporții care să ajute la feeling-ul general de brad.

Concluzia a fost că la lățimea maximă de 1.5m (diametru) și desfășurarea pe înălțime de 2.5m, cu 10 bucle ale spiralei, ajungem aproape de 25m

Pentru WolframAlpha, curba asta arată așa

{0.75t * sin(2pi * 10t),0.75t * cos(2pi * 10t), 2.5t},{t,0,1}

(puteți testa și voi aici, e destul de cool, am testat tot felul de proporții).

Izolații

Următorul pas pe care a trebuit să-l rezolvăm a fost să izolăm led-urile de umezeală. Am folosit ceva furtun de grădină transparent, și a fost o întreagă provocare să tragem led-urile prin secțiuni de câte 5m de furtun, dar într-un final Andrei a găsit o soluție.

Există și strip-uri de led-uri gata pregătite de scandal, dar sunt de trei ori mai scumpe și ieșeam prea mult în decor cu bugetul (am plătit 85 RON / strip la ledia.ro – am avut noroc de și de o ofertă, cele cu IP65, deci izolate bine de tot erau de la 210 / strip în sus).

Cadrul

Avem led-uri, sunt protejate, știm cum ar trebui să arate când sunt aranjate, acum ne trebuia o soluție să le putem suspenda – un cadru de vreo formă. Soluția cea mai la îndemână a fost să construim un cadru din lemn în interiorul căruia să facem o structură de sârmă.

Am cumpărat la un moment dat de la Lidl o cutie cu inele cu șurub și a părut momentul ideal să le pun la lucru. Mai aveam ceva lemne pe acasă de la alte proiecte, și cu câteva corniere din Leroy Merlin și câteva ore de muncă, aveam și un cadru.

IMG_20161221_165753
Cadrul la 70%. Am pus 14 inele / latură, și am „țesut” firele ca să țină mai bine
IMG_20170108_214425
Și o schemă – partea aia de 1m fără sârmă e ca să avem cum să asigurăm bradul în balcon, și unul din motivele pentru care nu are decât 1m e că … atâta are blaconul.

Următorul lucru mare de făcut era de agățat furtunul cu led-uri de structura de lemn, în așa fel încât să iasă spirală. Nu mi-am imaginat nici un mod prin care am fi putut să facem asta după ce structura de lemn era deja fixată de balconul cel mai de sus, așa că am decis că montăm spirala pe ea în garaj, și o ridicăm ulterior.

Cum printezi un desen de 1.5m x 1.5m?

Pentru asta, am avut nevoie să printăm o spirală 1:1, ca să o avem de referință. O provocare interesantă, mai ales că la cum ne arăta programul, o vizită la print shop nu era chiar ușor de planificat (erau săptămânile nebune dinainte de Crăciun, trafic în oraș, alea alea) și oricum, suprafața pe care o aveam de printat era 1.5m x 1.5m.

Prima provocare: cum obții un desen cu o spirală după parametrii de mai sus? După ce-am învățat că așa ceva se numește o curbă parametrică, soluția a fost, ca de obicei în astfel de situații, Inkscape. Este o extensie instalată implicit (în Ubuntu cel puțin), la Extensions > Render > Parametric Curve care deschide un ecran similar cu cel de mai jos. De notat că Inkscape are pretenția să ai un dreptunghi (rectangle) desenat și selectat, în care o să înghesuie curba.

Screenshot from 2017-01-08 19-32-32

Cool, am scalat dreptunghiul la 1.5×1.5m din Inkscape, am generat curba, acuma … cum o printăm? Preferabil pe imprimanta A4 din birou? :D Există mai multe variante (în Ubuntu), noi am folosit pdfposterȘi ca să nu ne lovim de problema că nu întreaga suprafață a unei foi A4 poate fi printată cu o imprimantă normală, am folosit tehnica descrisă aici pentru a sparge spirala în foi mai mici decât A4, și apoi să așezăm desenele respective centrat în zona accesibilă imprimatei pe fiecare pagină.

Dacă sunteți curioși, din asta (PDF) – 1 pagina, 1.5mp am făcut asta (PDF) – 70 de pagini A4.

Ca să le putem folosi au trebuit desigur decupate, noroc că am o ghilotină de hârtie (deh, la Lidl au o grămadă de chestii faine :P) și am rezolvat în 30 de minute toată povestea.

Man vs. garden hose

Următoarea distracție a fost să facem din 5 bucăți de 5m de furtun, una de 25m, să verificăm conexiunile electrice și să tragem suficient cablu de alimentare și de comandă încât să putem să ne jucăm din casă cu ledurile care urmau să fie montate afară.

Am sperat că putem să lipim capetele de la furtun cu silicon, dar jur că furtunul ăsta de grădină, cât de inocent pare el, e o bestie malefică care face fix doar ce vrea ea. Așa că a trebuit să acționăm cu singura soluție în caz de bestii malefice: duct-tape.

Pentru asta am chemat întăriri, era deja în seara dinainte să plec din Cluj pentru Crăciun – așa că e un moment bun să le mulțumesc aici Florinei și Ioanei, care au venit la Spyhce și ne-au ajutat cu bricolatul, altfel nu aveam nici de Revelion bradul montat.

După ce-am avut toate furtunele legate, am testat conexiunea electrică și de comandă, și, după câteva necazuri, contacte proaste și câteva segmente eliminate din circuit, aveam un furtun continuu, protejat de intemperii și funcțional (incredibil de greu de manipulat, dar asta-i alta poveste), cu un cablu suficient de lung atașat.

Partea bună la toate strip-urile de led-uri cu care am umblat este că sunt modulare și pot fi decupate și lipite – în cazul ăstora, un modul are trei led-uri, deci când am găsit o problemă am decupat pur și simplu cele trei led-uri și am refăcut conexiunea între cele două capete rămase.

Montarea spiralei pe cadru

Am lipit spirala printată pe jos în garaj, și apoi am luat tot furtunul (care încă se zvârcolea malefic) și l-am lipit cu scotch peste spirala printată. A durat 45 de minute, dar s-a rezolvat.

IMG_20161222_003522
Victorie!

Ne-am gândit ca suspendarea să o facem cu fir de nylon (fir de pescuit) care să fie prins de grid-ul de sârmă al cadrului și de furtun cu niște noduri simple. Am ales nylon pentru că e rezistent, ieftin și nu se (prea) vede.

Am ales niște puncte pentru care am calculat lungimile firelor. Apoi, am măsurat și prins cele 40+ de fire, în două sesiuni, una înainte de Crăciun și una înainte de Anul Nou – e o operațiunea plictisitoare și obositoare, care trebuia de-acuma desfășurată în garaj, unde nu era ca afară da nici cald nu era :)

IMG_20161222_023919
Lungimi fire

Instalarea pe casă

Operațiunea cea mai dificilă și riscantă a fost ridicarea. Din cauza constrângerilor practice, am montant toate treaba în garaj în poziția în care urma să stea și pe balcon (adică cadrul de lemn pe orizontală), dar ridicarea urma să se întâmple pe verticală. Am asigurat cumva cu sfoară spirala sa nu fugă prea tare, și am ridicat totul cu corzi pe balcon.

După ce am ridicat toată treaba am prins-o de balcon, am tăiat ce asigurări temporare mai rămăseseră și ce aveam acum în fața ochilor era comparabil mai repede cu ce se întâmplă cu un ghem de lână după ce ajunge pe mâna unei pisici decât o treabă matematică rezultată în urma unor calcule precise …

A urmat un moment de-ăla de deznădejde și la mine și la Andrei și, deși niciunu nu am spus nimic, am fi fost în stare să îi dăm foc atunci și să plecăm acasă. Ce se întâmplase era că unele din ancoraje se desprinseseră de pe cadru de sus, ceea ce nu era foarte tragic, dar multe din ancoraje se deplasaseră pe lungimea furtunului. Cu un pic de noroc și un pic de atenție, am reușit să aducem cam 60% din ancoraje pe poziții acceptabile, chiar dacă nu pe pozițiile originale, încât să avem o arătare care să semene cu un brad :D.

IMG_20161230_180822
Un pic de … natural randomness :)

Electronica (sau partea la care ne știm)

Partea electronică a proiectului e relativ simplă.

Strip-urile sunt de felul ăsta, 12V cu controller WS2811, destul de comun. Avem un microfon de la Sparkfun cu gain automat pe care l-am luat să o ajut pe soră-mea la un proiect, care nu are prea multe pretenții, și un esp8266, un controller fain care are wifi integrat și e destul de mic și ieftin.

IMG_20170108_230957
După cum spuneam, destul de basic

ESP-ul prelucrează semnalul analogic folosind biblioteca ColorChord (care-i destul de cool, dacă nu vă interesează codul puteți vedea un demo aici) și, în funcție de sunet, controlează led-urile de pe strip. Am găsit o soluție să lipim microfonul pe exteriorul geamului de la etaj și să ținem restul firelor și echipamentului în casă, ca să nu mai trebuiască să construim ceva și pentru ele.

Rezultate

Rezultatul este foarte mișto – spirala noastră arată mai natural decât ar fi arătat cea perfectă, matematică. Cartierul e suficient de liniștit ca atunci când latră câinele vecinului, bradul să lumineze în tandem cu lătratul lui. Strada noastră e cumva în pantă, așa că mașinile ambalate să urce panta fac și ele braduțul să danseze. Și, desigur, orice ușă / portieră trântită, artificiile și petardele de anul nou, conversațiile de pe stradă …

În filmul de mai jos, testam conexiunile cu microfonul în casă și un telefon care cânta Enter Sandman varianta Apocaliptyca, dar vă puteți face o imagine de cum arată rezultatul.

IMG_20161230_180032
Vedere de sus
IMG_20161230_182859
Vedere de jos

Am început să lucrăm pe la jumătatea lui decembrie și l-am instalat pe 30, în ultima zi lucrătoare a anului – au fost mai mult(e) zile de hei-rup, pentru că ăsta a fost programul. Andrei și cu mine am avut ajutor din partea colegilor din Spyhce și Florina, Ioana și Pătrat din echipa de la cercetași au contribuit pe alocuri ;)

Am avut de rezolvat tot felul de provocări interesante pe drumul de la idee la produsul final – de la izolat benzi de led-uri în furtun de grădină la probleme de curbe parametrice de desenat în Inkscape și de la descoperit că există un bit de bormașină pentru înșurubat cârlige la decupat / lipit segmente de benzi de leduri.

În concluzie, bradul nostru este „conectat la cartier”, așa că dacă vreți să-l testați vă (mai) așteptăm săptămâna asta să urlați la el în Cluj, la intersecția străzilor Eftimie Murgu și Mikszáth Kálmán. Faceți voi zgomot, că-l vedeți unde e :D

Și dacă vă știți la web și la python sau angular, haideți și înăuntru, poate rămâneți ;)

Un comentariu la „Bradul Spyhce – „conectat” la cartier”

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.