Cuprins:

Ceas cu alarmă Oled: 8 pași (cu imagini)
Ceas cu alarmă Oled: 8 pași (cu imagini)

Video: Ceas cu alarmă Oled: 8 pași (cu imagini)

Video: Ceas cu alarmă Oled: 8 pași (cu imagini)
Video: Ceas cu Alarma 2024, Iulie
Anonim
Ceas cu alarmă Oled
Ceas cu alarmă Oled

Există o mulțime de ceasuri arduino / ESP32, dar folosesc aceste OLED-uri frumoase și clare?

Am experimentat cu arduino și ESP32 de ceva timp, dar nu am ajuns niciodată la un produs finit. Am făcut un ceas cu alarmă cu 4 OLED monocrome de 1,3 inch. Ceasul are, de asemenea, o lampă de noptiere reglabilă și un port de încărcare USB (nimeni nu are prize de rezervă lângă patul său). Și OLED-urile sunt variabile, acest lucru a fost adăugat în ultimul moment după ce proiectul meu a fost amenințat de prietena mea. În cazul în care nu este destul de slab - în vocea iubitelor - destul de slab, pot oferi, de asemenea, o versiune a codului în care sunt afișate 3 afișaje între anumite ore. Scopul a fost de a crea un ceas ușor de întreținut, cu o privire dincolo de „prototip”. În timp ce îmi făceam ceasul, am întâmpinat câteva dificultăți pe care trebuia să le rezolv, motiv pentru care cred că acest lucru instructiv merită împărțit. Ceasul poate fi realizat cu mici instrumente, nu-mi plac „și pentru pasul următor am folosit tutorialele mele de 10.000 € / $ moară CNC”.

Câteva lucruri care vor fi explicate în această instruire (in-structable-ception):

- Cum se folosește / se conectează un afișaj OLED I2C cu arduino / ESP32

- Cum se utilizează mai multe obiecte I2C cu un singur arduino / ESP32

- Cum să faci un meniu „scroll-capable” folosind un codificator rotativ (+ cum să folosești un codificator cu un ESP32 / arduino)

- Cum să proiectați și să comandați un PCB personalizat folosind fritzing.

- Ceasul folosește, de asemenea, un RTC (ceas în timp real), șofer cu led, modul de tensiune redusă … Nu voi intra cu adevărat în acestea, deoarece există într-adevăr o mulțime de informații disponibile pentru aceste module.

Aș dori să menționez că nu sunt un programator profesionist. Scopul instructabilului meu este să explic punctele pe care le-am menționat mai sus. S-ar putea să nu fie cea mai curată modalitate în care am pus totul împreună pentru produsul meu final. Este modul care mi-a permis să urmăresc totul.

Provizii

Când cumpăr consumabile, încerc mereu să cântăresc importanța calității / documentației față de preț. Livrările mele sunt un amestec de mărci A și piese chinezești mai ieftine. Mouser este un furnizor excelent dacă calitatea este importantă, comand de la Banggood / Aliexpress pentru piesele mai ieftine.

- O placă ESP32, am folosit Huzzah32 de la adafruit, dar există o mulțime de alte opțiuni (mai ieftine). Am ales Huzzah32 pentru că este foarte bine documentat.

- 4 afișaje OLED I2C de 1,3 inci (128x64, cu driverul SH1106), cele de 0,96 "sunt mai frecvente, dar pentru acest proiect prefer cele de 1,3"

- Driver Sparkfun femtobuck pentru a conduce LED-ul

- Ceas RTC, am folosit unul cu o celulă de litiu

- Arduino nano

- Port USB 2.0 feminin (am folosit: SS-52200-002 de la Stewart Connector)

- Mufă DC femelă (am folosit: L722A de la Switchcraft)

- Adaptor DC 12V 3A (GST36E12-P1J de la Mean Well)

- PCB personalizat, opțional, dar acest lucru face proiectul mult mai compact și ușor de întreținut dacă o piesă moare + mai multă fiabilitate, deoarece mai puține fire (jlcpcb.com)

- Șuruburi și șuruburi M3

