Daftar Isi:

ColorCube: 7 Langkah (dengan Gambar)
ColorCube: 7 Langkah (dengan Gambar)

Video: ColorCube: 7 Langkah (dengan Gambar)

Video: ColorCube: 7 Langkah (dengan Gambar)
Video: Draw Color Cube & Spin It using OpenGL Program | Transformation from 2D Program to 3D Program 2024, Desember
Anonim
Image
Image
WarnaKubus
WarnaKubus
WarnaKubus
WarnaKubus

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

Bahan
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

Pencetakan
Pencetakan
Pencetakan
Pencetakan

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

sirkuit
sirkuit

Langkah 4: Menyolder

Pematerian
Pematerian
Pematerian
Pematerian
Pematerian
Pematerian

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

Perakitan
Perakitan
Perakitan
Perakitan
Perakitan
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: