Mundarija:
- 1 -qadam: oldingi qatlam
- 2 -qadam: Qo'llanma qatlamini loyihalash
- 3 -qadam: Qo'llanma qatlamini yaratish
- 4 -qadam: LEDlarni ulash
- 5 -qadam: Elektronikani loyihalash
- 6 -qadam: Elektronni ulash
- 7 -qadam: dasturlash
- 8 -qadam: Uy -joy
- 9 -qadam: Yakuniy so'zlar
Video: London metrosi xaritasi: 9 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:22
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
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
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
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
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
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
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
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
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:
Kompyuter o'yinlarini boshqaruvchi xaritasi (Linux va Windows): 5 qadam
Kompyuter o'yinlari boshqaruvchisi xaritasi (Linux va Windows): Agar siz shaxsiy kompyuterda o'yin sohasini boshlayotgan bo'lsangiz, u erga borishingiz uchun bir necha qadam bo'lishi mumkin. Bugun men sizga USB o'yin boshqaruvchisidan, hatto eng qadimgi kompyuter o'yinlaridan ham bepul foydalanishni ko'rsataman. Texnika
Universitet kampusidagi talabalar to'xtash joyi xaritasi: 7 qadam (rasmlar bilan)
Universitet kampusidagi talabalar to'xtash joyi xaritasi: Ko'pchilik talabalar universitet kampusida qaerda to'xtashlari mumkinligi haqida hayron bo'lishadi. Bu muammoni hal qilish uchun men Yuta shtati universiteti kampusining asosiy maydonining yoritilgan mashinalar xaritasini tuzdim. Xaritada talabalar to'xtash joylari qanday ekanligini tezda ko'rib chiqishlari mumkin
LED Ma'lumotlari + San'ati bilan Aydaxoning aqlli xaritasi: 8 qadam (rasmlar bilan)
LED Ma'lumotlar + San'at bilan Aydaho aqlli xaritasi: Men har doim "rasm" yordamida geografik ma'lumotlarni badiiy va dinamik tarzda ko'rsatish usulini xohlaganman. yorug'lik bilan xarita. Men Aydaho shtatida yashayman va o'z shtatimni yaxshi ko'raman, shuning uchun bu boshlash uchun ajoyib joy bo'ladi deb o'yladim! Aqlli san'at asari bo'lishdan tashqari
London metrosining yubiley chizig'idagi eshik tugmachasini buzish: 12 qadam (rasmlar bilan)
London metropoliteni yubiley chizig'ining eshik tugmachasini buzish: London transport muzeyi do'koni yubiley chizig'idan o'chirilgan eshik tugmachalarini sotmoqda (chapda ham, o'ngda ham). Agar siz biron bir tugma va ko'rsatkich chiroqqa muhtoj bo'lgan loyihani amalga oshirishni o'ylayotgan bo'lsangiz, shunday bo'lar edingiz
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagining yorug'ligi parvoz xaritasi ma'lumotlari yordamida: 14 qadam (rasmlar bilan)
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagining parvoz xaritasi ma'lumotlari: Bu chiroq bir necha sabablarga ko'ra kelib chiqqan, chunki men doimo tepada uchadigan samolyotlarga qiziqaman va yozda dam olish kunlari ular atrofida juda hayajonli samolyotlar uchadi. Garchi siz ularni faqat ketayotganda eshitishga moyil bo'lsangiz ham