Isi kandungan:
- Langkah 1: Bahan
- Langkah 2: Mencetak
- Langkah 3: Litar
- Langkah 4: Pematerian
- Langkah 5: Kod
- Langkah 6: Berkumpul
- Langkah 7: Selesai
Video: ColorCube: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Saya membuat lampu ini untuk cucu saya ketika dia belajar warna. Saya terinspirasi dengan projek MagicCube tetapi akhirnya mencipta semua bahagian dari awal. Ia senang dicetak dan senang dipasang dan anda akan mendapat pengetahuan bagaimana modul gyro berfungsi.
Langkah 1: Bahan
Bahagian Arduino:
- Arduino Nano (lebih baik tanpa pin header solder)
- Modul Gyro MPU-6050 3-Axis
- Modul Pengecas Bateri USB Mikro TP4056
- MT3608 Modul Power Up Booster
- LiPo Battery 902936 900mA atau 503035 3.7V 500mA. Anda boleh menggunakan sebarang bateri LiPo dengan ukuran 3, 7V dan berukuran kurang dari 35x30x15mm tetapi anda harus mengunci bateri dalam lubang.
- Butang kunci sendiri PS-22F28 atau butang Mengunci diri PS-22F27 kedua-duanya sesuai dengan bahagian yang dicetak dengan sempurna.
- LED RGB WS2812B Ring - 16 LED 68mm diameter luar - anda boleh menggunakan cincin apa pun walaupun dengan jumlah LED yang berbeza (perlu menukar satu pemalar dalam kod - # tentukan NUMPIXELS 16) dengan diameter maksimum 76mm (anda juga boleh menggunakan Neopixel Stick dengan 8x LED atau sebarang jalur LED dengan WS2812b).
Contoh cincin: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm
Untuk montaj anda boleh menggunakan lubang yang dicetak di bahagian tengah. Mereka merangkumi hampir semua pilihan (tidak perlu cincin berpusat 100%).
Wayar
Kiub
- Filamen PLA untuk bahagian atas kubus - gunakan warna putih kerana telus tidak bagus (LED kelihatan dan warna tidak halus), cadangan saya ialah Prusament Vanilla White
- Filamen PLA untuk bahagian bawah, tengah dan butang - gunakan warna gelap kerana beberapa modul Arduino mempunyai lampu di bahagian atas dan ia tidak sesuai dengan warna LED kubus, cadangan saya adalah Prusament Galaxy Black
- 1x M3x5 Self Tapping Screw - Panjang (10mm) dan bentuk kepala tidak kritikal - skru tidak kelihatan
- 2x M2x3 Self Tapping Screw - Panjang (5mm) dan bentuk kepala tidak kritikal - skru tidak kelihatan
Alat
- Pencetak 3D
- Berbilang meter
- Besi pematerian
- Pemutar skru
Langkah 2: Mencetak
Semua bahagian ColorCube dirancang dalam Autodesk Fusion360. fail f3d dilampirkan.
ColorCube dicetak pada pencetak Prusa i3 MK3S dengan semua tetapan lalai dan saya tidak mengharapkan perubahan yang diperlukan pada pencetak yang berbeza. Gunakan tetapan kegemaran anda untuk PLA (jika dicetak pada PLA, tidak ada masalah untuk menggunakan PETG atau ASA).
Parameter percetakan 3d:
- Lapisan 0.2 mm (tetapan KUALITI 0.2mm pada PrusaSlicer)
- Tetapan Prusament PLA Filament di PrusaSlicer
- Isi 15%
- Tiada sokongan
- Tanpa Brim
Langkah 3: Litar
Langkah 4: Pematerian
Amaran: Gunakan multi-meter untuk memastikan bahawa DC-DC booster MT3608 mengeluarkan 5V. Pertama - sebelum mengukur - putar potongan mengikut arah jam ke hujung (mengklik). Apabila menyambungkan voltan (3, 7V) untuk memasukkannya, ia harus memberikan nilai yang sama. Belok lawan arah jam (anda memerlukan 10-20 putaran penuh) dan tiba-tiba voltan meningkat. Tetapkan output 5V dengan lembut. (gambar)
Lihat bahagian bawah kubus yang dicetak. Setiap komponen mempunyai lubang sendiri. Ini menentukan berapa lama wayar antara setiap komponen yang anda perlukan (jangan gunakan wayar ekstra panjang jika tidak, anda mendapat rongga wayar). (gambar)
Kabel pateri antara cincin Arduino Nano dan LED sahaja (3 wayar: merah 5V - 5V, GND hitam - GND, biru D6 - DI). Jalankan ujian fungsi cincin LED dari bab seterusnya. (gambar)
Sekiranya semuanya OK teruskan dengan menambahkan Gyro MPU6050 (5 wayar: merah 5V - VCC, hitam GND - GND, biru A4 - SDA, hijau A5 - SCL, kuning D2 - INT). Muat naik kod dan ujian ColorCube.ino (komponen lain hanya untuk bateri dan pengecasan). (gambar)
Sekiranya semua OK, tambah komponen yang lain. Hanya ada wayar merah (+) dan hitam (-). Pilih pin kanan pada butang mengunci diri (tidak disambungkan apabila tidak ditekan). Uji kefungsian bateri dan pengecasan bateri. (gambar)
Lampu LED merah pada TP4056 semasa mengecas dan lampu LED biru apabila dicas sepenuhnya. Lubang di atas TP4056 di bahagian bercetak tengah melewati lampu LED ke bahagian atas ColorCube dan anda dapat mengenali fasa pengisian. (gambar)
Langkah 5: Kod
Pertama anda mesti memuat turun perpustakaan yang diperlukan.
Terdapat arahan terperinci untuk perpustakaan Adafruit Neopixel:
Ujian fungsi cincin LED: Anda boleh menguji litar anda dengan contoh yang disertakan di perpustakaan. Buka fail dari Fail / Contoh / Adafruit NeoPixels / ringkas dan muat naik (jangan lupa untuk mengatur baris ini dengan betul mengikut bilangan piksel yang anda gunakan: #definisi NUMPIXELS 16).
I2Cdev dan MPU6050: Muat turun dan unzip fail i2cdevlib-master.zip dari https://github.com/jrowberg/i2cdevlib. Salin borang unzip folder i2cdevlib-master / Arduino dua subfolder: I2Cdev dan MPU6050. Kedua-duanya menyalin ke folder perpustakaan Arduino IDE (Dokumen / Arduino / perpustakaan jika pemasangan lalai).
Jangan lupa untuk memulakan semula 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 di Arduino Uno & kebanyakan papan #define PIN 6 #define NUMPIXELS 16 // Tetapkan bilangan piksel LED Adafruit_NeoPixel yang betul (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = salah; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Kuarterion q; Graviti VectorFloat; putaran apungan [3]; int x, y, z; bool tidak menentu mpuInterrupt = false; batal dmpDataReady () {mpuInterrupt = true; } batal persediaan () {Serial.begin (115200); piksel.begin (); pixels.clear (); piksel.setBrightness (128); #jika ditakrifkan (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // sertai bas I2C (perpustakaan I2Cdev tidak melakukan ini secara automatik) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // Jam 400kHz I2C. Komen baris ini jika menghadapi kesukaran penyusunan #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif semasa (! bersiri); Serial.println (F ("Memulakan peranti I2C …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // sahkan sambungan Serial.println (F ("Menguji sambungan peranti …")); Serial.println (mpu.testConnection ()? F ("Sambungan MPU6050 berjaya"): F ("Sambungan MPU6050 gagal")); // tunggu siap // Serial.println (F ("\ nHantar mana-mana watak untuk memulakan pengaturcaraan dan demo DMP:")); // while (Serial.available () && Serial.read ()); // penyangga kosong // sementara (! Serial.available ()); // tunggu data // sementara (Serial.available () && Serial.read ()); // buffer kosong lagi // muat dan konfigurasikan DMP Serial.println (F ("Memulakan DMP …")); devStatus = mpu.dmpInitialize (); // sediakan offset gyro anda sendiri di sini, diskala untuk kepekaan min mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 default kilang untuk cip ujian saya // pastikan ia berfungsi (mengembalikan 0 jika ya) jika (devStatus == 0) {// Masa Kalibrasi: menjana offset dan menentukur MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // hidupkan DMP, sekarang sudah siap Serial.println (F ("Mengaktifkan DMP …")); mpu.setDMPEnabled (benar); // aktifkan pengesanan gangguan Arduino Serial.print (F ("Mengaktifkan pengesanan gangguan (gangguan luaran Arduino")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (") …")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // tetapkan bendera DMP Sedia kami supaya fungsi gelung utama () tahu tidak mengapa menggunakannya Serial.println (F ("DMP siap! Menunggu gangguan pertama …")); dmpReady = benar; // dapatkan ukuran paket DMP yang diharapkan untuk perbandingan paket kemudianSize = mpu.dmpGetFIFOPacketSize (); } lain {// KESALAHAN! // 1 = muatan memori awal gagal // 2 = Kemas kini konfigurasi DMP gagal // (jika akan rosak, biasanya kodnya akan menjadi 1) Serial.print (F ("Permulaan DMP gagal (kod")); Serial. cetak (devStatus); Serial.println (F (")")); }} gelung void () {if (! dmpReady) kembali; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Dapatkan paket Terkini // paparkan sudut Euler dalam darjah mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& graviti, & q); mpu.dmpGetYawPitchRoll (putaran, & q, & graviti); } Serial.print ("X"); Serial.print (rotace [2] * 180 / M_PI); Serial.print ("\ t Y"); Serial.print (rotace [1] * 180 / M_PI); Serial.print ("\ t Z"); Serial.println (rotace [0] * 180 / M_PI); x = putaran [2] * 180 / M_PI; y = putaran [1] * 180 / M_PI; z = putaran [0] * 180 / M_PI; jika (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (255, 0, 0); // Merah apabila berpusing ke sisi} lain jika (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Hijau apabila berpusing ke sisi kedua} yang lain jika (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Kuning apabila berpusing ke sisi ketiga} lain jika (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Biru apabila berpusing ke sisi keempat} yang lain jika (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Hitam apabila terbalik} jika (activeColor! = OldActiveColor) {pixels.clear (); pixels.fill (activeColor); piksel.show (); oldActiveColor = aktifColor; }}
Akhirnya anda dapat membuka dan memuat naik fail ColorCube.ino. Masukkan ColorCube dari permukaan rata dan hidupkan. Jangan bergerak sehingga ia mulai terang dengan warna putih setelah penentukuran (beberapa saat). Seterusnya anda boleh meletakkan ColorCube di sisi dan warna akan berubah - setiap sisi mempunyai warna tersendiri - merah, hijau, biru, kuning. ColorCube padam apabila ia terbalik.
Langkah 6: Berkumpul
Bersikap lembut semasa berkumpul. Wayar dan semua bahagian tidak menyukai tingkah laku kasar.
Bahagian dicetak butang 3d - masukkan butang ke lubang di bahagian bawah yang dicetak dengan lembut (seperti yang ditunjukkan pada gambar), ia mesti masuk dan keluar dengan lancar, jika tidak menggunakan pisau bedah atau pisau tajam atau kertas pasir untuk membuang semua lebihan bahan (kebanyakannya berada di dalam bahagian atas lubang bulatan di bahagian bawah). (gambar)
Letakkan MPU-6050, Arduino Nano, TP4056 dan MT3608 ke lubang mereka. Kotak itu mempunyai penonjolan di mana anda memasukkan MPU-6050 dan MT3608. Pasang penyambung USB Arduino Nano dan TP4056 ke lubang mereka di dinding sisi kotak. (gambar)
Gunakan kunci bercetak 3d untuk memperbaiki komponen (pastikan semua komponen meletakkan bahagian bawah dengan rapat). Ini penting kerana seseorang pasti akan cuba bermain dengan ColorCube anda seperti dadu. (gambar)
Letakkan dan selamatkan bateri di dalam lubang jika tidak kuat.
Letakkan butang mengunci diri ke lubang yang disediakan di bahagian bawah. Butang mengunci diri mesti berada dalam kedudukan ON (pendek). Tekan butang ke bawah dengan perlahan. Uji kefungsian dengan butang dicetak 3d. (gambar)
Gunakan dua skru M2 untuk memasang Lingkaran LED ke bahagian bercetak tengah. Adalah baik untuk menggunakan orientasi cincin di mana kenalan wayar berada di lubang bulat bahagian tengah bercetak. (gambar)
Pilihan: Gunakan setetes panas di sana sini - sambungan wayar untuk berdering, untuk wayar yang terlalu lama, jika ada yang tidak cukup ketat dll. Ia boleh menjadikan ColorCube anda lebih tahan lama.
Susun wayar di dalam ColorCube agar tidak dicubit oleh bahagian yang dicetak. Letakkan bahagian tengah ke bahagian bawah. Gunakan skru M3 untuk memperbaikinya. (gambar)
Akhir sekali tekan perlahan bahagian bercetak ke bahagian bawah. (gambar)
Langkah 7: Selesai
Tahniah. Berseronok.
Disyorkan:
Pemegang gambar dengan pembesar suara terbina dalam: 7 Langkah (dengan gambar)
Pemegang Gambar Dengan Pembesar Suara Built-In: Berikut adalah projek yang hebat untuk dilaksanakan pada hujung minggu, jika anda ingin menjadikan anda pembesar suara yang boleh menyimpan gambar / kad pos atau bahkan senarai tugas anda. Sebagai sebahagian daripada pembangunan, kami akan menggunakan Raspberry Pi Zero W sebagai nadi projek, dan
Cara: Memasang Raspberry PI 4 Tanpa Kepala (VNC) Dengan Imej dan Gambar Rpi: 7 Langkah (dengan Gambar)
Howto: Memasang Raspberry PI 4 Headless (VNC) Dengan Imej dan Gambar Rpi: Saya merancang untuk menggunakan Rapsberry PI ini dalam sekumpulan projek yang menyeronokkan di blog saya. Jangan ragu untuk melihatnya. Saya ingin kembali menggunakan Raspberry PI saya tetapi saya tidak mempunyai Papan Kekunci atau Tetikus di lokasi baru saya. Sudah lama saya menyediakan Raspberry
Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!: 9 Langkah (dengan Gambar)
Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!: Selama bertahun-tahun, saya telah membiasakan diri untuk mengambil patung kecil dengan saya semasa dalam perjalanan: Saya sering membeli artoy kosong (seperti gambar dalam gambar) dan cat ia sesuai dengan bendera dan tema negara yang saya lawati (dalam kes ini, Sisilia). T
Cara Membongkar Komputer Dengan Langkah dan Gambar yang Mudah: 13 Langkah (dengan Gambar)
Cara Membongkar Komputer Dengan Langkah dan Gambar yang Mudah: Ini arahan mengenai cara membongkar PC. Sebilangan besar komponen asas adalah modular dan mudah dikeluarkan. Walau bagaimanapun, adalah penting untuk anda mengaturnya. Ini akan membantu mengelakkan anda kehilangan bahagian, dan juga dalam membuat pemasangan semula
Cara Pixellate Gambar - Dengan Mudah: 3 Langkah (dengan Gambar)
Cara Pixellate Gambar - Mudah: Yang cepat ini adalah teknik untuk menggunakan penapisan piksel untuk mengekalkan anonim, martabat dan lain-lain pada gambar digital. Anda hanya memerlukan penyunting gambar sederhana seperti MS Paint, saya menggunakan MS Paint. Untuk alternatif, lihat ini Boleh diajar