Mundarija:

London metrosi xaritasi: 9 qadam (rasmlar bilan)
London metrosi xaritasi: 9 qadam (rasmlar bilan)

Video: London metrosi xaritasi: 9 qadam (rasmlar bilan)

Video: London metrosi xaritasi: 9 qadam (rasmlar bilan)
Video: Prezidentlarning asil kasblari. 2024, Noyabr
Anonim
London metrosi xaritasi soati
London metrosi xaritasi soati
London metrosi xaritasi soati
London metrosi xaritasi soati

2014 yilda Londonda 3D bosib chiqarish bo'yicha konsaltingda amaliyot o'tab, Stratasys mashinasi yordamida rangli litofanlar bilan tajriba o'tkazganimda, men o'z sovg'amni tayyorladim, ularning ofislarida joylashgan 3D quvurli quvurlar. Men undan nimadir yasashga qat'iy qaror qildim. Oradan 2 yil o'tib, 2016 yilda o'zimning 3D -printerim bor edi va uni soatga aylantira boshladim.

Men bolaligimda, Tokio Flash raqamli soatlari eng buyuk narsa edi va bu dizayn uchun ilhom manbai bo'lardi.

Va endi men buni yozishga ulgurmagunimcha, 4 yillik kichik tanaffus bo'ldi!

Garchi aniq ko'rsatmalarni takrorlash qiyin bo'lsa va so'nggi ikki yil ichida havaskor PCB ishlab chiqarish xarajatlarining pasayishi LEDni joylashtirishning aniq usulini eskirishi mumkin. Umid qilamanki, umumiy fikrlar boshqalarga ingichka narsalardan g'alati soatlar yasashiga olib kelishi mumkin!

1 -qadam: oldingi qatlam

Old qatlam
Old qatlam
Old qatlam
Old qatlam
Old qatlam
Old qatlam

Kirish qismida aytib o'tilganidek, bu rangli 3D bosma edi, men ishonamanki, Stratasys mashinasi chang to'shak va bog'lovchi va pigment uchun o'zgartirilgan siyoh kartridjidan foydalangan.

Fayl tarixda yo'qoladi, lekin bu qatlam har qanday bo'lishi mumkin, fotosurat yoki bitta rangli litofan mo''jizalar yaratadi.

Bu qism 2014 yilda 3DS maxda ishlab chiqarilgan, ammo bugungi kunda tasvirni yorqinlikka asoslangan SLTga aylantirish uchun onlayn vositalar mavjud.

2 -qadam: Qo'llanma qatlamini loyihalash

Qo'llanma qatlamini loyihalash
Qo'llanma qatlamini loyihalash
Qo'llanma qatlamini loyihalash
Qo'llanma qatlamini loyihalash
Qo'llanma qatlamini loyihalash
Qo'llanma qatlamini loyihalash
Qo'llanma qatlamini loyihalash
Qo'llanma qatlamini loyihalash

Bu erda biz loyihaning murakkabligi va vaqtni o'qish usulini aniqlaymiz. Rasmlarda men o'ynagan ikkita g'oya ko'rsatilgan.

Ular dizaynda skanerlash va uning bo'ylab chiziqlar chizish orqali qilingan.

Bu juda o'qiladigan soat emas, lekin men kun bo'yi chiziqlarni to'ldirish g'oyasini afzal ko'rdim, bu esa dizayn maqsadiga aylandi.

Ikkilik sanash - bu LED sonini kamaytirishning oqilona usuli, va agar ikkilik sizning murabbo bo'lsa, u o'qishni yaxshilaydi, lekin bu mening "to'ldirish chiziqlari" haqidagi fikrimni buzdi, shuning uchun bu loyiha uchun variant bo'lmadi.

Tokio Flash soatlarida LED sonini minimallashtirish odatiy holdir, lekin uch yoki besh soniyada bitta bo'lim, keyin har bir bo'lim to'ldirilganda boshqa to'ldirish bo'lsa, men bu texnikani bir necha daqiqada ishlatib, ularni 60 dan 20 plyusga 2 ga tushirdim. bir necha soniya davomida aniqlikdan unchalik tashvishlanmadi.

3 -qadam: Qo'llanma qatlamini yaratish

Qo'llanma qatlamini yaratish
Qo'llanma qatlamini yaratish
Qo'llanma qatlamini yaratish
Qo'llanma qatlamini yaratish
Qo'llanma qatlamini yaratish
Qo'llanma qatlamini yaratish

LEDlar uchun qo'llanma qatlami ikkita maqsadga ega, u LEDlarni joyida ushlab turadi va ular orasiga to'kilishini oldini oladi

U Inkscape -da qatlam sifatida chizilgan, men uni skanerlashning yuqori qismida, men dizayn uchun ishlatardim. Printerimga yuborishdan oldin blenderga 1 mm qalinlik qo'shilgan.

Bu mening eng kichik Makibox A6 -da qilishim kerak bo'lgan eng qiyin bosimlardan biri edi, uning qismi abs shaklida bosilgan edi, shuning uchun uni qurilish maydonchasiga minimal burilish bilan biriktirish uchun bir tonna atsetonli atala ishlatilgan. Yaxshiyamki, bu qism yakuniy mahsulotda ko'rinmaydi

Oxirgi rasmda u bo'shliqni tekshirish uchun chiroqni ushlab turganini ko'rsatadi.

Ko'rinib turibdiki, yorug'lik bo'ylab chiziqlar orasidagi to'kilish vizual tasvir uchun afzal bo'lishi mumkin, o'qish qiyin emas, bunga har bir yorug'likning qisqa tomonlaridagi yo'riqnomaga pah qo'shish orqali erishish mumkin.

4 -qadam: LEDlarni ulash

LEDlarni ulash
LEDlarni ulash
LEDlarni ulash
LEDlarni ulash
LEDlarni ulash
LEDlarni ulash

Birinchi rasmda tuynuk o'lchamini tekshirish uchun men qilgan sinov bosimi ko'rsatilgan, men LEDni ozgina kuch bilan dantelga mahkam o'rnashtirmoqchi edim, keyin hidoyat qatlamini yotqizishda to'g'ri shakl qo'lda joylashtirildi.

Mening 3D printerim past bardoshli bo'lgani uchun, ba'zilari bo'shashgan va o'z joyida qolishi uchun super yopishtiruvchi vositani talab qilishgan, boshqalari esa juda qattiq edi, lekin lehim paytida LEDni bosish orqali uni rag'batlantirishdi. to'g'ri o'lchamdagi teshik, uni kirgizgandan keyin tortib olish mumkin edi.

Simlar sonini kamaytirish uchun LEDlar 7 dan 8 gacha bo'lgan matritsada lehimlangan, ya'ni 55 ta LEDni faqat 13 pin bilan boshqarish mumkin edi, menda bu ulanishlarning xaritasi bor edi, afsuski, ular yo'qolgan.

Emaye sim ishlatilgan, shuning uchun aloqa o'rnatilgunga qadar bo'laklarni temir bilan qizdirish va qalay bilan ochish mumkin edi.

Bu jarayon juda ko'p vaqt talab etadi, men PCB dizaynini tavsiya qilaman

5 -qadam: Elektronikani loyihalash

Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash
Elektronikani loyihalash

Mening birinchi rejam Arduino mikrokontrollerini RTC bilan ishlatish edi, lekin NSP MCU D1 taxtasida ESP8266 ni tanladi, chunki bu avtomatik yozgi vaqtni tejash va WIFI -ni boshqarish imkoniyatini beradi.

Pim sonini yanada kamaytirish uchun menda MAX7219 (64 ta LEDni sig'dira oladigan) dan foydalanish uchun LEDlarning mukammal soni bor edi.

Bu IC odatda LED 7 segmentli displeylarni haydash uchun ishlatiladi, lekin u meniki bilan juda o'xshash ishlatilgan, minimal miqdordagi miltillovchi LEDlarni o'zboshimchalik bilan yoritadi, hatto boshqariladigan yorqinligi ham bor.

Men simlar uchun protobardan foydalanishga qaror qildim, lekin burgut simlarni joylashtirish va tushunish uchun foydali bo'ldi

Men taxta fayllarimni biriktirdim, lekin men burgutni birinchi marta ishlatganman (va hozirda eskirgan), shuning uchun ular faqat ma'lumot uchun.

6 -qadam: Elektronni ulash

Elektron simlarni ulash
Elektron simlarni ulash
Elektron simlarni ulash
Elektron simlarni ulash
Elektrotexnikani ulash
Elektrotexnikani ulash
Elektron simlarni ulash
Elektron simlarni ulash

Bu burgut sxemasiga binoan, ESP uchun sarlavhalarni ishlatib, LED matritsasini yig'ishda katta yordam berdi.

Anod va katodli LED diodli sarlavhalarning 1 -bandi kumush sharf bilan belgilangan, ularni 7 -dan 8 -gacha bo'lgani kabi farqlash mumkin.

7 -qadam: dasturlash

Dasturlash
Dasturlash

Bizning displeyimiz an'anaviy matritsa bo'lmaganligi uchun, men qaysi bitlarni yoqish kerakligini vizualizatsiya qilish usulini topishga majbur bo'ldim. Yaxshiyamki, men muammoga duch kelish uchun etarlicha excelni bilaman va men ko'rsatmoqchi bo'lgan naqsh, qo'lda joylashtirilgan tasdiqlash qutilari bo'lsa ham, meni boshqaradigan "olti burchakli sehrgar" ni yaratdim.

Bu soat, daqiqa va soniyalar uchun o'n oltilik sonni qo'shib, max7219 ga yuborish uchun oxirgi o'n oltilik buyruqni, shu jumladan soniyalarga qo'shilgan kichik animatsiyani ishlab chiqarish uchun birlashtirilishi mumkin bo'lgan qayta baho bilan keldi, men taxtaga ishonch hosil qildim. muzlamadi.

Shunday qilib, deyarli oxirida. va juda yaxshi bo'lmagan boshqa qaror uchun vaqt.

ESP kodi LUAda, bugun men arduino IDE -dan yaxshiroq hujjatlar va mustahkam paketlar kutubxonasi uchun foydalanishni tavsiya qilaman, o'sha paytda ESP hamjamiyati etuk edi va men LUA -ni ushbu loyiha uchun til sifatida tanladim.

Vaqtni o'qish uchun Google serverlarini muntazam ravishda ping qilish to'g'risida shubhali qaror qabul qildim. Bu o'zgarishni minimallashtirish uchun RTCga muhtoj edi, bu ishlaydi, lekin haqiqiy vaqt API -dan foydalanish yaxshiroqdir.

halfSec = 0hour = 0 daqiqa = 0 soniya = 0

past zichlik = 0

yuqori zichlik = 9

mahalliy SSID = "Wi -Fi"

mahalliy SSID_PASSWORD = "Parol"

funktsiya vaqti () -joriy vaqt va sanani olish uchun Internetga ulaning

agar wifi.sta.getip () bo'lsa, mahalliy ulanish = net.createConnection (net. TCP, 0) ulanish: ulanish (80, "google.com")

ulanish: yoqilgan ("ulanish", funktsiya (ulanish, yuk) ulanish: yuborish ("HEAD/HTTP/1.1 / r / n".. "Xost: time.is / r / n".. "Qabul qiling: */ *\ r / n".. " Foydalanuvchi-agent: Mozilla/4.0 (mos; esp8266 Lua;) ".." / r / n / r / n ") oxiri)

ulanish: yoqilgan ("qabul qilish", funktsiya (ulanish, yuk) -chop etish (yuk) ulanish: yopish () mahalliy p = string.find (foydali yuk, "GMT") -Internetdan foydali yukdagi vaqt va sana qatorini toping, p ~ bo'lsa vaqt mintaqasini o'zgartiring. = nil-soat, daqiqa, soniya, kun, oy soatlariga mos keladigan raqamlarni chiqarib oling = tonumber (string.sub (yuk, p-9, p-8)) daqiqa = tonumber (string.sub (yuk, p- 6, p-5)) soniya = tonumber (string.sub (yuk, p-3, p-2)) addHour ()-qattiq kodli BST (Britaniyaning yozgi vaqti) kunduzgi tejamli bosma (soat, daqiqa, soniya) yarim sek. = (ikkinchi%6)*2 -chop etish (halfSec) boshqa chop etish ("veb -yangilanish amalga oshmadi!") oxiri oxiri -funksiya) -"qabul" voqea ishlovchisi oxiri

ulanish: yoqilgan ("uzilish", funktsiya (ulanish, yuk) ulanish = nol yuk = nol oxiri) tugatish ("Wi -Fi hali yo'q") oxiri

borTable (a, b,…) funktsiyasi -o'zaro jadvallar yoki birgalikda jadvallar

agar arg [1] bo'lsa, b = borTable (b, ochish (arg)) tugaydi mahalliy z = {} i, v uchun ipairs (a) do table.insert (z, bit.bor (v, b )) oxiri qaytish z oxiri

bxorTable (a, b,…) funktsiyasi -jadvallar bilan birgalikda

agar arg [1] bo'lsa, b = bxorTable (b, ochish (arg)) tugaydi mahalliy z = {} i, v uchun ipairs (a) do table.insert (z, bit.bxor (v, b )) oxiri qaytish z oxiri

addSecond () funktsiyasi

soniya = sekund+1 bo'lsa, soniya = = 60, keyin soniya = 0 daqiqa = daqiqa+1 bo'lsa daqiqa> = 60 keyin daqiqa = 0 qo'shishHour () oxiri oxiri

addHour () funktsiyasi

soat = soat+1 bo'lsa soat> = 24 keyin soat = 0 bo'lsa soat == 2 yoki soat == 16 bo'lsa max7219.setIntensiya (past zichlik) soat == 8 yoki soat == 18 bo'lsa, max7219.setIntensiya (yuqori zichlik) end end funksiyasini yangilash () 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, 0x02, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03, 0x00, 0x01, 0x01, 0x01 }, {0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03}}; mahalliy 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, 0x00}, {0x00, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00,, 0x02, 0x02, 0x02, 0x02, 0x00, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x12, 0x12 }, {0x02, 0x02, 0x02, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 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}}; mahalliy 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, 0x004, 0 000, 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, 0x08}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x04, 0x04 }, {0x04, 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x04, 0x0C, 0x08}, {0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C0, 0x0C), 0x0C, 0x0C, 0x0C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C0 0x4C, 0x0C., 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}}; -chop etish (soat, daqiqa, soniya)

-jadval 0da boshlanadi, shuning uchun 1 da hozir sek [0] = nol)

max7219.yozish ({jonlantirish (borTable (sek [1+ (sekund/sekGap)], min [1+ (daqiqa/daqiqaGap)], hor [1+ (soat/horGap)]))})

tugatish funktsiyasi

wifi.setmode (wifi. STATION)

wifi.sta.config (SSID, SSID_PASSWORD) wifi.sta.autoconnect (1)

-max 7219 ni sozlang

max7219 = talab ("max7219") max7219. sozlash ({numberOfModules = 1, slaveSelectPin = 8, intensivlik = yuqori zichlik})

-Asosiy dastur

checkOnline = tmr.create ()

tmr.alarm (0, 180000, 1, vaqt)

tmr.alarm (1, 1000, 1, addSecond)

tmr.alarm (2, 500, 1, yangilash)

jonli funksiya (hali ham)

mahalliy ramkalar = {{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}}; halfSec = halfSec+1 agar halfSec> = 12 bo'lsa, halfSec = 0 end --print (halfSec) qaytarish bxorTable (freymlar [halfSec+1], harakatsiz) oxiri

8 -qadam: Uy -joy

Uy -joy
Uy -joy
Uy -joy
Uy -joy
Uy -joy
Uy -joy

Endi sizning ajoyib mahoratingizni namoyish etish va loyihani uyga qo'yish vaqti keldi.

Yoki Amazon paketini qayta ishlashdan chiqarib oling va hozir ham ishlatilayotgan vaqtinchalik uyni yarating.

Ushbu yondashuvni qo'llashning foydasi shundaki, loyihaning har bir qatlami karton qalinligiga deyarli mos keladi, shuning uchun sendvichni bir -biriga yopishtirib qo'yish mumkin. Shunga o'xshash premium versiyada akril ishlatilishi mumkin

9 -qadam: Yakuniy so'zlar

O'qiganingiz uchun tashakkur, ko'pchiligingiz bilganingizdek, loyihani hujjatlashtirish uni tayyorlash kabi qiyin bo'lishi mumkin. Men bilan gaplashayotgan video parchalari bor, ular oxir -oqibat kunni ko'rishi mumkin.

Loyihani tuzish va uni yozish o'rtasidagi yillar mobaynida men 3D bosma yordamida o'zboshimchalik bilan LED displeylarining misollarini ko'rishni kutgandim, lekin RGB tasmalarining kamayishi, asosan, muqobilga bo'lgan ehtiyojni yo'q qildi.

Umid qilamanki, bu ma'lumotli va savollar bering, chunki men to'liq qoniqtirmaydigan bo'limlar haqida batafsilroq ma'lumot berishga harakat qilaman.

Salom

Tavsiya: