Mündəricat:

London Yeraltı Xəritə Saatı: 9 addım (şəkillərlə)
London Yeraltı Xəritə Saatı: 9 addım (şəkillərlə)

Video: London Yeraltı Xəritə Saatı: 9 addım (şəkillərlə)

Video: London Yeraltı Xəritə Saatı: 9 addım (şəkillərlə)
Video: Milyonları niyə tərk etdilər? ~ Tərk edilmiş 16-cı əsr Qəhrəmanlıq qalası! 2024, Noyabr
Anonim
London Yeraltı Xəritə Saatı
London Yeraltı Xəritə Saatı
London Yeraltı Xəritə Saatı
London Yeraltı Xəritə Saatı

2014 -cü ildə, Londondakı 3D çap məsləhətxanasında təcrübə keçdikdən və Stratasys maşınlarından istifadə edərək rəngli litofanlarla təcrübə keçirdikdən sonra, ofislərimdə yerli boru xətlərinin rəngli 3D çapını təqdim etdim. Ondan bir şey etmək qərarına gəldim. Qısa 2 il sonra 2016 -cı ildə öz 3D printerim var idi və onu saata çevirmək üçün işə başladım.

Uşaq ikən Tokio Flash rəqəmsal saatları indiyə qədərki ən böyük şeylər idi və bu dizaynın ilham mənbəyi olardı.

Və bunu yazmağa başlayana qədər 4 illik kiçik bir fasilə oldu!

Dəqiq təlimatları təkrarlamaq çətin olsa da və son bir neçə ildə həvəskar PCB istehsalında maya dəyərinin azalması LED yerləşdirmə üçün dəqiq metodumu köhnəltmiş ola bilər. Ümid edirəm ki, paylaşılan fikirlər başqalarının nazik əşyalardan qəribə saatlar yaratmasına səbəb ola bilər!

Addım 1: Ön qat

Ön qat
Ön qat
Ön qat
Ön qat
Ön qat
Ön qat

Girişdə qeyd edildiyi kimi, bu rəngli bir 3D çap idi, inanıram ki, bağlayıcı və piqment üçün toz yatağı və dəyişdirilmiş mürəkkəb kartuşu istifadə edən Stratasys maşını.

Fayl tarixə düşdü, amma bu qat hər şey ola bilər, bir fotoşəkil və ya tək rəngli litofan möcüzələr yaradar.

Bu hissə 2014 -cü ildə 3DS max -da hazırlanmışdır, lakin bu gün görüntünü parlaqlığa əsaslanaraq SLT -ə çevirmək üçün onlayn vasitələr mövcuddur.

Addım 2: Bələdçi Layerinin Dizaynı

Bələdçi qatının dizaynı
Bələdçi qatının dizaynı
Bələdçi qatının dizaynı
Bələdçi qatının dizaynı
Bələdçi qatının dizaynı
Bələdçi qatının dizaynı
Bələdçi qatının dizaynı
Bələdçi qatının dizaynı

Layihənin mürəkkəbliyinə və vaxtı oxumaq üsuluna burada qərar veririk. Şəkillər oynadığım 2 fikri göstərir.

Bunlar dizaynda tarama və inkscape üzərindən xətlər çəkməklə edildi.

Bu çox oxunaqlı bir saat deyil, amma gün ərzində xətlərin doldurulması fikrinə üstünlük verdim ki, bu da dizayn məqsədinə çevrildi.

İkili sayma, LED sayını azaltmaq üçün əlverişli bir üsuldur və ikili sizin tıxacınızdırsa, oxunuşu yaxşılaşdıracaq, ancaq bu "doldurma xətləri" fikrimi pozdu, bu layihə üçün bir seçim deyildi

LED sayını minimuma endirmək Tokio Flaş Saatlərində adi haldır, ancaq 3 və ya 5 saniyədə bir bölmə və sonra hər bir bölmə doldurulduqda başqa bir doldurma var, bunları 60 -dan 20 artı 2 -yə endirmək üçün dəqiqə ərzində bu texnikadan istifadə etdim. dəqiqələr üçün bu qədər narahat olmadı.

Addım 3: Bələdçi Layerinin qurulması

Bələdçi Layerinin qurulması
Bələdçi Layerinin qurulması
Bələdçi qatının qurulması
Bələdçi qatının qurulması
Bələdçi Layerinin qurulması
Bələdçi Layerinin qurulması

LED -lər üçün bu bələdçi təbəqənin 2 məqsədi var, LED -ləri yerində saxlayır və aralarında dağılmaların qarşısını alır

Dizayn düzeni üçün istifadə etdiyim taramanın üstündəki Inkscape -də bir təbəqə kimi çəkilmişdir. Çapıma göndərməzdən əvvəl blenderə 1 mm qalınlıq əlavə edildi.

Kiçik Makibox A6 -da etməli olduğum ən çətin izlərdən biri idi, hissə abs -da çap olundu, buna görə də minimal əyilmə ilə quruluş platformasına yapışmasını təmin etmək üçün bir ton aseton çamuru istifadə edildi. Xoşbəxtlikdən bu hissə son məhsulda görünmür

Yekun görüntü, aralığın yoxlanılması üçün lampaya qədər dayandığını göstərir.

Bir baxışda, işıqlar arasında bir xətt boyunca tökülmə, görmə qabiliyyətinə görə daha çox üstünlük verilə bilər, oxunması çətin deyil, buna hər işığın qısa tərəflərindəki bələdçiyə yiv əlavə etməklə nail olmaq olar.

Addım 4: LED -lərin naqillərə çəkilməsi

LED -lərin çəkilməsi
LED -lərin çəkilməsi
LED -lərin çəkilməsi
LED -lərin çəkilməsi
LED -lərin çəkilməsi
LED -lərin çəkilməsi

İlk şəkil, çuxurun ölçüsünü yoxlamaq üçün hazırladığım test çapını göstərir, LED -in bir az qüvvə ilə krujevaya möhkəm oturmasını məqsəd qoymuşdum, sonra bələdçi təbəqəsi qoyularkən düzgün forma əllə yerləşdirilmişdi.

3D printerimin aşağı dözümlülüyü səbəbindən bəziləri boş idi və bir yerdə qalmaq üçün super yapışqan lazım idi, digərləri isə çox sıx idi, ancaq lehimləmə zamanı LED -ə basılaraq yerinə təşviq edildi, bu əslində daha yaxşı uyğun gəlirdi. düzgün ölçülü çuxur, içəriyə bir dəfə çəkildikdə çıxarmaq üçün kirayəsi olan.

Tel sayını azaltmaq üçün LEDlər 7 -dən 8 -ə qədər bir matrisdə lehimləndi, yəni 55 LED -in hamısı yalnız 13 sancaqla idarə oluna bilərdi, bu əlaqələrin hər birinin təəssüf ki itirilmiş bir əllə çəkilmiş xəritəm var idi.

Emaye teldən istifadə edildi, belə ki, əlaqəni qurmazdan əvvəl bir hissəni dəmir ilə qızdırmaq və qalaylamaq olar.

Bu proses çox vaxt aparırdı, bir PCB dizayn etməyi çox tövsiyə edərdim

Addım 5: Elektronikanın dizaynı

Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı
Elektronikanın dizaynı

İlkin planım, RTC ilə bir Arduino mikro nəzarətçisindən istifadə etmək idi, ancaq avtomatik gün işığına qənaət etməyə və WIFI üzərində nəzarət potensialına malik olduğu üçün Node MCU D1 lövhəsində bir ESP8266 seçdi.

Pin sayını daha da azaltmaq üçün MAX7219 (64 LED -ə qədər idarə edə bilən) istifadə etmək üçün mükəmməl sayda LED -ə malik oldum.

Bu IC ümumiyyətlə LED 7 Segment ekranlarını idarə etmək üçün istifadə olunur, lakin çox az sayda titrəyişlə çox sayda LED işıqlandıran, hətta mənimki ilə oxşar bir istifadə vəziyyətinə malik idi, hətta nəzarət edilə bilən parlaqlığa malikdir.

