Bangun Plotter Dinding Sendiri seharga $15: DIY Terjangkau dengan Arduino
Komponen dan Perlengkapan
Arduino UNO – 1 buah
Motor Stepper 28BYJ-48 dengan Driver – 2 buah
Penerima IR TSOP 4838 – 1 buah
Pembaca Kartu Memori Micro SD SPI – 1 buah
Servo Mikro SG90 – 1 buah
Alat dan Mesin yang Diperlukan
Printer 3D (umum)
Solder (umum)
Aplikasi dan Layanan Online
Arduino IDE
Tentang Proyek Ini
Latar Belakang
Saya tidak terlalu ingat kapan dimulai, tetapi saya kira sekitar tahun 1999. Saya dan seorang teman yang gemar robotika dan elektronika sedang membahas pembuatan robot untuk menggambar di papan tulis. Tentu saja kami tidak punya waktu untuk melakukan sesuatu yang serius pada saat itu, ekosistem mikrokontroler hobi bukan seperti sekarang.
Pada tahun 2002 teman saya menunjukkan karya luar biasa dari Jürg Lehni dan Uli Franke - Hektor. Saya sangat senang melihat sesuatu yang mirip dengan yang kami impikan untuk dibangun sebenarnya dibangun dan dibagikan dengan dunia! Saya tenang.
Beberapa waktu kemudian saya ingat menunjukkan situs web proyek Hektor kepada seseorang yang menunjukkan bagaimana hebat menurut saya. Namun kali ini saya mulai melihat lebih detail menyadari bahwa ia kurang satu properti yang awalnya saya imajinisasikan plotter dinding memiliki. Saya ingin agar self-contained, semuanya dalam satu unit dengan hanya kabel yang menghubungkannya ke dinding. Jika saya ingat dengan benar, saya melihat bobot motor stepper pada titik ini menyadari bahwa ide saya tidak akan terbang.
Waktu berlalu dan hal-hal terjadi di ruang robotika hobi. Tahun 2014 dan saya telah menggunakan Arduino dan servo RC untuk berbagai proyek kontrol kamera, saya memiliki akses ke pencetakan 3D dan sebenarnya sedikit waktu luang (!?!). Setelah menemukan motor stepper 28BYJ-48 yang sangat murah saya tahu tepat apa yang akan saya bangun:
Plotter dinding minimalis termurah yang mungkin.
Percobaan Pertama
Setelah menunggu selamanya, sekitar lima minggu, untuk bagian yang dipesan dari China saya memulai konstruksi plotter. Saya mencoba membuat kerangka yang sesempit mungkin untuk menampung Arduino Uno, stepper, servo dan baterai. Saya tidak ingat berapa banyak desain bodoh, saya maksud kurang cerdas, yang saya buat di OpenSCAD sebelum koin jatuh. Anda harus menyeberangkan tali!
Memiliki geometri saling bersilang datang dengan manfaat besar dalam mempertahankan posisi yang benar di dinding. Kelemahan adalah Anda mendapatkan stabilitas yang lebih sedikit dari rotasi sekitar sumbu vertikal. Hal ini diatasi dengan menambangkan beberapa ikat tali di sudut plotter, disesuaikan sehingga mencegah rotasi.
Plotter pertama hardware tampak seperti gambar di bawah. Dalam pencariannya untuk bagian termurah mungkin saya memilih untuk menggunakan benang jahit untuk navigasi dan pembatalan gravitasi. Benang saling bersilang di bagian atas chassi cetak 3D melalui lubang kecil dalam cetakan. Seperti yang dapat (lagi) terlihat Ini adalah geometri yang sulit untuk membuat benang berjalan bersih dari pena dan kabel (kabel dari Arduino ke driver stepper kanan hilang dalam gambar, jadi terlihat tidak seburuk yang sebenarnya). Pena diangkat dari permukaan menggambar oleh servo RC yang mendorong seluruh plotter dari dinding.
Plotter pertama ini memiliki desain yang hard-coded dalam programnya pada Arduino. Pengaturan plotter dilakukan dengan memiliki satu meter benang digulung di setiap sisi dan memasangnya satu meter terpisah. Dengan pengaturan ini plotter mengetahui sistem koordinat saat menyala dan dapat mulai menggambar jalur dalam memori. Itu bekerja, tetapi merupakan kekacauan untuk digunakan. Harus mem-flash ulang Arduino saat mengubah desain tidak menyenangkan. Juga dibatasi pada pengaturan satu meter yang berbeda adalah frustrating.
Itu adalah platform yang baik untuk memahami lebih baik ruang masalah. Beberapa pembelajaran cepat:
Motor stepper tidak begitu kuat - Gulungan terlalu besar.
Ujung pena menyimpang dari persimpangan tali - Goyangan Jahat
Hal baik tentang masalah ini adalah mereka memaksa saya untuk berusaha dalam mengimplementasikan percepatan dan rem yang wajar...
Evolusi
Plotter nomor dua (yang putih di gambar sampul) mendapat beberapa perbaikan:
Gulungan lebih kecil.
Gulungan dipindahkan di atas pena untuk perutean tali yang lebih baik dan gerakan bandul yang lebih sedikit.
Elektronik lebih mudah diakses.
Kartu SD untuk menyimpan apa yang akan digambar.
Proses pengaturan baru yang memungkinkan jarak variabel antara titik ancor.
Penerima IR untuk dapat mengontrol semuanya dari remote.
Menambahkan pembaca kartu SD dan penerima IR jauh lebih mudah dari yang saya kira pertama. Itu adalah salah satu momen "mengapa saya tidak melakukannya dari awal". Proses pengaturan baru bekerja cukup bagus dan memberikan lebih banyak fleksibilitas untuk menggambar besar dan kecil. Plot terbesar yang dilakukan sejauh ini sekitar 2,5 meter lebar.
Pengaturan dilakukan dengan menavigasi plotter dengan remote. Pertama menandai posisi A, lalu pindah ke posisi B dan menandai itu. Saya menandai 20 cm pada benang jahit kiri dan kanan untuk menghindari pengukuran manual. Jarak m diberikan dengan hanya menghitung langkah pada stepper kiri saat bergerak dari A ke B. Setelah plotter mengetahui d dan lokasi saat ini berada di B Anda dapat bergerak dan menggambar di mana saja di ruang antara dan di bawah titik ancor.
Plotter nomor tiga (yang oranye dalam video di bawah) sangat mirip dengan pendahulunya, hanya beberapa perubahan:
Semua elektronik dibangun sebagai shield untuk Arduino.
Ini semua niat baik, tetapi. Menempatkan driver IC stepper langsung pada shield, melewatkan driver yang dikirim dengan stepper, berarti tidak ada lagi LED berkedip. Sedih untuk melihatnya. Sangat membosankan. Juga LED papan Arduino tersembunyi di belakang shield menyembunyikan berkedip yang nyaman yang Anda dapatkan saat penerima IR menerima, sehingga membuat Anda ragu apakah Anda menekan tombol kalibrasi atau tidak. Pengukuran level baterai terlihat seperti ide yang bagus, tetapi dalam kenyataan saya selalu kembali menggunakan daya kabel untuk plot berjalan lama.
Plotter nomor empat (Yang hebat!) dibangun sebagai hadiah ulang tahun untuk saudara saya. Ini jauh plotter yang paling tampan yang dibangun dengan elektronik gaya shield tetapi meninggalkan driver berkedip terlihat dalam kemuliaan semuanya. Perhatikan kabel dibiarkan terlalu panjang hanya untuk penampilan!
Plotter nomor lima (Edisi MacGyver) sebenarnya dibangun hanya sebagai bukti konsep untuk deskripsi proyek ini. Saya ingin menunjukkan bahwa Anda dapat membangun plotter seperti ini tanpa alat mewah. Duduk di garasi saya dan melihat di sekitar apa yang dapat saya bangun darinya. Tali besel (kawat lunak untuk menghubungkan tulangan besi) adalah pilihan pertama yang jelas. Saat mencarinya saya menemukan gulungan pita duct dan mengira itu akan menghemat waktu dan memberikan lebih banyak stabilitas. Ikat tali dan gaff-tape juga ada dalam daftar saya tetapi tidak diperlukan. Satu-satunya hal yang tidak bisa saya cari tahu adalah cara membuat gulungan yang baik dengan terlalu banyak kerja. Saya kembali ke dalam rumah untuk kopi dan di sana, tutup wadah susu! Ini benar-benar memakan waktu lebih sedikit untuk membangun kerangka plotter lima daripada waktu yang dibutuhkan untuk mencetak 3D desain asli. Dan itu bekerja sama baik (setidaknya hampir) dengan yang lain yang saya bangun.
Plotter nomor enam
Tunggu, apa? Somehow saya berhasil membangun satu lagi. Tidak bisa menahan diri. Beberapa hal yang telah mengganggu saya perlu diatasi. Juga perbaikan berkat beberapa komentar di sini.
Ukuran cetak 3D dari plotter terlalu besar dan lambat.
Memindahkan pena daripada seluruh plotter terlihat setidaknya layak dicoba.
Memindahkan Servo dan Penerima IR ke pin "analog" akan memungkinkan debugging serial! (Terima kasih jrcTexas karena telah memberi tahu saya bahwa saya bisa!)
Jadi, berikut adalah hasilnya:
Jadi, bagaimana performa hal baru ini? Baik dan buruk. Perubahan terasa baik secara keseluruhan tetapi ada satu masalah. Karena pena tidak terpasang pada kerangka ia sedikit goyah saat menggambar. Ini membuat akurasi lebih buruk dari generasi sebelumnya. Manfaat besar adalah membersihkan pin IO digital 0-1 sehingga dapat digunakan untuk debugging. Ini membuat hidup sangat lebih mudah!
Saya juga mulai melakukan beberapa pengujian stres pada stepper untuk mengetahui cara tidak melewatkan langkah:
Apa yang ditemukan dari pengujian stres adalah saya perlu memperlambat sedikit untuk memiliki torsi cukup. Saya juga menghitung tarik sebenarnya pada tali tergantung di mana plotter berada di dinding:
Saya mungkin akan melanjutkan pengujian stres untuk mengetahui bagaimana sequensi langkah berbeda dan tegangan berperan juga. Suatu hari.
Menggunakan Plotter
Saya membuat video yang menunjukkan bagaimana pengaturan dan penggambaran bekerja dalam kehidupan nyata dan waktu nyata.
Seperti yang dapat dilihat dari video pengaturan cukup sederhana dan memakan waktu sedikit. Tantangan umum saat pengaturan adalah menemukan titik ancor yang baik. Untuk papan tulis saya sebagian besar menggunakan cangkir semprot kecil yang saya tempelkan loop benang jahit atau sejenisnya lalu menggantungkan plotter dengan klip kertas. Salah satu aspek penting dari titik ancor adalah mendapatkan tali sejauh mungkin dekat dinding, untuk mendapatkan tekanan lebih baik dari pena ke dinding.
Peringatan lain adalah menggambar tinggi di atas plot lebar. Saat terlalu banyak torsi diperlukan untuk menarik tali stepper akan mulai melewatkan langkah, sehingga membuat plotter kehilangan jejak lokasi yang tepat karena tidak ada enkoder yang membantu. Jadi saran umum adalah: Gantung tinggi, cetak rendah.
Hardware Plotter
Membangun plotter cukup sederhana dan terlihat seperti sebagian besar proyek Arduino lainnya. Anda memiliki Arduino Uno, beberapa komponen yang ingin Anda gunakan dan sejumlah kabel untuk menghubungkannya semua.
Seperti yang dapat dilihat dalam skema Anda akan menggunakan hampir semua pin digital dan kemudian mungkin beberapa analog jika Anda misalnya ingin memantau level baterai. Satu peringatan adalah Anda akan akhirnya menggunakan pin 0-1 yang berfungsi ganda sebagai TX/RX. Untuk menghindari membakar hal-hal Anda akan perlu memutuskan apa pun yang Anda hubungkan di sana saat memprogram Arduino! Ini adalah alasan saya membangun plotter saya yang lebih baru dengan semua elektronik pada shield yang dapat saya lepas saat memprogram.
Servo RC dapat lebih atau kurang servo berapa pun dimensi. Anda hanya akan perlu kreatif dan memasangnya dengan cara sehingga dapat mendorong plotter dari dinding (atau tidak).
Motor stepper dan driver mungkin dapat diganti dengan jenis lain tetapi yang kecil 28BYJ-48 sangat nyaman. Mereka tidak begitu kuat meskipun dan saya suka membangun plotter yang jauh lebih cepat suatu hari. Motor berdaya 5V tetapi saya dengan senang hati mengabaikan ini dan memberikan mereka semuanya antara 5-9V tanpa masalah. Mereka menjadi panas tetapi saya belum membakar satu pun, baru-baru ini.
Modul mikro-kartu sd mudah disambungkan ke Arduino, baik melalui antarmuka SPI atau pin digital 10-13.
Penerima IR TSOP 4838 juga bekerja baik langsung disambungkan ke Arduino.
Plotter nomor tiga dan empat saya memiliki pengawas level baterai oleh pembagi tegangan resistor yang ditambahkan ke input analog. Saya juga pikir saya akan memiliki pemantauan suhu stepper ditambahkan dengan cara yang sama. Nasihat saya, abaikan saja.
Saya sangat merekomendasikan agar Anda membangun dan menguji satu hal pada satu waktu. Jangan memasang semua, menaruh grafik Anda pada kartu SD dan berharap menggambar segera. Saya merekomendasikan melakukan hal-hal berikut:
Mulai dengan menguji penerima IR. Gunakan contoh IRRecvDump yang datang dengan perpustakaan IRRemote. Anda akan perlu ini untuk merekam kode untuk tombol remote Anda bagaimanapun.
Uji servo Anda. Misalnya gunakan contoh Sweep dari perpustakaan Servo.
Uji kartu SD Anda. Bermain-main dengan contoh untuk perpustakaan SD.
Uji kontrol stepper. Bermain-main dengan sampel untuk perpustakaan Stepper.
Saat Anda merasa nyaman dengan bagian-bagian di atas, flash program plotter ke Arduino lalu hubungkan semua komponen. (jangan memasang dan membuat sesuatu yang indah lagi)
Nyalakan Arduino dan lihat apa yang terjadi. Jika semuanya bekerja servo harus melakukan sedikit sweep segera setelah menyala.
Coba mengontrol stepper dari remote. pastikan Anda menemukan stepper mana yang kiri dan mana yang kanan. Pastikan Anda menyambungkannya sehingga tombol "REEL_IN" sebenarnya menarik tali dan tidak sebaliknya. Saya memberikan Anda 50% kemungkinan Anda perlu membalik urutan pin baik dalam perangkat lunak atau hardware. (tidak perlu repot-repot terlalu banyak, sangat mudah untuk hanya membalik konektor. Percaya, tetapi verifikasi!
Saat Anda merasa yakin bahwa semua di atas bekerja Anda siap untuk merakit semuanya ke dalam bentuk plotter dan mencoba menggantungnya dari dinding!
Saya tidak akan memberikan instruksi sangat rinci tentang pemasangan bagian di sini. Lebih baik Anda menjelajahi hardware Anda dan menemukan solusi yang bekerja untuk Anda. Terinspirasi oleh plotter "MacGyver" di atas, buatlah sederhana. Anda selalu dapat menjadi mewah dan sempurna nanti. Di bawah ini adalah video yang tidak koheren tentang beberapa hal hardware saya. Anda juga perlu mempelajari perangkat lunak dan membuat file untuk menggambar, lihat lebih lanjut di bawah.
Perangkat Lunak Plotter
Semua perangkat lunak tersedia di sini di GitHub. Saya minta maaf atas kondisi kode, itu benar-benar hack. Mungkin saya akan mengambil waktu dan membersihkannya, tetapi sangat mungkin Anda akan melihatnya sebelum itu terjadi. Maaf.
Perangkat lunak pada plotter sebenarnya melakukan dua hal:
Mengizinkan navigasi dan pengaturan dari remote
Menggambar isi file .svg yang disimpan pada kartu SD.
Karena memori program pada Arduino Uno cukup terbatas telah banyak pintasan yang diambil untuk memasukkan kode ke dalam memori. Ini terutama benar untuk plotter pertama yang tidak memiliki kartu SD dan grafik juga perlu diprogram langsung ke dalam Arduino. Parsing .svg sangat terbatas dan hanya dapat menangani jalur dengan garis (tidak ada kurva) dan memerlukan dialek .svg tertentu yang saya gunakan INKSCAPE untuk mengeluarkan.
File .svg disimpan di folder tingkat atas kartu SD sebagai 1.svg, 2.svg, dan seterusnya. File yang akan digambar dipilih dengan menekan tombol yang sesuai pada remote. Ini memungkinkan saya untuk memiliki plotter yang disiapkan dengan beberapa favorit yang dapat saya tambahkan dengan cepat ke papan tulis orang.
Arduino IDE telah digunakan untuk membangun dan memprogram kontroler. Satu-satunya perpustakaan tambahan yang digunakan adalah IRRemote (oleh shirriff).
Membuat File yang Dapat Digambar
Tentu ada ratusan cara untuk membuat file .svg yang akan digambar, tetapi saya hanya akan menggambarkan satu di sini:
Gunakan INKSCAPE
Gambar apa pun yang Anda inginkan dan ubah menjadi jalur "Path->Object to path"
Pilih "Edit paths by nodes (F2)"
Pilih semua jalur dan node individu. Ctrl-A dua kali
Ubah menjadi garis dengan "Extensions->Modify Path->Flatten Beziers"
Simpan sebagai "Inkscape SVG"
Jalankan di simulator, lihat di bawah
Simulator
Satu hal lagi! Ada simulator. Ini lebih atau kurang wajib untuk menjalani setiap plot yang ingin Anda lakukan melalui simulator sebelum mencoba mencetaknya. Ini terutama diperlukan karena parsing .svg sangat buruk sehingga kemungkinan besar ada sesuatu yang tidak akan ditafsirkan dengan benar oleh plotter.
Simulator bekerja dengan mengompilasi kode plotter untuk osx atau linux dan mengganti panggilan "digitalWrite" dengan cetak ke stdout (timestamp, pin, state) yang kemudian dipindahkan ke UI visualisasi.
Simulator ditulis setelah saya memiliki bug yang menyebabkan cetak 2 jam gagal total setelah 95% atau lebih. Saya dalam kesulitan sepenuhnya tentang apa yang telah terjadi dan menyadari saya perlu cara untuk men-debugnya. Ternyata bug parsing float yang disebabkan oleh satu angka dalam .svg yang memiliki jumlah desimal yang mencolok. (Saya melakukan parsing sendiri karena fungsi perpustakaan tidak akan muat di memori). Ini adalah bug yang hebat karena memaksa saya untuk membuat simulator.
Menggunakan saat mengembangkan simulator dapat membantu banyak. Ini dapat berjalan jauh, jauh lebih cepat dari waktu nyata yang sangat nyaman. Juga itu mengeluarkan berapa lama plot akan sebenarnya berjalan dalam waktu nyata. Ada readme di samping kode simulator tentang cara menggunakannya.
Perbaikan Masa Depan
Berikut adalah daftar dari puncak pikiran saya tentang apa yang dapat diperbaiki:
Berhenti parsing .svg pada plotter, punya parser asli pada komputer dan buat format yang baik untuk plotter sebagai gantinya.
Rem yang lebih baik, perangkat lunak saat ini hanya membaca satu segmen jalur di depan yang terkadang terlalu sedikit jika belok kecil menjadi tajam.
Enkoder atau jenis umpan balik untuk menghindari kehilangan jejak saat melewatkan langkah..
Tulis perangkat lunak yang bersih dan benar.
Gunakan kontroler diaktifkan WiFi dan gunakan ponsel sebagai gantinya remote.
Beberapa Kata Akhir
Seperti yang mungkin Anda pahami sekarang saya menghabiskan waktu yang cukup dengan proyek ini, sebagian besar sejak lama. Saya masih berpikir menyenangkan untuk bermain-main dengan dan saya memiliki banyak ide tentang apa yang dapat diperbaiki, variasi baru dan dinding baru untuk dihias. Namun saya tidak punya waktu, ada begitu banyak proyek lain dan hal-hal seperti keluarga dan kerja.
Apa yang saya inginkan adalah jika beberapa dari kalian yang baik di internet mendapatkan sesuatu dari membaca ini dan mendapatkan inspirasi untuk proyek Anda sendiri. Saya juga akan senang jika beberapa dari kalian membangun plotter Anda sendiri dan membuatnya bekerja!
Meskipun saya pikir saya berhasil membangun plotter minimalis, saya tidak berhasil menurunkan biaya di bawah $10 seperti yang saya tetapkan sebagai target untuk diri saya. Tapi seiring berjalannya waktu bagian menjadi semakin murah jadi mungkin sudah tercapai dalam setahun atau lebih...
Oh, satu hal lagi. Jangan membunuh saya karena kode spaghetti. Ini tidak pernah ditulis untuk dibagikan, saya sibuk menggambar di dinding pada saat itu dan tidak peduli dengan kode. Saya memutuskan untuk membaginya bagaimanapun, jadi senanglah atas itu sebagai gantinya.
Bon Voyage,
Fredrik
Kode
Stringent
Kode, dokumentasi dan gambar cad untuk plotter dinding Stringent.https://github.com/snebragd/stringent
Bagian dan Enclosure Kustom
unggah stl baru untuk basis, yang lama rusak.Basis baru untuk plotter. Footprint lebih kecil -> lebih sedikit untuk dicetak. Aksi servo sekarang untuk memindahkan pena daripada mendorong plotter dari dinding.