Mündəricat:
- Addım 1: Materiallar
- Addım 2: Çap
- Addım 3: Dövrə
- Addım 4: Lehimləmə
- Addım 5: Kod
- Addım 6: Montaj
- Addım 7: Tamamlandı
Video: ColorCube: 7 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Bu lampanı nəvəm rənglər öyrənərkən hazırladım. MagicCube layihəsindən ilham aldım, amma nəhayət bütün hissələri sıfırdan yaratdım. Çap etmək və yığmaq asandır və gyro modulunun necə işlədiyini öyrənəcəksiniz.
Addım 1: Materiallar
Arduino hissəsi:
- Arduino Nano (lehim başlıq pinləri olmadan daha yaxşıdır)
- MPU-6050 3 Eksenli Gyro Modulu
- TP4056 Mikro USB Batareya Şarj Cihazı Modulu
- MT3608 Step Up Power Booster Modulu
- LiPo Batareya 902936 900mA və ya 503035 3.7V 500mA. 3, 7V və 35x30x15 mm -dən kiçik hər hansı bir LiPo batareyasından istifadə edə bilərsiniz, ancaq batareyanı çuxurda bağlamalısınız.
- PS-22F28 Öz-özünə kilidləmə düyməsi və ya PS-22F27 Öz-özünə kilidləmə düyməsi hər ikisi də çap olunmuş hissəyə mükəmməl uyğun gəlir.
- LED RGB WS2812B Üzük - 16 LED 68mm xarici diametri - müxtəlif diametrli LED -lər olsa belə istənilən halqadan istifadə edə bilərsiniz (kodda bir sabit dəyişmək məcburiyyətindəsiniz - #define NUMPIXELS 16), maksimum diametri 76 mm (bir Neopixel Çubuğu da istifadə edə bilərsiniz. 8x LED və ya WS2812b ilə hər hansı bir LED şeridi).
Üzük nümunələri: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm
Montaj üçün orta hissədə çap edilmiş hər hansı bir deşikdən istifadə edə bilərsiniz. Demək olar ki, hər hansı bir seçimi əhatə edir (üzükün 100% mərkəzdə olması lazım deyil).
Tellər
Küp
- Kubun üst hissəsi üçün PLA Filamenti - ağ rəng istifadə edin, çünki şəffaf yaxşı deyil (LEDlər görünür və rəng hamar deyil), mənim tövsiyəm Prusament Vanilla White
- Alt, orta və düymə hissələri üçün PLA Filamenti - tünd rəng istifadə edin, çünki bəzi Arduino modullarının üst tərəfində işıqlar var və kub rəngli LEDlərin rənglərinə uyğun gəlmir, mənim tövsiyəm Prusament Galaxy Black
- 1x M3x5 Vint - Uzunluq (10 mm) və başın forması kritik deyil - vida görünmür
- 2x M2x3 Vint - Uzunluq (5 mm) və başın forması kritik deyil - vintlər görünmür
Alətlər
- 3D printer
- Çox metrlik
- Lehimleme dəmir
- Tornavida
Addım 2: Çap
ColorCube -un bütün hissələri Autodesk Fusion360 -da hazırlanmışdır. f3d faylı əlavə olunur.
ColorCube, bütün standart parametrləri olan Prusa i3 MK3S printerində çap edildi və fərqli printerlərdə lazımlı dəyişiklik gözləmirəm. PLA üçün ən sevdiyiniz parametrlərdən istifadə edin (PLA üzərində çap olunarsa, PETG və ya ASA istifadə etməkdə heç bir problem yoxdur).
3d çap parametrləri:
- Layer 0.2 mm (PrusaSlicer -də 0.2mm QUALITY parametrləri)
- PrusaSlicer -də Prusament PLA Filament parametrləri
- 15% doldurun
- Dəstək yoxdur
- Ağız yoxdur
Addım 3: Dövrə
Addım 4: Lehimləmə
Xəbərdarlıq: DC-DC booster MT3608-in 5V çıxdığından əmin olmaq üçün bir çox metr istifadə edin. Birincisi - ölçmədən əvvəl trimi saat əqrəbi istiqamətində sona çevirin (tıklayarak). Gərginliyə (3, 7V) qoşulduqda, təxminən eyni dəyəri verməlidir. Saat yönünün əksinə çevirin (10-20 tam dönüşə ehtiyacınız olacaq) və birdən gərginlik yüksəlir. Çıxışa yumşaq bir şəkildə 5V qoyun. (Şəkil)
Kubun çap edilmiş alt hissəsinə baxın. Hər komponentin öz çuxuru var. Ehtiyac duyacağınız hər bir komponent arasındakı tellərin uzunluğunu təyin edir (əlavə uzun tellər istifadə etməyin, əks halda tel ormanını əldə edəcəksiniz). (Şəkil)
Yalnız Arduino Nano və LED halqası arasındakı lehim telləri (3 tel: qırmızı 5V - 5V, qara GND - GND, mavi D6 - DI). Növbəti fəsildə LED halqanın funksionallığını yoxlayın. (Şəkil)
Hər şey qaydasındadırsa, Gyro MPU6050 əlavə etməyə davam edin (5 tel: qırmızı 5V - VCC, qara GND - GND, mavi A4 - SDA, yaşıl A5 - SCL, sarı D2 - INT). ColorCube.ino kodunu yükləyin və sınayın (digər komponentlər yalnız batareya və şarj üçündür). (Şəkil)
Hər şey yaxşıdırsa, qalan komponentləri əlavə edin. Yalnız qırmızı (+) və qara (-) tellər var. Öz-özünə kilidləmə düyməsindəki sağ pinləri seçin (basılmadıqda bağlanmır). Batareya və batareya doldurma funksiyalarını yoxlayın. (Şəkil)
Şarj edərkən TP4056 -da qırmızı LED işıqlar və tam doldurulduqda mavi LED işıqlar. Orta çaplı hissədəki TP4056 üzərindəki çuxur LED işığını ColorCube -un üst hissəsinə keçir və şarj mərhələsini tanıyırsınız. (Şəkil)
Addım 5: Kod
Əvvəlcə lazımi kitabxanaları yükləməlisiniz.
Adafruit Neopixel kitabxanası üçün ətraflı təlimatlar var:
LED üzük funksionallığı testi: Dövrənizi kitabxanaya daxil edilmiş bir nümunə ilə sınaya bilərsiniz. Fayl/Nümunələr/Adafruit NeoPixels/sadə faylını açın və yükləyin (istifadə etdiyiniz piksel sayına görə bu xətti düzgün qurmağı unutmayın: #define NUMPIXELS 16).
I2Cdev və MPU6050: https://github.com/jrowberg/i2cdevlib saytından i2cdevlib-master.zip faylını yükləyin və açın. İ2cdevlib-master/Arduino iki alt qovluğu açılmamış qovluqdan kopyalayın: I2Cdev və MPU6050. Hər ikisi də Arduino IDE kitabxana qovluğuna kopyalanır (Sənədlər/Arduino/kitabxanalar standart quraşdırma olarsa).
Kitabxanalar kopyalanandan sonra Arduino IDE -ni yenidən başlatmağı unutmayın.
#include #ifdef _AVR_ #include // 16 MHz Adafruit Trinket #endif #include "Wire.h" daxil "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // Arduino Uno -da pin 2 istifadə edin və əksər lövhələrdə #PIN 6 -ı təyin edin #NUMPIXELS 16 -ı təyin edin // Adafruit_NeoPixel piksellərinin düzgün sayını təyin edin (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = yalan; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Quaternion q; VectorFloat çəkisi; üzən fırlanma [3]; int x, y, z; uçucu bool mpuInterrupt = false; boş dmpDataReady () {mpuInterrupt = doğru; } void setup () {Serial.begin (115200); piksel.begin (); piksel.clear (); piksel.setBrightness (128); #if müəyyən edildikdə (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // I2C avtobusuna qoşul (I2Cdev kitabxanası bunu avtomatik olaraq etmir) #I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C saatı. Kompilyasiya çətinlikləri varsa bu sətiri şərh edin #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Serial); Serial.println (F ("I2C cihazlarının işə salınması …")); mpu.initialize (); pinMode (INTERRUPT_PIN, GİRİŞ); // əlaqəni yoxlayın Serial.println (F ("Cihaz əlaqələrini yoxlayır …")); Serial.println (mpu.testConnection ()? F ("MPU6050 bağlantısı uğurlu"): F ("MPU6050 bağlantısı uğursuz oldu")); // hazır olanı gözləyin // Serial.println (F ("\ nDMP proqramlaşdırma və demoya başlamaq üçün hər hansı bir xarakter göndərin:")); // while (Serial.available () && Serial.read ()); // boş tampon // while (! Serial.available ()); // məlumatları gözləyin // while (Serial.available () && Serial.read ()); // yenidən boş tampon // DMP Serial.println -ni yükləyin və konfiqurasiya edin (F ("DMP -ni işə salır…")); devStatus = mpu.dmpInitialize (); // mpu.setXGyroOffset (0) üçün minimum həssaslıq üçün ölçülmüş öz girro ofsetlərinizi təmin edin; mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // test çipim üçün 1688 zavod standartı // işlədiyinə əmin olun (əgər varsa 0 qaytarır) əgər (devStatus == 0) {// Kalibrləmə vaxtı: ofsetlər yaradın və MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // hazır olduğu üçün DMP -ni yandırın Serial.println (F ("DMP -nin aktiv edilməsi …")); mpu.setDMPEnabled (doğru); // Arduino kəsilməsinin aşkarlanmasını aktivləşdirin Serial.print (F ("Aralıq kəsilməsini aktivləşdirmə (Arduino xarici kəsmə")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // DMP Hazır bayrağımızı elə qurun ki, əsas loop () funksiyası ondan istifadə etməyinizin yaxşı olduğunu bilsin Serial.println (F ("DMP hazır! İlk kəsilmə gözləyir …")); dmpReady = doğru; // sonrakı müqayisə üçün gözlənilən DMP paket ölçüsünü əldə edin packetSize = mpu.dmpGetFIFOPacketSize (); } başqa {// HATA! // 1 = ilkin yaddaş yüklənməsi uğursuz oldu // 2 = DMP konfiqurasiya yeniləmələri uğursuz oldu // (pozulacaqsa, adətən kod 1 olacaq) Serial.print (F ("DMP Başlanğıcı uğursuz oldu (kod")); Serial. çap (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) qayıt; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Ən Son Paketi Alın // Euler açılarını dərəcə ilə göstərin mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& cazibə qüvvəsi, & q); mpu.dmpGetYawPitchRoll (fırlanma, q, və çəkisi); } Serial.print ("X"); Serial.print (fırlanma [2] * 180/M_PI); Serial.print ("\ t Y"); Serial.print (fırlanma [1] * 180/M_PI); Serial.print ("\ t Z"); Serial.println (fırlanma [0] * 180/M_PI); x = fırlanma [2] * 180/M_PI; y = fırlanma [1] * 180/M_PI; z = fırlanma [0] * 180/M_PI; if (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = piksel. Color (255, 0, 0); // Yan tərəfə dönəndə qırmızı} else if if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = piksel. Color (0, 255, 0); // İkinci tərəfə dönəndə yaşıl} başqa} if (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = piksel. Color (255, 255, 0); // Üçüncü tərəfə çevrildikdə sarı} başqa} if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = piksel. Color (0, 0, 255); // Dördüncü tərəfə dönəndə mavi}} başqa halda (abs (y)> 135 && abs (x)> 135) {activeColor = piksel. Color (0, 0, 0); // Ters çevrildikdə qara} if (activeColor! = OldActiveColor) {piksel.clear (); piksel doldurun (activeColor); piksel.show (); oldActiveColor = aktivRəng; }}
Sonda ColorCube.ino faylını açıb yükləyə bilərsiniz. ColorCube düz bir səthə qoyun və yandırın. Kalibrdən sonra (bir neçə saniyə) ağ rənglə işıqlanana qədər onu hərəkət etdirməyin. Sonra ColorCube -u yan tərəfə qoya bilərsiniz və rəng dəyişəcək - hər tərəfin öz rəngi var - qırmızı, yaşıl, mavi, sarı. ColorCube tərs çevrildikdə sönür.
Addım 6: Montaj
Quraşdırma zamanı yumşaq olun. Tellər və bütün hissələr kobud davranışı sevmir.
Düyməli 3d çaplı hissə - düyməni altdakı çap hissəsindəki çuxura yumşaq bir şəkildə qoyun (şəkildə göstərildiyi kimi), bütün artıq materialları (əsasən içərisində alt hissədə bir dairə çuxurunun üstü). (Şəkil)
MPU-6050, Arduino Nano, TP4056 və MT3608 deliklərinə qoyun. Qutunun altına MPU-6050 və MT3608 daxil etdiyiniz çıxıntılar var. Arduino Nano və TP4056 USB konnektorlarını qutunun yan divarlarında olan deliklərə qoyun. (Şəkil)
Komponentləri düzəltmək üçün 3d çaplı kiliddən istifadə edin (bütün komponentlərin alt hissəyə möhkəm bir şəkildə qoyulduğundan əmin olun). Bu vacibdir, çünki kimsə mütləq ColorCube ilə zar kimi oynamağa çalışacaq. (Şəkil)
Batareyanı möhkəm tutmadıqda çuxuruna qoyun və bağlayın.
Öz-özünə kilidləmə düyməsini alt hissədəki hazırlanmış çuxura qoyun. Öz-özünə kilidləmə düyməsi ON (qısa) vəziyyətdə olmalıdır. Yavaşca düyməni aşağı salın. 3d çap edilmiş düymə ilə funksionallığı sınayın. (şəkillər)
LED üzüyü orta çaplı hissəyə bağlamaq üçün iki M2 vint istifadə edin. Tel kontaktlarının orta çap hissəsinin yuvarlaq bir çuxurunda olduğu halqanın istiqamətini istifadə etmək yaxşıdır. (şəkillər)
İsteğe bağlı: Burada və orada bir damla isti yapışqan istifadə edin - çox uzun tellər üçün halqaya bağlanan tellər, bir şey kifayət qədər sıx deyilsə və s. ColorCube -nuzu daha davamlı edə bilər.
ColorCube içindəki telləri çap olunmuş hissələrlə sıxılmamasını təmin edin. Orta hissəni aşağıya qoyun. Düzəltmək üçün M3 vintini istifadə edin. (Şəkil)
Nəhayət, yuxarıdakı hissəni yumşaq bir şəkildə aşağıya itələyin. (Şəkil)
Addım 7: Tamamlandı
Təbriklər. Əylənin.
Tövsiyə:
Bir addım sayğacı necə etmək olar ?: 3 addım (şəkillərlə)
Addım Sayğacı Necə Hazırlanır ?: Bir çox idman növlərində yaxşı çıxış edirdim: gəzmək, qaçmaq, velosiped sürmək, badminton oynamaq və s. Yaxşı, qarın qarnına baxın …… Yaxşı, hər halda, məşq etmək üçün yenidən başlamağa qərar verdim. Hansı avadanlıqları hazırlamalıyam?
Addım sayğacı - Mikro: Bit: 12 addım (şəkillərlə)
Step Counter - Micro: Bit: Bu layihə bir addım sayğacı olacaq. Addımlarımızı ölçmək üçün Micro: Bit -ə quraşdırılmış akselerometr sensorundan istifadə edəcəyik. Micro: Bit hər dəfə silkələnəndə sayına 2 əlavə edəcəyik və ekranda göstərəcəyik
Arduino Uno ilə Akustik Levitasiya Addım-addım (8 addım): 8 addım
Arduino Uno ilə Akustik Levitasiya Adım Adım (8 addım): ultrasəs səs ötürücüləri L298N Dc dişi qadın adapteri kişi dc pinli Arduino UNOBreadboard Bu necə işləyir: Əvvəlcə Arduino Uno-ya kod yükləyirsiniz (rəqəmsal ilə təchiz edilmiş bir mikro nəzarətçidir) və kodu çevirmək üçün analog portlar (C ++)
Bolt - DIY Simsiz Şarj Gecə Saatı (6 addım): 6 addım (şəkillərlə)
Bolt - DIY Simsiz Şarj Gecə Saatı (6 addım): İndüktif şarjlar (simsiz şarj və ya simsiz şarj kimi də tanınır) simsiz enerji ötürmə növüdür. Portativ cihazlara elektrik enerjisi vermək üçün elektromaqnit induksiyasından istifadə edir. Ən çox yayılmış tətbiq Qi simsiz şarj cihazıdır
Asan addımlar və şəkillərlə kompüteri necə sökmək olar: 13 addım (şəkillərlə)
Asan Adımlar və Şəkillərlə Kompüteri Sökmək Necə: Bu, kompüterin sökülməsi ilə bağlı təlimatdır. Əsas komponentlərin çoxu moduldur və asanlıqla çıxarılır. Bununla birlikdə, bu mövzuda təşkilatlanmanız vacibdir. Bu, hissələri itirməməyinizə və eyni zamanda montajı asanlaşdırmağa kömək edəcək