Mărțișor … cu ecran

De obicei, de 1 martie, facem chestii cool pentru fetele din Spyhce. Anul trecut (ca și acum doi ani, dar pentru cu totul alte fete) am avut mărțișoare cu logo-ul Python făcute din Fimo.

Anul ăsta, înghesuit cu tot felul de lucruri, eram cât pe ce să o las moartă dacă nu era tovarășul meu de aventuri electronice, Andrei Candale – cu care am construit și bradul Spyhce – să vină cu o idee suficient de trăznită încât să merite pusă pe roate. Sau în piept.

Pe scurt, ideea lui Andrei a fost să facem niște mărțișoare … cu ecran. Adică, să poți să programezi ce mărțișor porți! Dacă vă sună SF, … aveți dreptate. Dar nu e imposibil de realizat!

Ideea

Ideea e relativ simplă – să afișăm ceva, o imagine pe un ecran suficient de micuț să ți-l poți pune în piept, cu alimentarea, desigur, de la o baterie – cu aceleași constrângeri: mic și cât de ușor.

Apoi a venit și ideea să avem și un buton undeva, cu care să poți schimba imaginea. Adică să ai mai multe poze încărcate în mărțișor și să-ți poți alege care e cea care e afișată la un moment dat.

Materiale

Am ales baterii CR2032, cele mai „grase” din seria CR20xx (baterii circulare – pastilă – cu diametrul de 2cm), ca să țină cât mai mult. Vreo 7 lei la orice magazin gen Altex. După ce am avut un mărțișoarele gata, am făcut și un test peste noapte să vedem cam cât țin bateriile și trebuie să fie undeva aproape de 15 de ore de utilizare continuă.

Andrei are mereu un ochi atent la ce chestii cool poate găsi pe net pentru trăznăi de-astea de prin China (AliExpress) și avea deja un ecran micuț OLED 128×64 și niște plăcuțe breakout cu Attiny85, dar și doar chip-ul, varianta DIP.

ATtiny-uri aveam suficiente, dar ecrane, doar unul. Un ATtiny85 e sub 10 RON. Cu o idee venită cam cu 10 zile înainte de deadline, nu mai prea poți comanda orice și oricât din China, că lucrurile ieftine vin cu vaporul și fac între 30 și 60 de zile.

Next stop după AliExpress sunt site-urile autohtone, prima dată de electronice (n-aveau), apoi OLX și Okazii.ro. După câteva ore de povestit cu tot felul de vânzători de prin Brăila (în timp ce colegul nostru din Galați ne povestea, la rândul lui, despre felurite moduri în care poți ajunge înfășurat într-un covor, în Dunăre, în Brăila, dar nu în Galați) sau București am găsit pe cineva care avea 5 la 30 de RON / bucata, am bătut palma și a treia zi curierul nostru de încredere ne-a adus jucăriile.

Butoane, plăci de test și alte consumabile mai avem „pe stoc” din obișnuină, prevedere sau alte proiecte.

Imagini

Există o bibliotecă de la Adafruit care se integrează direct cu ecranul și cu Arduino. Cum Arduino folosește o familie similară de controllere cu ATtiny, prima tentativă a fost să folosim această bibliotecă – dar spațiul de stocare pe ATtiny e, după cum îi spune numele, tiny. Așa că am trecut la altă bibliotecă făcută special pentru chip-ul ăsta, care ocupă ceva mai puțin spațiu, dar are nevoie de un anumit format pentru poză.

După ce ne-am prins urechile un pic la cum trebuie aranjați pixelii pozei ca să o poți lua din GIMP și să o pui direct pe device, Andrei a venit și cu o compresie simplă prin care să îndesăm cât mai multe poze pe memoria limitată a chip-ului.

Asta e script-ul meu, fără partea de compresie, care ia un fișier XBM exportat din GIMP și îl transpune în formatul pe care-l vrea display-ul.

romanian_pattern_flowers
Una din imagini, varianta zoomed in (pătratele alea mici sunt pixeli individuali de pe display)

Am stat apoi o zi întreagă să încercăm să potrivim breakout board-ul, bateria, display-ul și butonul într-un device care să fie suficient de mic și drăguț ca să poată sta în piept fără să îi trebuiască bretele.

Cum nu am găsit nicio soluție fantastică, am renunțat complet la breakout board și la orice bune practici am învățat în facultate, și am lipit toate cele direct pe o placă de test (de-aia cu găurele), tăiată la dimensiunea ecranului, în care se prindeau direct toate componentele, inclusiv chip-ul ATtiny fără niciun fel de soclu, direct pe partea cu pastilele de cupru. Am inventat și un suport oarecum elastic pentru baterie dintr-o sârmă mai groasă, care se prindea pe aceeași parte.

Pentru asta, ATtiny-ul a trebuit programat înainte să-l lipim, pentru că odată ce era prins acolo, nu mai era de scos, nici de re-programat.

Producție

martisor
Reprezentare schematică aproximativă. După cum ziceam, nu-i chiar mare lucru :)

Am produs cu Andrei pe 28 februarie după orele de lucru (până la 3 dimineața să fi tot fost) șase asemenea minunate device-uri. După ce am avut un prototip OK nu cred că ne-a luat mai mult de o oră, o oră jumate să le facem pe toate – dar n-am ajuns chiar ușor la prototip.

Au fost câteva lucruri de luat la pilă, cum se zice – cum ar fi conexiunile pentru borna negativă a bateriei, pentru a face un contact pe o suprafața cât mai mare.

Le-am izolat cu niște silicon în locurile periculoase de a face scurt dacă sunt atinse, mai ales în partea de sus, unde se prinde ecranul.

IMG_20170228_232348
Andrei își prăjește degetele cu zor (ora: aproximativ 1AM)

Le-am mai făcut și un pic de îmbrăcăminte de hârtie semi-transparentă să nu le chiar iasă mațele pe-afară, am atârnat un șnur alb-roșu pe ele și ta-daaaa – mărțișoare cu ecran.

În loc de concluzie

Ne-am distrat și ne-am delectat lucrând la proiectul ăsta – am avut și puțin noroc, să găsim componente în timp și la prețuri decente. A fost un challange de toate felurile – de programare, cu imaginile alea, de electronică și mai ales de mecanică și design.

Fetele de la Spyhce au apreciat mărțișoarele, Iulia chiar a făcut un filmuleț de prezentare cu al ei :)

Avem tot felul de idei de îmbunătățire în cazul în care ne gândim să repetăm experiența:

  • am putea să facem un integrat complet, care să conțină și ecranul și ATtiny-ul (varianta SMD), butonul și o ureche pentru baterie – ar fi mai ușor și mult mult mai rezistent
  • am putea să adăugăm undeva un NFC tag, ca să poți să-ți programezi imaginea cu telefonul (dacă telefonul tău are NFC)
  • sigur, poate există și ecrane mai interesante până la anul :D

Lasă un răspuns

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