İçindekiler:
- Adım 1: Malzemeler
- 2. Adım: Yazdırma
- Adım 3: Devre
- Adım 4: Lehimleme
- Adım 5: Kod
- Adım 6: Montaj
- 7. Adım: Tamamlandı
Video: ColorCube: 7 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bu lambayı torunum renkleri öğrenirken yaptım. MagicCube projesinden ilham aldım ama sonunda tüm parçaları sıfırdan yarattım. Basması ve montajı kolaydır ve gyro modülünün nasıl çalıştığı hakkında bilgi edineceksiniz.
Adım 1: Malzemeler
Arduino parçası:
- Arduino Nano (lehim başlık pimleri olmadan daha iyi)
- MPU-6050 3 Eksenli Gyro Modülü
- TP4056 Mikro USB Pil Şarj Modülü
- MT3608 Yükseltici Güçlendirme Modülü
- LiPo Pil 902936 900mA veya 503035 3.7V 500mA. 3, 7V ve 35x30x15mm'den küçük herhangi bir LiPo pili kullanabilirsiniz ancak pili deliğe sabitlemeniz gerekir.
- PS-22F28 Kendinden kilitlenen düğme veya PS-22F27 Kendinden kilitlenen düğme, basılı parçaya mükemmel uyum sağlar.
- LED RGB WS2812B Halka – 16 LED 68mm dış çap – farklı sayıda LED ile bile herhangi bir halkayı kullanabilirsiniz (kodda bir sabiti değiştirmeniz gerekir – #define NUMPIXELS 16) maksimum çapı 76 mm (ayrıca bir Neopixel Stick kullanabilirsiniz) 8x LED veya WS2812b ile herhangi bir LED şerit).
Halka örnekleri:8 LED 32 mm12 LED 38 mm12 LED 50 mm16 LED 60 mm24 LED 66 mm16 LED 44 mm
Montaj için orta kısımda basılan deliklerden herhangi birini kullanabilirsiniz. Hemen hemen her seçeneği kapsarlar (halkanın %100 ortalanmış olması gerekli değildir).
teller
Küp
- Küpün üst kısmı için PLA Filament – beyaz renk kullanın çünkü şeffaflık iyi değildir (LED'ler görünür ve renk düzgün değildir), benim tavsiyem Prusament Vanilla White
- Alt, orta ve düğme kısımları için PLA Filament – koyu renk kullanın çünkü bazı Arduino modüllerinin üst kısmında ışıklar vardır ve küp LED renklerine uymaz, benim tavsiyem Prusament Galaxy Black
- 1x M3x5 Kendinden Vuran Vida - Uzunluk (10mm) ve kafa şekli kritik değildir - vida görünmez
- 2x M2x3 Kendinden Vuran Vida - Uzunluk (5mm) ve kafa şekli kritik değildir - vidalar görünmez
Aletler
- 3 boyutlu yazıcı
- çok metre
- Havya
- Tornavida
2. Adım: Yazdırma
ColorCube'ün tüm parçaları Autodesk Fusion360'ta tasarlanmıştır. f3d dosyası ektedir.
ColorCube, tüm varsayılan ayarlarla Prusa i3 MK3S yazıcıda yazdırıldı ve farklı yazıcılarda gerekli herhangi bir değişikliği beklemiyorum. PLA için favori ayarlarınızı kullanın (PL üzerine yazdırılmışsa, PETG veya ASA'yı kullanmak sorun olmaz).
3d baskı parametreleri:
- Katman 0,2 mm (PrusaSlicer'da 0,2 mm KALİTE ayarları)
- PrusaSlicer'da Prusament PLA Filament ayarları
- Dolgu %15
- Destek yok
- Kenar Yok
Adım 3: Devre
Adım 4: Lehimleme
Uyarı: DC-DC güçlendirici MT3608'in 5V çıkış verdiğinden emin olmak için bir multimetre kullanın. İlk olarak – ölçmeden önce – trimi saat yönünde sonuna kadar çevirin (klik). Girişe voltaj (3, 7V) bağlandığında yaklaşık aynı değeri vermesi gerekir. Saat yönünün tersine çevirin (10-20 tam dönüşe ihtiyacınız olacak) ve aniden voltaj yükselir. Çıkışta 5V'u yumuşak bir şekilde ayarlayın. (Fotoğraf)
Küpün basılı alt kısmına bir göz atın. Her bileşenin kendi deliği vardır. Her bir bileşen arasında ne kadar kabloya ihtiyacınız olacağını tanımlar (ekstra uzun kablolar kullanmayın, aksi halde kablo karmaşası yaşarsınız). (Fotoğraf)
Sadece Arduino Nano ve LED halkası arasındaki lehim telleri (3 kablo: kırmızı 5V - 5V, siyah GND – GND, mavi D6 - DI). Bir sonraki bölümdeki LED halka işlevsellik testini çalıştırın. (Fotoğraf)
Her şey yolundaysa Gyro MPU6050 (5 kablo: kırmızı 5V - VCC, siyah GND - GND, mavi A4 - SDA, yeşil A5 - SCL, sarı D2 - INT) ekleyerek devam edin. ColorCube.ino kodunu yükleyin ve test edin (diğer bileşenler yalnızca pil ve şarj içindir). (Fotoğraf)
Her şey yolundaysa, kalan bileşenleri ekleyin. Sadece kırmızı (+) ve siyah (-) teller vardır. Kendinden kilitleme düğmesindeki sağ pinleri seçin (basılmadığında bağlı değildir). Pil ve pil şarjı üzerindeki işlevselliği test edin. (Fotoğraf)
TP4056'da şarj olurken kırmızı LED yanar ve tam şarj olduğunda mavi LED yanar. Orta baskılı kısımda TP4056'nın üzerindeki delik, ColorCube'ün üst kısmına LED ışığı geçirir ve şarj aşamasını tanıyabilirsiniz. (Fotoğraf)
Adım 5: Kod
Öncelikle gerekli kütüphaneleri indirmelisiniz.
Adafruit Neopixel kütüphanesi için detaylı talimatlar bulunmaktadır:
LED halka fonksiyon testi: Kütüphanede bulunan örnek üzerinden devrenizi test edebilirsiniz. Dosya/Örnekler/Adafruit NeoPixels/simple'dan dosyayı açın ve yükleyin (kullandığınız piksel sayısına göre bu satırı doğru şekilde ayarlamayı unutmayın: #define NUMPIXELS 16).
I2Cdev ve MPU6050: https://github.com/jrowberg/i2cdevlib adresinden i2cdevlib-master.zip dosyasını indirin ve sıkıştırmasını açın. Sıkıştırılmamış i2cdevlib-master/Arduino klasörünü iki alt klasörden kopyalayın: I2Cdev ve MPU6050. Her ikisi de Arduino IDE kütüphane klasörüne kopyalanır (varsayılan kurulum ise Belgeler/Arduino/kütüphaneler).
Kütüphaneler kopyalandıktan sonra Arduino IDE'yi yeniden başlatmayı unutmayın.
#include #ifdef _AVR_ #include // 16 MHz Adafruit Biblo için gereklidir #endif #include "Wire.h" "I2Cdev.h" içerir #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // Arduino Uno ve çoğu kartta pin 2'yi kullanın #define PIN 6 #define NUMPIXELS 16 //Doğru LED sayısını ayarlayın Adafruit_NeoPixel piksel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor=0; bool dmpReady = yanlış; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t paketBoyutu; uint16_t fifoCount; uint8_t fifoBuffer[64]; Kuaterniyon q; VektörFloat yerçekimi; yüzer dönüş [3]; int x, y, z; uçucu bool mpuInterrupt = false; void dmpDataReady() { mpuInterrupt = true; } geçersiz kurulum() { Serial.begin(115200); piksel.begin(); piksel.clear(); piksel.setBrightness (128); #if tanımlı(_AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // I2C veri yoluna katıl (I2Cdev kitaplığı bunu otomatik olarak yapmaz) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); Wire.setClock(400000); // 400kHz I2C saati. Derleme sorunları yaşıyorsanız bu satırı yorumlayın #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif while (!Seri); Serial.println(F("I2C cihazları başlatılıyor…")); mpu.initialize(); pinMode(KESME_PIN, GİRİŞ); // bağlantıyı doğrula Serial.println(F("Cihaz bağlantılarını test ediyor…")); Serial.println(mpu.testConnection() ? F("MPU6050 bağlantısı başarılı"): F("MPU6050 bağlantısı başarısız")); // hazır bekleyin // Serial.println(F("\nDMP programlama ve demoyu başlatmak için herhangi bir karakter gönderin: ")); // while (Serial.available() && Serial.read()); // arabelleği boşalt // while (!Serial.available()); // verileri bekle // while (Serial.available() && Serial.read()); // arabelleği tekrar boşaltın // DMP'yi yükleyin ve yapılandırın Serial.println(F("DMP başlatılıyor…")); devStatus = mpu.dmpInitialize(); // burada minimum hassasiyet için ölçeklendirilmiş kendi gyro ofsetlerinizi sağlayın mpu.setXGyroOffset(0); mpu.setYGyroOffset(0); mpu.setZGyroOffset(0); mpu.setZAccelOffset(1688); // Test çipim için 1688 fabrika varsayılanı // çalıştığından emin olun (eğer öyleyse 0 döndürür) if (devStatus == 0) { // Kalibrasyon Süresi: ofsetler oluşturun ve MPU6050 mpu. CalibrateAccel(6); mpu. CalibrateGyro(6); mpu. PrintActiveOffsets(); // artık hazır olduğuna göre DMP'yi açın Serial.println(F("DMP Etkinleştiriliyor…")); mpu.setDMPEnabled(true); // Arduino kesinti tespitini etkinleştir AttachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus(); // DMP Ready bayrağımızı, ana loop() işlevinin onu kullanmanın uygun olduğunu bilmesi için ayarlayın Serial.println(F("DMP hazır! İlk kesme bekleniyor…")); dmpReady = doğru; // sonraki karşılaştırma için beklenen DMP paket boyutunu al packageSize = mpu.dmpGetFIFOPacketSize(); } başka { // HATA! // 1 = ilk bellek yüklemesi başarısız // 2 = DMP yapılandırma güncellemeleri başarısız // (bozulacaksa, kod genellikle 1 olur) Serial.print(F("DMP Başlatma başarısız (kod ")); Seri. print(devStatus); Serial.println(F(")")); } } void loop() { if (!dmpReady) dönüşü; if (mpu.dmpGetCurrentFIFOPacket(fifoBuffer)) { // En son paketi al // Euler açılarını derece olarak göster mpu.dmpGetQuaternion(&q, fifoBuffer); mpu.dmpGetGravity(&yerçekimi, &q); mpu.dmpGetYawPitchRoll(döndürme, &q, &yerçekimi); } Serial.print("X"); Serial.print(döndürme[2] * 180/M_PI); Serial.print(" \t Y "); Serial.print(döndürme[1] * 180/M_PI); Serial.print(" \t Z "); Serial.println(döndürme[0] * 180/M_PI); x=döndürme[2] * 180/M_PI; y=döndür[1] * 180/M_PI; z=döndür[0] * 180/M_PI; if(abs(x)<45 && abs(y)45 && abs(x)<135 && (mutlak(y)135)){ activeColor=pixels. Color(255, 0, 0); //Yan tarafa dönünce kırmızı }else if(x<-45 && abs(x)<135 && (abs(y)135)){ activeColor=pixels. Color(0, 255, 0); //İkinci tarafa dönünce yeşil }else if(y>45 && abs(y)<135 && (abs(x)135)){ activeColor=pixels. Color(255, 255, 0); //Üçüncü tarafa dönünce sarı }else if(y<-45 && abs(y)<135 && (abs(x)135)){ activeColor=pixels. Color(0, 0, 255); //Dördüncü tarafa döndüğünde mavi }else if(abs(y)>135 && abs(x)>135){ activeColor=pixels. Color(0, 0, 0); // Baş aşağıyken siyah } if(activeColor != oldActiveColor){ piksel.clear(); piksel.fill(activeColor); piksel.göster(); oldActiveColor=activeColor; } }
Sonunda ColorCube.ino dosyasını açıp yükleyebilirsiniz. ColorCube'u düz bir yüzeye koyun ve açın. Kalibrasyondan sonra beyaz renkle yanmaya başlayana kadar (birkaç saniye) hareket ettirmeyin. Daha sonra ColorCube'u bir tarafa koyabilirsiniz ve renk değişecektir - her tarafın kendi rengi vardır - kırmızı, yeşil, mavi, sarı. ColorCube, ters çevrildiğinde söner.
Adım 6: Montaj
Montaj sırasında nazik olun. Teller ve tüm parçalar kaba davranışı sevmez.
Düğme 3d baskılı kısım - düğmeyi alt baskılı kısımdaki deliğe (resimde gösterildiği gibi) yumuşak bir şekilde koyun, tüm fazla malzemeyi çıkarmak için neşter veya keskin bıçak veya zımpara kağıdı kullanmıyorsa (çoğunlukla içeride) düzgün bir şekilde içeri ve dışarı çıkması gerekir. alt kısımdaki daire deliğinin üstü). (Fotoğraf)
MPU-6050, Arduino Nano, TP4056 ve MT3608'i deliklerine yerleştirin. Kutu, MPU-6050 ve MT3608'i altına yerleştireceğiniz çıkıntılara sahiptir. Arduino Nano ve TP4056'nın USB konektörlerini kutunun yan duvarlarındaki deliklere yerleştirin. (Fotoğraf)
Bileşenleri sabitlemek için 3d baskılı kilit kullanın (tüm bileşenlerin alt kısma sıkıca oturduğundan emin olun). Bu önemlidir, çünkü birileri ColorCube'unuzla zarlarla olduğu gibi kesinlikle oynamaya çalışacaktır. (Fotoğraf)
Sıkı tutmuyorsa pili deliğine yerleştirin ve sabitleyin.
Alt kısımdaki hazırlanan deliğe Kendinden kilitli düğmeyi yerleştirin. Kendiliğinden kilitlenen buton ON konumunda (kısa) olmalıdır. Düğmeyi yavaşça aşağı itin. 3d baskılı düğme ile işlevselliği test edin. (fotoğraflar)
LED Halkayı orta baskılı kısma sabitlemek için iki M2 vida kullanın. Tel temaslarının orta baskılı parçanın yuvarlak deliğinde olduğu halkanın yönünü kullanmak iyidir. (fotoğraflar)
İsteğe bağlı: Arada bir bir damla sıcak tutkal kullanın – kabloların halka bağlantısı, çok uzun kablolar için, herhangi bir şey yeterince sıkı değilse vb. ColorCube'unuzu daha dayanıklı hale getirebilir.
ColorCube içindeki kabloları yazdırılan parçalar tarafından sıkıştırılmayacak şekilde düzenleyin. Orta kısmı alt kısma koyun. Sabitlemek için M3 vidayı kullanın. (Fotoğraf)
Son olarak, yazdırılan üst kısmı yavaşça alt kısma doğru itin. (Fotoğraf)
7. Adım: Tamamlandı
Tebrikler. İyi eğlenceler.
Önerilen:
Nasıl Yapılır: Raspberry PI 4 Headless (VNC) Kurulumu Rpi-imager ve Resimlerle: 7 Adım (Resimlerle)
Nasıl Yapılır: Raspberry PI 4 Headless (VNC) Kurulumu Rpi-imager ve Resimlerle: Bu Rapsberry PI'yi blogumda bir sürü eğlenceli projede kullanmayı planlıyorum. Kontrol etmekten çekinmeyin. Raspberry PI'mi kullanmaya geri dönmek istedim ama yeni konumumda Klavye veya Farem yoktu. Ahududu kurduğumdan beri bir süre geçti
Adım Sayacı Nasıl Yapılır?: 3 Adım (Resimlerle)
Adım Sayacı Nasıl Yapılır?: Yürümek, koşmak, bisiklete binmek, badminton oynamak gibi birçok sporda iyi performans gösterirdim. Binmeyi çok uzun zaman önce dolaşmak için seviyorum. Pekala, iri göbeğime bakın……Her neyse, egzersize yeniden başlamaya karar verdim. Hangi ekipmanı hazırlamalıyım?
Adım Adım Arduino Uno ile Akustik Kaldırma (8 adım): 8 Adım
Arduino Uno ile Akustik Kaldırma Adım Adım (8 adım): ultrasonik ses dönüştürücüler L298N erkek dc pinli Dc dişi adaptör güç kaynağı Arduino UNOBreadboardBu nasıl çalışır: İlk olarak, Arduino Uno'ya kod yüklersiniz (dijital ile donatılmış bir mikrodenetleyicidir) ve kodu dönüştürmek için analog bağlantı noktaları (C++)
Kolay Adımlar ve Resimlerle Bilgisayar Nasıl Sökülür: 13 Adım (Resimlerle)
Kolay Adımlar ve Resimlerle Bir Bilgisayar Nasıl Sökülür: Bu, bir PC'nin nasıl söküleceği hakkında bir talimattır. Temel bileşenlerin çoğu modülerdir ve kolayca çıkarılabilir. Ancak bu konuda organize olmanız önemlidir. Bu, parçaları kaybetmenize ve aynı zamanda yeniden birleştirmeyi kolaylaştırmaya yardımcı olacaktır
Adım Adım Ciclop 3d Tarayıcı My Way: 16 Adım (Resimlerle)
Adım Adım Ciclop 3d Tarayıcı Adım Adım: Merhabalar, ünlü Ciclop 3D tarayıcıyı gerçekleştireceğim. Orijinal projede iyi açıklanan tüm adımlar mevcut değil. Öncelikle işlemi basitleştirmek için bazı düzeltmeler yaptım. Tabanı yazdırıyorum ve PCB'yi yeniden sterilize ediyorum, ama devam et