Kablolama üçün protoboard istifadə etmək qərarına gəldim, ancaq qartal hissələrin yerləşdirilməsi və naqilləri başa düşmək üçün faydalı oldu

Lövhə sənədlərimi əlavə etdim, ancaq ilk dəfə qartaldan istifadə etdim (və bu günə qədər köhnəlmiş bir versiyadır), buna görə də onlar yalnız istinad üçündür

Addım 6: Elektronikanı naqilləşdirin

Elektronikanın naqilləri
Elektronikanın naqilləri
Elektronikanın naqilləri
Elektronikanın naqilləri
Elektronikanın naqilləri
Elektronikanın naqilləri
Elektronikanın naqilləri
Elektronikanın naqilləri

Eagle sxemini izləyən, ESP üçün başlıqlardan istifadə edən və LED matrisinin montajda çox kömək etdiyi təkrarlanan sadə bir addım idi.

Anod və Katod LED başlıqlarında 1 -ci pin gümüş bir kəsici ilə işarələndi, 7 -də digər 8 -də olduğu kimi fərqləndirilə bilər.

Addım 7: Proqramlaşdırma

Proqramlaşdırma
Proqramlaşdırma

Ekranınız ənənəvi bir matris olmadığından, HEX -də MAX IC -ə göndərdiyi bitləri açmaq üçün görüntüləmək üçün bir üsul tapmalı oldum. Xoşbəxtlikdən, problemə girmək üçün kifayət qədər excel bilirəm və nümayiş etdirmək istədiyim naxış, əllə yerləşdirilmiş onay qutuları hamısına baxmayaraq mənə rəhbərlik etmək üçün 'Hex sehrbazı' hazırladım.

Bu, saniyələrə əlavə etdiyim kiçik bir animasiya da daxil olmaqla, max7219 -a göndərmək üçün son hex əmrini istehsal etmək üçün saat, dəqiqə və saniyələrdəki hex -in bitsel OR -dan istifadə edərək birləşdirilə biləcəyi yenidən qiymətləndirmə ilə gəldi. donmadı.

Deməli, demək olar ki, sonda. və çox yaxşı yaşlanmayan başqa bir qərarın vaxtıdır.

ESP kodu LUA -dadır, bu gün daha yaxşı sənədləşmə və möhkəm paket kitabxanası üçün arduino IDE -dən istifadə etməyi məsləhət görürəm, ESP icması hələ yetişəndə və bu layihə üçün LUA dilini seçdim.

Saatı oxumaq üçün google serverlərini mütəmadi olaraq ping etmək barədə şübhəli qərar verdim. Bu, sürüşməni minimuma endirmək üçün bir RTC -yə ehtiyac duydu, bu işləyir, amma əsl zaman API istifadə etmək daha yaxşıdır.

yarımSec = 0saat = 0 dəqiqə = 0 saniyə = 0

aşağı sıxlıq = 0

yüksək sıxlıq = 9

yerli SSID = "Wifi"

yerli SSID_PASSWORD = "Şifrə"

function time () -cari vaxtı və tarixi əldə etmək üçün internetə qoşulun

əgər wifi.sta.getip () sonra yerli conn = net.createConnection (net. TCP, 0) conn: connect (80, "google.com")

conn: on ("əlaqə", function (conn, payload) conn: send ("HEAD/HTTP/1.1 / r / n".. "Host: time.is / r / n".. "Qəbul edin: */ *\ r / n".. " İstifadəçi Agent: Mozilla/4.0 (uyğun; esp8266 Lua;) ".." / r / n / r / n ") son)

