Агуулгын хүснэгт:

Лондонгийн метроны газрын зураг: 9 алхам (зурагтай)
Лондонгийн метроны газрын зураг: 9 алхам (зурагтай)

Видео: Лондонгийн метроны газрын зураг: 9 алхам (зурагтай)

Видео: Лондонгийн метроны газрын зураг: 9 алхам (зурагтай)
Видео: İNGİLTERE DÜNYAYI NASIL ELE GEÇİRDİ? - DÜNYA TARİHİ 9 2024, Арваннэгдүгээр
Anonim
Лондонгийн метроны газрын зургийн цаг
Лондонгийн метроны газрын зургийн цаг
Лондонгийн метроны газрын зургийн цаг
Лондонгийн метроны газрын зургийн цаг

2014 онд Лондонд 3D хэвлэх зөвлөгөөнд дадлага хийж, Stratasys машинаа ашиглан өнгөт литофаныг туршиж үзээд би оффис дээрээ байрлуулсан хоолойн шугамын 3D өнгөт хэвлэмэл бэлгийг хийв. Үүнээс ямар нэгэн зүйл хийхээр шийдсэн. Удалгүй 2 жилийн дараа 2016 онд би өөрийн гэсэн 3D принтертэй болсон бөгөөд түүнийгээ цаг болгон бүтээхээр ажиллаж эхлэв.

Бага байхдаа би Tokyo Flash дижитал цаг бол хамгийн агуу зүйл байсан бөгөөд энэ нь дизайны урам зориг өгөх цэг байсан юм.

Үүнийг бичих хүртэл 4 жилийн завсарлага авлаа.

Тодорхой зааврыг хуулбарлахад хэцүү байх болно, гэхдээ сүүлийн хоёр жилийн хугацаанд хоббичин ПХБ -ийн үйлдвэрлэлийн өртөг буурсан нь LED байрлуулах миний яг аргыг хуучирсан байж магадгүй юм. Хуваалцсан санаа нь бусдад нимгэн зүйлээр хачин цаг гаргахад хүргэж магадгүй гэж найдаж байна!

Алхам 1: урд давхарга

Урд давхарга
Урд давхарга
Урд давхарга
Урд давхарга
Урд давхарга
Урд давхарга

Танилцуулгад дурдсанчлан энэ бол өнгөт 3D хэвлэмэл материал байсан бөгөөд биндэр, пигмент хийхэд нунтаг ор, өөрчлөгдсөн бэхний хайрцаг ашигласан Stratasys машин гэдэгт би итгэдэг.

Файл нь түүхэнд алдагдсан боловч энэ давхарга нь юу ч байж болно, зураг эсвэл ганц өнгийн литофан нь гайхамшгийг төрүүлэх болно.

Энэ хэсгийг 2014 онд 3DS max -д хийсэн боловч өнөөдөр гэрэл гэгээнд тулгуурлан зургийг SLT болгох онлайн хэрэгсэл бий.

Алхам 2: Гарын авлагын давхаргын дизайн

Гарын авлагын давхаргыг зохион бүтээх
Гарын авлагын давхаргыг зохион бүтээх
Гарын авлагын давхаргыг зохион бүтээх
Гарын авлагын давхаргыг зохион бүтээх
Гарын авлагын давхаргыг зохион бүтээх
Гарын авлагын давхаргыг зохион бүтээх
Гарын авлагын давхаргыг зохион бүтээх
Гарын авлагын давхаргыг зохион бүтээх

Энд бид төслийн нарийн төвөгтэй байдал, цагийг унших аргыг шийддэг. Зураг дээр миний тоглож байсан 2 санааг харуулав.

Эдгээрийг дизайны дагуу сканнердаж, зурган дээр нь inkscape хэлбэрээр зурах замаар хийсэн болно.

Энэ бол уншихад хялбар цаг биш, гэхдээ би өдрийн турш мөр бөглөх санааг илүүд үзсэн бөгөөд ингэснээр дизайны зорилго болжээ.

Хоёртын тоолох нь LED тоог багасгахад тохиромжтой арга бөгөөд хэрэв хоёртын хэмжээ нь таны саатал бол унших чадварыг сайжруулах болно, гэхдээ энэ нь миний "дүүргэх шугам" гэсэн санааг алдагдуулсан тул энэ төслийн сонголт биш юм.

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