- Inserturi din alamă M3

- Modul de descărcare de la 12V la 5V de la Pololu (DF24V22F5)

- 3 wați alimentați cu radiator

- fire de jumper

- Buzzer

- Multiplexor I2C (TCA9548A de la adafruit)

- 2 codificatoare rotative (am încercat unele, nu toate funcționează cu codul meu. Cel de la „DFrobot” funcționează și la fel funcționează și cel de la PCB rotund de la „DIYmore”. Codul meu nu pare să funcționeze pentru butonul de apăsare de tip KY-040. Ceasul deșteptător îl folosește pe cel de la DIYmore deoarece sunt foarte ușor de montat pe panou (nu sunt necesare șuruburi / găuri suplimentare).

- Sortiment de antete de sex feminin (opțional)

- Lemn pentru cadru: 18mmx18mmx2400mm

- Hârtie de calc

Am folosit și câteva instrumente (lipitor, mâna a treia, ferăstrău …), dar nimic cu adevărat exotic.

Pasul 1: Utilizarea unui Oled

Folosind un Oled
Folosind un Oled
Folosind un Oled
Folosind un Oled
Folosind un Oled
Folosind un Oled

Pentru a utiliza OLED-urile trebuie să instalați o bibliotecă. Folosesc U8G2lib de la Oli Kraus, este foarte ușor de înțeles și are un ghid de referință cu exemple clare.

Pentru a vă conecta placa (ESP sau arduino) trebuie să găsiți pini SDA și SCL. Acești pini sunt pini de comunicație I2C. Google pentru „afișarea” tabloului dvs. specific, dacă nu le puteți găsi.

Am adăugat câteva exemple de cod. Codul funcționează atât pentru arduino, cât și pentru ESP32, dar ESP32 este mai puțin probabil să rămână fără memorie. Toate oledurile pe care le-am încercat până acum funcționează atât cu 3.3v (ESP32), cât și cu 5V.

Pasul 2: OLED-uri multiple

OLED-uri multiple
OLED-uri multiple

Aici proiectul meu începe să difere de multe alte ceasuri cu alarmă. Majoritatea arduino-urilor / ESP-urilor au doar unul sau doi pini I2C. Acest tip de limite limitează utilizarea pieselor I2C. Ce se întâmplă dacă am 4 senzori I2C și doresc să le afișez citirile pe un afișaj I2C? Introduceți multiplexorul. Muliplexorul vă permite să abordați 7 părți I2C diferite. Acest lucru permite ESP32-ului meu să utilizeze un ceas I2C în timp real și să afișeze ora folosind din nou I2C pe cele 4 afișaje (sau mai multe, nu mă lăsați să vă opresc).

Am adăugat câteva exemple de cod pentru ESP32, de aici înainte nu sunt sigur că arduino poate ține pasul. Exemplul folosește doar afișaje, pot fi și alte lucruri, cum ar fi senzori I2C etc. Principiul este întotdeauna același, numiți canalul potrivit cu „tcaselect (#);” funcție, apoi executați orice cod necesar pentru obiectul dvs. I2C.

Pasul 3: Crearea unui meniu derulabil cu un codificator rotativ

Crearea unui meniu derulabil cu un codificator rotativ
Crearea unui meniu derulabil cu un codificator rotativ
Crearea unui meniu derulabil cu un codificator rotativ
Crearea unui meniu derulabil cu un codificator rotativ
Crearea unui meniu derulabil cu un codificator rotativ
Crearea unui meniu derulabil cu un codificator rotativ

Mai întâi, testați-vă codificatorii. Am adăugat câteva coduri pentru a testa modulele de codificare. După cum se menționează în consumabile: am testat cu succes codul meu doar cu modulele de codificare rotativă de la robotul DF și cu modulul cu PCB rotund de la DIYmore. Vedeți imaginile de mai sus pentru codificatoarele potrivite.

Biblioteca pe care am folosit-o este aceasta:

PDF-ul pe care l-am adăugat, sperăm, ajută la structura meniului pe care am folosit-o pentru ceas.

Punerea în funcțiune a codificatorului a fost cea mai dificilă parte pentru mine în acest proiect. Există o mulțime de codificatoare diferite și o mulțime de biblioteci diferite care nu sunt întotdeauna compatibile cu ESP32. Dar cred că un codificator rotativ (funcțional) este o soluție elegantă dacă doriți să introduceți ceva. Dacă aș fi folosit doar butoane, aș fi avut nevoie de mai mult de 1 și setarea timpului ar necesita o mulțime de apăsări.

Pasul 4: Punerea codului anterior Togetther

Punerea codului anterior Togetther
Punerea codului anterior Togetther

Titlul rezumă ceea ce am făcut. Am încercat parte pentru parte și apoi am pus totul împreună. Dar pentru că nimic nu este ușor, a trebuit să schimb unele lucruri. Comunicarea în serie este un proces lent. Acest lucru împiedică citirea corectă a codificatorului. Pentru a depăși acest lucru, am adăugat întreruperi la pinii codificatorului. Codul pentru citirea codificatorului este apoi imediat apelat dacă apăsați sau rotiți codificatorul.

Odată ce înțelegeți modul în care sunt create meniul, veți descoperi că este foarte ușor să adăugați sau să eliminați funcții după propriul dvs. gust. Poate doriți să preluați vremea sau ora curentă de pe internet și să o afișați?

Am lăsat deoparte multe astfel de idei pentru că îmi doream mai presus de toate o pace în timp sigură. Unul care nu face nimic automat. Lucrez ore foarte ciudate într-o zonă de vară. De fiecare dată când se schimbă ora, sunt nervos să adorm. Telefonul meu va schimba automat ora? Ceasul meu? Ei bine, ceasul meu nu o va face decât dacă îl schimb singur. Dar poate vrei să-ți pui ceasul în bucătărie? Scenariu diferit, adăugați caracteristici până când memoria nu mai este disponibilă!

Pasul 5: PCB personalizat cu Fritzing + Schematic

PCB personalizat cu schema Fritzing +
PCB personalizat cu schema Fritzing +
PCB personalizat cu schema Fritzing +
PCB personalizat cu schema Fritzing +
PCB personalizat cu schema Fritzing +
PCB personalizat cu schema Fritzing +

Punct de atenție: Adafruit subliniază că, deși puteți alimenta huzzah32 prin pinul USB, trebuie să aveți grijă să nu utilizați simultan priza de alimentare micro USB. PCB-ul meu este alimentat prin buck, care apoi alimentează huzzah prin pinul USB. Deci, deconectați întotdeauna alimentarea externă / scoateți huzzah de pe tablă atunci când încărcați.

Am decis să lipesc anteturi de sex feminin pe PCB, deoarece facilitează schimbarea unei piese sau adăugarea de exemplu a unui senzor I2C suplimentar. Acest lucru îmi permite, de asemenea, să elimin cu ușurință nano sau ESP32 pentru a încărca programele.

Am adăugat fișierul Frizting, pot introduce un roman aici, dar cred că exemplul vorbește cel mai bine. Am început cu schema întregii configurări. În timp ce Fritzing are multe părți în coșurile sale, nu totul este acolo. Uneori puteți găsi partea Fritzing pe internet, alteori nu puteți. Părțile pe care nu le-am putut găsi, le-am înlocuit pur și simplu cu o parte a antetului feminin. Dacă faceți clic dreapta pe el, puteți edita antetul la cantitatea de pini dorită și îi puteți atribui un pinout. Am făcut asta cu fiecare parte pe care nu o găseam. Deoarece aproape toate modulele folosesc același pas de 2,54 mm, acest lucru vă va oferi spațiul corect pentru piesă.

Apoi treceți la vizualizarea PCB a aplicației fritzing. Un PCB va fi pus în loc, dacă faceți clic pe el, puteți seta dimensiunea acestuia și puteți alege un PCB cu strat unic sau dublu. Al meu folosește 2 straturi. Fritzing vă va sugera conexiunile pe care le-ați făcut în vizualizarea schematică. Programul are o opțiune autoroute, dar eu nu o folosesc niciodată. Îmi place să îmi organizez manual conexiunile. În vizualizarea PCB, conexiunile galbene sunt în stratul superior, iar portocaliul sunt în stratul inferior. Din nou, dacă faceți clic pe conexiune, puteți alege proprietățile acesteia.

Pentru a face PCB-ul real, trebuie să-l exportați ca fișier gerber. Înainte de a face acest lucru, sub fila „rutare” puteți verifica regulile de proiectare. Dacă totul se verifică, puteți face clic pe „export pentru PCB”. Majoritatea producătorilor vor cere fișierul gerber, deci selectați exportul către gerber.

Mi-am comandat PCB-ul de la JLCPCB, îmi place să vă citeze imediat un preț. Există, desigur, multe alte opțiuni.

Despre schemă: sunt utilizate 2 tensiuni. LED-ul și femtobuck-ul sunt alimentate direct de la sursa de 12V. Restul este alimentat prin intermediul dolarului cu 5 volți.

Pasul 6: Design + Lasercutter

Design + Lasercutter
Design + Lasercutter
Design + Lasercutter
Design + Lasercutter

Pentru primul meu design am încercat să folosesc stejar solid (urmez cursurile de prelucrare a lemnului), dar a devenit rapid clar că acest lucru nu era ideal. Lemnul este prea gros, ceea ce face dificilă montarea pieselor. Multiplexul de mesteacăn de 3 mm permite modalități mai ușoare de a fixa codificatoarele și afișajele.

Am găsit un serviciu lasercut online, snijlab.nl, disponibil pentru pasionații aflați în Rotterdam (livrează în Belgia, Olanda și Germania). Pe site-ul lor puteți încărca desenele dvs. și vă indică imediat prețul. Am folosit Autocad, pe care îl am la locul de muncă, dar software-ul nu prea contează. Trebuie doar să fie un desen vectorial (Vectr, Illustrator, Inkscape …). Majoritatea magazinelor folosesc culori pentru a determina dacă doriți să tăiați sau să gravați.

Câteva lucruri de reținut:

- Max. dimensiunile decupatorului (am desenat un cadru în jurul pieselor mele)

- Min. distanța dintre tăieturi

- Asigurați-vă că nu trageți nicio linie dublă, laserul va face o trecere suplimentară, costându-vă mai mult.

- Când faceți complot în format PDF, asigurați-vă că faceți complot 1: 1. Nu doriți să reduceți sau să vă potriviți pe hârtie.

Pasul 7: Asamblare

Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare

Am construit ceasul în jurul unui cadru din lemn, panourile sunt menținute la locul lor cu șuruburi M3 și inserții în cadru. Dacă ar construi vreodată o versiune 2, aș folosi profiluri din aluminiu „L” pentru a atașa panourile. A fost foarte dificil să găuriți cu precizie găurile pentru inserțiile de alamă. Mi-a luat foarte mult timp, doar pentru un rezultat acceptabil. Acest lucru ar însemna, desigur, că desenul tăiat cu laser trebuie revizuit. Cred că cu profile din aluminiu și doar cu piulițe și șuruburi veți obține un rezultat mai bun.

Pentru a difuza mai bine lumina, am lipit hârtie de calc pe interiorul perforațiilor. Acest lucru conferă luminii o strălucire frumoasă.

Pasul 8: Nu te opri aici

Nu te opri aici
Nu te opri aici
Nu te opri aici
Nu te opri aici
Nu te opri aici
Nu te opri aici

Proiectul se concentrează în jurul unui ESP32, abia l-am folosit. În prezent, luminile dormitorului meu pot fi controlate de la distanță folosind blynk. Controlul acestora cu ceasul este doar un mic pas mai departe. Poate doriți niște afișaje suplimentare care să vă arate temperatura din jurul casei? Sau niște senzori locali (există încă conexiuni I2C de rezervă pe acel multiplexor!). Poate setați ora / alarma printr-o aplicație și Bluetooth?

Spune-mi ce ai schimbat, ce ai schimba, ce ar trebui să schimb …

Recomandat: