Мазмуну:

Лондон метросунун картасы: 9 кадам (сүрөттөр менен)
Лондон метросунун картасы: 9 кадам (сүрөттөр менен)

Video: Лондон метросунун картасы: 9 кадам (сүрөттөр менен)

Video: Лондон метросунун картасы: 9 кадам (сүрөттөр менен)
Video: Купить электроскутер цена за дешёвый citycoco 2021 электроскутер надежный citycoco skyboard 2024, Июль
Anonim
Лондон метросунун карта сааты
Лондон метросунун карта сааты
Лондон метросунун картасы
Лондон метросунун картасы

2014 -жылы Лондондогу 3D басып чыгаруу боюнча консультацияда стажировкадан жана Stratasys машинасын колдонуп түстүү литофандар менен болгон эксперименттен кийин, мен өзүмдүн белегимди иштеп чыгам, алардын кеңселеринде түтүк линияларынын түстүү 3D принти. Мен андан бир нерсе жасоого бел байладым. Кыска 2 жылдан кийин 2016 -жылы менде жеке 3D принтерим бар болчу жана аны саат кылып иштеп баштадым.

Кичинекей кезимде мен Tokyo Flash санариптик сааттары эң сонун нерселер болгон жана бул дизайн үчүн шыктандыруучу пункт болмок.

Эми бул кичинекей 4 жылдык тыныгуу болду, мен аны жазууга чейин жеттим!

Так көрсөтмөлөрдү кайталоо кыйын болуп калат, жана акыркы эки жылда хобби ПХБ өндүрүшүнүн наркынын төмөндөшү LED жайгаштыруу боюнча менин так ыкмамды эскирип калышы мүмкүн. Мен бөлүшкөн идеялар башкаларга ичке нерселерден кызыктай сааттарды жасоого алып келет деп үмүттөнөм!

1 -кадам: алдыңкы катмар

Front Layer
Front Layer
Front Layer
Front Layer
Front Layer
Front Layer

Киришүүдө айтылгандай, бул түстүү 3D басып чыгаруу болгон, мен Stratasys машинасы порошок төшөгүн жана байлоочу жана пигмент үчүн модификацияланган сыя картриджди колдонгон деп ишенем.

Файл тарыхта жоголгон, бирок бул катмар эч нерсе болбошу мүмкүн, сүрөт же бир түстүү литофан кереметтерди жаратмак.

Бул бөлүк 3DS max 2014 -жылы жасалган, бирок бүгүнкү күндө сүрөттү жаркыроого негизделген SLTге айлантуу үчүн онлайн куралдар бар.

2 -кадам: Жол катмарын иштеп чыгуу

Жол катмарын долбоорлоо
Жол катмарын долбоорлоо
Жол катмарын долбоорлоо
Жол катмарын долбоорлоо
Жол катмарын долбоорлоо
Жол катмарын долбоорлоо
Жол катмарын долбоорлоо
Жол катмарын долбоорлоо

Бул жерде биз долбоордун татаалдыгын жана убакытты окуу ыкмасын чечебиз. Сүрөттөр мен ойногон 2 идеяны көрсөтөт.

Булар дизайнда сканерлөө жана inkscape аркылуу сызыктарды тартуу аркылуу жасалды.

Бул абдан окула турган саат эмес, бирок мен күн бою сызыктарды толтуруу идеясын артык көрдүм, ошондуктан дизайн максаты болуп калды.

Бинардык эсептөө - бул светодиоддун санын азайтуунун эң ыңгайлуу ыкмасы, жана эгерде бинардык сиздин джем болсоңуз окууну жакшыртат, бирок бул менин "толтуруу сызыктарым" идеясын бузат, ошондуктан бул долбоордун варианты болгон эмес

Токио флэш сааттарында LED санын азайтуу кеңири таралган, бирок бир бөлүм 3 же 5те, андан кийин ар бир бөлүм толтурулганда башка толтуруу бар, мен бул ыкманы 60тан 20га чейин азайтуу үчүн мүнөткө колдондум. тактык жөнүндө ушунчалык тынчсызданган жокмун.

3 -кадам: Жол катмарын куруу

Жол катмарын куруу
Жол катмарын куруу
Жол катмарын куруу
Жол катмарын куруу
Жол катмарын куруу
Жол катмарын куруу

Светодиоддор үчүн бул жол катмарынын 2 максаты бар, ал диоддорду ордунда кармап турат жана алардын ортосунда төгүлүшүн алдын алат

Ал Inkscapeке катмар катары тартылган, ал мен сканердин үстүндө, мен дизайн макети үчүн колдонгон элем. 1мм калыңдыгы принтериме жөнөтүүдөн мурун блендерге кошулган.

Бул менин кичинекей Makibox A6ге жасашым керек болгон эң оор басылмалардын бири болчу, бөлүк абс тилинде басылган, андыктан аны бир аз ацетон шламы курулуш платформасына минималдуу ийилүү менен тиркөө үчүн колдонулган. Бактыга жараша, бул бөлүк акыркы продуктта көрүнбөйт

Акыркы сүрөттө ал аралыкты текшерүү үчүн чыракка чейин кармалганы көрсөтүлгөн.

Артка кылчайып карасак, сызыктын чырактарынын арасындагы төгүлүү, чынында, визуалдык үчүн артыкчылыктуу болушу мүмкүн, окуу кыйын эмес, буга ар бир жарыктын кыска тараптарындагы көрсөтмөгө палочка кошуу аркылуу жетишсе болот.

4 -кадам: Светодиоддук зымдарды туташтыруу

Светодиоддорду зымга туташтыруу
Светодиоддорду зымга туташтыруу
Светодиоддорду зымга туташтыруу
Светодиоддорду зымга туташтыруу
Светодиоддорду зымга туташтыруу
Светодиоддорду зымга туташтыруу

Биринчи сүрөттө мен тешиктин өлчөмүн текшерүү үчүн жасаган тесттик басуу көрсөтүлөт, мен LEDдин бир аз күч менен шнуркасына тыгыз батышын көздөп жаткам, туура кат форма кийин жетектөөчү катмарды коюп жатканда кол менен коюлган.

Менин 3D принтеримдин толеранттуулугунун төмөндүгүнөн улам, кээ бирөөлөр бошоп кетишти жана кээ бирлери ордунда калыш үчүн суперключ керек болчу, бирок ширетүү учурунда LEDди басуу менен бул жерге үндөштү, бул чындыгында караганда жакшыраак болчу туура өлчөмдөгү оюкчалар, алар бир жолу зым тартылганда ижарага берилчү.

Зымдардын санын азайтуу үчүн, LEDлер 7ден 8ге чейинки матрицада ширетилген, башкача айтканда, бардык 55 светодиоддорду 13 казык менен башкарса болот, менде бул байланыштардын ар биринин картасы бар болчу, тилекке каршы жоголгон.

Эмаль зым колдонулган, ошондуктан бөлүмдөр темир менен жылытылып, туташууга чейин калай менен ачылышы мүмкүн.

Бул процесс абдан көп убакытты талап кылгандыктан, мен ПХБны иштеп чыгууну сунуштайм

5 -кадам: Электрониканы долбоорлоо

Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо
Электрониканы долбоорлоо

Менин баштапкы планым Arduino микроконтроллерин RTC менен колдонуу болчу, бирок ESP8266 Node MCU D1 тактасында тандап алган, анткени ал автоматтык күндүзгү үнөмдөөнү жана WIFIди башкаруу мүмкүнчүлүгүн берет.

Пиндин санын дагы кыскартуу үчүн, менде MAX7219 (64 светодиодго чейин иштей ала турган) LEDлердин эң сонун саны бар болчу.

Бул IC көбүнчө LED 7 Segment дисплейлерин айдоо үчүн колдонулат, бирок анын кени абдан окшош болгон, минималдуу жарк эткен светодиоддорду каалагандай жарыктандырып, ал тургай контролдонуучу жарыктыгы бар.

Мен зымдарды өткөрүү үчүн протоборд колдонууну чечтим, бирок бүркүт зымдарды жайгаштыруу жана түшүнүү үчүн пайдалуу болду

Мен тактай файлдарымды тиркеп койгом, бирок бул бүркүттү биринчи жолу колдонуп жаткам (жана азырынча эскирген версиясы), ошондуктан алар шилтеме үчүн гана

6 -кадам: Электрониканы зымга өткөрүү

Электрондук зымдарды тартуу
Электрондук зымдарды тартуу
Электрондук зымдарды тартуу
Электрондук зымдарды тартуу
Электрондук зымдарды тартуу
Электрондук зымдарды тартуу
Электрондук зымдарды тартуу
Электрондук зымдарды тартуу

Бул кайталануучу жөнөкөй кадам болду, Eagle схемасына ылайык, ESPтин башын колдонуу жана LED матрицасы монтаждоого чоң жардам берди.

Анод жана катод LED диоддорунун 1 пини күмүш курч менен белгиленген, аларды 7 башка 8 болгондой айырмалоого болот.

7 -кадам: Программалоо

Программалоо
Программалоо

Биздин дисплей салттуу матрица болбогондуктан, кайсы битти күйгүзүү керек экенин визуалдаштыруу ыкмасын табууга туура келди, ал аны HEXте MAX ICге жөнөткөн. Бактыга жараша, мен көйгөйгө туш болуу үчүн жетишерлик эле excel билем жана "Hex устасын" жасадым, бирок мен каалаган үлгү көрсөтүлсө да, колго коюлган кутучалар бардыгын көрсөттү.

Бул менин саатыма, мүнөтүмө жана секундума карата он алты бурчтукту max7219га жөнөтүү үчүн акыркы он алтылык буйрукту чыгаруу үчүн биттик ЖЕ жардамы менен бириктирилиши мүмкүн болгон кайра баалоо менен келди, андыктан мен секундага кошкон кичинекей анимацияны кошуп алам. тоңгон жок

Ошентип, дээрлик аягында. жана өтө жакшы эмес дагы бир чечимге убакыт келди.

ESPтин коду LUAда, Бүгүн мен arduino IDEди колдонууну сунуштайм, анткени ал жакшыраак документтер жана күчтүү пакет китепканасы үчүн, ESP коомчулугу дагы эле жетилип жаткан кезде мен LUAны бул долбоордун тили катары тандап алгам.

Убакытты окуу үчүн google серверлерине үзгүлтүксүз пинг коюуга шектүү чечим кабыл алдым. Бул дрейфти азайтуу үчүн RTCге муктаж болуп калды, бул иштейт, бирок чыныгы убакыт API'син колдонсоңуз жакшы болот.

halfSec = 0hour = 0 minutes = 0 second = 0

lowIntensity = 0

жогорку интенсивдүүлүк = 9

жергиликтүү SSID = "Wifi"

жергиликтүү SSID_PASSWORD = "Сырсөз"

time time () -учурдагы убакытты жана датаны алуу үчүн интернетке туташыңыз

эгер wifi.sta.getip () анда жергиликтүү туташуу = net.createConnection (net. TCP, 0) туташуу: туташуу (80, "google.com")

conn: on ("байланыш", function (conn, payload) conn: send ("HEAD/HTTP/1.1 / r / n".. "Host: time.is / r / n".. "Accept: */ *\ r / n".. " Колдонуучу-агент: Mozilla/4.0 (шайкеш; esp8266 Lua;) ".." / r / n / r / n ") аягы)

туташуу: күйгүзүү ("алуу", function (conn, payload) --print (payload) conn: close () local p = string.find (payload, "GMT") -интернеттен пайдалуу жүктүн убактысын жана датасын табуу, p ~ болсо, убакыт алкагын өзгөртүү. = nil анда-саатка, мүнөткө, секундга, күнгө, айга туура келген сандарды бөлүп алуу = тонна (string.sub (payload, p-9, p-8)) мүнөт = tonumber (string.sub (payload, p- 6, p-5)) экинчи = тонна = (экинчи%6)*2 -басуу (halfSec) башка басып чыгаруу ("веб жаңыртуусу ишке ашкан жок!") Аяктоо аягы -функция) -"кабыл алуу" иш -чарасынын аягы

