Obsah:

ColorCube: 7 kroků (s obrázky)
ColorCube: 7 kroků (s obrázky)

Video: ColorCube: 7 kroků (s obrázky)

Video: ColorCube: 7 kroků (s obrázky)
Video: Evolution of the Color CUBE 2024, Prosinec
Anonim
Image
Image
ColorCube
ColorCube
ColorCube
ColorCube

Tuto lampu jsem vyrobil pro vnučku, když se učila barvy. Inspiroval jsem se projektem MagicCube, ale nakonec jsem vytvořil všechny části od nuly. Je snadné jej vytisknout a snadno sestavit a získáte znalosti o tom, jak funguje gyro modul.

Krok 1: Materiály

Materiály
Materiály

Část Arduino:

  • Arduino Nano (lepší bez pájecích kolíků)
  • 3osý gyro modul MPU-6050
  • Modul nabíječky baterií Micro USB TP4056
  • Posilovací modul zesilovače MT3608
  • LiPo baterie 902936 900mA nebo 503035 3,7V 500mA. Můžete použít jakoukoli LiPo baterii s 3, 7V a velikostí menší než 35x30x15mm, ale musíte zajistit baterii v otvoru.
  • Samosvorné tlačítko PS-22F28 nebo samosvorné tlačítko PS-22F27 se perfektně hodí k tištěné části.
  • Kruh LED RGB WS2812B - 16 LED s vnějším průměrem 68 mm - můžete použít jakýkoli prsten i s různým počtem LED diod (v kódu musíte změnit jednu konstantu - #define NUMPIXELS 16) s maximálním průměrem 76 mm (můžete také použít Neopixel Stick s 8x LED nebo jakýkoli LED pásek s WS2812b).

Příklady kroužků: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm

Pro montáž můžete použít kterýkoli z otvorů vytištěných ve střední části. Pokrývají téměř jakoukoli možnost (není nutné mít prsten 100% vycentrovaný).

Dráty

Krychle

  • PLA filament pro horní část kostky - použijte bílou barvu, protože průhlednost není dobrá (LED diody jsou viditelné a barva není hladká), moje doporučení je Prusament Vanilla White
  • PLA filament pro spodní, střední a knoflíkové části - použijte tmavou barvu, protože některé moduly Arduino mají nahoře světla a nehodí se k barvám kostek LED, moje doporučení je Prusament Galaxy Black
  • 1x samořezný šroub M3x5 - délka (10 mm) a tvar hlavy nejsou rozhodující - šroub není viditelný
  • 2x samořezný šroub M2x3 - délka (5 mm) a tvar hlavy nejsou rozhodující - šrouby nejsou vidět

Nástroje

  • 3D tiskárna
  • Multimetr
  • Páječka
  • Šroubovák

Krok 2: Tisk

Tisk
Tisk
Tisk
Tisk

Všechny části ColorCube byly navrženy v Autodesk Fusion360. f3d soubor je přiložen.

ColorCube byla vytištěna na tiskárně Prusa i3 MK3S se všemi výchozími nastaveními a neočekávám žádné nutné změny na různých tiskárnách. Použijte své oblíbené nastavení pro PLA (pokud je vytištěno na PLA, není problém použít PETG nebo ASA).

Parametry 3D tisku:

  • Vrstva 0,2 mm (nastavení KVALITY 0,2 mm na PrusaSlicer)
  • Nastavení vlákna Prusament PLA na PrusaSlicer
  • Výplň 15%
  • Bez podpory
  • Žádný Brim

Krok 3: Okruh

Obvod
Obvod

Krok 4: Pájení

Pájení
Pájení
Pájení
Pájení
Pájení
Pájení

Varování: Pomocí multimetru se ujistěte, že zesilovač DC-DC MT3608 má výstup 5V. Nejprve - před měřením - otočte trimrem ve směru hodinových ručiček až na konec (kliknutím). Při připojení napětí (3, 7V) ke vstupu musí dát přibližně stejnou hodnotu. Otočte proti směru hodinových ručiček (budete potřebovat 10-20 plných otáček) a najednou se zvýší napětí. Jemně nastavte 5V na výstupu. (fotografie)

Podívejte se na potištěnou spodní část kostky. Každá součást má svou vlastní díru. Definuje, jak dlouhé dráty mezi jednotlivými součástmi budete potřebovat (nepoužívejte příliš dlouhé vodiče, jinak získáte drátěnou džungli). (fotografie)

Pájecí vodiče pouze mezi Arduino Nano a LED kroužkem (3 vodiče: červený 5V - 5V, černý GND - GND, modrý D6 - DI). Z další kapitoly spusťte test funkčnosti LED kroužku. (fotografie)

Pokud je vše v pořádku, pokračujte přidáním Gyro MPU6050 (5 vodičů: červený 5V - VCC, černý GND - GND, modrý A4 - SDA, zelený A5 - SCL, žlutý D2 - INT). Nahrajte kód ColorCube.ino a vyzkoušejte (ostatní součásti jsou pouze pro baterii a nabíjení). (fotografie)

Pokud je vše v pořádku, přidejte zbývající součásti. Existují pouze červené (+) a černé (-) vodiče. Vyberte pravé piny na samosvorném tlačítku (není připojeno, pokud není stisknuto). Otestujte funkčnost baterie a nabíjení baterie. (fotografie)

Červená LED svítí na TP4056 při nabíjení a modrá LED svítí při plném nabití. Otvor nad TP4056 ve střední tištěné části prochází LED světlem do horní části ColorCube a poznáte fázi nabíjení. (fotografie)

Krok 5: Kód

Nejprve si musíte stáhnout potřebné knihovny.

Podrobný návod pro knihovnu Adafruit Neopixel:

Test funkčnosti LED kroužku: Svůj obvod můžete vyzkoušet příkladem obsaženým v knihovně. Otevřete soubor ze souboru/Příklady/Adafruit NeoPixels/jednoduše a nahrajte (nezapomeňte správně nastavit tento řádek podle počtu pixelů, které používáte: #define NUMPIXELS 16).

I2Cdev a MPU6050: Stáhněte a rozbalte soubor i2cdevlib-master.zip z https://github.com/jrowberg/i2cdevlib. Zkopírujte formulář rozbalené složky i2cdevlib-master/Arduino dvě podsložky: I2Cdev a MPU6050. Oba zkopírujte do složky knihovny Arduino IDE (dokumenty/Arduino/knihovny, pokud je výchozí instalace).

Po zkopírování knihoven nezapomeňte restartovat Arduino IDE.

#include #ifdef _AVR_ #include // Vyžadováno pro 16 MHz Adafruit Trinket #endif #include "Wire.h" include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // použijte pin 2 na Arduino Uno & většině desek #define PIN 6 #define NUMPIXELS 16 // Nastavte správný počet LED Adafruit_NeoPixel pixelů (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = false; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Quaternion q; Plovoucí gravitace; float rotace [3]; int x, y, z; volatile bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = true; } neplatné nastavení () {Serial.begin (115200); pixely.begin (); pixely.clear (); pixely.setBrightness (128); #if definováno (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // připojit se ke sběrnici I2C (knihovna I2Cdev to nedělá automaticky) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C hodiny. Komentujte tento řádek, pokud máte potíže s kompilací #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Serial); Serial.println (F ("Inicializace zařízení I2C …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // ověření připojení Serial.println (F ("Testování připojení zařízení …")); Serial.println (mpu.testConnection ()? F ("Připojení MPU6050 úspěšné"): F ("Připojení MPU6050 se nezdařilo")); // počkejte, až bude připraven // Serial.println (F ("\ nPosláním libovolného znaku zahájíte programování DMP a demo:")); // while (Serial.available () && Serial.read ()); // prázdný buffer // while (! Serial.available ()); // počkejte na data // while (Serial.available () && Serial.read ()); // znovu vyprázdnit vyrovnávací paměť // načíst a nakonfigurovat DMP Serial.println (F ("Inicializace DMP …")); devStatus = mpu.dmpInitialize (); // zde zadejte své vlastní gyro offsety, zmenšené na minimální citlivost mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 tovární nastavení mého testovacího čipu // ujistěte se, že to fungovalo (vrací 0, pokud ano) if (devStatus == 0) {// Calibration Time: generování offsetů a kalibrace našeho MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // zapněte DMP, když je připraven Serial.println (F ("Povolení DMP …")); mpu.setDMPEnabled (true); // povolení detekce přerušení Arduino Serial.print (F ("Povolení detekce přerušení (externí přerušení Arduino")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // nastavte náš příznak DMP Ready, aby funkce main loop () věděla, že je v pořádku jej použít Serial.println (F ("DMP připraven! Čekání na první přerušení …")); dmpReady = true; // získat očekávanou velikost DMP paketu pro pozdější srovnání packetSize = mpu.dmpGetFIFOPacketSize (); } else {// CHYBA! // 1 = počáteční načtení paměti se nezdařilo // 2 = Aktualizace konfigurace DMP selhaly // (pokud dojde k přerušení, obvykle bude kód 1) Serial.print (F ("DMP Initialization failed (code")); Serial. print (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Získejte nejnovější paket // zobrazení Eulerových úhlů ve stupních mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& gravitace, & q); mpu.dmpGetYawPitchRoll (rotace, & q, & gravitace); } 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 = rotace [2] * 180/M_PI; y = rotace [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); // Červená při otočení na stranu} else if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixely. Color (0, 255, 0); // Zelené při otočení na druhou stranu} else if (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Žlutá při otočení na třetí stranu} else if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Modrá při otočení na čtvrtou stranu} else if (abs (y)> 135 && abs (x)> 135) {activeColor = pixely. Color (0, 0, 0); // Černá, když je vzhůru nohama} if (activeColor! = OldActiveColor) {pixels.clear (); pixely.fill (activeColor); pixely.show (); oldActiveColor = activeColor; }}

Nakonec můžete otevřít a odeslat soubor ColorCube.ino. Položte ColorCube na rovný povrch a zapněte jej. Nepohybujte jím, dokud po kalibraci (několik sekund) nezačne svítit bílou barvou. Poté můžete ColorCube položit na stranu a barva se změní - každá strana má svou vlastní barvu - červenou, zelenou, modrou, žlutou. ColorCube zhasne, když je otočen vzhůru nohama.

Krok 6: Sestavení

Sestavování
Sestavování
Sestavování
Sestavování
Sestavování
Sestavování

Při montáži buďte opatrní. Dráty a všechny části nemají rády hrubé chování.

Tlačítko 3d tištěná část - jemně vložte knoflík do otvoru ve spodní tištěné části (jak je znázorněno na obrázku), musí jít hladce dovnitř a ven, pokud ne, použijte skalpel nebo ostrý nůž nebo brusný papír k odstranění veškerého přebytečného materiálu (většinou uvnitř na v horní části kruhového otvoru ve spodní části). (fotografie)

Vložte MPU-6050, Arduino Nano, TP4056 a MT3608 do jejich otvorů. Krabice má výstupky, pod které vložíte MPU-6050 a MT3608. Vložte USB konektory Arduino Nano a TP4056 do jejich otvorů v bočních stěnách krabice. (fotografie)

K upevnění součástí použijte 3dílný zámek (ujistěte se, že všechny součásti těsně leží na spodní části). Je to důležité, protože někdo se určitě pokusí hrát s vaší ColorCube jako s kostkami. (fotografie)

Pokud baterie nedrží pevně, vložte a zajistěte ji v jejím otvoru.

Vložte samosvorné tlačítko do připraveného otvoru ve spodní části. Samosvorné tlačítko musí být v poloze ON (krátké). Jemně stiskněte tlačítko dolů. Otestujte funkčnost pomocí 3D tištěného tlačítka. (fotky)

Pomocí dvou šroubů M2 připevněte kroužek LED ke střední tištěné části. Je dobré použít orientaci prstenu, kde jsou kontakty drátu ve zaobleném otvoru střední tištěné části. (fotky)

Volitelné: Sem tam použijte kapku horkého lepidla - připojení vodičů k prstenu, u příliš dlouhých drátů, pokud něco není dostatečně těsné atd. Díky tomu může být váš ColorCube odolnější.

Uspořádejte dráty uvnitř ColorCube tak, aby nebyly přiskřípnuty tištěnými částmi. Umístěte střední část na spodní část. K upevnění použijte šroub M3. (fotografie)

Nakonec jemně zatlačte horní tištěnou část na spodní. (fotografie)

Krok 7: Hotovo

Gratulace Bavte se.

Doporučuje: