Sisukord:
- Samm: esikiht
- 2. samm: juhtkihi kujundamine
- 3. samm: juhtkihi loomine
- 4. samm: LED -ide ühendamine
- Samm: elektroonika kujundamine
- 6. samm: elektroonika juhtmestik
- Samm: programmeerimine
- 8. samm: eluase
- Samm 9: Lõppmärkused
Video: Londoni maa -alune kaardikell: 9 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:45
2014. aastal, Londonis 3D -printimise konsultatsioonipraktikas praktikal olles ja katsetades värviliste litofaanidega, kasutades nende masinat Stratasys, kujundan ma oma lahkumiskingituse - värvilise 3D -trükise nende kontorites paiknevatest toruliinidest. Olin otsustanud sellest midagi teha. Veidi kaks aastat hiljem, 2016. aastal, oli mul oma 3D -printer ja hakkasin kella muutma.
Lapsepõlves olin Tokyo Flashi digitaalkellad siiski kõigi aegade suurimad asjad ja see oli disaini inspiratsioonipunkt.
Ja nüüd on olnud väike 4 -aastane paus, kuni olen jõudnud selle kirja panna!
Ehkki täpseid juhiseid on raske kopeerida ja harrastajate trükkplaatide tootmise kulude vähendamine viimase paari aasta jooksul võib muuta minu täpse LED -i paigutamise meetodi aegunuks. Loodan, et jagatud ideed võivad viia selleni, et teised teevad õhukestest esemetest imelikke kellasid!
Samm: esikiht
Nagu sissejuhatuses mainitud, oli see värviline 3D -print, usun, et Stratasys -masin, mis kasutas pulbervoodit ja modifitseeritud tindikassetti sideaine ja pigmendi jaoks.
Fail on ajaloos kadunud, kuid see kiht võib olla ükskõik milline, foto või ühevärviline litofaan teeks imesid.
See osa tehti 3DS maxis 2014. aastal, kuid täna on olemas veebitööriistad pildi heleduse järgi muutmiseks SLT -ks
2. samm: juhtkihi kujundamine
Siin otsustame projekti keerukuse ja aja lugemise meetodi. Piltidel on 2 ideed, millega ma mängisin.
Need tehti, skaneerides disaini ja joonistades jooned sellele tindimaastikul.
See ei ole väga loetav kell, kuid eelistasin ideed, et read täidetakse kogu päeva jooksul, nii et see sai disainieesmärgiks.
Binaarloendus on elujõuline meetod LED -i arvu vähendamiseks ja see parandaks loetavust, kui binaarne on teie moos, kuid see õõnestas minu „täitmisliinide” ideed, seega ei olnud see selle projekti jaoks valik
Tokyo välklampidel on tavaline LED -ide minimeerimine, kuid kui üks sektsioon loeb 3 või 5 ja seejärel teine täidis iga kord, kui see sektsioon täitub, kasutasin seda tehnikat minutite jaoks, et vähendada neid 60 -lt pluss 2 -le. I polnud sekundite pärast nii väga mures.
3. samm: juhtkihi loomine
Sellel valgusdioodide juhtkihil on kaks otstarvet, see hoiab LED -id paigal ja hoiab ära nendevahelise lekke
See joonistati Inkscape'i kihina otse skaneeringu peale, mida ma kujunduse paigutuse jaoks kasutasin. Enne printerisse saatmist lisati segistisse 1 mm paksus.
See oli üks raskemaid väljatrükke, mida pean oma napile Makibox A6 -le tegema, osa trükiti abs, nii et kasutati tonni atsetooni läga, et hoida see ehitusplatvormi küljes minimaalse väändumisega. Õnneks pole seda osa lõpptootes näha
Lõplik pilt näitab, et seda hoiti lambi ees, et kontrollida vahekaugust.
Tagantjärele mõeldes võib visuaalide jaoks tegelikult eelistada valguse vahelist joont mööda joont, seda pole raskem lugeda, seda on võimalik saavutada, lisades juhikule iga valguse lühikestel külgedel faasi
4. samm: LED -ide ühendamine
Rusikapilt näitab proovitrükki, mida tegin aukude suuruse kontrollimiseks, olin eesmärgiks, et valgusdiood sobiks väikese jõuga tihedalt pitsi, juhtkuju asetades pandi siis käsitsi õige kuju.
Minu 3D -printeri vähese taluvuse tõttu olid mõned lahtised ja vajasid superliimi, et jääda kohale, teised olid liiga pingul, kuid neid julgustati jootmise ajal LED -i alla vajutades paika, see sobis tegelikult paremini kui õige suurusega auk, mille üürimine oli pärast juhtmega välja tõmbamist.
Juhtmete arvu vähendamiseks joodeti LED -id maatriksisse 7 x 8, mis tähendab, et kõiki 55 LED -i saab juhtida ainult 13 tihvtiga, mul oli käsitsi joonistatud kaart igast neist ühendustest, mis on kahjuks kadunud.
Kasutati emailtraati, nii et sektsioone saaks enne ühenduse loomist paika panna, kuumutades osa rauaga ja tinates.
See protsess oli väga aeganõudev, ma soovitaksin tungivalt PCB kujundamist
Samm: elektroonika kujundamine
Minu esialgne plaan oli kasutada RTC -ga Arduino mikrokontrollerit, kuid valisin ESP8266 Node MCU D1 tahvlile, kuna see võimaldas automaatset suveaega ja WIFI juhtimise võimalust.
Nööpnõelte arvu vähendamiseks oli mul täiuslik arv LED -e, et saaksin kasutada MAX7219 (mis saab hakkama kuni 64 LED -iga).
Seda IC -d kasutatakse tavaliselt LED -segmendi kuvarite juhtimiseks, kuid selle kasutusala oli minu omaga väga sarnane, valgustades suvalise arvu LED -e minimaalse värelemisega, sellel on isegi reguleeritav heledus.
Otsustasin juhtmestiku jaoks kasutada protoboardi, kuid kotkast oli abi osade paigutamisel ja juhtmestiku mõistmisel
Ma lisasin oma tahvli failid, kuid see oli minu esimene kord, kui kasutasin kotkast (ja praeguseks aegunud versiooni), nii et need on ainult viitamiseks
6. samm: elektroonika juhtmestik
See oli lihtne korduv samm, järgides Eagle'i skeemi, kasutades ESP ja LED -maatriksi päiseid.
Anoodide ja katoodide LED -päiste tihvt 1 oli tähistatud hõbedase teraga, neid saab eristada, nagu oli 7 ja teine 8.
Samm: programmeerimine
Kuna meie ekraan ei ole traditsiooniline maatriks, pidin leidma meetodi, kuidas visualiseerida, millised bitid sisse lülitada, mille ta HEX -i MAX IC -le saatis. Õnneks ma tean täpselt nii palju Exceli, et hätta sattuda, ja tegin "kuusnurga nõustaja", mis juhendab mind soovitud mustri kuvamisel, käsitsi asetatud märkeruudud.
Sellega kaasnes ümberhindamine, et minu tunni, minuti ja sekundi kuuekordset saab kombineerida bitise VÕI -ga, et saada lõplik kuusnurkkäsk, mis saadetakse max7219 -le, sealhulgas väike animatsioon, mille lisasin sekunditele, et saaksin veenduda, et plaat oleks kindel polnud külmunud;
Niisiis, peaaegu lõpusirgel. ja aeg uueks otsuseks, mis pole liiga hästi vananenud.
ESP -i kood on LUA -s, täna soovitaksin kasutada arduino IDE -d, et see oleks parem dokumentatsioon ja tugev pakenditeek, sel ajal, kui ESP kogukond alles küpses, valisin selle projekti keeleks LUA.
Tegin küsitava otsuse, et kellaaja lugemiseks regulaarselt pingutada google'i servereid. See muutus vajalikuks, et triivimise minimeerimiseks oleks vaja RTC -d, see töötab, kuid teil oleks parem kasutada reaalajas API -d.
halfSec = 0 tund = 0 minut = 0 sekund = 0
madal intensiivsus = 0
kõrge intensiivsus = 9
local SSID = "Wifi"
local SSID_PASSWORD = "Parool"
funktsiooni aeg () -praeguse kellaaja ja kuupäeva vaatamiseks looge Interneti -ühendus
kui wifi.sta.getip (), siis local conn = net.createConnection (net. TCP, 0) conn: connect (80, "google.com")
conn: on ("ühendus", function (conn, payload) conn: send ("HEAD/HTTP/1.1 / r / n".. "Host: time.is / r / n".. "Nõustu: */ *\ r / n".. " Kasutajaagent: Mozilla/4.0 (ühilduv; esp8266 Lua;) ".." / r / n / r / n ") lõpp)
conn: on ("saada", function (conn, payload) --print (payload) conn: close () local p = string.find (payload, "GMT") -leidke internetist saadavast kasulikust koormast kellaaja ja kuupäeva string, muutke ajavööndit, kui p ~ = null siis-eraldage numbrid vastavalt tunnile, minutile, teisele, päevale, kuule tund = tonumber (string.sub (kasulik koormus, p-9, p-8)) minut = tonumber (string.sub (kasulik koormus, p- 6, p-5)) teine = tonumber (string.sub (kasulik koormus, p-3, p-2)) addHour ()-raske kodeeritud BST (Suve aeg) suveajad säästes print (tund, minut, sekund) pool = (teine%6)*2 --print (halfSec) else print ("veebivärskendus ebaõnnestus!") lõpp -funktsioon) -sündmuse "vastuvõtmine" lõpp
conn: on ("lahtiühendamine", funktsioon (ühendamine, kasulik koormus)
funktsioon borTable (a, b,…) -kahekaupa VÕI tabelid koos
kui arg [1], siis b = borTable (b, pakkige lahti (arg)) end local z = {} i, v jaoks ipairs (a) do table.insert (z, bit.bor (v, b )) lõpp naasta z lõpp
funktsioon bxorTable (a, b,…) -kahekaupa VÕI tabelid koos
kui arg [1], siis b = bxorTable (b, pakkige lahti (arg)) end local z = {} i, v jaoks ipairs (a) do table.insert (z, bit.bxor (v, b )) lõpp naasta z lõpp
funktsioon addSecond ()
sekund = teine+1, kui teine> = 60, siis teine = 0 minut = minut+1, kui minut> = 60, siis minut = 0 addHour () lõpp lõpp
funktsioon addHour ()
tund = tund+1, kui tund> = 24, siis tund = 0 lõpp, kui tund == 2 või tund == 16, siis max7219.setIntensity (lowIntensity) lõpeb, kui tund == 8 või tund == 18, siis max7219.setIntensity (highIntensity) end end function update () local secGap = 6 local minGap = 3 local horGap = 1 local sec = {{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, 0x00, 0x02, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x03},, 0x00, 0x00, 0x01, 0x01, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03}, {0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01 }, {0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03}}; kohalik min = {{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, 0x02, 0x00, 0x02, 0x002, 0x02, 0x, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x102 }, {0x02, 0x02, 0x02, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 0x12, 0x12, 0x12, 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}}; kohalik hor = {{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, 0x004, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, {0x04, 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x0x, 0x04, 0x0C, 0x08}, {0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08 0x, 0x0C, 0x0C, 0x0C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x08, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}}; --print (tund, minut, sekund)
-tabel algab 0-st, seega kell 1 nagu praegu [0] = null)
max7219.write ({animate (borTable (sec [1+ (second/secGap))], min [1+ (minute/minGap)], hor [1+ (tund/horGap)]))})
lõpp -funktsioon
wifi.setmode (wifi. STATION)
wifi.sta.config (SSID, SSID_PASSWORD) wifi.sta.autoconnect (1)
-seadistage max7219
max7219 = nõuda ("max7219") max7219.setup ({numberOfModules = 1, slaveSelectPin = 8, intensiivsus = highIntensity})
-põhiprogramm
checkOnline = tmr.create ()
tmr.alarm (0, 180000, 1, aeg)
tmr.alarm (1, 1000, 1, addSecond)
tmr.alarm (2, 500, 1, uuendus)
funktsiooni animeerimine (endiselt)
kohalikud kaadrid = {{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, kui halfSec> = 12, siis halfSec = 0 end -print (halfSec) tagastab bxorTable (kaadrid [halfSec+1], still) lõpp
8. samm: eluase
Nüüd on teie aeg näidata oma uskumatut meisterlikkust ja projekti ellu viia.
Kas see või haarata ringlussevõttest välja amazonipakett ja teha ajutine korpus, mis on tänaseni kasutusel.
Selle lähenemisviisi eeliseks oli see, et iga projekti kiht sobis peaaegu ideaalselt papi paksusega, nii et võileiva sai kokku panna ja teibiga kokku kleepida. Sarnases lisatasu versioonis võiks kasutada akrüüli
Samm 9: Lõppmärkused
Täname, et lugesite. Paljud teavad, et projekti dokumenteerimine võib olla sama raske kui selle tegemine. minuga rääkides on videolõike, mis võivad lõpuks ilmavalgust näha.
Aastate jooksul selle projekti tegemise ja selle koostamise vahel ootasin rohkem näiteid 3D -printimist kasutavatest suvalistest LED -ekraanidest, kuid RGB -ribade vähendamine on enamasti kõrvaldanud vajaduse alternatiivi järele.
Loodan, et see on olnud informatiivne, ja küsige küsimusi, sest püüan anda üksikasjalikumat teavet jaotiste kohta, mis ei vasta täielikult.
Tervist
Soovitan:
Maa kell: 9 sammu (koos piltidega)
Maakell: Maa kell on projekt, mille tegin, et visualiseerida päikese käes avatud maapinda reaalajas! ≫ > Uus versioon (3D trükitud) < <
Londoni metroo juubeliliini ukse nupu häkkimine: 12 sammu (piltidega)
Londoni metroo juubeliliini uksenupu häkkimine: Londoni transpordimuuseumi pood müüb juubeliliini kasutuselt kõrvaldatud uksenuppe (saadaval on nii vasak kui ka parem). Kui kavatsete läbi viia projekti, mis vajab mingit nuppu ja märgutuld, oleksite „
Saagisahtlid - NASA kasvab väljaspool Maa võistlustööd: 5 sammu (piltidega)
Saagisahtlid - NASA kasvab väljaspool maad Võistlustöö: Kokkuvõte: Rahvusvahelise kosmosejaama pardal pole astronautidel palju ruumi toidu kasvatamiseks. See hüdropooniline aed on loodud tõhusaks töötamiseks, kasutades minimaalset ruumi, et koristada 30 taime korrapärase ajakava järgi nullgravitatsioonis
Juhendaja Eric inspireeritud LED -kuup (Maa inimesed): 10 sammu (piltidega)
Juhendaja Eric inspireeritud LED -kuup (Maa inimesed): Kes või mis on juhendaja Eric - ja miks te seda ehitaksite. Juhendaja Eric on KARP või kuubik või midagi TBS -i saate "Inimesed Maa" kohta. Mis on naljakas väike saade inimestest, kelle tulnukad on röövinud - enamasti
TV -tuuneri häkkimine Maa fotode lugemiseks satelliitidelt: 7 sammu (koos piltidega)
Häkkimine TV -tuuner, et lugeda satelliidilt Maa fotosid: meie pea kohal on palju satelliite. Kas teadsite, et kasutades ainult arvutit, TV -tuunerit ja lihtsat DIY -antenni, saate neilt edastusi vastu võtta? Näiteks reaalajas pildid maast. Ma näitan teile, kuidas. Te vajate:- 2 nädalat