Алхам 3: Гарын авлагын давхаргыг бүтээх

Гарын авлагын давхаргыг бүтээх
Гарын авлагын давхаргыг бүтээх
Гарын авлагын давхаргыг бүтээх
Гарын авлагын давхаргыг бүтээх
Гарын авлагын давхаргыг бүтээх
Гарын авлагын давхаргыг бүтээх

LED -ийн энэхүү гарын авлагын давхарга нь 2 зорилготой бөгөөд LED -ийг байрлуулж, тэдгээрийн хооронд асгарахаас сэргийлдэг

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

Энэ бол миний өчүүхэн Makibox A6 дээр хийх ёстой хамгийн хэцүү хэвлэмэл материалуудын нэг байсан бөгөөд хэсэг нь гэдэс дотор хэвлэгдсэн тул нэг тонн ацетон зутанг бүтцийн тавцан дээр хамгийн бага нугалж бэхлэхэд ашигласан. Аз болоход энэ хэсгийг эцсийн бүтээгдэхүүн дээр хараагүй болно

Төгсгөлийн зураг нь зайны хоорондох эсэхийг шалгахын тулд дэнлүүгээ барьсан болохыг харуулж байна.

Шууд шугамын дагуух гэрлийн хооронд асгарах нь харааны хувьд илүү тохиромжтой байж болох юм, үүнийг уншихад тийм ч хэцүү биш тул үүнийг гэрэл тус бүрийн богино талд гарын авлагад хонгил нэмж оруулснаар олж болно.

Алхам 4: LED -ийг холбох

LED -ийг холбох
LED -ийг холбох
LED -ийг холбох
LED -ийг холбох
LED -ийг холбох
LED -ийг холбох

Эхний нүхний зураг дээр нүхний хэмжээг шалгахын тулд хийсэн туршилтын хэвлэмэл зургийг харуулав, би LED -ийг бага зэрэг хүчээр нэхсэн торонд нягт холбохыг зорьж байсан бөгөөд гарын авлагын давхаргыг тавихдаа зөв хэлбэрийг гараар байрлуулсан болно.

Миний 3D принтерийн хүлцэл багатай тул зарим нь сул байсан бөгөөд зарим нь хэт нягт байхын тулд супер цавуу түрхэх шаардлагатай байсан боловч гагнах үед LED -ийг дарж байрлуулахыг дэмжиж байсан нь үнэн хэрэгтээ илүү сайн тохирсон байв. зөв хэмжээтэй нүхтэй, утастай болсны дараа сугалж авах боломжтой.

Утасны тоог багасгахын тулд LED -ийг 7 -оос 8 -ийн матрицаар гагнасан бөгөөд энэ нь бүх 55 LED -ийг зөвхөн 13 зүүгээр удирдах боломжтой гэсэн үг юм.

Паалантай утсыг ашигласан тул холболт хийхээс өмнө хэсгийг төмрөөр халааж, цагаан тугалга хийх замаар хэсгүүдийг ил гаргах боломжтой байв.

Энэ процесс маш их цаг хугацаа шаардсан тул би ПХБ -ийн дизайн хийхийг зөвлөж байна

Алхам 5: Электроникийн дизайн хийх

Электроникийн дизайн хийх
Электроникийн дизайн хийх
Электроникийн дизайн хийх
Электроникийн дизайн хийх
Электроникийн дизайн хийх
Электроникийн дизайн хийх
Электроникийн дизайн хийх
Электроникийн дизайн хийх

Миний анхны төлөвлөгөө бол Arduino микроконтроллерийг RTC -тэй ашиглах байсан боловч өдрийн гэрлийг автоматаар хэмнэж, WIFI -ийг хянах боломжийг олгодог тул Node MCU D1 самбар дээрх ESP8266 -ийг сонгосон.

Зүүг тоолох тоог багасгахын тулд би MAX7219 (64 LED хүртэл ажиллах боломжтой) ашиглах боломжтой төгс тооны LED -тэй болсон.