туташуу: күйүк ("ажыратуу", функция (туташуу, жүктөмө) conn = nil payload = nil end) аягына чыгаруу ("wifi азырынча жок") аягы

borTable (a, b, …) функциясы -бирге ЖЕ таблицалар чогуу

эгер arg [1] анда b = borTable (b, ачуу (arg)) i, v үчүн ip, жергиликтүү z = {} аяктайт (a) do table.insert (z, bit.bor (v, b )) аягына кайтуу z аягы

bxorTable (a, b,…) функциясы -бирге ЖЕ таблицалар чогуу

эгер arg [1] анда b = bxorTable (b, таңгактоо (arg)) i, v үчүн ip, жергиликтүү z = {} аяктайт (a) do table.insert (z, bit.bxor (v, b )) аягына кайтуу z аягы

addSecond () функциясы

экинчи = экинчи+1 болсо экинчи> = 60 анда экинчи = 0 мүнөт = мүнөт+1 болсо мүнөт> = 60 анда мүнөт = 0 addHour () аягы аягы

addHour функциясы ()

саат = саат+1 болсо саат> = 24 анда саат = 0 аягында саат болсо == 2 же саат == 16 анда max7219.setIntensity (lowIntensity) эгерде саат == 8 же саат == 18 болсо, анда 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, 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, 0x0x, 0x01, 0x01, 0x01 }, {0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03}}; жергиликтүү мүн = {{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, 0x00x, 02, 0, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x02, 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, 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}}; жергиликтүү хор = {{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, 0x0C, 0x0C}, 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 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}}; -басып чыгаруу (саат, мүнөт, секунд)

-таблица 0де башталат, ошондуктан 1де азыркы сек [0] = нөл)

max7219.жазуу ({жандуу (borTable (сек [1+ (сек./секГап)], мин [1+ (мүнөт/мүн Гап)], хор [1+ (саат/горГап)]))})

аягы -функция

wifi.setmode (wifi. STATION)

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

-max7219 конфигурациялоо

max7219 = талап кылуу ("max7219") max7219. жөндөө ({numberOfModules = 1, slaveSelectPin = 8, интенсивдүүлүк = highIntensity})

--Башкы программа

checkOnline = tmr.create ()

tmr.alarm (0, 180000, 1, убакыт)

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

tmr.alarm (2, 500, 1, жаңыртуу)

жандуу функция (дагы эле)

жергиликтүү кадрлар = {{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 if halfSec> = 12 анда halfSec = 0 end --print (halfSec) bxorTable кайтаруу (кадрлар [halfSec+1], дагы эле)

8 -кадам: Турак жай

Турак жай
Турак жай
Турак жай
Турак жай
Турак жай
Турак жай

Эми укмуштуудай чеберчилигиңизди көрсөтүүгө жана долбоорду жайгаштырууга убакыт келди.

Же болбосо, Amazon пакетин кайра иштетүүдөн алып, бүгүнкү күндө дагы колдонулуп жаткан убактылуу турак жай жасаңыз.

Бул ыкманы колдонуунун пайдасы, долбоордун ар бир катмары картондун калыңдыгына дээрлик дал келгендиктен, бутербродду тизип, скотч менен чаптап алса болот. Окшош премиум версиясында акрил колдонулушу мүмкүн

9 -кадам: Жыйынтыктоочу сөздөр

Окуганыңыз үчүн рахмат, көбүңүз билгендей, долбоорду документтештирүү аны жасоо сыяктуу кыйын болот. Мени менен сүйлөшүп жаткан видеонун үзүндүлөрү бар, алар акыры күндүн жарыгын көрө алышат.

Бул долбоорду даярдоо менен жазуунун ортосундагы жылдарда мен 3D басып чыгарууну колдонгон LED дисплейлеринин дагы мисалдарын көрөм деп күткөм, бирок RGB тилкелеринин кыскарышы негизинен альтернативага болгон муктаждыкты жок кылды.

Бул маалыматтуу болду деп үмүттөнөм жана суроолорду бериңиз, анткени мен толук канааттандырбаган бөлүмдөр боюнча кененирээк маалымат берүүгө аракет кылам.

Ура

Сунушталууда: