INHOUDSOPGAWE:

The Ultimate Binary Watch: 12 stappe (met foto's)
The Ultimate Binary Watch: 12 stappe (met foto's)

Video: The Ultimate Binary Watch: 12 stappe (met foto's)

Video: The Ultimate Binary Watch: 12 stappe (met foto's)
Video: a-ha - Take On Me (Official Video) [Remastered in 4K] 2024, Julie
Anonim
Die uiteindelike binêre horlosie
Die uiteindelike binêre horlosie
Die uiteindelike binêre horlosie
Die uiteindelike binêre horlosie
Die uiteindelike binêre horlosie
Die uiteindelike binêre horlosie

Ek het onlangs kennis gemaak met die konsep van binêre horlosies en begin ondersoek instel om te sien of ek een vir myself kan bou. Ek kon egter nie 'n bestaande ontwerp vind wat tegelyk funksioneel en stylvol was nie. Daarom het ek besluit om my eie ontwerp heeltemal van nuuts af te maak!

Voorrade

Al die lêers vir hierdie projek:

Die biblioteke vir die Arduino -kode kan hier van GitHub afgelaai word:

M41T62 RTC -biblioteek

FastLED -biblioteek

LowPower -biblioteek

Stap 1: Die idee

Ek het onlangs die volgende video raakgeloop:

DIY binêre polshorlosie

Die video hierbo toon 'n basiese tuisgemaakte binêre horlosie. Ek het geen idee gehad dat daar so iets bestaan nie, maar nadat ek verdere navorsing gedoen het oor die onderwerp van binêre horlosies, het ek vinnig besef dat daar baie verskillende ontwerpe is! Ek wou vir myself een bou, maar kon nie 'n ontwerp vind waarvan ek hou nie. Die binêre horlosies wat ek gevind het, het baie funksies en het nie baie goed gelyk nie. Daarom het ek besluit om my eie ontwerp heeltemal van nuuts af te ontwerp!

Die eerste stap was om die kriteria vir my ontwerp vas te stel. Dit is waarmee ek vorendag gekom het:

  • Binêre RGB -koppelvlak
  • Tydweergawe (met baie akkurate tydsberekening)
  • Datum vertoon
  • Stophorlosie funksie
  • Alarm funksie
  • Batterylewe van ten minste 2 weke
  • USB laai
  • Sagteware wat maklik deur die gebruiker aanpasbaar is
  • 'N Skoon en eenvoudige ontwerp

Hierdie kriteria het die grondslag vir die hele projek geword. Die volgende stap was om uit te vind hoe ek wou hê dat die horlosie funksioneer!

Stap 2: 'n Paar Binary-Watch-teorie

Sommige Binary-Watch-teorie
Sommige Binary-Watch-teorie

Die plan was eenvoudig. Die binêre horlosie werk net soos 'n gewone horlosie, behalwe dat die koppelvlak binêre is, spesifiek BCD (Binary Coded Decimal). BCD is 'n tipe binêre kodering waar elke desimale syfer voorgestel word deur 'n vaste aantal bisse. Ek benodig 4 bisse om 'n syfer van 0-9 voor te stel. En vir 'n standaard

hh: mm

tydformaat benodig ek 4 van die syfers. Dit beteken dat ek 'n totaal van 16 bisse benodig wat deur 16 LED's verteenwoordig sal word.

Om die tyd in BCD te lees, is redelik maklik as u daaraan gewoond is. Die ry aan die onderkant van die horlosie verteenwoordig die minste beduidende bietjie (1) en die ry bo -aan die belangrikste bits (8). Elke kolom verteenwoordig 'n syfer in die

hh: mm

tydformaat. As 'n LED aan is, tel jy die waarde. As 'n LED af is, ignoreer u dit.

Om die eerste syfer te lees, som eenvoudig al die geaktiveerde LED's wat ooreenstem met die waardes in die eerste (linkerkantste) kolom. Doen dieselfde met die ander syfers van links na regs. U het nou die tyd in BCD gelees!

Hierdie beginsel is dieselfde vir die res van die funksies op die horlosie. Die gebruik van RGB -LED's sal help om te onderskei tussen verskillende funksies en modusse met verskillende kleure. Die kleure word deur die gebruiker gekies en kan maklik aangepas word volgens die kleurpalet wat hulle verkies. Hierdeur kan die gebruiker maklik deur die funksies navigeer sonder om deurmekaar te raak.

Die volgende stap was om 'n blokdiagram te skep!

Stap 3: Aan die werk

Aan die werk kom
Aan die werk kom

Soos enige tipiese elektroniese projek, is 'n blokdiagram 'n noodsaaklike deel in die vroeë ontwerpfase. Met behulp van die kriteria het ek daarin geslaag om die blokdiagram hierbo saam te stel. Elke blok in die diagram stel 'n funksie in die stroombaan voor en die pyle wys die verhouding van die funksies. Die blokdiagram in sy geheel gee 'n goeie oorsig van hoe die stroombaan gaan werk.

Die volgende stap was om besluite te neem oor individuele komponente vir elke blok in die blokdiagram!

Stap 4: Kies komponente

Daar was heelwat komponente in hierdie kring. Hieronder het ek 'n paar van die belangrikste items saam met 'n verduideliking uitgesoek waarom ek dit gekies het.

Die LED's

Vir die binêre koppelvlak was die keuse redelik eenvoudig. Ek het geweet dat ek LED's vir die skerm wou gebruik en het agtergekom dat ek 16 daarvan nodig het (in 'n 4 × 4 -rooster) om soveel as moontlik inligting te vertoon. Tydens my navorsing oor die perfekte LED, het die APA102 steeds opgeduik. Dit is 'n baie klein (2 mm x 2 mm) aanspreekbare LED met 'n wye verskeidenheid kleure en is redelik goedkoop. Alhoewel ek nog nooit saam met hulle gewerk het nie, was dit die perfekte pas vir hierdie projek, en ek het besluit om dit te gebruik.

Die mikrobeheerder

Die keuse van 'n mikrobeheerder was ook redelik eenvoudig. Ek het baie ervaring met die gebruik van die Atmega328P-AU in selfstandige toepassings en was baie vertroud met die funksies daarvan. Dit is dieselfde mikrobeheerder wat in die Arduino Nano -borde gebruik word. Ek is bewus daarvan dat daar waarskynlik 'n goedkoper mikrobeheerder is wat ek sou kon gebruik, maar die wete dat die Atmega328 volledige ondersteuning vir alle Arduino -biblioteke sou hê, was 'n belangrike faktor om dit vir hierdie projek te kies.

Die RTC (intydse klok)

Die primêre vereiste vir die RTC was akkuraatheid. Ek het geweet dat die horlosie geen internetverbinding sou hê nie en kon dus nie self via 'n internetverbinding herkalibreer nie; die gebruiker moet dit dan handmatig herkalibreer. Daarom wou ek die tydsberekening so akkuraat as moontlik maak. Die M41T62 RTC het een van die hoogste akkuraathede wat ek kon vind (± 2ppm, wat gelykstaande is aan ± 5 sekondes per maand). Deur die hoë akkuraatheid met die I2C -verenigbaarheid en die ulta lae stroomverbruik te kombineer, is hierdie RTC 'n goeie keuse vir hierdie projek.

DC-DC Boost-omskakelaar

Die keuse van die DC-DC Boost Converter IC is eenvoudig deur na die stroombaan te kyk en uit te vind watter spannings en strome benodig word. Deur die kring op 'n lae spanning te laat loop, sal die stroomverbruik verlaag word, maar ek kan nie onder 4.5V gaan nie (die minimale mikrobeheerspanning by 16MHz -horlosie) en ek kan nie bo 4.5V gaan nie (die maksimum spanning van die RTC). Dit het beteken dat ek die kring op presies 4.5V moes werk om die komponente volgens hul aanbevole spesifikasies te kan gebruik. Ek het bereken dat die maksimum stroom van die stroombaan nie 250mA sal oorskry nie. Dus het ek begin soek na 'n boost -omskakelaar wat aan die vereistes kon voldoen en vinnig op die TPS61220 afgekom. Die TPS61220 benodig minimale eksterne komponente, was redelik goedkoop en kon aan die huidige en spanningvereistes voldoen.

Die battery

Die primêre vereiste vir die battery was die grootte. Die battery moes klein genoeg wees sodat dit binne -in die horlosie kon pas sonder dat dit omvangryk moes lyk. Ek het gedink dat die battery nie 20 mm × 35 mm × 10 mm kan oorskry nie. Met hierdie groottebeperkings en die huidige vereiste van 250mA, was my keuse van batterye beperk tot LiPo -batterye. Ek het 'n "Turnigy nano-tech 300mAh 1S" battery op Hobbyking gevind wat ek besluit het om te gebruik.

Die laai -IC

Daar was geen spesifieke vereiste vir die laaibestuurder nie, behalwe dat dit versoenbaar moes wees met 'n 1S LiPo -battery. Ek het die MCP73831T gevind, wat 'n volledig geïntegreerde laaibestuurder is wat ontwerp is vir eensellige laai-toepassings. Een van die kenmerke daarvan is die vermoë om die laadstroom aan te pas deur 'n eksterne weerstand, wat ek nogal nuttig gevind het in hierdie toepassing.

LiPo -beskerming

Ek wou spanning- en stroommonitering insluit om die battery te beskerm teen enige gevaarlike oorlading en oorladingstoestande. Daar was 'n beperkte hoeveelheid IC's wat sulke funksies bied, en een van die goedkoper opsies was die BQ29700 IC. Dit benodig 'n minimale hoeveelheid eksterne komponente en bevat al die nodige beskerming vir 'n enkelselle LiPo-battery.

Noudat die komponente gekies is, was dit tyd om die skema op te stel!

Stap 5: Die skematiese

Die skematiese
Die skematiese

Met Altium Designer kon ek die skema hierbo saamstel met behulp van aanbevelings uit elk van die komponent se gegewensblaaie. Die skema is in verskillende blokke verdeel om dit meer leesbaar te maak. Ek het ook 'n paar aantekeninge met belangrike inligting bygevoeg ingeval iemand anders hierdie ontwerp wil herskep.

Die volgende stap was om die skema op 'n PCB uit te lê!

Stap 6: PCB -uitleg

PCB -uitleg
PCB -uitleg
PCB -uitleg
PCB -uitleg
PCB -uitleg
PCB -uitleg
PCB -uitleg
PCB -uitleg

Die PCB -uitleg was die mees uitdagende deel van hierdie projek. Ek het gekies om 'n 2-laag PCB te gebruik om die vervaardigingskoste van die PCB tot die minimum te beperk. Ek het gekies om 'n standaard horlosiegrootte van 36mm te gebruik, want dit lyk asof dit goed by die LED's pas. Ek het 'n paar skroefgate van 1 mm bygevoeg om die printplaat in die horlosie -omhulsel vas te maak. Die doel was om 'n skoon en mooi ontwerp te behou deur al die komponente (behalwe die LED's natuurlik) op die onderste laag te plaas. Ek wou ook die absolute minimale aantal vias gebruik om te voorkom dat daar sigbare vias op die boonste laag is. Dit het beteken dat ek al die spore op 'n enkele laag moes lei terwyl ek die "raserige" dele van die stroombaan van die sensitiewe seinspore moes weghou. Ek het ook seker gemaak dat ek alle spore so kort as moontlik hou, die bypass -kondensators naby die las plaas, dikker spore gebruik vir komponente met 'n hoë krag en andersins die algemene praktyke van PCB -ontwerp volg. Die routing het redelik tyd geneem, maar ek dink dit het baie goed afgeloop.

Die volgende stap was die skep van 'n 3D -model vir die horlosie -omhulsel!

Stap 7: 3D -ontwerp

3D ontwerp
3D ontwerp
3D ontwerp
3D ontwerp
3D ontwerp
3D ontwerp

Die horlosie -omhulsel is ontwerp met 'n baie konvensionele, klassieke horlosie -ontwerp met behulp van Fusion 360. Ek het 'n standaard afstand van 18 mm vir die horlosierem gebruik om die horlosie verenigbaar te maak met 'n groot verskeidenheid ander bandjies. Die uitsny vir die PCB is 0, 4 mm groter as die PCB self ontwerp om voorsiening te maak vir enige onakkuraathede in die vervaardiging. Ek het 'n paar skroefpale ingesluit vir die montering van die PCB en 'n klein randjie waarop die PCB kan lê. Ek het seker gemaak dat die printplaat vyf millimeter van die bokant af is, sodat die skerp kante van die LED's nie op klere vasval nie. Die hoogte van die omhulsel word uitsluitlik bepaal deur die dikte van die battery. Die res van die omhulsel is ontwerp om eenvoudig goed te lyk met afgeronde rande en gepoleerde hoeke. Ek moes die ontwerp-3D-afdruk vriendelik hou sodat ek dit tuis kon druk sonder ondersteuning.

Noudat die hardeware klaar was, was dit tyd om aan die sagteware te begin werk!

Stap 8: Die kode

Die kode
Die kode

Ek het die kode begin deur al die nodige biblioteke in te sluit. Dit sluit die biblioteek in vir kommunikasie met die RTC en vir die bestuur van die LED's. Daarna het ek afsonderlike funksies vir elk van die modusse geskep. As die gebruiker van modus verander deur op 'n knoppie te druk, skakel die program die funksie wat ooreenstem met die modus aan. As die gebruiker nie binne 'n bepaalde tyd op 'n knoppie druk nie, gaan die horlosie aan die slaap.

Slaapmodus word aangedui deurdat al die LED's verdof totdat dit heeltemal uit is. Deur die slaapmodus te gebruik, word die batterylewe aansienlik verhoog en word die LED's afgeskakel as hulle nie gebruik word nie. Die gebruiker kan die horlosie wakker maak deur op die boonste knoppie te druk. As dit wakker word, sal die horlosie die batteryniveau kontroleer om te verseker dat dit nie opgelaai hoef te word nie. As laai nodig is, sal die LED's 'n paar keer rooi flikker voordat die tyd gewys word. As die battery onder 'n kritieke vlak is, sal dit glad nie aanskakel nie.

Die res van die tyd het programmering gegaan om die ander modusse so intuïtief moontlik te maak. Ek het gedink dat dieselfde knoppie verantwoordelik vir dieselfde funksionaliteit in alle modusse die mees intuïtiewe sou wees. Na 'n paar toetse is dit die knoppie -konfigurasie waarmee ek vorendag gekom het:

  • Druk op die boonste knoppie: word wakker / wissel tussen die modus "Vertoon tyd", "Vertoon datum", "stophorlosie" en "alarm".
  • Knoppie bo -knoppie: voer die modus "Stel tyd in", "Stel datum in", "Begin stophorlosie" of "Stel alarm in".
  • Knoppie onderkant: verhoog die helderheid.
  • Knoppie onder: hou die modus "Kies kleur" in.

Die onderste knoppie is altyd verantwoordelik vir die helderheid en kleuraanpassings, onafhanklik van die modus waarin u is. As die gebruiker die modus "Kies kleur" betree, begin die LED's deur al die moontlike RGB -kleure. Die gebruiker kan die animasie onderbreek en die kleur kies wat hulle verkies vir die spesifieke modus (vertoontyd in rooi, vertoondatum in blou, ens.). Die kleure is bedoel om deur die gebruiker maklik aanpasbaar te wees om hulle te help onderskei tussen die verskillende modusse.

Noudat die kode klaar was, was dit tyd om dit na die mikrobeheerder te laai!

Stap 9: Programmering

Programmering
Programmering

Dit was amper tyd vir die soldeer en monteer, maar voor dit moes ek die mikrobeheerder programmeer. Ek het hierdie tutoriaal gevolg

Brand die selflaaiprogram na 'n ATmega328P-AU SMD

oor hoe om 'n selflaaiprogram te verbrand en die mikrobeheerder te programmeer met 'n gewone Arduino Uno as programmeerder.

Die eerste stap was om die Arduino Uno in 'n ISP te verander deur die 'ArduinoISP' -voorbeeldkode op te laai. Ek het 'n broodbord saam met 'n programmeertoets gebruik en die skema van die tutoriaal opgestel. Daarna kon ek die selflaaiprogram na die mikrobeheerder verbrand deur net op 'Brand bootloader' in die Arduino IDE te druk.

Sodra die mikrobeheerder 'n selflaaiprogram gehad het, het ek die bestaande mikrobeheerder eenvoudig uit die Arduino Uno verwyder en die Arduino Uno -bord as 'n USB -na -seriële adapter gebruik om die kode na die mikrobeheerder in die programmeeraansluiting te laai. Nadat die oplaai voltooi was, kon ek met die soldeerproses begin.

Die volgende stap was om al die komponente bymekaar te maak en aanmekaar te soldeer!

Stap 10: Soldeer

Soldeer
Soldeer
Soldeer
Soldeer
Soldeer
Soldeer
Soldeer
Soldeer

Die soldeerproses is in twee dele verdeel. Die onderste laag moes eers gesoldeer word, en dan die boonste laag.

Ek het die horlosie se printplaat tussen 'n paar prototipe borde vasgemaak met behulp van band. Dit het verseker dat die PCB nie tydens soldeer beweeg nie, wat baie belangrik is. Ek plaas dan die soldeerstensil oor die PCB en gebruik 'n groot hoeveelheid soldeerpasta om al die soldeerblokkies te bedek. Ek gebruik 'n dun pincet om al die komponente op die ooreenstemmende pads te plaas. Daarna gebruik ek 'n hittegeweer om al die komponente op hul plek te laat vloei.

Toe die onderste laag gesoldeer is, het ek 'n vinnige visuele ondersoek gedoen om seker te maak dat die soldering suksesvol was. Ek draai toe om die bord en herhaal die soldeerproses aan die ander kant, hierdie keer met al die LED's. Dit was baie belangrik om die bord nie te warm te maak tydens die soldering van die boonste laag nie, aangesien al die komponente aan die onderkant die risiko loop om af te val. Gelukkig het al die komponente op hul plek gebly en nadat die knoppies op hul plek gesoldeer is met 'n gewone soldeerbout, was die PCB klaar!

Dit was nou tyd vir die laaste byeenkoms!

Stap 11: Montering

Vergadering
Vergadering

Die samestelling was baie eenvoudig. Ek het die battery aan die printplaat gekoppel en die battery en die PCB in die 3D -gedrukte omhulsel geplaas. Ek het die vier skroewe in die bevestigingsgate in elke hoek van die printplaat ingeskroef. Daarna het ek die horlogebande vasgemaak met die 18 mm veerstafies en die horlosie was voltooi!

Stap 12: Gevolgtrekking en verbeterings

Gevolgtrekking en verbeterings
Gevolgtrekking en verbeterings
Gevolgtrekking en verbeterings
Gevolgtrekking en verbeterings

Die horlosie werk soos verwag en ek is baie tevrede met hoe dit verloop het. Ek het tot dusver geen probleme daarmee gehad nie, en die battery bly ná 'n hele week se gebruik amper vol.

Ek sal in die toekoms moontlik ander funksies by die horlosie voeg. Aangesien die USB -poort aan die mikrobeheerder gekoppel is, kan die firmware te eniger tyd opgedateer word met nuwe funksies. Vir eers sal ek egter voortgaan om hierdie weergawe van die horlosie te gebruik en kyk hoe dit weerstaan na langdurige gebruik.

As u enige gedagtes, kommentaar of vrae oor hierdie projek het, laat dit dan hieronder. U kan dit ook stuur na [email protected].

Uurwedstryd
Uurwedstryd
Uurwedstryd
Uurwedstryd

Eerste prys in die klokwedstryd

Aanbeveel: