Daftar Isi:
- Langkah 1: Bahan
- Langkah 2: Mencetak
- Langkah 3: Sirkuit
- Langkah 4: Menyolder
- Langkah 5: Kode
- Langkah 6: Perakitan
- Langkah 7: Selesai
Video: ColorCube: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Saya membuat lampu ini untuk cucu saya ketika dia sedang belajar warna. Saya terinspirasi dengan proyek MagicCube tetapi akhirnya membuat semua bagian dari awal. Sangat mudah untuk mencetak dan mudah untuk merakit dan Anda akan mendapatkan pengetahuan bagaimana modul gyro bekerja.
Langkah 1: Bahan
Bagian Arduino:
- Arduino Nano (lebih baik tanpa pin header solder)
- Modul Gyro 3-Axis MPU-6050
- Modul Pengisi Daya Baterai USB Mikro TP4056
- MT3608 Meningkatkan Modul Power Booster
- Baterai Lipo 902936 900mA atau 503035 3.7V 500mA. Anda dapat menggunakan baterai LiPo apa saja dengan 3, 7V dan ukuran kurang dari 35x30x15mm tetapi Anda harus mengamankan baterai di dalam lubang.
- Tombol self-locking PS-22F28 atau tombol Self-locking PS-22F27 keduanya cocok untuk bagian yang dicetak dengan sempurna.
- Ring LED RGB WS2812B – 16 LED diameter luar 68mm - Anda dapat menggunakan ring apa saja meskipun dengan jumlah LED yang berbeda (harus mengubah satu konstanta dalam kode – #define NUMPIXELS 16) dengan diameter maksimal 76mm (Anda juga dapat menggunakan Neopixel Stick dengan 8x LED atau strip LED apa pun dengan WS2812b).
Contoh cincin:8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm
Untuk montase, Anda dapat menggunakan salah satu lubang yang dicetak di bagian tengah. Mereka mencakup hampir semua opsi (tidak perlu membuat dering 100% terpusat).
kabel
kubus
- PLA Filament untuk bagian atas kubus – gunakan warna putih karena transparan kurang bagus (LED terlihat dan warna tidak mulus), rekomendasi saya adalah Prusament Vanilla White
- Filament PLA untuk bagian bawah, tengah dan kancing – menggunakan warna gelap karena beberapa modul Arduino memiliki lampu di bagian atas dan tidak sesuai dengan warna LED kubus, rekomendasi saya adalah Prusament Galaxy Black
- 1x M3x5 Self Tapping Screw - Panjang (10mm) dan bentuk kepala tidak kritis - sekrup tidak terlihat
- 2x M2x3 Self Tapping Screw - Panjang (5mm) dan bentuk kepala tidak kritis – sekrup tidak terlihat
Peralatan
- Pencetak 3D
- Multimeter
- Besi solder
- Obeng
Langkah 2: Mencetak
Semua bagian ColorCube dirancang di Autodesk Fusion360. file f3d terlampir.
ColorCube dicetak pada printer Prusa i3 MK3S dengan semua pengaturan default dan saya tidak mengharapkan perubahan yang diperlukan pada printer yang berbeda. Gunakan pengaturan favorit Anda untuk PLA (jika dicetak pada PLA, tidak masalah untuk menggunakan PETG atau ASA).
parameter pencetakan 3d:
- Lapisan 0,2 mm (pengaturan KUALITAS 0,2 mm pada PrusaSlicer)
- Pengaturan Prusament PLA Filament di PrusaSlicer
- Isi 15%
- Tidak Ada Dukungan
- Tanpa Brim
Langkah 3: Sirkuit
Langkah 4: Menyolder
Peringatan: Gunakan multi-meter untuk memastikan bahwa penguat DC-DC MT3608 menghasilkan keluaran 5V. Pertama - sebelum mengukur - putar trim searah jarum jam ke ujung (mengklik). Saat menghubungkan tegangan (3, 7V) ke input, ia harus memberikan nilai yang sama. Putar berlawanan arah jarum jam (Anda akan membutuhkan 10-20 putaran penuh) dan tiba-tiba tegangan naik. Atur 5V pada output dengan lembut. (foto)
Lihatlah bagian bawah kubus yang dicetak. Setiap komponen memiliki lubangnya sendiri. Ini menentukan berapa panjang kabel di antara setiap komponen yang Anda perlukan (jangan gunakan kabel ekstra panjang jika tidak, Anda akan mendapatkan hutan kabel). (foto)
Kabel solder antara Arduino Nano dan cincin LED saja (3 kabel: merah 5V - 5V, hitam GND – GND, biru D6 - DI). Jalankan uji fungsionalitas dering LED dari bab berikutnya. (foto)
Jika semuanya OK lanjutkan dengan menambahkan Gyro MPU6050 (5 kabel: merah 5V - VCC, hitam GND - GND, biru A4 - SDA, hijau A5 - SCL, kuning D2 - INT). Unggah kode dan tes ColorCube.ino (komponen lain hanya untuk baterai dan pengisian daya). (foto)
Jika semua OK tambahkan komponen lainnya. Hanya ada kabel merah (+) dan hitam (-). Pilih pin kanan pada tombol self-locking (tidak terhubung saat tidak ditekan). Uji fungsionalitas pada baterai dan pengisian baterai. (foto)
Lampu LED merah pada TP4056 saat mengisi daya dan lampu LED biru saat terisi penuh. Lubang di atas TP4056 di bagian tengah yang dicetak melewatkan lampu LED ke bagian atas ColorCube dan Anda dapat mengenali fase pengisian. (foto)
Langkah 5: Kode
Pertama, Anda harus mengunduh perpustakaan yang diperlukan.
Ada petunjuk terperinci untuk pustaka Adafruit Neopixel:
Tes fungsionalitas cincin LED: Anda dapat menguji sirkuit Anda dengan contoh yang disertakan dalam perpustakaan. Buka file dari File/Contoh/Adafruit NeoPixels/simple dan unggah (jangan lupa untuk mengatur baris ini dengan benar berdasarkan jumlah piksel yang Anda gunakan: #define NUMPIXELS 16).
I2Cdev dan MPU6050: Unduh dan unzip file i2cdevlib-master.zip dari https://github.com/jrowberg/i2cdevlib. Salin formulir folder unzip i2cdevlib-master/Arduino dua subfolder: I2Cdev dan MPU6050. Keduanya salin ke folder library Arduino IDE (Documents/Arduino/libraries jika instalasi default).
Jangan lupa untuk me-restart Arduino IDE setelah perpustakaan disalin.
#include #ifdef _AVR_ #include // Diperlukan untuk Adafruit Trinket 16 MHz #endif #include "Wire.h" include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // gunakan pin 2 pada Arduino Uno & sebagian besar papan #define PIN 6 #define NUMPIXELS 16 //Setel jumlah LED piksel Adafruit_NeoPixel yang benar(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor=0; bool dmpReady = salah; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t ukuran paket; uint16_t fifoCount; uint8_t fifoBuffer[64]; Quaternion q; Gravitasi vektorFloat; rotasi mengambang[3]; int x, y, z; volatil bool mpuInterrupt = false; void dmpDataReady() { mpuInterrupt = true; } batalkan pengaturan() { Serial.begin(115200); piksel.mulai(); pixel.clear(); piksel.setBrightness (128); #jika didefinisikan(_AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // bergabung dengan bus I2C (library I2Cdev tidak melakukan ini secara otomatis) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); Kawat.setJam(400000); // 400kHz I2C jam. Beri komentar pada baris ini jika mengalami kesulitan kompilasi #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif while (!Serial); Serial.println(F("Menginisialisasi perangkat I2C…")); mpu.initialize(); pinMode(INTERRUPT_PIN, INPUT); // verifikasi koneksi Serial.println(F("Menguji koneksi perangkat…")); Serial.println(mpu.testConnection() ? F("Koneksi MPU6050 berhasil"): F("Koneksi MPU6050 gagal")); // tunggu siap // Serial.println(F("\nKirim karakter apa saja untuk memulai pemrograman DMP dan demo: ")); // while (Serial.available() && Serial.read()); // buffer kosong // while (!Serial.available()); // menunggu data // while (Serial.available() && Serial.read()); // kosongkan buffer lagi // muat dan konfigurasikan DMP Serial.println(F("Inisialisasi DMP…")); devStatus = mpu.dmpInitialize(); // berikan offset gyro Anda sendiri di sini, diskalakan untuk sensitivitas min mpu.setXGyroOffset(0); mpu.setYGyroOffset(0); mpu.setZGyroOffset(0); mpu.setZAccelOffset(1688); // 1688 default pabrik untuk chip pengujian saya // pastikan itu berfungsi (mengembalikan 0 jika demikian) if (devStatus == 0) { // Calibration Time: menghasilkan offset dan mengkalibrasi MPU6050 mpu. CalibrateAccel(6); mpu. CalibrateGyro(6); mpu. PrintActiveOffsets(); // nyalakan DMP, sekarang sudah siap Serial.println(F("Mengaktifkan DMP…")); mpu.setDMPEnabled(benar); // aktifkan deteksi interupsi Arduino Serial.print(F("Mengaktifkan deteksi interupsi (interupsi eksternal Arduino ")); Serial.print(digitalPinToInterrupt(INTERRUPT_PIN)); Serial.println(F(")…")); attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus(); // setel flag DMP Ready kita sehingga fungsi loop() utama tahu bahwa tidak apa-apa untuk menggunakannya Serial.println(F("DMP ready! Waiting for first interrupt…")); dmpSiap = benar; // dapatkan ukuran paket DMP yang diharapkan untuk perbandingan nanti packetSize = mpu.dmpGetFIFOPacketSize(); } lain { // GALAT! // 1 = gagal memuat memori awal // 2 = Pembaruan konfigurasi DMP gagal // (jika akan rusak, biasanya kodenya adalah 1) Serial.print(F("Inisialisasi DMP gagal (kode ")); Serial. print(devStatus); Serial.println(F(")")); } } void loop() { jika (!dmpReady) kembali; if (mpu.dmpGetCurrentFIFOPacket(fifoBuffer)) { // Dapatkan paket Terbaru // tampilkan sudut Euler dalam derajat mpu.dmpGetQuaternion(&q, fifoBuffer); mpu.dmpGetGravity(&gravitasi, &q); mpu.dmpGetYawPitchRoll(rotasi, &q, &gravitasi); } Serial.print("X"); Serial.print(rotace[2] * 180/M_PI); Serial.print("\tY"); Serial.print(rotace[1] * 180/M_PI); Serial.print("\tZ"); Serial.println(rotace[0] * 180/M_PI); x=rotace[2] * 180/M_PI; y=putar[1] * 180/M_PI; z=rotace[0] * 180/M_PI; if(abs(x)<45 && abs(y)45 && abs(x)<135 && (abs(y)135)){ activeColor=pixels. Color(255, 0, 0); //Merah saat berbelok ke samping }else if(x<-45 && abs(x)<135 && (abs(y)135)){ activeColor=pixels. Color(0, 255, 0); //Hijau saat berbelok ke sisi kedua }else if(y>45 && abs(y)<135 && (abs(x)135)){ activeColor=pixels. Color(255, 255, 0); //Kuning saat berbelok ke sisi ketiga }else if(y<-45 && abs(y)<135 && (abs(x)135)){ activeColor=pixels. Color(0, 0, 255); //Biru saat berbelok ke sisi keempat }else if(abs(y)>135 && abs(x)>135){ activeColor=pixels. Color(0, 0, 0); // Hitam saat terbalik } if(activeColor != oldActiveColor){ pixels.clear(); piksel.isi(warna aktif); piksel.tampilkan(); oldActiveColor=warnaaktif; } }
Akhirnya Anda dapat membuka dan mengunggah file ColorCube.ino. Letakkan ColorCube dari permukaan datar dan nyalakan. Jangan pindahkan sampai mulai menyala dengan warna putih setelah kalibrasi (beberapa detik). Selanjutnya Anda dapat meletakkan ColorCube di samping dan warna akan berubah – setiap sisi memiliki warna sendiri – merah, hijau, biru, kuning. ColorCube padam saat dibalik.
Langkah 6: Perakitan
Bersikaplah lembut selama perakitan. Kabel dan semua bagian tidak menyukai perilaku kasar.
Bagian cetakan kancing 3d – masukkan kancing dengan lembut ke lubang di bagian cetakan bawah (seperti yang ditunjukkan pada gambar), itu harus masuk dan keluar dengan lancar, jika tidak menggunakan pisau bedah atau pisau tajam atau kertas pasir untuk menghilangkan semua bahan berlebih (kebanyakan di dalam atas lubang lingkaran di bagian bawah). (foto)
Masukkan MPU-6050, Arduino Nano, TP4056 dan MT3608 ke lubangnya. Kotak memiliki tonjolan di mana Anda memasukkan MPU-6050 dan MT3608. Pasang konektor USB Arduino Nano dan TP4056 ke lubangnya di dinding samping kotak. (foto)
Gunakan kunci cetak 3d untuk memperbaiki komponen (pastikan semua komponen diletakkan di bagian bawah dengan kencang). Ini penting karena seseorang pasti akan mencoba bermain dengan ColorCube Anda seperti dengan dadu. (foto)
Pasang dan kencangkan baterai di lubangnya jika tidak kencang.
Letakkan tombol Self-locking ke lubang yang sudah disiapkan di bagian bawah. Tombol self-locking harus dalam posisi ON (pendek). Tekan perlahan tombol ke bawah. Uji fungsionalitas dengan tombol cetak 3d. (foto)
Gunakan dua sekrup M2 untuk memperbaiki Cincin LED ke bagian tengah yang dicetak. Baik untuk menggunakan orientasi cincin di mana kontak kawat berada di lubang bundar di bagian tengah yang dicetak. (foto)
Opsional: Gunakan setetes lem panas di sana-sini – sambungan kabel ke cincin, untuk kabel yang terlalu panjang, jika ada yang tidak cukup kencang, dll. Hal ini dapat membuat ColorCube Anda lebih tahan lama.
Atur kabel di dalam ColorCube agar tidak terjepit oleh bagian yang dicetak. Letakkan bagian tengah ke bawah. Gunakan sekrup M3 untuk memperbaikinya. (foto)
Akhirnya dengan lembut dorong bagian atas yang dicetak ke bagian bawah. (foto)
Langkah 7: Selesai
Selamat. Selamat bersenang-senang.
Direkomendasikan:
Pemegang Gambar Dengan Speaker Internal: 7 Langkah (dengan Gambar)
Picture Holder Dengan Built-in Speaker: Ini adalah proyek yang bagus untuk dilakukan selama akhir pekan, jika Anda ingin membuat speaker Anda sendiri yang dapat menampung gambar/kartu pos atau bahkan daftar tugas Anda. Sebagai bagian dari pembangunan kita akan menggunakan Raspberry Pi Zero W sebagai jantung dari proyek, dan sebuah
Howto: Instalasi Raspberry PI 4 Headless (VNC) Dengan Rpi-imager dan Gambar: 7 Langkah (dengan Gambar)
Cara: Memasang Raspberry PI 4 Headless (VNC) Dengan Rpi-imager dan Gambar: Saya berencana untuk menggunakan Rapsberry PI ini dalam banyak proyek menyenangkan di blog saya. Jangan ragu untuk memeriksanya. Saya ingin kembali menggunakan Raspberry PI saya tetapi saya tidak memiliki Keyboard atau Mouse di lokasi baru saya. Sudah lama sejak saya menyiapkan Raspberry
Pengenalan Gambar Dengan Papan K210 dan Arduino IDE/Micropython: 6 Langkah (dengan Gambar)
Pengenalan Gambar Dengan Papan K210 dan Arduino IDE/Micropython: Saya sudah menulis satu artikel tentang cara menjalankan demo OpenMV di Sipeed Maix Bit dan juga membuat video demo deteksi objek dengan papan ini. Salah satu dari banyak pertanyaan yang diajukan orang adalah - bagaimana saya bisa mengenali objek yang jaringan sarafnya tidak
Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib !: 9 Langkah (dengan Gambar)
Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib !: Selama bertahun-tahun, saya telah mengembangkan kebiasaan membawa patung kecil saat bepergian: Saya sering membeli seni kecil kosong (seperti yang ada di gambar) dan melukis agar sesuai dengan bendera dan tema negara yang saya kunjungi (dalam hal ini, Sisilia). T
Cara Membongkar Komputer Dengan Langkah Mudah dan Gambar: 13 Langkah (dengan Gambar)
Cara Membongkar Komputer Dengan Langkah Mudah dan Gambar: Ini adalah instruksi tentang cara membongkar PC. Sebagian besar komponen dasar bersifat modular dan mudah dilepas. Namun penting bahwa Anda diatur tentang hal itu. Ini akan membantu Anda agar tidak kehilangan bagian, dan juga dalam membuat