Përmbajtje:
- Hapi 1: Shtresa e përparme
- Hapi 2: Hartimi i shtresës udhëzuese
- Hapi 3: Ndërtimi i shtresës udhëzuese
- Hapi 4: Instalimi i LED -ve
- Hapi 5: Dizajnimi i pajisjeve elektronike
- Hapi 6: Instalimi i pajisjeve elektronike
- Hapi 7: Programimi
- Hapi 8: Strehimi
- Hapi 9: Vërejtjet përmbyllëse
Video: Ora e Hartës së Nëndheshme të Londrës: 9 Hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
Në vitin 2014, në prag të praktikës në një konsulencë për printimin 3D në Londër dhe një eksperiment me litofanët me ngjyra duke përdorur makinën e tyre Stratasys, unë hartoj të tashmen time, një print 3D me ngjyra të linjave të tubave në zyrat e tyre. Isha i vendosur të bëja diçka prej saj. 2 vjet më vonë në vitin 2016 kisha printerin tim 3D dhe fillova të punoj duke e bërë atë një orë.
Si fëmijë, megjithëse orët dixhitale Tokio Flash ishin gjërat më të mëdha ndonjëherë, dhe të dekoruara do të ishin pika frymëzuese për dizajnin.
Dhe tani ka qenë vetëm një pushim i vogël 4 vjeçar derisa të arrij ta shkruaj!
Ndërsa udhëzimet e sakta do të jenë të vështira për t'u përsëritur, dhe ulja e kostos në prodhimin e PCB -ve hobiste në dy vitet e fundit mund të bëjë të vjetëruar metodën time të saktë për vendosjen e LED -ve. Shpresoj se idetë e ndara mund të çojnë që të tjerët të bëjnë orë të çuditshme nga objekte të holla!
Hapi 1: Shtresa e përparme
Siç u përmend në hyrje, kjo ishte një print 3D me ngjyra, besoj se një makinë Stratasys e cila përdorte një shtrat pluhur dhe një fishek boje të modifikuar për lidhës dhe pigment.
Dosja humbet në histori, por kjo shtresë mund të jetë çdo gjë, një fotografi ose një litofan me një ngjyrë të vetme do të bënte mrekulli.
Kjo pjesë është bërë në 3DS max në 2014, por sot ka mjete online për ta kthyer një imazh në një SLT bazuar në shkëlqimin
Hapi 2: Hartimi i shtresës udhëzuese
Këtu vendosim kompleksitetin e projektit dhe metodën për leximin e kohës. Imazhet tregojnë 2 idetë me të cilat po luaja.
Këto janë bërë duke skanuar në dizajn dhe duke vizatuar linja përgjatë tij në inkscape.
Kjo nuk është një orë shumë e lexueshme, por unë preferova idenë e mbushjes së linjave gjatë gjithë ditës, kështu që u bë qëllimi i projektimit.
Numërimi binar është një metodë e zbatueshme për zvogëlimin e numërimit të LED -ve dhe do të përmirësonte lexueshmërinë nëse binarja është bllokimi juaj, por kjo minoi idenë time të "mbushjes së linjave", kështu që nuk ishte një opsion për këtë projekt
It'sshtë e zakonshme në Tokio Flash Watches të minimizoni numërimin e LED -ve, por duke pasur një seksion duke numëruar në 3 ose 5 dhe më pas një mbushje tjetër për çdo herë që e mbush atë seksion, e kam përdorur këtë teknikë për minutat, për t'i zvogëluar ato nga 60 në 20 plus 2. I nuk ishte aq i shqetësuar për saktësinë e tij për sekonda.
Hapi 3: Ndërtimi i shtresës udhëzuese
Kjo shtresë udhëzuese për LED ka 2 qëllime, mban LED në vend dhe parandalon derdhjen midis tyre
Ajo u vizatua si një shtresë në Inkscape direkt në krye të skanimit që po përdoreja për paraqitjen e dizajnit. Trashësia 1 mm u shtua në blender para se ta dërgoja në printerin tim.
Ky ishte një nga printimet më të vështira që duhet të bëj në Makibox A6 tim të varfër, pjesa u shtyp në abs kështu që një ton llaç acetoni u përdor për ta mbajtur atë të lidhur me platformën e ndërtimit me shtrembërim minimal. Për fat të mirë kjo pjesë nuk shihet në produktin përfundimtar
Imazhi përfundimtar tregon se është mbajtur deri në një llambë për të kontrolluar distancën.
Në të kaluarën, derdhja midis dritave përgjatë një linje në të vërtetë mund të jetë e preferueshme për pamjet vizuale, nuk është e vështirë të lexohet, kjo mund të arrihet duke shtuar një kunj në udhëzues në anët e shkurtra të secilës dritë
Hapi 4: Instalimi i LED -ve
Imazhi i grushtit tregon printimin e provës që kam bërë për të kontrolluar madhësinë e vrimës, po synoja që LED të përshtatet fort në dantella me pak forcë, forma e saktë më pas u vendos me dorë kur shtroja shtresën udhëzuese.
Për shkak të tolerancës së ulët të printerit tim 3D, disa ishin të lirshme dhe kërkonin një copëz super -ngjitëse për të qëndruar në vend, ndërsa të tjerët ishin shumë të ngushtë, por u inkurajuan në vend duke shtypur LED gjatë bashkimit, kjo ishte në të vërtetë një përshtatje më e mirë sesa vrima me madhësinë e duhur, e cila kishte një qira për t'u tërhequr sapo të lidhej.
Për të zvogëluar numrin e telave, LED -të u ngjitën në një matricë 7 me 8, që do të thotë se të gjitha 55 LED -të mund të kontrolloheshin nga vetëm 13 kunja, unë kisha një hartë të vizatuar me dorë të secilës prej këtyre lidhjeve e cila fatkeqësisht është humbur.
Teli i smaltit u përdor në mënyrë që pjesët të mund të ekspozoheshin në vend duke ngrohur një pjesë me hekur dhe kallajisje para se të bëhej lidhja.
Ky proces ishte shumë kohë, unë do të rekomandoja shumë hartimin e një PCB
Hapi 5: Dizajnimi i pajisjeve elektronike
Plani im fillestar ishte të përdorja një mikrokontrollues Arduino me një RTC, por zgjodha një ESP8266 në tabelën Node MCU D1 pasi lejonte kursimet automatike të ditës dhe potencialin për kontroll mbi WIFI.
Për të zvogëluar numrin e kunjave më tej, kisha numrin e përsosur të LED -ve për të qenë në gjendje të përdorja një MAX7219 (i cili mund të trajtojë deri në 64 LED).
Ky IC përdoret zakonisht për të drejtuar ekranet LED 7 Segment, por kishte një rast përdorimi shumë të ngjashëm me timen, duke ndezur një numër arbitrar LED me dridhje minimale, madje ka shkëlqim të kontrollueshëm.
Vendosa të përdor protoboard për instalime elektrike, por shqiponja ishte e dobishme për vendosjen e pjesëve dhe kuptimin e instalimeve elektrike
Unë i kam bashkangjitur skedarët e bordit, por kjo ishte hera ime e parë që përdor shqiponjë (dhe një version të vjetëruar deri tani) kështu që ato janë vetëm për referencë
Hapi 6: Instalimi i pajisjeve elektronike
Ky ishte një hap i thjeshtë i përsëritur, pas skemës Eagle, përdorimi i titujve për ESP dhe matrica LED ndihmoi jashtëzakonisht në montim.
Kunja 1 në titujt LED të Anode & Cathode u shënua me një mprehtë argjendi, ato mund të diferencoheshin mes tyre si në 7, 8 të tjerat.
Hapi 7: Programimi
Meqenëse ekrani ynë nuk është një matricë tradicionale, më duhej të gjeja një metodë për të vizualizuar se cilat pjesë të ndizen të cilat i dërgoi në IC MAX në HEX. Për fat të mirë, unë e di mjaftueshëm Excel për të hyrë në telashe dhe bëra një "magjistar gjashtëkëndësh" që të më drejtonte edhe pse modeli që doja të shfaqet, kutitë e kontrollit të vendosura me dorë në tërësi.
Kjo erdhi me rivlerësimin që gjashtëkëndëshi për orën, minutën dhe sekondat e mia mund të kombinohej duke përdorur një bit OSE për të prodhuar komandën përfundimtare të gjashtëkëndëshit për të dërguar në max7219, duke përfshirë një animacion të vogël që i shtova sekondave në mënyrë që të sigurohesha që tabela nuk ishte ngrirë;
Pra, pothuajse në fund. dhe koha për një vendim tjetër i cili nuk është plakur shumë mirë.
Kodi për ESP është në LUA, Sot unë do të rekomandoja përdorimin e arduino IDE për dokumentacionin më të mirë dhe bibliotekën e paketës së fortë, në atë kohë komuniteti ESP ishte ende duke u pjekur dhe unë zgjodha LUA si gjuhë për këtë projekt.
Mora vendimin e diskutueshëm për të ping rregullisht serverët e Google për të lexuar kohën. Kjo mori nevojë për një RTC për të minimizuar zhvendosjen, kjo funksionon, por nuk do të ishte më mirë të përdorni një API të kohës së vërtetë.
halfSec = 0 orë = 0 minutë = 0 sekondë = 0
intensitet i ulët = 0
intensitet i lartë = 9
SSID lokale = "Wifi"
lokale SSID_PASSWORD = "Fjalëkalimi"
koha e funksionit () -lidheni me internetin për të marrë kohën dhe datën aktuale
nëse wifi.sta.getip () atëherë lidhja lokale = net.createConnection (net. TCP, 0) lidhje: lidheni (80, "google.com")
lidh: on ("lidhje", funksioni (lidhja, ngarkesa) conn: dërgoni ("HEAD/HTTP/1.1 / r / n".. "Host: time.is / r / n".. "Prano: */ *\ r / n".. " Agjenti i Përdoruesit: Mozilla/4.0 (i pajtueshëm; esp8266 Lua;) ".." / r / n / r / n ") fund)
lidh: në ("marr", funksion (conn, payload) --print (payload) conn: close () local p = string.find (payload, "GMT") -gjeni vargun e kohës dhe datës në ngarkesën nga interneti, ndryshoni për zonën kohore nëse p ~ = zero atëherë-nxjerr numra që korrespondojnë me orën, minutën, të dytën, ditën, orën e muajit = numri (vargu. nën (ngarkesa, p-9, p-8)) minutë = numri (vargu. nën (ngarkesa, p- 6, p-5)) e dyta = numri (vargu. Nën (ngarkesa, p-3, p-2)) shtoni orë ()-e rëndë e koduar BST (ora britanike e verës) printimi i dritave ditore (orë, minutë, sekondë) gjysmëSec = (%e dytë 6)*2 --print (halfSec) tjetër print ("përditësimi i uebit dështoi!") fundi i fundit -funksioni) -fundi i mbajtësit të ngjarjes "prano"
lidh: në ("shkëputje", funksioni (lidhje, ngarkesë) conn = zero ngarkesë = fund zero) përfundim printimi ("ende pa wifi") fund
funksioni borTable (a, b,…) -dy ose dy tabela së bashku
nëse arg [1] atëherë b = borTable (b, shpaketoni (arg)) përfundoni z = {} për i, v në ipairs (a) bëni tabelën. futni (z, bit.bor (v, b )) fund ktheje z fund
funksioni bxorTable (a, b,…) -dy ose dy tabela së bashku
nëse arg [1] atëherë b = bxorTable (b, shpaketoj (arg)) përfundoj z lokale {=} për i, v në ipairs (a) bëj tabelën. fut (z, bit.bxor (v, b )) fund ktheje z fund
funksion addSecond ()
e dyta = e dyta+1 nëse e dyta> = 60 atëherë e dyta = 0 minutë = minutë+1 nëse minuta> = 60 atëherë minuta = 0 shtoOr () fund përfundimi fund
funksion addHour ()
orë = orë+1 nëse ora> = 24 atëherë ora = 0 fund nëse ora == 2 ose ora == 16 pastaj max7219.setIntensiteti (i ulëtIntensiteti) përfundon nëse ora == 8 ose ora == 18 pastaj max7219.setIntensiteti (intensiteti i lartë) përfundimi i funksionit përfundimtar () secGap lokal = 6 minGap lokal = 3 horGap lokale = 1 sek. lokal = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03}, {0x00, 0x00,, 0x00, 0x00, 0x02, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1, 0x00, 0x00, 0x01, 0x01, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x01, 0x1 }, {0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03}}; min. lokal = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00}, {0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x00, 0x00, 0x02, 0x02, 0x2, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x2, 0x02, 0x02, 0x02, 0x02, 0x00, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x2 } {0x02, 0x02, 0x02, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10}, {0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x12, 0x12, 0x12, 0x12, 0x12, 0x30, 0x12, 0x10}, {0x12, 0x12, 0x12, 0x12, 0x32, 0x30, 0x12, 0x10}, {0x12, 0x12, 0x12, 0x32, 0x32, 0x30, 0x12, 0x10}, {0x12, 0x12, 0x32, 0x32, 0x32, 0x30, 0x12, 0x10}, {0x12, 0x32, 0x32, 0x32, 0x32, 0x30, 0x12, 0x10}, {0x32, 0x32, 0x32, 0x32, 0x32, 0x30, 0x12, 0x10}}; hor lokale = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00}, {0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x00, 0x00}, {0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x04, 0x04, 0x04, 0x04, 0x04 0 0, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08} {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0C, 0x08} {0x04, 0x04, 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x08 } {0x04, 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x08} {0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x08} {0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08} {0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08} {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08} {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x48} {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x48} {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x48} {0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x48} {0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48} {0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48} {0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}}; --print (orë, minutë, sekondë)
--tabela fillon me 0, pra në 1 si sekonda aktualisht [0] = zero)
max7219.shkruaj ({animate (borTable (sec [1+ (second/secGap)], min [1+ (minutë/minGap)], hor [1+ (orë/horGap)])))
fundi -funksioni
wifi.setmode (wifi. STATION)
wifi.sta.config (SSID, SSID_PASSWORD) wifi.sta.autoconnect (1)
-konfiguroni max7219
max7219 = kërkojnë ("max7219") max7219.setup ({numberOfModules = 1, slaveSelectPin = 8, intensiteti = Intensiteti i lartë})
-Programi kryesor
checkOnline = tmr.create ()
tmr.alarm (0, 180000, 1, kohë)
tmr.alarm (1, 1000, 1, addSecond)
tmr.alarm (2, 500, 1, përditësim)
funksion animate (akoma)
kuadro lokale = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00}, {0x00 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; halfSec = halfSec+1 nëse halfSec> = 12 atëherë halfSec = 0 fund -printoni (halfSec) ktheni bxorTable (kornizat [halfSec+1], akoma) fund
Hapi 8: Strehimi
Tani është koha juaj për të treguar mjeshtërinë tuaj të jashtëzakonshme dhe për të vendosur projektin.
Ose ose merrni një paketë amazon nga riciklimi dhe bëni një strehë të përkohshme që është ende në përdorim sot.
Përfitimi i përdorimit të kësaj qasjeje ishte se secila shtresë e projektit përputhej pothuajse në mënyrë të përkryer me trashësinë e kartonit, kështu që një sanduiç mund të vendoset dhe ngjitet së bashku. Një version premium i ngjashëm mund të përdorë akrilik
Hapi 9: Vërejtjet përmbyllëse
Faleminderit për leximin, Siç e dini shumë prej jush dokumentimi i një projekti mund të jetë po aq i vështirë sa realizimi i tij. ka copëza video me mua duke folur të cilat përfundimisht mund të shohin dritën e ditës.
Në vitet midis krijimit të këtij projekti dhe shkrimit të tij, unë prisja të shihja më shumë shembuj të ekraneve arbitrare LED duke përdorur printimin 3D, por zvogëlimi i shiritave RGB kryesisht ka hequr nevojën për një alternativë.
Shpresoj se kjo ka qenë informuese, dhe ju lutemi bëni pyetje pasi do të përpiqem të jap më shumë detaje mbi pjesët që nuk kënaqin plotësisht.
Urime
Recommended:
Llamba e Hartës- Informative dhe e Bukur !: 7 hapa
Llamba e Hartës- Informative dhe e Bukur !: Kjo llambë është bërë nga një hartë e përdorur/e re. Përdor hyrje 7-12V, dhe mund të personalizohet në ngjyra dhe shkëlqim të ndryshëm. Madje ka karikim USB! Shumë e thjeshtë për tu bërë, por kërkon disa saldime
Sekreti i Hartës një palë vathë : 7 hapa
Sekretoni Vathët e Hartave …: Hartat janë vendimtare për kërkimin brenda Gjeografisë Njerëzore pasi ato i japin kontekst informacionit demografik. Hartat gjithashtu u mundësojnë gjeografëve njerëzorë të japin dëshmi vizuale për të mbështetur pretendimet të cilat mund të manipulohen në teknikat e prezantimit të tilla si choroplet
Hacking një buton i derës së linjës nëntokësore të Londrës: 12 hapa (me fotografi)
Hacking një buton derë Jubilee Line Underground në Londër: Dyqani i Muzeut të Transportit në Londër shet butona derë të çaktivizuar nga Linja Jubilee (të majta dhe të djathta janë në dispozicion). Nëse po mendoni të kryeni një projekt që ka nevojë për një buton dhe një dritë treguese të një lloji, do të ishit '
Orientimi i Hartës përmes Web Serverit: 6 hapa
Orientimi i Hartave përmes Web Serverit: Interneti i Gjërave, (IoT) është një nga temat më të njohura në planet tani. Dhe, po rritet me shpejtësi nga dita në ditë me internetin. Interneti i Gjërave po i shndërron shtëpitë e thjeshta në shtëpi të zgjuara, ku gjithçka nga dritat tuaja deri te bravat tuaja
Paralajmërim i hershëm Drita e pistës Raspberry PI Duke përdorur të dhënat e hartës së fluturimit: 14 hapa (me fotografi)
Paralajmërim i hershëm Drita e pistës Raspberry PI Duke përdorur të dhënat e hartës së fluturimit: Kjo llambë erdhi nga disa arsye sepse unë jam gjithmonë i interesuar për aeroplanët që fluturojnë sipër dhe gjatë verës gjatë fundjavave shpesh ka disa mjaft emocionuese që fluturojnë përreth. Edhe pse ju prireni vetëm t’i dëgjoni ndërsa kalojnë