Obsah:

ColorCube: 7 krokov (s obrázkami)
ColorCube: 7 krokov (s obrázkami)

Video: ColorCube: 7 krokov (s obrázkami)

Video: ColorCube: 7 krokov (s obrázkami)
Video: Какого числа от 1 до 31, родился человек, такая у него и вся жизнь 2024, December
Anonim
Image
Image
ColorCube
ColorCube
ColorCube
ColorCube

Túto lampu som vyrobil pre vnučku, keď sa učila farby. Inšpiroval som sa projektom MagicCube, ale nakoniec som všetky časti vytvoril od začiatku. Je ľahké ho vytlačiť a ľahko zostaviť a získate znalosti o tom, ako funguje gyro modul.

Krok 1: Materiály

Materiály
Materiály

Arduino časť:

  • Arduino Nano (lepšie bez spájkovacích kolíkov)
  • Trojosový gyro modul MPU-6050
  • Modul nabíjačky mikro USB TP4056
  • Modul posilnenia zosilňovača MT3608
  • Batéria LiPo 902936 900mA alebo 503035 3,7V 500mA. Môžete použiť akúkoľvek batériu LiPo s napätím 3, 7 V a veľkosťou menšou ako 35 x 30 x 15 mm, ale batériu musíte zaistiť v otvore.
  • Samosvorné tlačidlo PS-22F28 alebo samosvorné tlačidlo PS-22F27 sa perfektne hodia k tlačenej časti.
  • LED RGB WS2812B krúžok - 16 LED s vonkajším priemerom 68 mm - môžete použiť ľubovoľný krúžok aj s rôznym počtom diód LED (v kóde musíte zmeniť jednu konštantu - #define NUMPIXELS 16) s maximálnym priemerom 76 mm (môžete použiť aj Neopixelovú tyčinku s 8x LED alebo akýkoľvek LED pás s WS2812b).

Príklady prsteňov: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm

Na montáž môžete použiť ktorýkoľvek z otvorov vytlačených v strednej časti. Pokrývajú takmer akúkoľvek možnosť (nie je potrebné, aby bol krúžok 100% vycentrovaný).

Drôty

Kocka

  • Vlákno PLA pre hornú časť kocky - použite bielu farbu, pretože priehľadná nie je dobrá (LED diódy sú viditeľné a farba nie je hladká), moje odporúčanie je Prusament Vanilla White
  • Vlákno PLA pre spodné, stredné a tlačidlové časti - použite tmavú farbu, pretože niektoré moduly Arduino majú v hornej časti svetlá a nehodí sa pre farby kockových LED diód, moje odporúčanie je Prusament Galaxy Black
  • 1x samorezná skrutka M3x5 - dĺžka (10 mm) a tvar hlavy nie sú kritické - skrutka nie je viditeľná
  • 2x samorezná skrutka M2x3 - dĺžka (5 mm) a tvar hlavy nie sú kritické - skrutky nie sú viditeľné

Nástroje

  • 3D tlačiareň
  • Viacmetrový
  • Spájkovačka
  • Skrutkovač

Krok 2: Tlač

Tlač
Tlač
Tlač
Tlač

Všetky časti ColorCube boli navrhnuté v programe Autodesk Fusion360. f3d súbor je priložený.

Zariadenie ColorCube bolo vytlačené na tlačiarni Prusa i3 MK3S so všetkými predvolenými nastaveniami a neočakávam žiadne potrebné zmeny na rôznych tlačiarňach. Použite svoje obľúbené nastavenia pre PLA (ak sú vytlačené na PLA, nie je problém použiť PETG alebo ASA).

Parametre 3D tlače:

  • Vrstva 0,2 mm (nastavenia KVALITY 0,2 mm na PrusaSlicer)
  • Nastavenia vlákna Prusament PLA na zariadení PrusaSlicer
  • Výplň 15%
  • Žiadna podpora
  • Nie Brim

Krok 3: Okruh

Obvod
Obvod

Krok 4: Spájkovanie

Spájkovanie
Spájkovanie
Spájkovanie
Spájkovanie
Spájkovanie
Spájkovanie

Varovanie: Použitím multimetra sa uistite, že zosilňovač DC-DC MT3608 má výstup 5V. Najprv - pred meraním - otočte obrubu v smere hodinových ručičiek až na koniec (kliknutie). Keď na vstup pripojíte napätie (3, 7 V), musí mať približne rovnakú hodnotu. Otočte proti smeru hodinových ručičiek (budete potrebovať 10-20 úplných otáčok) a zrazu sa zvýši napätie. Jemne nastavte 5 V na výstupe. (foto)

Pozrite sa na vytlačenú spodnú časť kocky. Každý komponent má svoju vlastnú dieru. Definuje, ako dlhé drôty medzi jednotlivými komponentmi budete potrebovať (nepoužívajte príliš dlhé drôty, inak získate drôtenú džungľu). (foto)

Spájkujte iba vodiče medzi Arduino Nano a LED krúžkom (3 vodiče: červený 5V - 5V, čierny GND - GND, modrý D6 - DI). Spustite test funkčnosti krúžku LED od ďalšej kapitoly. (foto)

Ak je všetko v poriadku, pokračujte pridaním gyroskopu MPU6050 (5 vodičov: červený 5V - VCC, čierny GND - GND, modrý A4 - SDA, zelený A5 - SCL, žltý D2 - INT). Nahrajte kód ColorCube.ino a vyskúšajte (ostatné súčasti sú určené len na batériu a nabíjanie). (foto)

Ak je všetko v poriadku, pridajte ostatné komponenty. Existujú iba červené (+) a čierne (-) vodiče. Vyberte pravé kolíky na samosvornom tlačidle (nie sú pripojené, ak nie sú stlačené). Otestujte funkčnosť batérie a nabíjania batérie. (foto)

Červené LED svetlo na TP4056 pri nabíjaní a modré LED svetlo pri plnom nabití. Otvor nad TP4056 v strednej tlačenej časti prechádza LED svetlom do hornej časti ColorCube a môžete rozpoznať fázu nabíjania. (foto)

Krok 5: Kód

Najprv si musíte stiahnuť potrebné knižnice.

Podrobný návod pre knižnicu Adafruit Neopixel:

Test funkčnosti LED krúžku: Môžete otestovať svoj obvod podľa príkladu, ktorý je súčasťou knižnice. Otvorte súbor zo súboru/Príklady/Adafruit NeoPixels/jednoducho a nahrajte (nezabudnite tento riadok správne nastaviť podľa počtu pixelov, ktoré používate: #define NUMPIXELS 16).

I2Cdev a MPU6050: Stiahnite a rozbaľte súbor i2cdevlib-master.zip z https://github.com/jrowberg/i2cdevlib. Skopírujte formulár rozbalený priečinok i2cdevlib-master/Arduino dva podpriečinky: I2Cdev a MPU6050. Oba sa skopírujú do priečinka knižnice Arduino IDE (dokumenty/Arduino/knižnice, ak je predvolená inštalácia).

Po skopírovaní knižníc nezabudnite reštartovať Arduino IDE.

#include #ifdef _AVR_ #include // Vyžadované pre 16 MHz Adafruit Trinket #endif #include "Wire.h" include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // použite pin 2 na Arduino Uno a väčšine dosiek #define PIN 6 #define NUMPIXELS 16 // Nastavte správny počet LED diód Adafruit_NeoPixel pixelov (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; Vektorová plaváková gravitácia; float rotace [3]; int x, y, z; volatile bool mpuInterrupt = false; neplatné dmpDataReady () {mpuInterrupt = true; } neplatné nastavenie () {Serial.begin (115200); pixely.begin (); pixely.clear (); pixely.setBrightness (128); #ak je definovaný (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // pripojenie k zbernici I2C (knižnica I2Cdev to nerobí automaticky) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz hodiny I2C. Komentujte tento riadok, ak máte problémy so kompiláciou #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Sériové); Serial.println (F ("Inicializácia zariadení I2C …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // overenie pripojenia Serial.println (F ("Testovanie pripojení zariadenia …")); Serial.println (mpu.testConnection ()? F ("Pripojenie MPU6050 bolo úspešné"): F ("Pripojenie MPU6050 zlyhalo")); // počkajte, kým bude pripravený // Serial.println (F ("\ nPošlite ľubovoľný znak na spustenie programovania DMP a ukážky:")); // while (Serial.available () && Serial.read ()); // prázdny buffer // while (! Serial.available ()); // počkajte na údaje // while (Serial.available () && Serial.read ()); // znova vyprázdniť vyrovnávaciu pamäť // načítať a konfigurovať DMP Serial.println (F ("Inicializácia DMP …")); devStatus = mpu.dmpInitialize (); // tu zadajte svoje vlastné gyroskopy, zmenšené na minimálnu citlivosť mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 výrobný štandard pre môj testovací čip // uistite sa, že funguje (ak je, vráti 0), ak (devStatus == 0) {// Čas kalibrácie: vygenerujte offsety a kalibrujte náš MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // zapnite DMP, keď je pripravený Serial.println (F ("Povolenie DMP …")); mpu.setDMPEnabled (true); // povoliť detekciu prerušenia Arduino Serial.print (F ("Povolenie detekcie prerušenia (externé prerušenie Arduino")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (") …")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // nastavte náš príznak DMP Ready, aby funkcia main loop () vedela, že je v poriadku ho použiť Serial.println (F ("DMP pripravené! Čakanie na prvé prerušenie …")); dmpReady = true; // získať očakávanú veľkosť paketu DMP pre neskoršie porovnanie packetSize = mpu.dmpGetFIFOPacketSize (); } else {// CHYBA! // 1 = úvodné načítanie pamäte zlyhalo // 2 = Aktualizácie konfigurácie DMP zlyhali // (ak sa má prerušiť, zvyčajne bude kód 1) Serial.print (F ("Inicializácia DMP zlyhala (kód")); Sériové. print (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Získanie najnovšieho paketu // zobrazenie Eulerových uhlov v stupňoch mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& gravitácia, & q); mpu.dmpGetYawPitchRoll (rotácia, & q, & gravitácia); } 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 = rotácia [2] * 180/M_PI; y = rotácia [1] * 180/M_PI; z = rotácia [0] * 180/M_PI; ak (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixely. Color (255, 0, 0); // Červená, keď sa obrátite na stranu} else if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixely. Color (0, 255, 0); // Zelené pri obrátení na druhú stranu} else if (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixely. Color (255, 255, 0); // Žlté, keď sa obrátite na tretiu stranu} else if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixely. Color (0, 0, 255); // Modrá, keď sa obrátite na štvrtú stranu} else if (abs (y)> 135 && abs (x)> 135) {activeColor = pixely. Color (0, 0, 0); // Čierna, keď je hore nohami} if (activeColor! = OldActiveColor) {pixely.clear (); pixely.fill (activeColor); pixely.show (); oldActiveColor = activeColor; }}

Nakoniec môžete otvoriť a nahrať súbor ColorCube.ino. Položte ColorCube na rovný povrch a zapnite ho. Neposúvajte ho, kým po kalibrácii (niekoľko sekúnd) nezačne svietiť bielou farbou. Potom môžete ColorCube položiť na stranu a farba sa zmení - každá strana má svoju vlastnú farbu - červenú, zelenú, modrú, žltú. Zariadenie ColorCube zhasne, keď je obrátené naopak.

Krok 6: Zostavenie

Montáž
Montáž
Montáž
Montáž
Montáž
Montáž

Pri montáži buďte opatrní. Drôty a všetky diely nemajú radi drsné správanie.

Tlačená 3D tlačená časť - jemne priložte gombík k otvoru v spodnej tlačenej časti (ako je znázornené na obrázku), musí hladko ísť dovnútra a von, ak nie, pomocou skalpela alebo ostrého noža alebo brúsneho papiera odstráňte všetok prebytočný materiál (väčšinou vnútri v hornej časti kruhového otvoru v spodnej časti). (foto)

Vložte MPU-6050, Arduino Nano, TP4056 a MT3608 do ich otvorov. Krabica má výčnelky, pod ktoré vložíte MPU-6050 a MT3608. Vložte konektory USB Arduino Nano a TP4056 do ich otvorov v bočných stenách škatule. (foto)

Na zaistenie komponentov použite 3D tlačený zámok (uistite sa, že všetky komponenty sú tesne umiestnené na spodnej časti). Je to dôležité, pretože niekto sa určite pokúsi hrať s vašou ColorCube ako s kockami. (foto)

Vložte a zaistite batériu do otvoru, ak pevne nedrží.

Vložte samosvorné tlačidlo do pripraveného otvoru v spodnej časti. Samosvorné tlačidlo musí byť v polohe ON (krátke). Jemne stlačte tlačidlo nadol. Otestujte funkčnosť pomocou 3D tlačeného tlačidla. (fotografie)

Pomocou dvoch skrutiek M2 pripevnite krúžok LED k strednej tlačenej časti. Je dobré použiť orientáciu prstenca, kde sú kontakty drôtu v zaoblenom otvore strednej tlačenej časti. (fotografie)

Voliteľné: Sem tam použite kvapku horúceho lepidla - pripojenie drôtov na krúžok, pri príliš dlhých vodičoch, ak nie je niečo dostatočne tesné atď. Vďaka tomu môže byť váš ColorCube odolnejší.

Dráty vo vnútri ColorCube umiestnite tak, aby neboli tlačené. Položte strednú časť na spodnú časť. Na upevnenie použite skrutku M3. (foto)

Nakoniec jemne zatlačte hornú tlačenú časť na dolnú. (foto)

Krok 7: Hotovo

Gratulujem Bavte sa.

Odporúča: