Përmbajtje:
- Furnizimet
- Hapi 1: Ideja
- Hapi 2: Disa teori të shikimit binar
- Hapi 3: Fillimi në punë
- Hapi 4: Zgjedhja e Komponentëve
- Hapi 5: Skema
- Hapi 6: Paraqitja e PCB
- Hapi 7: Dizajni 3D
- Hapi 8: Kodi
- Hapi 9: Programimi
- Hapi 10: Saldimi
- Hapi 11: Asambleja
- Hapi 12: Përfundimi dhe Përmirësimet
Video: Ora Binale Ultimate: 12 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
Kohët e fundit u njoha me konceptin e orëve binare dhe fillova të bëj disa kërkime për të parë nëse mund të ndërtoja një për veten time. Sidoqoftë, nuk isha në gjendje të gjeja një dizajn ekzistues që ishte edhe funksional edhe elegant në të njëjtën kohë. Kështu, vendosa të krijoj modelin tim plotësisht nga e para!
Furnizimet
Të gjithë skedarët për këtë projekt:
Bibliotekat për kodin Arduino mund të shkarkohen nga GitHub këtu:
Biblioteka M41T62 RTC
Biblioteka FastLED
Biblioteka e LowPower
Hapi 1: Ideja
Kohët e fundit hasa në videon e mëposhtme:
Orë dore binare DIY
Videoja e mësipërme tregon një orë binare të bërë në shtëpi. Unë nuk e kisha idenë se një gjë e tillë ekzistonte, por pasi bëra disa kërkime të mëtejshme në temën e orëve binare, shpejt kuptova se kishte një shumë modele të ndryshme atje! Doja të ndërtoja një për veten time, por nuk isha në gjendje të gjeja një dizajn që më pëlqente. Orët binare që gjeta u mungonin shumë veçori dhe nuk dukeshin veçanërisht të mira. Kështu, vendosa të krijoj timen tërësisht nga e para!
Hapi i parë ishte përcaktimi i kritereve për dizajnin tim. Kjo është ajo që kam dalë:
- Ndërfaqja binare RGB
- Shfaqja e kohës (me matje shumë të saktë të kohës)
- Shfaqja e datës
- Funksionaliteti i kronometrit
- Funksionaliteti i alarmit
- Jetëgjatësia e baterisë së paku 2 javë
- Karikimi me USB
- Softueri lehtësisht i personalizueshëm nga përdoruesi
- Një dizajn i pastër dhe i thjeshtë
Këto kritere u bënë themeli për të gjithë projektin. Hapi tjetër ishte të kuptoja se si doja që ora të funksiononte!
Hapi 2: Disa teori të shikimit binar
Plani ishte i thjeshtë. Ora binare do të funksiononte njësoj si një orë e zakonshme, me përjashtim të faktit se ndërfaqja do të ishte binare, konkretisht, BCD (dhjetore e koduar binare). BCD është një lloj kodimi binar ku çdo shifër dhjetore përfaqësohet nga një numër fiks i bitëve. Më duhen 4 bit për të qenë në gjendje të përfaqësoj një shifër nga 0-9. Dhe për një standard
orë: mm
formatin e kohës, më duhen 4 nga ato shifra. Kjo do të thotë që më duhen gjithsej 16 bit të cilat do të përfaqësohen nga 16 LED.
Leximi i kohës në BCD është mjaft i lehtë sapo të mësoheni me të. Rreshti në fund të orës paraqet bitin më pak të rëndësishëm (1) dhe rreshti në krye është biti më domethënës (8). Çdo kolonë përfaqëson një shifër në
orë: mm
formatin e kohës. Nëse një LED është ndezur, ju e llogaritni atë vlerë. Nëse një LED është fikur, ju e injoroni atë.
Për të lexuar shifrën e parë thjesht përmbledhni të gjitha vlerat përkatëse të LED -ve të aktivizuara në kolonën e parë (majtas më së shumti). Bëni të njëjtën gjë për shifrat e tjera nga e majta në të djathtë. Tani e keni lexuar kohën në BCD!
Ky parim do të jetë i njëjtë për pjesën tjetër të funksioneve në orë. Përdorimi i LED -ve RGB do të ndihmojë në dallimin midis funksioneve dhe mënyrave të ndryshme duke përdorur ngjyra të ndryshme. Ngjyrat zgjidhen nga përdoruesi dhe lehtë mund të rregullohen në cilëndo gamë ngjyrash që ata preferojnë. Kjo i lejon përdoruesit të lundrojë me lehtësi përmes funksioneve pa u ngatërruar.
Hapi tjetër ishte krijimi i një diagrami bllok!
Hapi 3: Fillimi në punë
Si çdo projekt tipik elektronik, një diagram bllok është një pjesë thelbësore në fazën e hershme të projektimit. Duke përdorur kriteret, unë arrita të bashkoj bllok -diagramin e mësipërm. Çdo bllok në diagram paraqet një funksion në qark dhe shigjetat tregojnë marrëdhënien e funksioneve. Bllok -diagrami në tërësinë e tij jep një pasqyrë të mirë se si do të funksionojë qarku.
Hapi tjetër ishte fillimi i marrjes së vendimeve për komponentët individualë për secilin bllok në bllok diagram!
Hapi 4: Zgjedhja e Komponentëve
Doli se kishte shumë përbërës në këtë qark. Më poshtë, unë kam zgjedhur disa nga ato më thelbësore së bashku me një shpjegim pse i zgjodha ato.
LEDs
Për ndërfaqen binare, zgjedhja ishte mjaft e drejtë përpara. E dija që doja të përdorja LED për ekranin dhe kuptova se më duheshin 16 prej tyre (në një rrjet 4 × 4) për të shfaqur sa më shumë informacion. Gjatë kërkimit tim për LED perfekt, APA102 vazhdonte të vinte. LEDshtë një LED shumë i vogël (2mm x 2mm) i adresueshëm me një gamë të gjerë ngjyrash dhe është mjaft i lirë. Edhe pse nuk kisha punuar kurrë me ta më parë, ata dukej se ishin përshtatja perfekte për këtë projekt, kështu që vendosa t'i përdor ato.
Mikrokontrolluesi
Zgjedhja e një mikrokontrolluesi ishte gjithashtu mjaft e thjeshtë. Unë kam pasur shumë përvojë duke përdorur Atmega328P-AU në aplikacione të pavarura dhe isha shumë i njohur me veçoritë e tij. Ky është i njëjti mikrokontrollues që përdoret në bordet Arduino Nano. Unë jam i vetëdijshëm se ndoshta ka një mikrokontrollues më të lirë që mund të kisha përdorur, por të dish se Atmega328 do të kishte mbështetje të plotë për të gjitha bibliotekat Arduino ishte një faktor i madh në zgjedhjen e tij për këtë projekt.
RTC (Ora në kohë reale)
Kërkesa kryesore për RTC ishte saktësia. E dija që ora nuk do të kishte asnjë lidhje interneti dhe kështu nuk do të ishte në gjendje të kalibronte veten nëpërmjet një lidhjeje në internet, përdoruesit do t’i duhej ta kalibronte atë me dorë. Prandaj, doja ta bëja matjen e kohës sa më të saktë që të ishte e mundur. M41T62 RTC ka një nga saktësitë më të larta që mund të gjeja (pp 2 faqe në minutë që është ekuivalente me seconds 5 sekonda në muaj). Kombinimi i saktësisë së lartë me pajtueshmërinë I2C dhe konsumit ulta të ulët aktual e bëri këtë RTC një zgjedhje të mirë për këtë projekt.
Konvertues DC-DC Boost
Zgjedhja e IC DC-DC Boost Converter IC u bë thjesht duke parë qarkun dhe duke gjetur se çfarë tensionesh dhe rrymash kërkoheshin. Drejtimi i qarkut në një tension të ulët do të ulte konsumin aktual, por unë nuk mund të shkoja nën 4.5V (tensioni minimal i mikrokontrolluesit në orën 16MHz) dhe nuk mund të shkoja mbi 4.5V (tensioni maksimal i RTC). Kjo do të thoshte se më duhej të drejtoja qarkun në saktësisht 4.5V në mënyrë që të operoja përbërësit brenda specifikimeve të tyre të rekomanduara. Kam llogaritur që rryma maksimale e qarkut nuk do të kalojë 250mA. Kështu, fillova të kërkoja një konvertues nxitës që mund të përmbushte kërkesat dhe shpejt u përplas me TPS61220. TPS61220 kërkonte përbërës minimalë të jashtëm, ishte mjaft i lirë dhe ishte në gjendje të plotësonte kërkesat aktuale dhe të tensionit.
Bateria
Kërkesa kryesore për baterinë ishte madhësia. Bateria duhej të ishte mjaft e vogël në mënyrë që të mund të futet brenda rrethimit të orës pa e bërë atë të duket e rëndë. Kuptova që bateria nuk mund të kalojë 20mm × 35mm × 10mm. Me këto kufizime të madhësisë dhe kërkesën aktuale prej 250mA, zgjedhja ime e baterive ishte e kufizuar në bateritë LiPo. Gjeta një bateri "Turnigy nano-tech 300mAh 1S" në Hobbyking të cilën vendosa ta përdor.
IC e karikimit
Nuk kishte asnjë kërkesë të veçantë për kontrolluesin e ngarkimit, përveç se duhej të ishte në përputhje me një bateri 1S LiPo. Kam gjetur MCP73831T i cili është një kontrollues ngarkimi plotësisht i integruar i krijuar për aplikacione të karikimit me një qelizë. Një nga karakteristikat e tij është aftësia për të rregulluar rrymën e karikimit përmes një rezistence të jashtme të cilën e kam gjetur mjaft të dobishme në këtë aplikacion.
Mbrojtja LiPo
Doja të përfshija monitorimin e tensionit dhe rrymës për të mbrojtur baterinë nga çdo ngarkesë e rrezikshme dhe kushte e shkarkimit të tepërt. Kishte një sasi të kufizuar të IC -ve që ofronin veçori të tilla dhe një nga opsionet më të lira ishte IC BQ29700. Kërkonte një sasi minimale të përbërësve të jashtëm dhe përfshinte të gjithë mbrojtjen e nevojshme për një bateri LiPo me një qelizë.
Tani që u zgjodhën përbërësit, ishte koha për të krijuar skemën!
Hapi 5: Skema
Duke përdorur Altium Designer, unë kam qenë në gjendje të bashkoj skemën e mësipërme duke përdorur rekomandime nga secila nga fletët e të dhënave të komponentit. Skema është e ndarë në blloqe të ndryshme për ta bërë atë më të lexueshëm. Shtova gjithashtu disa shënime me informacion të rëndësishëm në rast se dikush tjetër do të donte të rikrijonte këtë dizajn.
Hapi tjetër ishte vendosja e skemës në një PCB!
Hapi 6: Paraqitja e PCB
Paraqitja e PCB doli të ishte pjesa më sfiduese e këtij projekti. Zgjodha të përdor një PCB me 2 shtresa për të mbajtur kostot e prodhimit të PCB në minimum. Zgjodha të përdor një madhësi standarde të orës prej 36 mm sepse kjo dukej se i përshtatej LED -ve mjaft mirë. Shtova disa vrima vidash 1 mm për të siguruar PCB në rrethimin e orës. Qëllimi ishte të mbahej një dizajn i pastër dhe i bukur duke i vendosur të gjithë përbërësit (përveç LEDs natyrisht) në shtresën e poshtme. Unë gjithashtu doja të përdorja numrin absolut absolut të vias për të shmangur shfaqjen e viasave në shtresën e sipërme. Kjo do të thoshte se më duhej të përcillja të gjitha gjurmët në një shtresë të vetme duke u siguruar që të mbaja pjesët "e zhurmshme" të qarkut larg gjurmëve të sinjalit të ndjeshëm. Unë gjithashtu u sigurova që t'i mbaj të gjitha gjurmët sa më të shkurtra të jetë e mundur, duke i vendosur kondensatorët e anashkalimit pranë ngarkesës, duke përdorur gjurmë më të trasha për komponentët me fuqi të lartë dhe përndryshe të ndjek të gjitha praktikat e mira të zakonshme të projektimit të PCB. Udhëtimi zgjati mjaft kohë, por mendoj se doli shumë mirë.
Hapi tjetër ishte krijimi i një modeli 3D për rrethimin e orës!
Hapi 7: Dizajni 3D
Korniza e orës u krijua pas një modeli shumë konvencional, klasik të orës duke përdorur Fusion 360. Kam përdorur një distancë standarde 18 mm për rripin e orës për ta bërë orën të pajtueshme me një larmi të madhe të rripave të tjerë. Pjesa e prerë për PCB është projektuar 0, 4 mm më e madhe se vetë PCB për t'u përshtatur për çdo pasaktësi prodhuese. Kam përfshirë disa shtylla vidash për montimin e PCB -së dhe një skaj të vogël për të shtruar PCB -në. Unë u sigurova që të fus PCB -në një milimetra femër nga lart për të shmangur ngjitjen e skajeve të mprehta të LED -ve në veshje. Lartësia e kutisë u përcaktua vetëm nga trashësia e baterisë. Pjesa tjetër e rrethimit është projektuar që thjesht të duket mirë me skaje të rrumbullakosura dhe qoshe të lëmuara. Më duhej ta mbaja dizajnin miqësor me printimin 3D në mënyrë që ta printoja 3D në shtëpi pa ndonjë material mbështetës.
Tani që hardueri ka përfunduar ishte koha për të filluar punën në softuer!
Hapi 8: Kodi
Fillova kodin duke përfshirë të gjitha bibliotekat e nevojshme. Kjo përfshin bibliotekën për komunikimin me RTC dhe për drejtimin e LED -ve. Pas kësaj, unë krijova funksione të veçanta për secilën nga mënyrat. Kur përdoruesi ndryshon modalitetet duke shtypur një buton, programi thërret funksionin që korrespondon me atë mënyrë. Nëse përdoruesi nuk shtyp një buton brenda një kohe të caktuar, ora shkon në gjumë.
Modaliteti i fjetjes tregohet nga të gjitha LED -të që veniten derisa të fiken plotësisht. Përdorimi i modalitetit të gjumit rrit shumë jetën e baterisë dhe mban LED -të e fikur kur nuk janë në përdorim. Përdoruesi mund të zgjojë orën duke shtypur butonin e sipërm. Kur zgjohet, ora do të kontrollojë nivelin e baterisë për të siguruar që nuk kërkon karikim. Nëse kërkohet karikim, LED -të do të ndizen me të kuqe disa herë para se të shfaqet koha. Nëse bateria është nën një nivel kritik, nuk do të ndizet fare.
Pjesën tjetër të kohës programimi kaloi në bërjen e mënyrave të tjera sa më intuitive të ishte e mundur. Mendova se të kesh të njëjtin buton përgjegjës për të njëjtin funksionalitet në të gjitha mënyrat do të ishte më intuitive. Pas disa testimeve, ky është konfigurimi i butonit me të cilin kam dalë:
- Shtypja e butonit të lartë: Zgjohu / Ciklo midis modaliteteve "Koha e shfaqjes", "Data e shfaqjes", "Kronometri" dhe "Alarmi".
- Mbajtja e butonit të lartë: Futni modalitetin "Vendosni kohën", "Vendosni datën", "Filloni kronometrin" ose "Vendosni alarmin".
- Shtypja e butonit të poshtëm: Rritni shkëlqimin.
- Mbajtja e butonit të poshtëm: Futni modalitetin "Zgjidhni ngjyrën".
Butoni i poshtëm është gjithmonë përgjegjës për ndriçimin dhe rregullimet e ngjyrave, pavarësisht nga mënyra në të cilën ndodheni. Kur përdoruesi hyn në modalitetin "Zgjidh ngjyrën", LED -të fillojnë të lëvizin me biçikletë nëpër të gjitha ngjyrat e mundshme RGB. Përdoruesi mund të ndalojë animacionin dhe të zgjedhë ngjyrën që preferon për atë mënyrë specifike (Koha e shfaqjes me të kuqe, Data e shfaqjes me blu, etj.). Ngjyrat janë menduar të jenë lehtësisht të personalizueshme nga përdoruesi për t'i ndihmuar ata të bëjnë dallimin midis mënyrave të ndryshme.
Tani që kodi kishte përfunduar ishte koha për ta ngarkuar atë në mikrokontrollues!
Hapi 9: Programimi
Ishte pothuajse koha për bashkimin dhe montimin, por para kësaj më duhej të programoja mikrokontrolluesin. Unë e ndoqa këtë tutorial
Djeg bootloader në një SMD ATmega328P-AU
se si të digjni një bootloader dhe programoni mikrokontrolluesin duke përdorur një Arduino Uno të rregullt si programues.
Hapi i parë ishte kthimi i Arduino Uno në një ISP duke ngarkuar kodin shembull "ArduinoISP". Përdora një dërrasë buke së bashku me një prizë programimi dhe krijova skemën nga mësimi. Pas kësaj, unë isha në gjendje ta digjja ngarkuesin në mikrokontrollues thjesht duke shtypur "Burn Bootloader" në Arduino IDE.
Pasi mikrokontrolluesi kishte një bootloader, unë thjesht hoqa mikrokontrolluesin ekzistues nga Arduino Uno dhe përdor bordin Arduino Uno si një përshtatës USB në serial për të ngarkuar kodin në mikrokontrolluesin në prizën e programimit. Pasi të ketë përfunduar ngarkimi, mund të filloj procesin e bashkimit.
Hapi tjetër ishte mbledhja e të gjithë përbërësve dhe bashkimi i tyre së bashku!
Hapi 10: Saldimi
Procesi i bashkimit u nda në dy pjesë. Së pari shtresa e poshtme duhej të ngjitej, dhe pastaj shtresa e sipërme.
Unë e sigurova PCB -në e orës midis disa bordeve prototip duke përdorur kasetë. Kjo siguroi që PCB të mos lëvizë gjatë bashkimit, gjë që është shumë e rëndësishme. Pastaj vendosa klishen e saldimit mbi PCB dhe përdor një sasi bujare të pastës së saldimit për të mbuluar të gjitha jastëkët e saldimit. Unë vazhdova të përdor një palë piskatore të hollë për të vendosur të gjithë përbërësit në jastëkët e tyre përkatës. Më pas kam përdorur një armë ngrohëse për të rifilluar ngjitjen e të gjithë përbërësve në vend.
Kur shtresa e poshtme ishte ngjitur, i dhashë një inspektim të shpejtë vizual për t'u siguruar që bashkimi ishte i suksesshëm. Pastaj kalova mbi dërrasën dhe përsërita procesin e bashkimit në anën tjetër, këtë herë me të gjitha LED -të. Ishte shumë e rëndësishme që të mos mbinxeheni bordin kur bashkoni shtresën e sipërme pasi të gjithë përbërësit në pjesën e poshtme janë në rrezik të bien. Fatmirësisht, të gjithë përbërësit qëndruan në vend dhe pasi lidhën butonat në vend duke përdorur një hekur të zakonshëm, PCB ishte përfunduar!
Tani ishte koha për asamblenë përfundimtare!
Hapi 11: Asambleja
Asambleja ishte shumë e thjeshtë. E lidha baterinë me PCB dhe e vendosa baterinë dhe PCB brenda rrethimit të printuar 3D. Vazhdova të vidhos katër vidhat në vrimat e montimit në çdo cep të PCB. Pas kësaj, unë i bashkova rripat e orës duke përdorur shufrat e pranverës 18 mm dhe ora ishte e plotë!
Hapi 12: Përfundimi dhe Përmirësimet
Ora funksionon ashtu siç pritej dhe jam shumë i kënaqur me atë se si doli. Unë nuk kam pasur ndonjë problem me të deri më tani dhe bateria mbetet pothuajse plotësisht e ngarkuar pas një jave të tërë përdorimi.
Mund të shtoj veçori të tjera në orë në të ardhmen. Meqenëse porta USB është e lidhur me mikrokontrolluesin, firmueri mund të përditësohet në çdo kohë me veçori të reja. Tani për tani, unë do të vazhdoj ta përdor këtë version të orës dhe të shoh se si mbahet pas përdorimit të zgjatur.
Nëse keni ndonjë mendim, koment ose pyetje në lidhje me këtë projekt, ju lutemi lini ato më poshtë. Ju gjithashtu mund t'i dërgoni ato në [email protected].
Çmimi i Parë në Konkursin e Orëve
Recommended:
Ora e daljes në pension / Numërimi / Ora Dn: 4 hapa (me fotografi)
Ora e daljes në pension / Numërimi / Ora Dn: Unë kisha disa nga këto ekrane 8x8 LED me pikat e matricës në sirtar dhe po mendoja se çfarë të bëja me to. Frymëzuar nga udhëzime të tjera, më lindi ideja për të ndërtuar një ekran numërimi/zbritje për të numëruar deri në një datë/kohë të ardhshme dhe nëse koha e synuar p
Ora e Rrjetit ESP8266 Pa asnjë RTC - Ora Nodemcu NTP Pa RTC - PROJEKTI I OROCS INTERNET: 4 hapa
Ora e Rrjetit ESP8266 Pa asnjë RTC | Ora Nodemcu NTP Pa RTC | PROJEKTI I OROCS INTERNET: Në projekt do të bëhet një projekt i orës pa RTC, do të marrë kohë nga interneti duke përdorur wifi dhe do ta shfaq atë në ekranin st7735
Ora e bazuar në Arduino duke përdorur modulin DS1307 Ora në kohë reale (RTC) & 0.96: 5 hapa
Ora e bazuar në Arduino duke përdorur modulin DS1307 Ora në kohë reale (RTC) & 0.96: Përshëndetje djema në këtë tutorial do të shohim se si të bëjmë një orë pune duke përdorur një modul orësh në kohë reale DS1307 & Ekranet OLED. Pra, ne do të lexojmë kohën nga moduli i orës DS1307. Dhe shtypeni atë në ekranin OLED
Ora Gixie: Ora më e Bukur e Tubit me Shkëlqim: 4 Hapa
Ora Gixie: Ora më e Bukur e Tubave me Shkëlqim: Më pëlqen shumë Nixie Tube, por është shumë e shtrenjtë, nuk mund ta përballoj. Kështu kalova gjysmë viti duke krijuar këtë Orë Gixie. Ora Gixie arrihet duke përdorur ndriçimin ws2812 për të bërë dritën akrilike. Unë bëj çmos për ta bërë tubin RGB më të hollë
Microdot - Orë Ora Modeli LED Ora: 7 hapa (me fotografi)
Microdot - Orë Ora LED Modeli Ora: Një tjetër prodhim RGB Sunset Productions! Ky projekt është një tabelë qarkore për të bërë një version të orës time minidot të madhësisë së orës së dorës: https: //www.instructables.com/id/EEGLXQCSKIEP2876EE/me disa të tjera funksionet më të zbatueshme për një pajisje portative. Një