Isi kandungan:
- Langkah 1: Lapisan Depan
- Langkah 2: Merancang Lapisan Panduan
- Langkah 3: Membina Lapisan Panduan
- Langkah 4: Pendawaian LED
- Langkah 5: Merancang Elektronik
- Langkah 6: Pendawaian Elektronik
- Langkah 7: Pengaturcaraan
- Langkah 8: Perumahan
- Langkah 9: Ucapan Penutup
Video: Jam Peta Bawah Tanah London: 9 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:06
Pada tahun 2014, semasa menjalani latihan magang di perundingan percetakan 3D di London dan percubaan dengan lithophanes warna menggunakan mesin Stratasys mereka, saya merancang sendiri masa sekarang, cetakan 3D warna tiub tempatan di pejabat mereka. Saya bertekad untuk membuat sesuatu daripadanya. 2 tahun kemudian pada tahun 2016 saya mempunyai pencetak 3D saya sendiri, dan mula berfungsi menjadikannya seperti jam.
Sebagai seorang kanak-kanak, saya walaupun jam tangan digital Tokyo Flash adalah perkara paling hebat yang pernah ada, dan menjadi titik inspirasi untuk reka bentuk.
Dan sekarang ini adalah rehat kecil selama 4 tahun hingga saya berjaya menulisnya!
Walaupun arahan yang tepat akan sukar ditiru, dan pengurangan kos pembuatan PCB hobi dalam beberapa tahun terakhir mungkin menjadikan kaedah tepat saya untuk penempatan LED menjadi usang. Saya harap idea yang dikongsi dapat mendorong orang lain membuat jam pelik dari objek nipis!
Langkah 1: Lapisan Depan
Seperti yang disebutkan di intro, ini adalah cetakan 3D warna, saya percaya mesin Stratasys yang menggunakan bedak bedak dan kartrij dakwat yang diubah suai untuk pengikat dan pigmen.
Fail hilang dari sejarah, tetapi lapisan ini boleh menjadi apa-apa, foto atau litofan warna tunggal akan membuat keajaiban.
Bahagian ini dibuat dalam 3DS max pada tahun 2014, tetapi hari ini ada alat dalam talian untuk mengubah gambar menjadi SLT berdasarkan kecerahan
Langkah 2: Merancang Lapisan Panduan
Di sinilah kita memutuskan kerumitan projek dan kaedah untuk membaca masa. Gambar menunjukkan 2 idea yang saya mainkan.
Ini dibuat dengan mengimbas pada reka bentuk dan melukis garis melintangnya dalam inkscape.
Ini bukan jam yang sangat mudah dibaca, tetapi saya lebih suka idea mengisi garis sepanjang hari sehingga menjadi matlamat reka bentuk.
Pengiraan binari adalah kaedah yang sesuai untuk mengurangkan kiraan LED, dan ini akan meningkatkan kebolehbacaan sekiranya binari adalah kesesakan anda, tetapi itu melemahkan idea 'mengisi garis' saya, jadi bukan pilihan untuk projek ini
Sudah biasa di Tokyo Flash Watches untuk meminimumkan jumlah LED tetapi mempunyai satu bahagian yang dikira dalam 3 atau 5 dan kemudian mengisi lagi untuk setiap kali bahagian itu mengisi, saya menggunakan teknik ini selama beberapa minit, untuk mengurangkannya dari 60 hingga 20 tambah 2. Saya tidak begitu risau tentang ketepatan ini selama beberapa saat.
Langkah 3: Membina Lapisan Panduan
Lapisan panduan ini untuk LED mempunyai 2 tujuan, ia meletakkan LED di tempatnya, dan ia mencegah tumpahan di antara mereka
Ia dilukis sebagai lapisan di Inkscape tepat di atas imbasan yang saya gunakan untuk reka bentuk reka bentuk. Ketebalan 1mm ditambahkan dalam pengisar sebelum dihantar ke pencetak saya.
Ini adalah salah satu cetakan paling sukar yang harus saya buat pada Makibox A6 saya yang sedikit, bahagiannya dicetak dalam abs sehingga satu ton bubur aseton digunakan untuk melekatkannya pada platform binaan dengan sedikit melengkung. Nasib baik bahagian ini tidak kelihatan pada produk akhir
Gambar terakhir menunjukkan bahawa ia dipegang pada lampu untuk memeriksa jarak.
Pada pandangan belakang, tumpahan antara lampu di sepanjang garis mungkin lebih disukai untuk visual, tidak sukar dibaca, ini dapat dicapai dengan menambahkan bilah ke panduan pada sisi pendek setiap cahaya
Langkah 4: Pendawaian LED
Gambar kepalan menunjukkan cetakan ujian yang saya buat untuk memeriksa ukuran lubang, saya bertujuan agar LED sesuai dengan renda dengan sedikit kekuatan, bentuk yang betul kemudian diletakkan dengan tangan ketika meletakkan lapisan panduan.
Oleh kerana toleransi pencetak 3D saya yang rendah, ada yang longgar dan memerlukan superglue sedikit untuk tetap berada di tempatnya sementara yang lain terlalu ketat, tetapi didorong ke tempatnya dengan menekan LED semasa menyolder, ini sebenarnya lebih sesuai daripada lubang berlubang yang betul, yang mempunyai sewa untuk ditarik keluar setelah disambungkan.
Untuk mengurangkan bilangan wayar, LED disolder dalam matriks 7 hingga 8, yang bermaksud semua 55 LED dapat dikendalikan dengan hanya 13 pin, saya mempunyai peta yang dilukis dengan tangan untuk setiap sambungan ini yang sayangnya telah hilang.
Kawat enamel digunakan sehingga bahagian dapat terkena di tempatnya dengan memanaskan bahagian dengan besi dan timah sebelum membuat sambungan.
Proses ini sangat memakan masa, saya sangat mengesyorkan merancang PCB
Langkah 5: Merancang Elektronik
Rancangan awal saya adalah menggunakan mikrokontroler Arduino dengan RTC, tetapi memilih ESP8266 pada papan Node MCU D1 kerana ia membolehkan penjimatan siang hari automatik dan potensi untuk mengawal WIFI.
Untuk mengurangkan bilangan pin lebih jauh, saya mempunyai jumlah LED yang sempurna untuk dapat menggunakan MAX7219 (yang dapat menangani hingga 64 LED).
IC ini biasanya digunakan untuk menggerakkan paparan Segmen LED 7, tetapi memiliki kasus penggunaan yang sangat mirip dengan saya, menyalakan sebilangan LED yang sewenang-wenang dengan kerlipan minimum, bahkan memiliki kecerahan yang dapat dikendalikan.
Saya memutuskan untuk menggunakan protoboard untuk pendawaian, tetapi helang sangat membantu untuk penempatan bahagian dan memahami pendawaian
Saya telah melampirkan fail papan saya, tetapi ini adalah kali pertama saya menggunakan helang (dan versi yang sudah lapuk sekarang) jadi mereka hanya untuk rujukan
Langkah 6: Pendawaian Elektronik
Ini adalah langkah mudah berulang, mengikuti skema Eagle, menggunakan header untuk ESP dan matriks LED sangat membantu dalam pemasangan.
Pin 1 pada tajuk LED Anode & Cathode ditandai dengan perak tajam, mereka dapat dibezakan antara seperti pada 7 yang lain 8.
Langkah 7: Pengaturcaraan
Oleh kerana paparan kami bukan matriks tradisional, saya harus mencari kaedah untuk memvisualisasikan bit mana yang akan dihidupkan ke IC MAX dalam HEX. Nasib baik saya tahu cukup cemerlang untuk menghadapi masalah dan membuat 'Hex wizard' untuk membimbing saya walaupun corak yang saya mahukan dipaparkan, kotak centang yang diletakkan di tangan dengan semua.
Ini datang dengan penilaian semula bahawa heks untuk jam, minit dan saat saya dapat digabungkan menggunakan sedikit demi sedikit ATAU untuk menghasilkan perintah hex akhir untuk dihantar ke max7219, termasuk sedikit animasi yang saya tambahkan pada detik sehingga saya dapat memastikan papan belum beku.
Jadi, hampir berakhir. dan masa untuk keputusan lain yang belum terlalu tua.
Kod untuk ESP ada di LUA, Hari ini saya akan mengesyorkan menggunakan arduino IDE untuk dokumentasi yang lebih baik dan pustaka pakej yang lebih baik, pada masa komuniti ESP masih matang dan saya memilih LUA sebagai bahasa untuk projek ini.
Saya membuat keputusan yang dipersoalkan untuk melakukan ping pelayan google secara berkala untuk membaca masa. Ini memerlukan RTC untuk meminimumkan drift, ini berfungsi, tetapi anda harus lebih baik menggunakan API masa sebenar.
halfSec = 0jam = 0 minit = 0 saat = 0
lowIntensity = 0
tinggiIntensiti = 9
SSID tempatan = "Wifi"
SSID_PASSWORD tempatan = "Kata Laluan"
masa fungsi () --hubungkan ke internet untuk mendapatkan masa dan tarikh terkini
jika wifi.sta.getip () maka lokal lokal = net.createConnection (net. TCP, 0) conn: connect (80, "google.com")
samb: on ("sambungan", fungsi (conn, payload) conn: send ("HEAD / HTTP / 1.1 / r / n".. "Host: time.is / r / n".. "Terima: * / * / r / n".. " Ejen Pengguna: Mozilla / 4.0 (serasi; esp8266 Lua;) ".." / r / n / r / n ") akhir)
samb: on ("terima", fungsi (conn, payload) --print (payload) conn: close () local p = string.find (payload, "GMT") - cari rentetan waktu dan tarikh dalam muatan dari internet, ubah untuk zon waktu jika p ~ = nih kemudian - ekstrak nombor yang berkaitan dengan jam, minit, kedua, hari, bulan bulan = jumlah (string.sub (muatan, p-9, p-8)) minit = jumlah (string.sub (muatan, p- 6, p-5)) kedua = jumlah (string.sub (muatan, p-3, p-2)) addHour () - BST berkod keras (waktu musim panas Britain) menjimatkan cetakan (jam, minit, kedua) setengahSec = (% kedua 6) * 2 - cetak (halfSec) cetakan lain ("kemas kini web gagal!") akhir akhir --fungsi) - akhir pengendali acara "terima"
samb: pada ("pemutusan", fungsi (conn, payload) conn = nih payload = nil end) cetakan akhir ("belum ada wifi") akhir
fungsi borTable (a, b,…) - dua arah ATAU jadual bersama
jika arg [1] maka b = borTable (b, unpack (arg)) akhiri local z = {} untuk i, v di ipairs (a) lakukan table.insert (z, bit.bor (v, b )) akhir kembali z akhir
fungsi bxorTable (a, b,…) - dua arah ATAU jadual bersama
jika arg [1] maka b = bxorTable (b, unpack (arg)) akhiri local z = {} untuk i, v di ipairs (a) lakukan table.insert (z, bit.bxor (v, b )) akhir kembali z akhir
fungsi addSecond ()
kedua = kedua + 1 jika kedua> = 60 kemudian kedua = 0 minit = minit + 1 jika minit> = 60 kemudian minit = 0 tambahHour () akhir akhir akhir
fungsi addHour ()
jam = jam + 1 jika jam> = 24 kemudian jam = 0 berakhir jika jam == 2 atau jam == 16 maka max7219.setIntensity (lowIntensity) berakhir jika jam == 8 atau jam == 18 maka max7219.setIntensity (highIntensity) kemas kini fungsi hujung akhir () secGap tempatan = 6 minGap tempatan = 3 horGap tempatan = 1 saat tempatan = {{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, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x03}, {0x03},, 0x00, 0x00, 0x01, 0x01, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03}, {0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01 }, {0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03}}; min tempatan = {{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, 0x00, 0, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x0, 0x00, 0x0, 0x00, 0x, 0x02, 0x02, 0x02, 0x02, 0x00, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x10, 0x02, 0x02, 0x02, 0x02, 0x10 }, {0x02, 0x02, 0x02, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 0x12, 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}}; hor tempatan = {{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, 0x00}, {0x00, 0x00, 000, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x0, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x0 0, 0x }, {0x04, 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x0, 0x0, 0x0, 0x0, 0x0C, 0x08}, {0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x0C, 0x0C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x4, 0x4, 0x4, 0x4, 0x4, 0x, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}}; - cap (jam, minit, saat)
- jadual bermula pada 0, jadi pada 1 seperti saat ini [0] = nihil)
max7219.write ({animate (borTable (sec [1+ (second / secGap)], min [1+ (minute / minGap)], hor [1+ (hour / horGap)])))})
akhir --fungsi
wifi.setmode (wifi. STATION)
wifi.sta.config (SSID, SSID_PASSWORD) wifi.sta.autoconnect (1)
--konfigurasi max7219
max7219 = memerlukan ("max7219") max7219.setup ({numberOfModules = 1, slaveSelectPin = 8, intensiti = tinggiIntensiti})
--Program Utama
checkOnline = tmr.create ()
tmr.alarm (0, 180000, 1, masa)
tmr.alarm (1, 1000, 1, tambahSecond)
tmr.alarm (2, 500, 1, kemas kini)
fungsi bernyawa (pegun)
bingkai tempatan = {{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 maka halfSec = 0 end --print (halfSec) return bxorTable (frame [halfSec + 1], still) akhir
Langkah 8: Perumahan
Sekarang adalah masa anda untuk mempamerkan ketukangan yang luar biasa dan membina projek ini.
Entah itu atau ambil pakej amazon dari kitar semula dan buat perumahan sementara yang masih digunakan hingga kini.
Manfaat menggunakan pendekatan ini adalah bahawa setiap lapisan projek hampir sama dengan ketebalan kadbod, sehingga sandwic dapat ditumpuk dan ditempelkan bersama. Versi premium yang serupa boleh menggunakan akrilik
Langkah 9: Ucapan Penutup
Terima kasih kerana membaca, Sebanyak daripada anda tahu mendokumentasikan projek boleh menjadi sukar seperti membuatnya. terdapat sekeping video dengan saya bercakap yang akhirnya dapat melihat cahaya hari.
Selama bertahun-tahun antara membuat projek ini dan menulisnya, saya menjangkakan akan melihat lebih banyak contoh paparan LED sewenang-wenang menggunakan percetakan 3D, tetapi pengurangan jalur RGB kebanyakannya menghilangkan keperluan untuk alternatif.
Saya harap ini memberi maklumat, dan ajukan soalan kerana saya akan cuba memberikan lebih banyak perincian mengenai bahagian yang tidak memuaskan sepenuhnya.
Sorakan
Disyorkan:
Buat Buku Peta Menggunakan Peta Google: 17 Langkah (dengan Gambar)
Buat Buku Peta Menggunakan Peta Google: Pada suatu hari saya mencari di kedai buku untuk Panduan Jalan untuk DuPage County, IL kerana teman wanita saya tinggal di sana dan memerlukan peta jalan yang terperinci. Malangnya, satu-satunya yang mereka ada dekat dengan Cook County (seperti ini
Jam Persaraan / Jam Naik / Jam Dn: 4 Langkah (dengan Gambar)
Jam Persaraan / Jam Naik / Jam Dn: Saya mempunyai beberapa paparan dot-matriks 8x8 LED di dalam laci dan memikirkan apa yang harus dilakukan dengan mereka. Diilhamkan oleh instruksional lain, saya mendapat idea untuk membuat paparan hitung mundur / naik untuk dikira ke tarikh / masa yang akan datang dan jika waktu sasaran
Meretas Butang Pintu Jalur Jubli Bawah Tanah London: 12 Langkah (dengan Gambar)
Meretas Butang Pintu Jalur Jubli Bawah Tanah London: Kedai Muzium Pengangkutan London menjual butang pintu dinyahaktifkan dari Jubilee Line (kedua-dua kiri dan kanan tersedia). Sekiranya anda berfikir untuk melaksanakan projek yang memerlukan butang dan beberapa jenis lampu penunjuk, anda akan
Penjejak Titik Bawah Tanah dan Naga Dengan Paparan E-Ink: 3 Langkah
Penjejak Titik Bawah Tanah dan Naga Dengan Paparan E-Ink: Saya ingin membuat pelacak titik hit yang memaparkan semua titik hit pemain dalam skala normal, jadi anda dapat melihat dengan tepat siapa yang paling banyak memerlukan penyembuhan dan betapa buruknya keseluruhan parti melakukan. Ia menghubungkan melalui Bluetooth ke telefon Android yang
Penggera Banjir Bawah Tanah Kuasa Sangat Rendah Dengan ESP8266: 3 Langkah
Penggera Banjir Bawah Tanah Kuasa Sangat Rendah Dengan ESP8266: Halo, selamat datang ke arahan pertama saya. Ruang bawah tanah rumah saya dibanjiri setiap beberapa tahun kerana pelbagai sebab seperti ribut petir musim panas yang lebat, air bawah tanah yang tinggi atau paip yang pecah. Walaupun ia bukan tempat yang bagus, tetapi pemanasan pusat saya