Энэхүү IC нь LED 7 сегментийн дэлгэцийг жолоодоход ихэвчлэн ашиглагддаг, гэхдээ энэ нь миний ашиглахтай ижил төстэй ашиглалтын хайрцагтай байсан бөгөөд маш олон тооны LED -ийг бага зэрэг анивчдаг, гэрэлтүүлэх чадвартай байдаг.

Би protoboard -ийг утас холбохоор шийдсэн боловч бүргэд нь утсыг байрлуулах, ойлгоход тусалсан

Би самбарын файлуудаа хавсаргасан боловч энэ нь бүргэдийг анх удаа ашиглаж байсан (одоо болтол хуучирсан хувилбар) тул зөвхөн лавлагаанд зориулагдсан болно.

Алхам 6: Электроникийн утас холбох

Электроникийн утас холбох
Электроникийн утас холбох
Электроникийн утас холбох
Электроникийн утас холбох
Электроникийн утас холбох
Электроникийн утас холбох
Электроникийн утас холбох
Электроникийн утас холбох

Энэ нь Eagle -ийн схемийн дагуу ESP -ийн толгойнуудыг ашиглах, LED матрицыг угсрахад маш их тусалсан давтагдах энгийн алхам байв.

Анод ба катодын LED толгой дээрх 1 -р зүүг мөнгөн үзүүрээр тэмдэглэсэн бөгөөд тэдгээрийг бусад 7 -оос 8 -аас ялгаатай байдлаар ялгаж болно.

Алхам 7: Програмчлал

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

Бидний дэлгэц нь уламжлалт матриц биш тул би HEX дээр MAX IC руу илгээсэн аль битийг асаахыг төсөөлөх аргыг олох хэрэгтэй болсон. Аз болоход би асуудалд орохын тулд хангалттай сайн мэдлэгтэй байсан бөгөөд миний хүссэн загварыг гараар байрлуулсан шалгах хайрцгуудыг бүгдийг нь зааж өгөхөд туслах "Hex шидтэн" хийсэн.

Энэ нь миний цаг, минут, секундын зургаан өнцөгтийг bitwise OR ашиглан нэгтгэн max7219 руу илгээх зургаан өнцөгт командыг үйлдвэрлэх боломжтой бөгөөд үүний дотор би секундын дотор нэмж оруулсан бага зэрэг хөдөлгөөнт дүрсийг оруулсан болно. хөлдөөгүй байсан.

Тиймээс бараг төгсгөлд нь. бас тийм ч хөгшрөөгүй өөр шийдвэр гаргах цаг болжээ.

ESP -ийн код нь LUA -д байдаг тул өнөөдөр би ESP -ийн нийгэмлэг боловсорч гүйцээгүй байгаа энэ үед илүү сайн баримт бичиг, бат бөх багцын номын сан болохын тулд arduino IDE -ийг ашиглахыг зөвлөж байна, би LUA -г энэ төслийн хэл болгон сонгосон.

Би цагийг уншихын тулд google -ийн серверүүдийг тогтмол дарах шийдвэр гаргасан. Дрифтийг багасгахын тулд RTC хэрэгтэй болно, энэ нь ажилладаг, гэхдээ та жинхэнэ цагийн API ашиглах нь дээр.

halfSec = 0цаг = 0 минут = 0 секунд = 0

бага нягтрал = 0

Өндөр нягтрал = 9

орон нутгийн SSID = "Wifi"

орон нутгийн SSID_PASSWORD = "Нууц үг"

function time () -одоогийн цаг, огноог авахын тулд интернетэд холбогдоно уу

хэрэв wifi.sta.getip () бол орон нутгийн холболт = net.createConnection (net. TCP, 0) холболт: холбох (80, "google.com")

холболт: асаалттай ("холболт", function (conn, payload) conn: send ("HEAD/HTTP/1.1 / r / n".. "Host: time.is / r / n".. "Зөвшөөрөх: */ *\ 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 ~ бол цагийн бүсийг өөрчлөх. = тэг тэгээд-цаг, минут, секунд, өдөр, сарын цагтай уялдсан тоонуудыг гаргаж ав = тонумбер (string.sub (ачаалал, p-9, p-8)) минут = тонн (string.sub (ачаалал, p- 6, p-5)) секунд = тонн = (хоёр дахь%6)*2 -хэвлэх (halfSec) өөр хэвлэх ("вэб шинэчлэлт амжилтгүй боллоо!") төгсгөл төгсгөл -функц) -"хүлээн авах" үйл явдал зохицуулагчийн төгсгөл

холболт: асаах ("салгах", функц (холболт, ачаалал) conn = nil ачаа = тэг төгсгөл) төгсгөлийн хэвлэх ("wifi хараахан байхгүй байна") төгсгөл

borTable функц (a, b,…) -эсрэгээр эсвэл хүснэгтүүдийг хамтад нь

хэрэв arg [1] бол b = borTable (b, задлах (arg)) төгсгөлийн орон нутгийн z = {} i, v -д ipairs (a) хийх table.insert (z, bit.bor (v, b )) төгсгөл буцах z төгсгөл

bxorTable функц (a, b,…) -урвуугаар эсвэл хүснэгтүүдийг хамтад нь

хэрэв arg [1] бол b = bxorTable (b, задлах (arg)) төгсгөлийн орон нутгийн z = {} i, v in ipairs (a) -д table.insert (z, bit.bxor (v, b )) төгсгөл буцах z төгсгөл

addSecond () функц

секунд = секунд+1 бол секунд> = 60 дараа нь секунд = 0 минут = минут+1 бол минут> = 60 бол минут = 0 addHour () төгсгөлийн төгсгөл

addHour функц ()

цаг = цаг+1 бол цаг> = 24 дараа нь цаг = 0 бол цаг == 2 эсвэл цаг == 16 бол max7219.setIntensity (нам Бага нягтрал) хэрэв цаг == 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, 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, 0x02, 0x00, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x12, 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}}; орон нутгийн 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, 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, 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-ээс эхэлдэг, тиймээс одоогийн байдлаар секундын хувьд [0] = тэг)

max7219. бичих ({animate (borTable (sec [1+ (second/secGap)], min [1+ (minutes/minGap)], hor [1+ (hour/horGap)]))})

төгсгөл -функц

wifi.setmode (wifi. STATION)

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

-max7219-ийг тохируулна уу

max7219 = шаардах ("max7219") max7219. тохиргоо ({numberOfModules = 1, slaveSelectPin = 8, эрчим = өндөрIntensity})

-Гол хөтөлбөр

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 if halfSec = 0 end --print (halfSec) bxorTable (frames [halfSec+1], still) end

Алхам 8: Орон сууц

Орон сууц
Орон сууц
Орон сууц
Орон сууц
Орон сууц
Орон сууц

Гайхамшигтай ур чадвараа гайхуулж, төслийг зохион байгуулах цаг боллоо.

Эсвэл Amazon -ийн багцыг дахин боловсруулалтаас аваад өнөөг хүртэл ашиглаж байгаа түр орон сууцыг хий.

Энэхүү аргыг ашиглахын давуу тал нь төслийн давхарга бүр нь картон зузаантай бараг төгс нийцдэг байсан тул сэндвичийг овоолж, наалдуулах боломжтой байв. Үүнтэй төстэй дээд зэрэглэлийн хувилбар нь нийлэгийг ашиглаж болно

Алхам 9: Хаалтын үг

Уншсанд баярлалаа, Та нарын ихэнх нь төслийг баримтжуулах нь түүнийг хэрэгжүүлэхтэй адил хэцүү байж болохыг мэддэг. надтай ярилцаж буй видео хэсгүүд байдаг бөгөөд энэ нь эцэстээ өдрийн гэрлийг харах болно.

Энэхүү төслийг боловсруулж, бичиж дуусгах хооронд хэдэн жилийн турш 3D хэвлэх ашиглан дур зоргоороо LED дэлгэцийн олон жишээг харах болно гэж найдаж байсан боловч RGB туузыг багасгаснаар өөр хувилбар ашиглах шаардлагагүй болсон.

Энэ нь мэдээлэл сайтай байсан гэж найдаж байна. Би бүрэн хангаагүй хэсгүүдийн талаар илүү дэлгэрэнгүй мэдээлэл өгөхийг хичээх тул асуулт асуугаарай.

Баяртай

Зөвлөмж болгож буй: