Tartalomjegyzék:
- 1. lépés: Anyagok
- 2. lépés: Nyomtatás
- 3. lépés: Áramkör
- 4. lépés: Forrasztás
- 5. lépés: Kód
- 6. lépés: Összeszerelés
- 7. lépés: Kész
Videó: ColorCube: 7 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Ezt a lámpát az unokámnak készítettem, amikor színeket tanult. Engem a MagicCube projekt inspirált, de végül minden részt a semmiből hoztam létre. Könnyű nyomtatni és összeszerelni, és megismerheti a giroszkóp modul működését.
1. lépés: Anyagok
Arduino rész:
- Arduino Nano (jobb forrasztópáka nélkül)
- MPU-6050 3 tengelyes giroszkóp modul
- TP4056 Micro USB akkumulátor töltő modul
- MT3608 Step Up Power Booster modul
- LiPo akkumulátor 902936 900mA vagy 503035 3,7V 500mA. Bármilyen LiPo akkumulátort használhat, 3, 7 V -os és 35x30x15 mm -nél kisebb méretben, de rögzítenie kell az akkumulátort a lyukba.
- A PS-22F28 önzáró gomb vagy a PS-22F27 önzáró gomb tökéletesen illeszkedik a nyomtatott részhez.
- LED RGB WS2812B gyűrű - 16 LED 68 mm külső átmérő - bármilyen gyűrűt használhat akár különböző számú LED -del (egy konstansot kell megváltoztatni a kódban - #define NUMPIXELS 16), maximális átmérője 76 mm (Neopixel botot is használhat 8x LED vagy bármely LED szalag WS2812b -vel).
Példák gyűrűkre: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm
A montázshoz a középső részen nyomtatott lyukak bármelyikét használhatja. Szinte minden lehetőséget lefednek (nem szükséges, hogy a gyűrű 100% -ban középre legyen állítva).
Vezetékek
Kocka
- PLA szál a kocka felső részéhez - használjon fehér színt, mert az átlátszó nem jó (a LED -ek láthatók és a szín nem egyenletes), az én javaslatom a Prusament Vanilla White
- PLA szál az alsó, középső és gombos részekhez - sötét színt használjon, mert egyes Arduino modulok tetején fények vannak, és nem illeszkedik a kocka LED -ek színéhez, az én javaslatom a Prusament Galaxy Black
- 1x M3x5 önmetsző csavar - A hossz (10 mm) és a fej alakja nem kritikus - a csavar nem látható
- 2x M2x3 önmetsző csavar - A hossz (5 mm) és a fej alakja nem kritikus - a csavarok nem láthatók
Eszközök
- 3d nyomtató
- Többméteres
- Forrasztópáka
- Csavarhúzó
2. lépés: Nyomtatás
A ColorCube minden részét az Autodesk Fusion360 -ban tervezték. f3d fájl csatolva.
A ColorCube Prusa i3 MK3S nyomtatóra lett nyomtatva az összes alapértelmezett beállítással, és nem várok semmilyen szükséges változtatást a különböző nyomtatókon. Használja a PLA kedvenc beállításait (ha PLA -ra nyomtat, akkor nem probléma a PETG vagy az ASA használata).
3D nyomtatási paraméterek:
- Réteg 0,2 mm (0,2 mm -es MINŐSÉG -beállítások a PrusaSlicer -en)
- Prusament PLA Filament beállítások a PrusaSlicer -en
- Kitöltés 15%
- Nincs támogatás
- Nincs Brim
3. lépés: Áramkör
4. lépés: Forrasztás
Figyelmeztetés: Használjon multimétert, hogy megbizonyosodjon arról, hogy az MT3608 DC-DC erősítő 5 V-ot ad ki. Először - mérés előtt - forgassa el a kárpitot az óramutató járásával megegyező irányba (kattanás). Amikor feszültséget (3, 7V) csatlakoztat a bemenethez, annak körülbelül azonos értéket kell adnia. Fordítsa el az óramutató járásával ellentétes irányba (10-20 teljes fordulatra lesz szüksége), és hirtelen megemelkedik a feszültség. Lassan kapcsolja be a kimenetet 5 V -ra. (fénykép)
Nézze meg a kocka nyomtatott alsó részét. Minden alkatrésznek saját lyuk van. Ez határozza meg, hogy mennyi vezetékre lesz szüksége az egyes komponensek között (ne használjon extra hosszú vezetékeket, különben dróthálózatot kap). (fénykép)
Forrasztóvezetékek csak az Arduino Nano és a LED -gyűrű között (3 vezeték: piros 5V - 5V, fekete GND - GND, kék D6 - DI). Futtassa a LED -gyűrű működési tesztjét a következő fejezetből. (fénykép)
Ha minden rendben, folytassa a Gyro MPU6050 hozzáadásával (5 vezeték: piros 5V - VCC, fekete GND - GND, kék A4 - SDA, zöld A5 - SCL, sárga D2 - INT). Töltse fel a ColorCube.ino kódot és tesztet (a többi alkatrész csak akkumulátorra és töltésre szolgál). (fénykép)
Ha minden rendben, adja hozzá a többi összetevőt. Csak piros (+) és fekete (-) vezetékek vannak. Válassza ki a jobb oldali csapokat az önzáró gombon (nincs csatlakoztatva, ha nem nyomja meg). Az akkumulátor és az akkumulátor töltésének tesztelése. (fénykép)
Piros LED világít a TP4056 -on töltéskor, és kék LED világít, ha teljesen fel van töltve. A TP4056 feletti lyuk a középső nyomtatott részen átengedi a LED fényt a ColorCube felső részének, és felismerheti a töltés fázisát. (fénykép)
5. lépés: Kód
Először le kell töltenie a szükséges könyvtárakat.
Részletes utasítások találhatók az Adafruit Neopixel könyvtárhoz:
LED -gyűrű működési teszt: Az áramkört a könyvtárban található példával tesztelheti. Nyissa meg a fájlt a Fájl/Példák/Adafruit NeoPixels/fájlból és töltse fel (ne felejtse el helyesen beállítani ezt a sort a használt képpontok száma szerint: #define NUMPIXELS 16).
I2Cdev és MPU6050: Töltse le és bontsa ki az i2cdevlib-master.zip fájlt a https://github.com/jrowberg/i2cdevlib webhelyről. Másolja ki az i2cdevlib-master/Arduino két kicsomagolt mappáját: I2Cdev és MPU6050. Mindkettő az Arduino IDE könyvtármappájába másolódik (a Dokumentumok/Arduino/könyvtárak alapértelmezett telepítés esetén).
Ne felejtse el újraindítani az Arduino IDE programot a könyvtárak másolása után.
#include #ifdef _AVR_ #include // 16 MHz -es Adafruit csecsebecséhez szükséges #endif #include "Wire.h" include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // használja a 2 -es tűt az Arduino Uno -n és a legtöbb táblán #define PIN 6 #define NUMPIXELS 16 // Állítsa be a megfelelő számú LED -et Adafruit_NeoPixel pixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = hamis; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Kvaternion q; VectorFloat gravitáció; float rotace [3]; int x, y, z; illékony bool mpuInterrupt = hamis; void dmpDataReady () {mpuInterrupt = igaz; } void setup () {Serial.begin (115200); pixels.begin (); pixels.clear (); pixels.setBrightness (128); #if meghatározott (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // csatlakozzon az I2C buszhoz (az I2Cdev könyvtár ezt nem teszi meg automatikusan) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz -es I2C órajel. Kommentelje ezt a sort, ha fordítási nehézségei vannak #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, igaz); #endif while (! Sorozat); Serial.println (F ("I2C eszközök inicializálása …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // kapcsolat ellenőrzése Serial.println (F ("Eszközkapcsolatok tesztelése …")); Serial.println (mpu.testConnection ()? F ("Az MPU6050 kapcsolat sikeres"): F ("Az MPU6050 kapcsolat sikertelen")); // várjon a készre // Serial.println (F ("\ nKüldjön bármilyen karaktert a DMP programozás és a bemutató megkezdéséhez:")); // while (Serial.available () && Serial.read ()); // üres puffer // while (! Serial.available ()); // várjon az adatokra // while (Serial.available () && Serial.read ()); // ismét üres puffer // töltse be és konfigurálja a DMP Serial.println (F ("DMP inicializálása …")); devStatus = mpu.dmpInitialize (); // itt adja meg saját giroszkóp korrekcióit, minimális érzékenységre méretezve mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 gyári alapértelmezés a tesztcsipemhez // győződjön meg róla, hogy működött (0 -t ad vissza, ha igen), ha (devStatus == 0) {// Kalibrálási idő: generálja az eltolásokat és kalibrálja az MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // kapcsolja be a DMP -t, most, hogy készen áll Serial.println (F ("DMP engedélyezése …")); mpu.setDMPEnabled (igaz); // engedélyezze az Arduino megszakítás észlelését Serial.print (F ("A megszakítás észlelésének engedélyezése (Arduino külső megszakítás"))); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // állítsuk be a DMP Ready jelzőt, hogy a fő hurok () függvény tudja, hogy rendben van a használata Serial.println (F ("DMP kész! Várakozás az első megszakításra …")); dmpReady = igaz; // a várható DMP csomagméret beszerzése a későbbi összehasonlításhoz packetSize = mpu.dmpGetFIFOPacketSize (); } else {// HIBA! // 1 = a kezdeti memória betöltése sikertelen // 2 = a DMP konfiguráció frissítése sikertelen // (ha megszakad, a kód általában 1 lesz) Serial.print (F ("A DMP inicializálása sikertelen (kód"))); Soros. print (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// A legújabb csomag letöltése // Euler szögek megjelenítése mpu.dmpGetQuaternion fokban (& q, fifoBuffer); mpu.dmpGetGravity (& gravitáció, & q); mpu.dmpGetYawPitchRoll (rotáció, & q, & gravitáció); } Serial.print ("X"); Soros.nyomtatás (rotace [2] * 180/M_PI); Serial.print ("\ t Y"); Soros.nyomtatás (rotáció [1] * 180/M_PI); Soros.nyomtatás ("\ t Z"); Soros.println (rotáció [0] * 180/M_PI); x = forgás [2] * 180/M_PI; y = forgás [1] * 180/M_PI; z = forgás [0] * 180/M_PI; if (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (255, 0, 0); // Piros, amikor oldalra fordul} else if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Zöld, amikor a második oldalra fordulunk} else if (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Sárga, amikor a harmadik oldalra fordul} else if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Kék, amikor a negyedik oldalra fordulunk} else if (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Fekete, ha fejjel lefelé} if (activeColor! = OldActiveColor) {pixels.clear (); pixels.fill (activeColor); pixels.show (); oldActiveColor = aktívColor; }}
Végül megnyithatja és feltöltheti a ColorCube.ino fájlt. Helyezze a ColorCube -ot sima felületre, és kapcsolja be. Ne mozgassa, amíg a kalibrálás után (néhány másodperc) fehér színűvé nem válik. Ezután tegye a ColorCube -ot az oldalára, és a szín megváltozik - minden oldalnak saját színe van - piros, zöld, kék, sárga. A ColorCube kialszik, amikor fejjel lefelé fordítja.
6. lépés: Összeszerelés
Légy szelíd az összeszerelés során. A vezetékek és minden alkatrész nem szereti a durva viselkedést.
Gombos 3D nyomtatott rész - lágyan helyezze a gombot az alsó nyomtatott rész lyukába (amint az a képen látható), simán kell ki -be mennie, ha nem, használjon szikét vagy éles kést vagy csiszolópapírt az összes felesleges anyag eltávolításához (főleg belül kör lyuk teteje az alsó részen). (fénykép)
Helyezze a lyukakba az MPU-6050-et, az Arduino Nano-t, a TP4056-ot és az MT3608-at. A doboz kiemelkedésekkel rendelkezik, amelyek alá az MPU-6050 és az MT3608 behelyezhető. Helyezze az Arduino Nano és a TP4056 USB -csatlakozóit a doboz oldalfalain lévő lyukakba. (fénykép)
Használjon 3D nyomtatott zárat az alkatrészek rögzítéséhez (győződjön meg arról, hogy az összes alkatrész szorosan az alsó részen fekszik). Ez azért fontos, mert valaki biztosan megpróbál majd úgy játszani a ColorCube -jával, mint a kockákkal. (fénykép)
Helyezze be és rögzítse az akkumulátort a lyukába, ha nem tartja szorosan.
Helyezze az önzáró gombot az alsó rész előkészített lyukába. Az önzáró gombnak BE helyzetben kell lennie (rövid). Óvatosan nyomja le a gombot. Tesztelje a funkcionalitást a 3D nyomtatott gombbal. (fotók)
Két M2 csavarral rögzítse a LED -gyűrűt a középső nyomtatott részhez. Jól használható a gyűrű tájolása, ahol a huzalérintkezők a középső nyomtatott rész lekerekített lyukában vannak. (fotók)
Választható: Használjon egy csepp forró ragasztót itt -ott - vezetékek csatlakoztatása a gyűrűhöz, túl hosszú vezetékek esetén, ha valami nem elég szoros stb. Ez tartósabbá teheti a ColorCube -ot.
Úgy helyezze el a vezetékeket a ColorCube belsejében, hogy a nyomtatott alkatrészek ne csíphessék össze. Helyezze a középső részt az alsó részre. A rögzítéshez használjon M3 csavart. (fénykép)
Végül óvatosan nyomja a felső nyomtatott részt az alsó részre. (fénykép)
7. lépés: Kész
Gratulálok. Érezd jól magad.
Ajánlott:
DIY 37 LED Arduino rulett játék: 3 lépés (képekkel)
DIY 37 Leds Arduino Roulette Játék: A rulett egy kaszinójáték, amelyet a francia szóról neveztek el, jelentése kis kerék
Covid védősisak 1. rész: Bevezetés a Tinkercad áramkörökbe!: 20 lépés (képekkel)
Covid védősisak 1. rész: Bevezetés a Tinkercad áramkörökbe!: Helló, barátom! Ebben a kétrészes sorozatban megtanuljuk használni a Tinkercad áramköreit - ez egy szórakoztató, hatékony és oktató eszköz az áramkörök működésének megismerésére! A tanulás egyik legjobb módja, ha megteszed. Tehát először megtervezzük saját projektünket:
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: 7 lépés (képekkel)
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: Ezt a Rapsberry PI-t tervezem használni egy csomó szórakoztató projektben a blogomban. Nyugodtan nézd meg. Vissza akartam kezdeni a Raspberry PI használatát, de nem volt billentyűzetem vagy egér az új helyen. Rég volt, hogy beállítottam egy málnát
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
A számítógép szétszerelése egyszerű lépésekkel és képekkel: 13 lépés (képekkel)
A számítógép szétszerelése egyszerű lépésekkel és képekkel: Ez az utasítás a számítógép szétszereléséről szól. A legtöbb alapvető alkatrész moduláris és könnyen eltávolítható. Fontos azonban, hogy szervezett legyen ezzel kapcsolatban. Ez segít elkerülni az alkatrészek elvesztését, és az újra összerakást is