conn: on ("qəbul et", function (conn, payload) --print (payload) conn: close () local p = string.find (payload, "GMT") -internetdən gələn yükdə vaxt və tarix simini tapın, əgər p ~ = sıfırdan sonra-saata, dəqiqəyə, saniyəyə, günə, aya uyğun gələn ədədləri çıxarın = tonumber (string.sub (payload, p-9, p-8)) minutes = tonumber (string.sub (payload, p- 6; = (ikinci%6)*2 -çap (halfSec) başqa çap ("web yeniləməsi uğursuz oldu!") sonu sonu -funksiya) -"qəbul et" hadisə işleyicisinin sonu

conn: on ("ayrılma", funksiya (bağlantı, yük) conn = sıfır yük = sıfır son) son çap ("hələ wifi yoxdur") son

borTable (a, b,…) funksiyası -əksinə və ya birlikdə cədvəllər

əgər arg [1] onda b = borTable (b, aç (arg)) sonu yerli z = {} i, v üçün ipairs (a) do table.insert (z, bit.bor (v, b )) son qaytarma z son

bxorTable (a, b, …) funksiyası -əksinə və ya birlikdə cədvəllər

əgər arg [1] onda b = bxorTable (b, aç (arg)) sonu yerli z = {} i, v üçün ipairs (a) da table.insert (z, bit.bxor (v, b )) son qaytarma z son

addSecond () funksiyası

saniyə = saniyə+1 saniyə> = 60 sonra saniyə = 0 dəqiqə = dəqiqə+1 əgər dəqiqə> = 60 sonra dəqiqə = 0 addHour () bitiş sonu

addHour funksiyası ()

saat = saat+1 olarsa saat = = 24 sonra saat = 0 bitərsə saat == 2 və ya saat == 16 sonra max7219.setIntensity (lowIntensity) saat == 8 və ya saat == 18 olarsa max7219.setIntensity (highIntensity) end end funksiyası yeniləməsi () 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, 0x01, 0x01, 0x03, 0x01, 0x03}}; yerli 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, 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}}; yerli 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, 0x04, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x0C, 0x08}, {0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C 0, 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}}; -çap (saat, dəqiqə, saniyə)

-cədvəl 0-da başlayır, buna görə də hazırda 1 saniyədə [0] = sıfır)

max7219. yazmaq ({canlandırmaq (borTable (san [1+ (saniyə/saniyəGap)], dəq [1+ (dəqiqə/dəqiqəGap)], hor [1+ (saat/horGap)]))})

son -funksiya

wifi.setmode (wifi. STATION)

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

-max7219 konfiqurasiya edin

max7219 = tələb ("max7219") max7219. qurma ({numberOfModules = 1, slaveSelectPin = 8, intensivlik = yüksək intensivlik})

--Ana Proqram

checkOnline = tmr.create ()

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

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

tmr.alarm (2, 500, 1, yeniləmə)

animasiya funksiyası (hələ də)

yerli çərçivələr = {{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 əgər halfSec> = 12 olarsa halfSec = 0 end --print (halfSec) bxorTable (çərçivələr [halfSec+1], hələ) bitər

Addım 8: Mənzil

Mənzil
Mənzil
Mənzil
Mənzil
Mənzil
Mənzil

İnanılmaz sənətkarlığınızı nümayiş etdirmək və layihəni evləndirməyin vaxtıdır.

Ya bu, ya da geri çevrilmədən bir Amazon paketi götür və bu gün də istifadədə olan müvəqqəti bir mənzil tik.

Bu yanaşmanın faydası, layihənin hər bir təbəqəsinin kartonun qalınlığına demək olar ki, mükəmməl uyğun gəlməsi idi, buna görə də bir sandviç yığılıb bantlana bilərdi. Bənzər bir mükafat versiyası akril istifadə edə bilər

Addım 9: yekun qeydlər

Oxuduğunuz üçün təşəkkür edirəm, Bir çoxlarınızın bildiyi kimi bir layihəni sənədləşdirmək onu hazırlamaq qədər çətin ola bilər. mənimlə söhbət edən video parçaları var ki, nəticədə gün işığını görə bilər.

Bu layihənin hazırlanması ilə yazılması arasındakı illər ərzində 3D çapdan istifadə edərək özbaşına LED ekranlarının daha çox nümunəsini görəcəyimi gözləyirdim, lakin RGB şeritlərinin azalması əsasən alternativə olan ehtiyacı aradan qaldırdı.

Ümid edirəm ki, bu məlumatlı idi və zəhmət olmasa suallar verin, çünki tam təmin etməyən bölmələr haqqında daha ətraflı məlumat verməyə çalışacağam.

Sağol

Tövsiyə: