Zen Garden CNC-Enabled End Table: Bangun Mebel Pintar Sendiri
Komponen dan Perlengkapan
| Arduino UNO | 1 |
| OpenBuilds 12V/29A Power Supply | 1 |
| OpenBuilds NEMA 17 Stepper Motor | 2 |
| SparkFun Stepper motor driver board A4988 | 2 |
| Linear Regulator with Adjustable Output | 1 |
| Analog joystick (Generic) | 1 |
| White LED Strip | 1 |
| RF Remote | 1 |
| Capacitor 220 µF | 2 |
| Breadboard (generic) | 1 |
| SparkFun Snappable Protoboard | 1 |
Aplikasi dan Layanan Online
Tentang Proyek Ini
Saya adalah seorang pembuat (maker). Saya duduk di malam hari di depan TV bersama keluarga dengan buku catatan moleskin, atau buku catatan proyek lainnya, dan menggagarkan ide. Banyak percakapan saya bermula dengan "kah tidak akan keren jika _______". Banyak ide saya tidak pernah keluar dari halaman buku catatan proyek. Ide ini keluar. Saya pikir ide ini hebat. Ini adalah taman zen tertutup yang dibangun di dalam meja samping. Gerakannya terinspirasi dari CNC atau printer 3D dan sebenarnya mulai menggunakan ramps 1.4 (shield Arduino untuk printer 3D) hingga saya menemukan cara yang jauh lebih mudah untuk membangunnya.
Saya ingin produk akhir mewakili ketenangan. Saya ingin membawa sedikit zen ke ruang tamu saya. Saya pikir saya berhasil.
Banyak hal yang saya bangun tidak cantik, begitulah caranya. Dalam proses membangun ini, saya tidak pernah menjelaskan secara pasti apa yang sedang saya bangun kepada istri saya. Hanya bahwa itu akan menjadi mebel yang cukup cantik untuk ingin dipunyai di rumah kita. Untuk menempatkan ini dalam konteks, Anda harus tahu bahwa saya berbagi segala hal dengan istri saya. Dia adalah teman terbaik saya. Namun, dalam proyek ini, saya cukup berjanji padanya bahwa hasil akhirnya akan menjadi sesuatu yang akan dia bangga punya di ruang tamu. Dia tahu itu adalah meja samping, tapi hanya itu. Jadi saya bekerja sangat keras untuk membuat meja samping ini terlihat sangat bagus baginya.
Saya telah membangun printer 3D. Saya juga telah membangun beberapa mebel sederhana (rak buku, bangku, dll.), tapi saya belum pernah membangun sesuatu yang menggabungkan teknologi ke dalam mebel. Jadi saya benar-benar pikir ini akan menjadi proyek yang menyenangkan.
Saya mendapatkan ide awal untuk meja ini sekitar enam bulan yang lalu. Kontes Meja dan Meja Kerja (dan semua alat hitam dan kuning indah sebagai hadiah) menginspirasi saya untuk memulai proyek ini.
Langkah 1: Desain dan Ide
Saya ingin membangun meja samping, sesuatu yang bisa berdiri sendiri atau di samping sofa, mungkin ada lampu di atasnya. Saya ingin itu lebih "seni" daripada apa pun, infusi teknologi ke dalam kayu. Saya selalu melihat taman batu dengan rak kayu, selalu pikir mereka sangat tenang. Itu benar-benar yang saya tuju dalam pembangunan ini, seni teknologi yang damai.
Untuk mencapai ini, saya memikirkan untuk menggunakan gantry yang mirip dengan printer 3D tanpa sumbu z. Dengan cara ini, saya bisa menggerakkan bola bearing menggunakan magnet melalui beberapa medium, mungkin pasir. Saya juga memikirkan untuk memrogramnya untuk "mencetak" gambar, atau desain dengan sendirinya.
Saya pikir saya akan menggunakan Arduino dengan 2 driver motor stepper dan kode yang cukup sederhana. Daripada memprogram ruang tertentu ke dalam kode, saya cukup memasang end-stop pada min dan max untuk kedua sumbu, jadi 0,0 memicu motor berhenti, serta XXX,XXX max memicu motor berhenti. Ini akan membuat pemrograman jauh lebih mudah.
Langkah 2: Komponen dan Bahan yang Diperlukan
Oke, jadi ini adalah daftar komponen yang saya gunakan. Ini tidak berarti Anda harus menggunakan komponen yang sama, saya hanya ingin memberikan Anda ide umum tentang komponen yang saya gunakan untuk membuat ini.
- Kayu. Saya dasarnya pergi ke tong kayu saya dan menemukan beberapa 4x4 yang saya selamatkan dari rumah pohon, dan beberapa pine pilihan yang dibeli istri saya untuk plester jendela (janji saya akan membelinya lebih banyak). Saya mengumpulkan semua potongan kayu besar yang bisa saya temukan dan membawanya ke bengkel saya. Saya juga menggunakan plywood birch 1/4 in yang saya beli dari menards beberapa tahun yang lalu untuk proyek berbeda.
- MDF 1/8. Saya menggunakan ini di antara atas dan dasar hanya untuk memberikan sesuatu pada atas untuk dipelekatkan. Dengan memikir kembali, saya mungkin bisa melewatinya dan jika saya akan melakukannya lagi saya akan melewatinya.
- Extrusi aluminium 2020. Saya menggunakan ini dalam membangun kerangka gantry.
- 2 Stepper Motors $12.99 untuk kedua sumbu gerakan.
- Arduino UNO digunakan untuk gerakan gantry.
- Modul Joystick Arduino UNO digunakan untuk mengontrol gerakan.
- Batas halus gerak linier 8mm x 4
- Pemandu batas halus 8mm x 8
- Bagian printer 3D Saya telah membangun banyak printer 3D di masa lalu dan memiliki banyak bagian ini yang tersedia. Akhirnya saya menggunakan sabuk, batas halus, bantalan batas halus, dan bagian bervariasi lain tipe printer 3D.
- Kreg pocket hole jig Ini tidak mutlak diperlukan tetapi membuat membangun macam-macam mebel jauh lebih mudah. Dalam proyek ini saya menggunakannya pada Atas dan melekatkan Atas ke dasar.
- Kaca Plat 1/4in --- Toko Kaca dan Cat Lokal -- Catat bahwa ini bukan kaca selamat dan dapat menghasilkan pecahan tajam yang berbahaya jika pecah, tapi untuk proyek ini saya ingin kekuatan dan ketebalan.
- White LED Strip dan RF Remote
- LM317 Konverter Tegangan
- Driver Motor Stepper A4988 x 2
- Kapasitor 220mf 16v x 2
- Sumber daya 12 volt 5 amp
- Ball bearing 3/4in
- Pasir putih bermain 25lb
- 2 Kantong Batu Sungai Halus
- Magnet Dasar Bulat Neodymium
- Papan prototipe
- Papan solder permaboard
- Beberapa strap lubang 2 konduit plastik atau cara lain untuk memasang gantry ke pintu tangkap.
Langkah 3: Mengassembly Gantry
Saya mulai dengan beberapa gambar kasar dan membangun gantry. Ini mungkin bukan cara paling efisien untuk membangun ini. Ini hanyalah cara saya melakukannya, sambil ingat bahwa saya mencoba menggunakan bagian sisa dari pembangunan lain dan sebagainya. Saya memiliki beberapa extrusi aluminium 20/20 yang tersisa dari pembangunan lain jadi saya menggunakannya untuk kerangka gantry saya. Saya mendesain dan mencetak 3D bracket sudut dan telah menyertakan file-nya di sini.
Saya juga menyertakan bagian yang dipotong laser untuk sumbu x dan y. Pelajari gambar dengan hati-hati untuk melihat secara tepat bagaimana saya memasang carriage dan sumbu terpisah. Cara saya memasang carriage mungkin bukan cara terbaik, karena ada banyak cara berbeda untuk membangun gantry, tetapi saya telah menggunakan metode ini dengan beberapa pembangunan lain dan tampaknya berfungsi dengan baik dan keandalan yang baik.
Langkah 4: Rangkaian Assembly
Pertama yang saya lakukan adalah merangkaian pada papan prototipe breadboard, dan ketika saya yakin semuanya bekerja seperti yang saya inginkan, lalu saya mentransfernya ke papan solder. Saya telah menyertakan diagram fritzing di atas untuk membantu assembly.
Langkah 5: Kode
Kode yang kita buat untuk ini sangat sederhana. Saya menempatkan end-stop pada min dan max untuk kedua sumbu x dan y, jadi tidak ada dalam kode yang menentukan ukuran gantry. Karena ukuran tidak diatur dalam kode, tidak masalah jika desain Anda lebih kecil atau lebih besar dari milik saya. Tidak ada yang perlu disesuaikan dalam kode. Kode tersedia di sini dalam format .TXT dan .INO sehingga Anda dapat mengunduhnya.
Langkah 6: Pengujian Gerakan
Setelah menginstal kode, saya mengujinya secara menyeluruh. Saya ingin gerakan diagonal pergi horizontal lalu vertikal lalu horizontal, mirip dengan etch-a-sketch. Tampaknya bekerja dengan baik. Jadi sekarang saya akan menyolder semua koneksi ke Arduino untuk membuatnya permanen dan melihat tentang memasangnya ke dalam meja.
Langkah 7: Bagian Meja Sebenarnya
Jadi saya mencoba memutuskan bagaimana saya akan membangun apa yang ada di dalam kepala saya. Saya memikirkan kotak dua tingkat dengan mekanika tersembunyi di bagian bawahnya. Itu akan dikendalikan oleh joystick yang tersembunyi di bawah suatu tepi. Selain itu, saya benar-benar tidak tahu bagaimana saya akan melakukannya.
Setelah mencari tumpukan kayu, saya menemukan 4x4 yang saya selamatkan dari proyek lain, dan saya menemukan beberapa pine pilihan yang cukup bagus. Setelah berjanji kepada bos bahwa saya akan mengganti apa yang akan saya ambil, saya membawa kayu ke bengkel dan mulai membangun.
Langkah 8: Membangun Kotak Bi-level
Setelah mengukur dan memotong plywood 1/4 in saya ingin mencoba cara baru untuk memegangnya bersama-sama sementara lem mengeperekat. Saya melem cardboard ke sudut-sudut. Metode ini tampaknya bekerja baik karena memegang kotak bersama cukup lama untuk mendapatkan langkah-langkah lainnya untuk memegangnya bersama-sama. Setelah membangun pembagian untuk atas dan bawah dan memastikan bahwa itu rata, saya melekatkan piano hinge sehingga bawah meja yang akan menahan gantry dapat jatuh untuk dipelihara.
Langkah 9: Membuat Kaki Meja
Untuk kaki meja, saya ingin menggunakan kembali pine 4x4 yang saya tarik dari rumah mainan yang dulunya ada di kamar mainan anak-anak saya. Untuk memulai, saya memastikan bahwa 4x4 bebas dari baut dan paku/stapel. Saya mengukur dan memotong 4x4 menjadi 4 bagian 25 in. Lalu saya melanjutkan menjalankan 4 kaki melalui plainer banyak kali untuk menghilangkan cat dan membersihkannya.
Setelah beberapa kali melalui plainer, saya menggunakan penggaris dan klip untuk membuat jig sementara sehingga saya bisa menggunakan skill saw seperti table saw. Ini bekerja baik dan memberi saya 4 kaki L yang bersih dan halus yang bekerja baik untuk keperluan saya.
Langkah 10: Memasang Sisi
Setelah kaki dipasang, saya memulai dengan sisi. Banyak pengukuran yang hati-hati terjadi. Anda ingin mendekati se mungkin sehingga ada celah yang sesedikit mungkin. Saya melem bagian-bagian ke tempatnya dan menjalankan beberapa baut ke dalamnya dari sisi bawah kotak bi-level.
Langkah 11: Gores dan Gores Lagi
Saat membangun sesuatu dengan bentuk, saya merekomendasikan penggosokan yang berlebihan, mulai dengan kertas kasar (seperti 80-120 grit) dan bekerja menuju kertas yang lebih halus (< 200 grit). Waktu yang Anda habiskan menggosok setiap ketidaksempurnaan akan terbayarkan saat proyek selesai.
Langkah 12: Memasang Lampu LED
Setelah saya tahu di mana atas akan duduk, saya membuat potongan MDF 1/8 in untuk duduk di antara atas dan dasar. Saya menandai di mana bagian akan duduk lalu membaliknya ke bawah dan melekatkan strip lampu LED ke bawah dengan zip ties dan lem panas. Dari pengalaman saya, tidak bijaksana untuk sepenuhnya bergantung pada lem panas sendiri saat memasang sesuatu yang dapat menghasilkan panas sendiri (misalnya, strip lampu). Saya membuat lubang dan menjalankan kabel daya untuk lampu ke sisi bawah kotak bi-level. Saya akan menjalankan lampu dari 12V yang sama dengan motor stepper, tetapi saya mengalami masalah di mana lampu membuat motor berdengung, jadi saya memberikan lampu sumber daya 12V sendiri.
Langkah 13: Memasang Atas
Saya tidak memiliki banyak pengalaman memotong miter; saya bukan tukang kayu lahir. Namun setelah banyak percobaan dan kesalahan, saya mampu membuat atas yang terlihat bagus. Saya menggunakan jig kreg yang disebutkan dalam langkah bagian untuk melekatkan empat sisi atas bersama-sama dan ini bekerja sangat baik.
Saat Anda mengukur bagian untuk atas, pastikan Anda mengukur dengan benar. Lebih baik terlalu besar dan memotong lagi atau menggosok daripada terlalu kecil. Setelah Anda memotong bagian untuk atas dan memastikan bahwa mereka akan bertemu seperti yang Anda inginkan, router bagian-bagian individual sehingga kaca akan muat di sana rata. Pastikan kedalaman router sehingga cocok dengan kaca Anda. Dalam kasus saya, kaca adalah 1/4 in.
Setelah atas dilem dan dibaut bersama-sama, saya membautnya ke dasar menggunakan jig kreg di belakang kaki tempat tidak akan terlihat.
Saya memanggil toko perbaikan kaca mobil lokal dan memesan kaca plat 1/4 in 1/16 in lebih kecil dari pembukaan. Saya juga meminta mereka menggosok tepinya sehingga tidak akan melukai tangan. Saya tidak akan menggunakan akrilik untuk menahan kaca, cukup karena saya ingin dapat melepaskan kaca sehingga saya dapat mengatur ulang batu-batu.
Langkah 14: Kondisi, Stain, Poly, Gores dan Poly Lagi
Karena pine adalah kayu yang sangat berpori, saya tidak ingin itu terlihat bercak, jadi saya menggunakan kondisi pre-stain kayu untuk meratakan stain. Lalu saya menerapkan Minnwax natural cherry poly-stain padanya dan membiarkannya kering. Hari berikutnya saya kembali dan menggosok ringan meja dengan kertas gosok 320 grit lalu menerapkan lapisan lain poly-stain. Jika saya harus melakukannya lagi, saya akan stain dan poly secara terpisah; itu adalah mimpi buruk untuk membuat stain dan lapisan poly tidak meninggalkan titik-titik dan sebagainya. Juga jika Anda ingin lebih gelap, Anda tidak dapat stain lagi untuk membuatnya lebih gelap. Saya akhirnya menggosok dan melapisi kembali beberapa kali sampai saya puas dengan hasilnya. Saya tidak pikir saya akan menggunakan poly-stain lagi.
Langkah 15: Memasang Elektronika
Saya membangun pintu tangkap di bagian bawah sehingga seluruh gantry dapat dipasang pada pintu tangkap dan dapat turun untuk dikerjakan dan dipelihara atau ditingkatkan. Saya memasang gantry ke pintu tangkap menggunakan strap lubang 2 konduit plastik. Saya memasang strap di sekitar extrusi 2020. Ini tampaknya bekerja baik.
Saya mencoba beberapa rute yang berbeda sejauh di mana memasang Arduino dan breadboard. Saya akhirnya memotong lubang di bawah pintu tangkap sekitar tengah, menjalankan semua kabel melalui itu dan memasang elektronika di bawah meja.
Saat saya memasang joystick, saya berpikir lama-lama bagaimana saya akan memasangnya. Jujur saya tidak bisa memikirkan sesuatu yang cerdas, jadi saya hanya melemnya di bawah tepi meja. Saya mendorong kabel joystick sejauh mungkin ke sudut dan melemnya juga. Ini bukan solusi paling mewah, tetapi Anda tidak benar-benar dapat melihatnya kecuali Anda merayap di sampingnya, jadi saya puas dengan itu.
Di bawah saya memasang papan-papan dengan baut kecil dan mencoba merapikan semuanya sebaik mungkin. Saya juga memindahkan stopper daya ke sisi belakang kaki belakang dan melemnya ke tempatnya.
Langkah 16: Toolhead "magnethead"?
Saya tidak yakin bagaimana melekatkan magnet ke baut yang saya inginkan. Saya pikir baut akan bekerja bagus karena saya dapat dengan mudah menyesuaikan sumbu z. Apa yang saya lakukan adalah memotong panjang kecil (1 - 1 1/2 in) dowel 3/4 in dan membuat lubang yang baut akan muat ke dalamnya. Lalu saya memasang magnet ke atasnya. Sekarang saya dapat menyesuaikannya naik dan turun dengan melepas baut di bawahnya.
Langkah 17: Membuat Taman Batu
Setelah elektronika dipasang, saya memulai membuat taman batu. Saya tidak yakin berapa pasir yang dibutuhkan, jadi saya membeli kotak pasir 25 lb. Dengan memikir kembali, saya pikir saya bisa lolos dengan 5 hingga 10 pound. Sebagian besar pasir masih dalam kotak. Setelah menyebarkan pasir, saya menggerakkan bola sedikit. Saya ingin memastikan Anda tidak dapat melihat dasar kotak saat bola menggelinding. Saya menambahkan pasir dan terus menguji sampai saya menemukan kedalaman pasir yang saya sukai.
Lalu saya menambahkan 2 kantong batu sungai halus di sekitar tepi. Saya mencoba menyebarkannya merata. Saya memikirkan untuk melem batu sungai, tapi saya pikir akan lebih baik dapat mengatur ulang mereka di masa depan jika saya ingin.
Langkah 18: Meja dalam Aksi
Alasnya, meja itu bergerak. Setelah saya membuat meja bergerak, saya hanya berdiri di sana dan mengemudikan bola terlalu lama - lol. Ada sesuatu yang sangat memuaskan dalam melihat bola logam itu mendorong pasir. Itu adalah perjalanan panjang untuk sampai ke titik ini dan sangat luar biasa untuk melihat meja bergerak seperti yang saya bayangkan.
Langkah 19: Selesai
Ini adalah proyek yang panjang dan sulit. Ini sangat menyenangkan meskipun.
Kode
code.inoC/C++
/* * Simple demo, should work with any driver board * * Connect STEP, DIR as indicated * * Copyright (C)2015 Laurentiu Badea * * This file may be redistributed under the terms of the MIT license. * A copy of this license has been included with this distribution in the file LICENSE. */ /* * Edited as found from the StepperDriver library by Ernest E Garner * Date: 20-Nov-2016 * * Code Description: * Used to control a basic x/y gantry for the zen table created by Ernest James Garner for Instructables.com */ #include <Arduino.h> #include "BasicStepperDriver.h" //#define DEBUG // Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step #define X_MOTOR_STEPS 200 #define Y_MOTOR_STEPS 200 //Motor direction to home // options 1 (forward) // -1(reverse) #define STEP_FORWARD 1 #define STEP_REVERSE -1 #define X_DIR_HOME STEP_FORWARD #define Y_DIR_HOME STEP_FORWARD // All the wires needed for full functionality #define X_MAX_PIN 6 #define X_HOME_PIN 7 //home pin. #define X_DIR_PIN 8 #define X_STEP_PIN 9 #define X_ANALOG_PIN A0 #define Y_MAX_PIN 5 #define Y_HOME_PIN 10 #define Y_DIR_PIN 11 #define Y_STEP_PIN 12 #define Y_ANALOG_PIN A2 // Since microstepping is set externally, make sure this matches the selected mode // 1=full step, 2=half step etc. #define MICROSTEPS 1 // 2-wire basic config, microstepping is hardwired on the driver BasicStepperDriver x_stepper(X_MOTOR_STEPS, X_DIR_PIN, X_STEP_PIN, X_HOME_PIN, X_MAX_PIN); BasicStepperDriver y_stepper(Y_MOTOR_STEPS, Y_DIR_PIN, Y_STEP_PIN, Y_HOME_PIN, Y_MAX_PIN); int x_position = 0; int x_analog; int y_position = 0; int y_analog; void setup() { #ifdef DEBUG Serial.begin(9600); #endif /* * Set target motor RPM. * These motors can do up to about 200rpm. * Too high will result in a high pitched whine and the motor does not move. * * We want these motors to move slowly. */ x_stepper.setRPM(100); y_stepper.setRPM(100); /* * Tell the driver the microstep level we selected. * If mismatched, the motor will move at a different RPM than chosen. */ x_stepper.setMicrostep(MICROSTEPS); y_stepper.setMicrostep(MICROSTEPS); } void loop() { /* * Moving motor one full revolution using the degree notation */ // 1024/2 = 512 // 512 - 40 = 472 // 512 + 40 = 552 x_analog = analogRead(X_ANALOG_PIN); // Joystick pulled to reverse and HOME not pressed //if ((x_analog < 472) && (digitalRead(X_HOME_PIN)==HIGH)) { if ((x_analog < 472)) { x_stepper.move(-40); } else if ((x_analog > 552)) { x_stepper.move(40); } #ifdef DEBUG Serial.print("X: "); Serial.print(x_analog); //Serial.print(x_stepper.getDirection()); #endif y_analog = analogRead(Y_ANALOG_PIN); //if ((y_analog < 472) && (digitalRead(Y_HOME_PIN)==HIGH)) { if ((y_analog < 472)) { y_stepper.move(-40); } else if ((y_analog > 552)) { y_stepper.move(40); } #ifdef DEBUG Serial.print(" Y: "); Serial.println(y_analog); //Serial.getDirection(y_stepper. #endif }
Bagian dan Enclosure Kustom
FTY8AKAIVO3T4X1.dxf
FZUAWWRIVO3T4WZ.cdr
FVXPPAIIVO3T86T.stl
Skema