Ini adalah layar split-flap berbasis ESP32 DIY, dioptimalkan untuk kemudahan perakitan di rumah dalam jumlah kecil namun dapat ditingkatkan ke layar besar dan terjangkau.
Artefak terbaru yang dibuat secara otomatis (belum teruji!).
Petunjuk: panduan perakitan v2
Dimensi modul:
Artefak terbaru yang dibuat secara otomatis (belum teruji!).
Catatan
Untuk tampilan kecil (hingga 3 modul), Anda dapat melewati papan pengontrol khusus dan menggunakan modul driver ULN2003A siap pakai yang dicolokkan ke Arduino Uno. Ini sebagian didokumentasikan di wiki tetapi mungkin memerlukan beberapa penyesuaian tambahan agar dapat berfungsi. Dibutuhkan bantuan: jika Anda ingin membantu meningkatkan petunjuk ini, silakan hubungi server Discord, terima kasih!
Sistem elektronik "Chainlink" dirancang untuk mendukung rantai panjang papan driver untuk mengontrol layar menengah/besar (hingga 100+ modul split-flap). Ini juga dirancang agar mudah dan murah untuk dipesan terlebih dahulu atau dibuat sendiri, terutama dalam jumlah yang lebih banyak, karena BOM yang sederhana dan komponen yang dipasang di permukaan.
Untuk membuat tampilan, Anda memerlukan 3 perangkat elektronik berbeda:
Setiap modul memerlukan sensor efek hall untuk kalibrasi start-up dan pemantauan kesalahan.
Sensor yang lebih lama untuk perangkat keras potong laser v0.7 dan yang lebih lama dapat ditemukan dalam rilis sensor yang diberi tag.
Sensor lama ini tidak kompatibel dengan perangkat keras pemotongan laser v2.
Sensor baru untuk perangkat keras pemotongan laser v2 - sensor ini menggunakan komponen pemasangan di permukaan dan dioptimalkan untuk perakitan PCB di JLCPCB. Sensor baru ini tidak kompatibel dengan perangkat keras pemotongan laser v0.7 dan versi lama.
Paket 6 sensor sebagian besar tersedia dalam bentuk rakitan di toko Bezek Labs, dan dilengkapi dengan header pin sudut kanan dan magnet yang Anda perlukan. Pembelian mendukung kelanjutan pengembangan proyek ini.
Artefak terbaru yang dibuat secara otomatis (belum teruji!).
Fitur utama:
Papan Driver Chainlink sebagian besar tersedia dalam bentuk rakitan di toko Bezek Labs, dan dilengkapi dengan konektor tambahan dan kabel pita yang Anda perlukan. Pembelian mendukung kelanjutan pengembangan proyek ini.
Informasi lebih lanjut tentang membangun dan menggunakan Driver Chainlink tersedia di Panduan Pengguna Driver Chainlink.
Atau jika Anda ingin memesannya langsung dari pabriknya, desain ini dioptimalkan untuk perakitan di JLCPCB, dan file secara otomatis dibuat untuk memesan PCB rakitan di sana. Atau jika Anda ingin merakit papan ini sendiri daripada membayar untuk perakitan, Anda dapat melihat alat BOM/penempatan interaktif
Tergantung pada stok yang tersedia di JLCPCB, Anda mungkin perlu memodifikasi file BOM secara manual untuk menggunakan komponen alternatif, atau membuat ulang file sendiri menggunakan export_jlcpcb.py
dan menentukan satu atau lebih nama bidang LCSC_ALT_*
untuk menggunakan nomor komponen alternatif yang telah dipilih sebelumnya. Lihat skema untuk alternatif yang telah dipilih sebelumnya (periksa properti/bidang simbol).
Artefak terbaru yang dibuat secara otomatis (belum teruji!).
Chainlink Buddy [T-Display] adalah cara mudah untuk menghubungkan papan T-Display ESP32 (mikrokontroler yang direkomendasikan) ke rantai Driver Chainlink.
Fitur utama:
Papan Chainlink Buddy [T-Display] tersedia di toko Bezek Labs, dan dilengkapi dengan konektor tambahan yang Anda perlukan. Pembelian mendukung kelanjutan pengembangan proyek ini.
Artefak terbaru yang dibuat secara otomatis (belum teruji!).
Chainlink Buddy [Breadboard] memudahkan untuk menghubungkan Driver Chainlink ke papan tempat memotong roti untuk pembuatan prototipe. Anda dapat menggunakan 5 kabel dupont dan membuat sarang tikus yang berantakan, atau Anda dapat menggunakan satu kabel pita dan papan breakout yang apik ini.
Papan Chainlink Buddy [Breadboard] tersedia di toko Bezek Labs, dan dilengkapi dengan konektor tambahan yang Anda perlukan. Pembelian mendukung kelanjutan pengembangan proyek ini.
Artefak terbaru yang dibuat secara otomatis (belum teruji!).
Untuk layar yang lebih besar, Anda harus lebih berhati-hati agar perangkat kerasnya lebih tahan terhadap potensi kesalahan. Chainlink Base adalah desain pengontrol eksperimental (tetapi tidak didukung) yang menambahkan beberapa fungsi tambahan. Ini telah diuji dan tampaknya berfungsi, namun tidak disarankan untuk penggunaan umum.
Chainlink Base PCB adalah alternatif opsional untuk Chainlink Buddy, yang dirancang untuk layar berukuran besar. Ini menjadi tuan rumah ESP32 dan menambahkan opsi konektivitas tambahan (terminal untuk serial UART dan RS485) dan distribusi daya (saluran daya yang dipantau secara independen untuk beberapa "zona" papan Driver).
Fitur utama:
Artefak terbaru yang dibuat secara otomatis (belum teruji!).
Papan driver Klasik tidak digunakan lagi dan tidak didukung.
Papan pengontrol Klasik dirancang untuk dihubungkan ke Arduino seperti perisai, dan dapat mengontrol 4 motor stepper. Hingga 3 papan driver dapat dirangkai bersama, hingga 12 modul dikendalikan oleh satu Arduino.
Pengemudi menggunakan 2 driver register geser sisi rendah MIC5842, dengan dioda penekan transien internal, untuk mengontrol motor, dan register geser 74HC165 untuk membaca dari 4 sensor posisi rumah magnetik efek hall. Terdapat LED RGB WS2812B opsional yang dapat digunakan untuk menunjukkan status masing-masing dari 4 saluran.
Jika Anda ingin mencetak penutup Anda sendiri, atau memotong stiker vinil khusus, proyek ini menyertakan skrip untuk menghasilkan file desain vektor yang sangat dapat dikonfigurasi:
TODO: selesaikan dokumentasi ini dan render beberapa contoh gambar...
Jika Anda ingin berbagi satu tampilan depan di beberapa modul (daripada setiap modul memiliki tampilan depannya sendiri), repo menyertakan skrip untuk menghasilkan panel depan gabungan untuk pemotongan laser atau penggilingan/perutean CNC.
Anda dapat memodifikasi:
Untuk pemotongan CNC, skrip mendukung rendering file vektor yang dioptimalkan untuk material yang lebih tebal (misalnya MDF 6mm) di mana hanya lubang baut yang akan dipotong. Dalam mode ini, slot untuk bagian penutup atas/bawah dapat dipotong menjadi kantong berukuran ~4 mm sehingga tidak terlihat dari bagian depan. Script secara otomatis menghasilkan bentuk tulang anjing untuk potongan saku ini.
TODO: selesaikan dokumentasi ini dan render beberapa contoh gambar...
Proyek ini juga mencakup sejumlah desain cetak 3D opsional untuk mempermudah perakitan. Ini termasuk:
Semua desain ini bersifat parametrik dan dapat disesuaikan dalam OpenSCAD. Untuk mencetaknya, buka file yang relevan di OpenSCAD dan gunakan File -> Export -> Export as STL
untuk merender desain sebagai file STL untuk alat pengiris Anda.
Ini mungkin tidak berguna kecuali Anda berencana membuat lusinan hingga ratusan papan Driver Chainlink, tetapi Chainlink Driver Tester adalah pengujian lengkap untuk papan Chainlink Driver saat dirakit oleh perakit PCBA.
Saat ini sedang dalam pengembangan yang sangat aktif.
Fitur utama:
Artefak terbaru yang dibuat secara otomatis (belum teruji!).
Firmware driver ditulis menggunakan PlatformIO dengan kerangka Arduino dan tersedia di firmware/
.
Firmware ini mengimplementasikan pengontrol loop tertutup yang menerima huruf sebagai input melalui serial USB dan menggerakkan motor stepper menggunakan jalur akselerasi yang telah dihitung sebelumnya untuk kontrol yang lancar. Firmware secara otomatis mengkalibrasi posisi spul saat startup, menggunakan sensor magnet efek hall, dan secara otomatis akan mengkalibrasi ulang sendiri jika mendeteksi bahwa posisi spul tidak sinkron. Jika putaran yang diperintahkan diharapkan membawa spool melewati posisi "home", ini akan memastikan bahwa sensor terpicu tidak terlalu dini atau terlambat; jika tidak, ia akan mencari posisi "beranda" untuk menyinkronkan sebelum melanjutkan ke huruf yang diinginkan.
Agar komputer dapat berkomunikasi dengan splitflap, ia muncul sebagai perangkat serial USB.
Namun, penggunaan Serial
Arduino dilarang keras, dan sebagai gantinya disediakan abstraksi logger
untuk mengirimkan log debug teks dasar. Data lain ditransfer dengan cara terstruktur, dijelaskan di bawah.
Hal ini memungkinkan fleksibilitas dalam format data yang ditransfer melalui serial, dan faktanya splitflap menyediakan 2 mode serial berbeda yang melayani tujuan berbeda.
Secara default, ini dimulai dalam mode "teks biasa", yang ramah pengembang dan Anda mungkin familiar jika Anda membuka monitor serial dengan splitflap terhubung:
{"type":"init", "num_modules":6}
Namun, ini tidak bagus untuk mengonfigurasi atau menerima pembaruan secara terprogram dari splitflap, jadi firmware menawarkan antarmuka terprogram menggunakan protokol biner berdasarkan standar Protobuf Google.
Mode serial biner berbasis protobuf adalah cara yang ringkas dan fleksibel untuk mentransfer data terstruktur dari komputer host ke splitflap dan sebaliknya.
protobuf memberikan beberapa keunggulan dibandingkan mekanisme pengkodean lain seperti JSON:
Inilah sebabnya mengapa splitflap default ke mode teks biasa untuk membuat validasi/debugging dasar lebih mudah.
Pesan Protobuf dikodekan ke format kabel biner dan checksum CRC32 ditambahkan. Kemudian seluruh string biner tersebut dikodekan COBS ke dalam sebuah paket, dan dibatasi/dibingkai oleh 0 (NULL) byte ketika dikirim melalui serial. Ini menyediakan antarmuka berbasis paket dasar dengan pemeriksaan integritas (daripada antarmuka koneksi serial yang mentah dan berbasis aliran).
Splitflap secara otomatis beralih ke mode protobuf biner ketika menerima 0 byte.
Tampilan dapat dikontrol oleh komputer yang terhubung ke ESP32 melalui serial USB. Jika Anda telah membuat layar dan ingin mengujinya, lihat demo berbasis web di sini yang akan terhubung ke layar Anda menggunakan USB - tidak perlu aplikasi/instalasi!
Firmware ini mendukung mode serial teks biasa (diaktifkan secara default) untuk kemudahan pengujian, dan mode biner berbasis protobuf yang digunakan oleh perpustakaan perangkat lunak untuk meningkatkan kontrol dan umpan balik terprogram.
Anda dapat menemukan contoh pustaka TypeScript dan Python di folder software/chainlink
.
Ingin membuat beberapa modifikasi atau bermain-main dengan desain di mesin lokal Anda? Langsung masuk! Perhatikan bahwa semua skrip dan otomatisasi dikembangkan untuk Ubuntu. Dukungan Mac OS direncanakan, namun saat ini belum diterapkan (tetapi jangan ragu untuk membuka PR jika Anda ingin membantu!).
File desain utama adalah 3d/splitflap.scad
Anda memerlukan OpenSCAD versi terbaru (misalnya 2015-03), yang mungkin perlu diinstal melalui PPA: sudo add-apt-repository ppa:openscad/releases
Secara umum, objek padat seperti sisi penutup atau komponen spul dibuat dari primitif 2d dan kemudian diekstrusi ke ketebalan yang sesuai untuk rendering 3d, daripada menggunakan primitif 3d. Ini menyederhanakan desain tanpa kehilangan ekspresi; sinar potongan laser yang tegak lurus tidak memungkinkan pemotongan yang bervariasi dalam dimensi Z.
Perhatikan bahwa meskipun desain sudah diparameterisasi dan banyak nilai dapat diubah, saat ini tidak ada pemeriksaan kesalahan untuk parameter atau kombinasi parameter yang tidak valid. Harap berhati-hati untuk memvalidasi desain jika Anda mengubah parameter apa pun. Misalnya, meskipun sebagian besar desain akan menyesuaikan dengan nilai num_modules
yang diubah, nilai tertentu dapat menyebabkan beberapa elemen berpotongan dengan elemen lain atau menonjol melampaui dimensi yang diharapkan.
Desain dapat dirender menjadi 2d untuk pemotongan laser dengan menjalankan 3d/scripts/generate_2d.py [--panelize <number>]
, yang menghasilkan output 3d/build/laser_parts/combined.svg
. Argumen opsional --panelize
memungkinkan rendering panel modul dalam satu SVG, untuk pemotongan laser massal.
Secara internal, desainnya menggunakan modul projection_renderer
( 3d/projection_renderer.scad
), yang mengambil daftar elemen turunan untuk dirender, dan bergantung pada render_index
akan merender satu turunan dalam satu waktu. Ia juga menambahkan material ke setiap bentuk untuk memperhitungkan garitan yang akan dipotong oleh laser.
Skrip generate_2d.py
berinteraksi dengan modul projection_renderer
dengan terlebih dahulu menggunakannya untuk menentukan jumlah subkomponen yang akan dirender, kemudian menjalankan OpenSCAD untuk mengekspor setiap komponen ke file SVG. Ia melakukan beberapa pasca-pemrosesan pada keluaran SVG (terutama menambahkan "mm" ke dimensi dokumen), dan kemudian menggabungkan semua komponen ke dalam satu keluaran combined.svg
.
Setelah file combined.svg
dibuat, Anda sebaiknya memeriksa ulang apakah tidak ada garis potong berlebihan yang digunakan bersama oleh beberapa bagian yang berdekatan, untuk menghemat waktu/biaya saat memotong. Mereka seharusnya terdeteksi secara otomatis (dan disorot dengan warna merah pada rendering di atas), namun tidak ada salahnya untuk memeriksa ulang. Di Inkscape, pilih alat "Edit jalur berdasarkan node" dan pilih tepi yang akan dihapus - titik akhir akan berubah menjadi biru. Kemudian klik "Hapus segmen antara dua node non-titik akhir", dan ulangi ini untuk semua garis potong berlebihan lainnya.
Desain dapat dirender menjadi gif animasi 3d yang berputar (lihat di atas) dengan menjalankan 3d/scripts/generate_gif.py
, yang menghasilkan 3d/build/animation/animation.gif
Skrip generate_gif.py
menjalankan beberapa instance OpenSCAD secara paralel untuk merender desain dari 360 derajat ke bingkai png individual, yang kemudian digabungkan menjadi animasi gif akhir. Sebagai bagian dari pembuatan animasi, generate_gif.py
merender desain dengan beberapa konfigurasi (penutup buram, penutup tembus pandang, tanpa penutup, dan tanpa penutup) dengan menyetel variabel render_enclosure
dan render_flaps
.
Desain dapat dirender ke serangkaian file STL (satu file per warna yang digunakan dalam model) untuk ditampilkan dalam penampil 3d berbasis web interaktif. Mirip dengan projection_renderer
yang digunakan untuk merender masing-masing komponen untuk pemotongan laser, ColoredStlExporter mendeteksi semua warna yang digunakan dalam model dan merendernya satu per satu untuk memisahkan file STL, bersama dengan manifes yang memetakan setiap file STL ke warna RGB-nya. . File dan manifes STL dimuat menggunakan three.js untuk menampilkan model interaktif di situs web menggunakan WebGL. Lihat postingan blog ini untuk detail selengkapnya tentang cara kerja ekspor dan penyaji three.js: Trik Rendering OpenSCAD, Bagian 3: Penampil web.
Semua elektronik dikembangkan menggunakan KiCad 5. Panelisasi disediakan oleh KiKit dan generasi gerber/BOM disediakan oleh KiBot.
Rendering desain mekanik dan elektrikal serta tautan di atas secara otomatis diperbarui pada setiap penerapan dengan rendering terbaru. Lihat postingan blog ini untuk rincian lebih lanjut tentang cara kerjanya: KiCad otomatis, rendering OpenSCAD menggunakan Travis CI.
Tata letak PCB dapat dirender menjadi svg atau png (lihat di atas) dengan menjalankan electronics/scripts/generate_svg.py file.kicad_pcb
. Ini menggunakan API skrip Python KiCad untuk merender beberapa lapisan ke masing-masing file svg, memanipulasinya untuk menerapkan pengaturan warna dan opasitas, lalu menggabungkannya menjadi satu svg. Untuk rincian lebih lanjut, lihat posting blog ini: Scripting ekspor KiCad Pcbnew.
Untuk meninjau desain, paket pdf berisi info tembaga, silkscreen, dan bor dapat dibuat dengan menjalankan electronics/scripts/generate_pdf.py file.kicad_pcb
.
File Gerber untuk fabrikasi dapat diekspor dengan menjalankan electronics/scripts/generate_gerber.py file.kicad_pcb
. Ini menghasilkan file gerber dan file bor Excellon dengan konvensi penamaan Seeed Studio dan menghasilkan .zip
yang dapat dikirim untuk fabrikasi.
EESchema tidak mudah dibuat skripnya, jadi untuk mengekspor skema electronics/scripts/export_schematic.py
, mulai X Virtual Frame Buffer (Xvfb) dan buka GUI eeschema
di dalam tampilan virtual itu, lalu kirim serangkaian penekanan tombol hardcode melalui xdotool
ke berinteraksi dengan GUI dan klik melalui dialog. Ini sangat rapuh tetapi tampaknya berfungsi dengan baik untuk saat ini. Untuk detail lebih lanjut, lihat postingan blog ini: Menggunakan otomatisasi UI untuk mengekspor skema KiCad.
Saya ingin mendengar pendapat dan pertanyaan Anda tentang proyek ini, dan dengan senang hati memasukkan masukan apa pun yang mungkin Anda miliki ke dalam desain ini! Jangan ragu (dan terdorong) untuk membuka terbitan GitHub, kirimkan email kepada saya secara langsung, hubungi saya di Twitter, dan terlibatlah dalam pengembangan sumber terbuka dan mari terus mengobrol dan membangun bersama!
Proyek ini dilisensikan di bawah Apache v2 (lihat LICENSE.txt).
Copyright 2015-2024 Scott Bezek and the splitflap contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.