Cuprins:
- Provizii
- Pasul 1: Ideea
- Pasul 2: Teorie Binary-Watch
- Pasul 3: Noțiuni de muncă
- Pasul 4: Alegerea componentelor
- Pasul 5: Schema
- Pasul 6: Aspect PCB
- Pasul 7: Proiectare 3D
- Pasul 8: Codul
- Pasul 9: Programare
- Pasul 10: lipire
- Pasul 11: Asamblare
- Pasul 12: Concluzii și îmbunătățiri
Video: Ceasul binar final: 12 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Recent am fost introdus în conceptul de ceasuri binare și am început să fac cercetări pentru a vedea dacă aș putea să-mi construiesc unul. Cu toate acestea, nu am putut găsi un design existent, care să fie funcțional și elegant în același timp. Așadar, am decis să îmi creez propriul design complet de la zero!
Provizii
Toate fișierele acestui proiect:
Bibliotecile pentru codul Arduino pot fi descărcate de pe GitHub aici:
Biblioteca M41T62 RTC
Biblioteca FastLED
Biblioteca LowPower
Pasul 1: Ideea
De curând am dat peste următorul videoclip:
Ceas de mână binar DIY
Videoclipul de mai sus arată un ceas binar de bază de casă. Habar n-aveam că așa ceva există, dar după ce am făcut câteva cercetări suplimentare pe tema ceasurilor binare, mi-am dat seama rapid că există o mulțime de modele diferite acolo! Am vrut să-mi construiesc unul, dar nu am putut găsi un design care să-mi placă. Ceasurile binare pe care le-am găsit erau lipsite de multe caracteristici și nu arătau prea bine. Așadar, am decis să-mi proiectez propriul complet de la zero!
Primul pas a fost stabilirea criteriilor pentru proiectarea mea. Iată ce am venit cu:
- Interfață RGB binară
- Afișarea timpului (cu indicarea timpului foarte precisă)
- Afișarea datei
- Funcționalitate cronometru
- Funcționalitate de alarmă
- Durata de viață a bateriei de cel puțin 2 săptămâni
- Încărcare USB
- Software ușor de personalizat de către utilizator
- Un design simplu și curat
Aceste criterii au devenit fundamentul întregului proiect. Următorul pas a fost să îmi dau seama cum aș vrea să funcționeze ceasul!
Pasul 2: Teorie Binary-Watch
Planul era simplu. Ceasul binar ar funcționa la fel ca un ceas obișnuit, cu excepția faptului că interfața ar fi binară, în mod specific, BCD (Binary Coded Decimal). BCD este un tip de codificare binară în care fiecare cifră zecimală este reprezentată de un număr fix de biți. Am nevoie de 4 biți pentru a putea reprezenta o cifră de la 0 la 9. Și pentru un standard
hh: mm
formatul orei, am nevoie de 4 cifre. Aceasta înseamnă că am nevoie de un total de 16 biți, care vor fi reprezentați de 16 LED-uri.
Citirea timpului în BCD este destul de ușoară odată ce te obișnuiești cu el. Rândul din partea de jos a ceasului reprezintă bitul cel mai puțin semnificativ (1), iar rândul din partea de sus este bitul cel mai semnificativ (8). Fiecare coloană reprezintă o cifră în
hh: mm
formatul orei. Dacă un LED este aprins, calculați acea valoare. Dacă un LED este OPRIT, îl ignorați.
Pentru a citi prima cifră, pur și simplu sumați toate LED-urile activate valorile corespunzătoare din prima (cea mai stângă) coloană. Faceți același lucru pentru celelalte cifre de la stânga la dreapta. Acum ați citit ora în BCD!
Acest principiu va fi același pentru restul funcțiilor de pe ceas. Utilizarea LED-urilor RGB va ajuta la distingerea diferitelor funcții și moduri folosind culori diferite. Culorile sunt alese de utilizator și pot fi ajustate cu ușurință la orice paletă de culori preferă. Acest lucru permite utilizatorului să navigheze cu ușurință prin funcții fără a se confunda.
Următorul pas a fost crearea unei diagrame bloc!
Pasul 3: Noțiuni de muncă
Ca orice proiect tipic de electronică, o diagramă bloc este o parte esențială în etapa inițială de proiectare. Folosind criteriile, am reușit să reunesc diagrama bloc de mai sus. Fiecare bloc din diagramă reprezintă o funcție în circuit și săgețile arată relația funcțiilor. Diagrama bloc în întregime oferă o imagine de ansamblu bună a modului în care circuitul va funcționa.
Următorul pas a fost să începeți să luați decizii cu privire la componentele individuale pentru fiecare bloc din diagrama bloc!
Pasul 4: Alegerea componentelor
S-au dovedit a fi destul de multe componente în acest circuit. Mai jos, am ales câteva dintre cele mai esențiale împreună cu o explicație a motivului pentru care le-am ales.
LED-urile
Pentru interfața binară, alegerea a fost destul de simplă. Știam că vreau să folosesc LED-uri pentru afișaj și mi-am dat seama că am nevoie de 16 dintre ele (într-o rețea 4 × 4) pentru a afișa cât mai multe informații posibil. În timpul cercetărilor mele pentru un LED perfect, APA102 a continuat să apară. Este un LED adresabil foarte mic (2mm x 2mm), cu o gamă largă de culori și este destul de ieftin. Chiar dacă nu mai lucrasem niciodată cu ei până acum, păreau că se potrivesc perfect pentru acest proiect, așa că am decis să le folosesc.
Microcontrolerul
Alegerea unui microcontroler a fost, de asemenea, destul de simplă. Am avut multă experiență folosind Atmega328P-AU în aplicații independente și eram foarte familiarizat cu caracteristicile sale. Acesta este același microcontroler care este utilizat în plăcile Arduino Nano. Sunt conștient că probabil există un microcontroler mai ieftin pe care aș fi putut să-l folosesc, dar știind că Atmega328 ar avea suport complet pentru toate bibliotecile Arduino a fost un factor important în alegerea acestuia pentru acest proiect.
RTC (Ceas în timp real)
Cerința principală pentru RTC a fost acuratețea. Știam că ceasul nu va avea nicio conectivitate la internet și, prin urmare, nu va putea să se recalibreze singur printr-o conexiune la internet, utilizatorul va trebui să-l recalibreze manual. Prin urmare, am vrut să fac cronometrul cât mai exact posibil. M41T62 RTC are una dintre cele mai mari precizii pe care le-am putut găsi (± 2ppm, care este echivalent cu ± 5 secunde pe lună). Combinând precizia ridicată cu compatibilitatea I2C și consumul de curent ultra scăzut, acest RTC a fost o alegere bună pentru acest proiect.
Convertor DC-DC Boost
Alegerea DC-DC Boost Converter IC s-a făcut pur și simplu uitându-ne la circuit și aflând ce tensiuni și curenți erau necesari. Rularea circuitului la o tensiune scăzută ar reduce consumul de curent, dar nu aș putea coborî sub 4,5 V (tensiunea minimă a microcontrolerului la ceasul de 16 MHz) și nu aș putea depăși 4,5 V (tensiunea maximă a RTC). Acest lucru a însemnat că a trebuit să rulez circuitul cu precizie de 4,5 V pentru a opera componentele în conformitate cu specificațiile lor recomandate. Am calculat că curentul maxim al circuitului nu ar depăși 250mA. Așadar, am început să caut un convertor boost care să poată îndeplini cerințele și am dat peste TPS61220. TPS61220 necesita componente externe minime, era destul de ieftin și era capabil să satisfacă cerințele de curent și tensiune.
Bateria
Cerința principală pentru baterie a fost dimensiunea. Bateria trebuia să fie suficient de mică, astfel încât să poată intra în carcasa ceasului, fără a o face să pară voluminoasă. M-am gândit că bateria nu poate depăși 20mm × 35mm × 10mm. Având aceste constrângeri de dimensiune și cerința actuală de 250mA, alegerea bateriilor mele s-a limitat la bateriile LiPo. Am găsit o baterie „Turnigy nano-tech 300mAh 1S” pe Hobbyking pe care am decis să o folosesc.
IC de încărcare
Nu a existat nicio cerință specială pentru controlerul de încărcare, cu excepția faptului că acesta trebuie să fie compatibil cu o baterie 1S LiPo. Am găsit MCP73831T, care este un controler de încărcare complet integrat conceput pentru aplicații de încărcare cu o singură celulă. Una dintre caracteristicile sale este capacitatea de a regla curentul de încărcare printr-un rezistor extern pe care l-am găsit destul de util în această aplicație.
Protecție LiPo
Am vrut să includ monitorizarea tensiunii și curentului pentru a proteja bateria de orice condiții periculoase de supraîncărcare și supra-descărcare. Există o cantitate limitată de circuite integrate care furnizau astfel de caracteristici și una dintre opțiunile mai ieftine a fost IC-ul BQ29700. A necesitat o cantitate minimă de componente externe și a inclus toată protecția necesară pentru o baterie LiPo cu o singură celulă.
Acum, când componentele au fost alese, a venit timpul să creăm schema!
Pasul 5: Schema
Folosind Altium Designer, am reușit să reunesc schema de mai sus folosind recomandări din fiecare fișă tehnică a componentei. Schema este împărțită în diferite blocuri pentru ao face mai ușor de citit. Am adăugat și câteva note cu informații importante în caz că altcineva ar dori să recreeze acest design.
Următorul pas a fost așezarea schemei pe un PCB!
Pasul 6: Aspect PCB
Aspectul PCB sa dovedit a fi cea mai provocatoare parte a acestui proiect. Am ales să folosesc un PCB cu 2 straturi pentru a menține costurile de producție a PCB-urilor la un nivel minim. Am ales să folosesc un ceas de dimensiuni standard de 36 mm, deoarece asta părea să se potrivească destul de bine cu LED-urile. Am adăugat câteva găuri de șurub de 1 mm pentru a fixa PCB-ul în carcasa ceasului. Scopul a fost să mențină un design curat și frumos prin plasarea tuturor componentelor (cu excepția LED-urilor, desigur) pe stratul inferior. De asemenea, am vrut să folosesc numărul minim absolut de via-uri pentru a evita să am vizibile vizibile pe stratul superior. Aceasta a însemnat că a trebuit să direcționez toate urmele pe un singur strat, asigurându-mă în același timp că păstrez părțile „zgomotoase” ale circuitului departe de urmele sensibile ale semnalului. De asemenea, m-am asigurat să păstrez toate urmele cât mai scurte posibil, plasând condensatorii de bypass aproape de sarcină, folosind urme mai groase pentru componentele de mare putere și, în caz contrar, să urmez toate bunele practici comune de proiectare a PCB-urilor. Rutarea a durat destul de mult timp, dar cred că a ieșit foarte bine.
Următorul pas a fost crearea unui model 3D pentru carcasa ceasului!
Pasul 7: Proiectare 3D
Carcasa ceasului a fost proiectată după un design clasic, foarte convențional, folosind Fusion 360. Am folosit o distanță standard de 18 mm pentru cureaua de ceas pentru a face ceasul compatibil cu o mare varietate de alte curele. Decupajul pentru PCB a fost proiectat cu 0, 4mm mai mare decât PCB-ul în sine pentru a se adapta la orice inexactități de fabricație. Am inclus niște stâlpi cu șurub pentru montarea PCB-ului și o margine mică pentru a putea așeza PCB-ul. M-am asigurat să încastr PCB-ul la fem milimetri de sus pentru a evita marginile ascuțite ale LED-urilor să se blocheze pe haine. Înălțimea carcasei a fost determinată exclusiv de grosimea bateriei. Restul incintei a fost proiectat să arate pur și simplu bine, cu margini rotunjite și colțuri lustruite. A trebuit să păstrez designul 3D-print prietenos, astfel încât să-l pot imprima 3D acasă fără niciun material de sprijin.
Acum, când hardware-ul a fost terminat, a venit timpul să începem să lucrăm la software!
Pasul 8: Codul
Am început codul prin includerea tuturor bibliotecilor necesare. Aceasta include biblioteca pentru comunicarea cu RTC și pentru acționarea LED-urilor. După aceea, am creat funcții separate pentru fiecare dintre moduri. Când utilizatorul comută modurile apăsând un buton, programul apelează la funcția corespunzătoare acelui mod. Dacă utilizatorul nu apasă un buton într-un interval de timp specificat, ceasul se culcă.
Modul de repaus este indicat de toate LED-urile care se estompează până când sunt complet stinse. Utilizarea modului de repaus mărește foarte mult durata de viață a bateriei și menține LED-urile stinse atunci când nu sunt utilizate. Utilizatorul poate trezi ceasul apăsând butonul superior. La trezire, ceasul va verifica nivelul bateriei pentru a se asigura că nu necesită încărcare. Dacă este necesară încărcarea, LED-urile vor clipi roșu de câteva ori înainte de a afișa ora. Dacă bateria este sub un nivel critic, nu se va porni deloc.
Restul timpului de programare a început să facă celelalte moduri cât mai intuitive posibil. M-am gândit că a avea același buton responsabil pentru aceeași funcționalitate în toate modurile ar fi cel mai intuitiv. După câteva testări, aceasta este configurația butonului cu care am venit:
- Apăsați butonul sus: Trezire / Ciclare între modurile „Afișare timp”, „Afișare dată”, „Cronometru” și „Alarmă”.
- Menținerea butonului de sus: introduceți modul "Set Time", "Set Date", "Start Cronometru" sau "Set Alarm".
- Apăsați pe butonul inferior: creșteți luminozitatea.
- Menținerea butonului inferior: introduceți modul „Alegeți culoarea”.
Butonul de jos este întotdeauna responsabil pentru luminozitatea și ajustările culorilor, indiferent de modul în care vă aflați. Când utilizatorul intră în modul „Alegeți culoarea”, LED-urile încep să parcurgă toate culorile RGB posibile. Utilizatorul poate întrerupe animația și alege culoarea pe care o preferă pentru acel mod specific (Afișează ora în roșu, Afișează data în albastru etc.). Culorile sunt menite să fie ușor de personalizat de către utilizator pentru a-i ajuta să distingă între diferitele moduri.
Acum, când codul a fost terminat, a venit timpul să îl încărcați pe microcontroler!
Pasul 9: Programare
Era aproape timpul pentru lipire și asamblare, dar înainte de asta trebuia să programez microcontrolerul. Am urmat acest tutorial
Ardeți încărcătorul de încărcare pe un ATmega328P-AU SMD
despre cum să ardeți un bootloader și să programați microcontrolerul folosind un programator Arduino Uno obișnuit.
Primul pas a fost transformarea Arduino Uno într-un ISP prin încărcarea codului de exemplu „ArduinoISP”. Am folosit un panou împreună cu o priză de programare și am conectat schema din tutorial. După aceea, am putut arde bootloader-ul pe microcontroler apăsând doar „Burn Bootloader” în ID-ul Arduino.
Odată ce microcontrolerul a avut un bootloader, pur și simplu am scos microcontrolerul existent din Arduino Uno și am folosit placa Arduino Uno ca adaptor USB la Serial pentru a încărca codul pe microcontroler în soclul de programare. După terminarea încărcării, aș putea începe procesul de lipire.
Următorul pas a fost adunarea tuturor componentelor și lipirea lor împreună!
Pasul 10: lipire
Procesul de lipire a fost împărțit în două părți. Mai întâi trebuia lipit stratul inferior, apoi stratul superior.
Am fixat PCB-ul ceasului între câteva plăci prototip folosind bandă. Acest lucru a asigurat faptul că PCB nu s-a mișcat în timpul lipirii, ceea ce este foarte important. Apoi am așezat șablonul de lipit peste PCB și am folosit o cantitate generoasă de pastă de lipit pentru a acoperi toate tampoanele de lipit. Am continuat să folosesc o pereche subțire de pensete pentru a așeza toate componentele pe tampoanele corespunzătoare. Apoi am folosit un pistol cu căldură pentru a reface lipirea tuturor componentelor la locul lor.
Când stratul inferior a fost lipit, i-am făcut o inspecție vizuală rapidă pentru a mă asigura că lipirea a avut succes. Apoi am răsturnat placa și am repetat procesul de lipire de cealaltă parte, de data aceasta cu toate LED-urile. Era foarte important să nu supraîncălziți placa atunci când lipiți stratul superior, deoarece toate componentele de pe partea de jos sunt expuse riscului de cădere. Din fericire, toate componentele au rămas la locul lor și după lipirea butoanelor la locul lor folosind un fier de lipit obișnuit, PCB-ul a fost terminat!
Acum era timpul pentru adunarea finală!
Pasul 11: Asamblare
Asamblarea a fost foarte simplă. Am conectat bateria la PCB și am plasat bateria și PCB-ul în incinta imprimată 3D. Am procedat la înșurubarea celor patru șuruburi din orificiile de montare din fiecare colț al PCB-ului. După aceea, am atașat curelele de ceas folosind bare de arc de 18 mm și ceasul a fost complet!
Pasul 12: Concluzii și îmbunătățiri
Ceasul funcționează așa cum era de așteptat și sunt foarte mulțumit de modul în care a ieșit. Nu am avut probleme până acum, iar bateria rămâne aproape complet încărcată după o săptămână întreagă de utilizare.
Aș putea adăuga alte funcții ceasului în viitor. Deoarece portul USB este conectat la microcontroler, firmware-ul poate fi actualizat în orice moment cu noi caracteristici. Deocamdată, însă, voi continua să folosesc această versiune a ceasului și să văd cum rezista după o utilizare extinsă.
Dacă aveți gânduri, comentarii sau întrebări despre acest proiect, vă rugăm să le lăsați mai jos. De asemenea, le puteți trimite la [email protected].
Premiul I la Concursul de ceasuri
Recomandat:
Ceasul hartă a metroului din Londra: 9 pași (cu imagini)
London Underground Map Clock: În 2014, pe partea din spate a unui stagiu la o consultanță de imprimare 3D din Londra și un experiment cu litofani color folosind mașina lor Stratasys, îmi proiectez propriul meu cadou, o imprimare 3D color a liniilor de tuburi locale birouri. Am fost
CPE 133 Proiect final Decimal la Binar: 5 pași
CPE 133 Proiect final Zecimal la Binar: Numerele binare sunt unul dintre primele lucruri care îmi vin în minte când ne gândim la logica digitală. Cu toate acestea, numerele binare pot fi un concept dificil pentru cei noi la acest proiect. Acest proiect îi va ajuta pe cei care sunt atât noi, cât și cu experiență în numerele binare
Ceasul folosind ATMEGA 8: 7 pași (cu imagini)
Ceasul folosind ATMEGA 8: ATMEGA 8 este unul dintre cele mai ieftine microcontrolere, așa că am decis să fac ceasul folosindu-l. Primul lucru pe care l-am întâlnit este afișarea timpului, prin urmare cel mai general este afișajul pe 7 segmente, dar nu pot afișa tot textul așteaptă puțini, așa că am decis să merg cu
Ceasul de prânz: 9 pași (cu imagini)
Ceasul de prânz: Ți-ai dorit vreodată ca prânzul să fie mai lung, dar nu știai unde să găsești acele câteva minute în plus? Ei bine, nu mai doriți! Datorită avansurilor extraordinare în tehnologia ceasului, vă prezint un ceas care accelerează cu 20% în fiecare zi la 11:00 și încetinește 20
Ceasul cu alarmă cu bule face să te trezești distractiv (ish): 7 pași (cu imagini)
Ceasul cu alarmă cu bule face să te trezești distractiv (ish): trezirea la un ceas cu alarmă zgomotos este de rahat. Sunt unul dintre acei oameni cărora nu le place să se trezească înainte ca soarele să iasă (sau a ieșit de multe ore). Deci, ce mod mai bun de a face să te trezești distractiv decât să ai o petrecere cu bule în pat! Folosind un arduino și un