Sisukord:

Londoni maa -alune kaardikell: 9 sammu (piltidega)
Londoni maa -alune kaardikell: 9 sammu (piltidega)

Video: Londoni maa -alune kaardikell: 9 sammu (piltidega)

Video: Londoni maa -alune kaardikell: 9 sammu (piltidega)
Video: Architecture Kata #1 - Разбор с экспертом [Как работает настоящий Solution Architect] #ityoutubersru 2024, November
Anonim
Londoni maa -alune kaardikell
Londoni maa -alune kaardikell
Londoni maa -alune kaardikell
Londoni maa -alune kaardikell

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

Esikiht
Esikiht
Esikiht
Esikiht
Esikiht
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

Juhtkihi kujundamine
Juhtkihi kujundamine
Juhtkihi kujundamine
Juhtkihi kujundamine
Juhtkihi kujundamine
Juhtkihi kujundamine
Juhtkihi kujundamine
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

Juhtkihi ehitamine
Juhtkihi ehitamine
Juhtkihi ehitamine
Juhtkihi ehitamine
Juhtkihi ehitamine
Juhtkihi ehitamine

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

LED -ide juhtmestik
LED -ide juhtmestik
LED -ide juhtmestik
LED -ide juhtmestik
LED -ide juhtmestik
LED -ide juhtmestik

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

Elektroonika projekteerimine
Elektroonika projekteerimine
Elektroonika projekteerimine
Elektroonika projekteerimine
Elektroonika projekteerimine
Elektroonika projekteerimine
Elektroonika projekteerimine
Elektroonika projekteerimine

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

Elektroonika juhtmestik
Elektroonika juhtmestik
Elektroonika juhtmestik
Elektroonika juhtmestik
Elektroonika juhtmestik
Elektroonika juhtmestik
Elektroonika juhtmestik
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

Programmeerimine
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

Eluase
Eluase
Eluase
Eluase
Eluase
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: