Sisällysluettelo:

ColorCube: 7 vaihetta (kuvien kanssa)
ColorCube: 7 vaihetta (kuvien kanssa)

Video: ColorCube: 7 vaihetta (kuvien kanssa)

Video: ColorCube: 7 vaihetta (kuvien kanssa)
Video: КАРКАСНЫЙ ГАРАЖ СВОИМИ РУКАМИ! СТРОПИЛЬНАЯ СИСТЕМА! 2024, Joulukuu
Anonim
Image
Image
ColorCube
ColorCube
ColorCube
ColorCube

Tein tämän lampun tyttärentyttärelleni, kun hän oppi värejä. Innostuin MagicCube -projektista, mutta lopulta loin kaikki osat tyhjästä. Se on helppo tulostaa ja helppo koota, ja saat tietoa gyro -moduulin toiminnasta.

Vaihe 1: Materiaalit

Materiaalit
Materiaalit

Arduinon osa:

  • Arduino Nano (parempi ilman juotosnappia)
  • MPU-6050 3-akselinen gyro-moduuli
  • TP4056 Micro USB -laturimoduuli
  • MT3608 tehostaa tehostinmoduulia
  • LiPo -akku 902936 900mA tai 503035 3,7V 500mA. Voit käyttää mitä tahansa 3, 7 V: n LiPo -akkua, jonka koko on alle 35 x 30 x 15 mm, mutta sinun on kiinnitettävä akku reikään.
  • PS-22F28 itselukittuva painike tai PS-22F27 itselukittuva painike sopivat täydellisesti painettuun osaan.
  • LED -RGB WS2812B -rengas - 16 LED -ulkohalkaisijaltaan 16 LED -valoa - voit käyttää mitä tahansa rengasta myös eri määrällä LED -valoja (täytyy muuttaa yksi vakio koodissa - #define NUMPIXELS 16), halkaisija enintään 76 mm (voit käyttää myös Neopixel -tikkua 8x LED tai mikä tahansa LED -nauha, jossa on WS2812b).

Esimerkkejä renkaista: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm

Asennuksessa voit käyttää mitä tahansa keskiosaan painettua reikää. Ne kattavat melkein minkä tahansa vaihtoehdon (ei välttämätöntä, että rengas on 100% keskitetty).

Johdot

Kuutio

  • PLA -filamentti kuution yläosaan - käytä valkoista väriä, koska läpinäkyvä ei ole hyvä (LEDit näkyvät ja väri ei ole sileä), suosittelen Prusament Vanilla White
  • PLA -filamentti ala-, keski- ja nappiosille - käytä tummaa väriä, koska joidenkin Arduino -moduulien päällä on valot, eikä se sovi kuutio -LED -valojen väreihin, suosittelen Prusament Galaxy Black
  • 1x M3x5 itsekierteittävä ruuvi - pituus (10 mm) ja pään muoto eivät ole kriittisiä - ruuvi ei ole näkyvissä
  • 2x M2x3 itsekierteittävä ruuvi - pituus (5 mm) ja pään muoto eivät ole kriittisiä - ruuvit eivät ole näkyvissä

Työkalut

  • 3D tulostin
  • Monimittari
  • Juotin
  • Ruuvimeisseli

Vaihe 2: Tulostaminen

Tulostaminen
Tulostaminen
Tulostaminen
Tulostaminen

Kaikki ColorCuben osat on suunniteltu Autodesk Fusion360: ssa. f3d -tiedosto on liitetty.

ColorCube tulostettiin Prusa i3 MK3S -tulostimella kaikilla oletusasetuksilla, enkä odota tarvittavia muutoksia eri tulostimissa. Käytä PLA -suosikkiasetuksiasi (jos tulostetaan PLA: lle, PETG: n tai ASA: n käyttäminen ei ole ongelma).

3D -tulostusparametrit:

  • Kerros 0,2 mm (0,2 mm: n QUALITY -asetukset PrusaSlicerissä)
  • Prusament PLA -langan asetukset PrusaSlicerissä
  • Täytä 15%
  • Ei tukea
  • Ei reunaa

Vaihe 3: Piiri

Piiri
Piiri

Vaihe 4: Juotos

Juotos
Juotos
Juotos
Juotos
Juotos
Juotos

Varoitus: Käytä monimetriä varmistaaksesi, että DC-DC-tehostin MT3608 antaa 5 V: n jännitteen. Ensinnäkin - ennen mittaamista - käännä verhous myötäpäivään loppuun (napsauttamalla). Kun kytket jännitteen (3, 7 V) tuloon, sen on annettava suunnilleen sama arvo. Käännä vastapäivään (tarvitset 10-20 täyttä kierrosta) ja yhtäkkiä jännite nousee. Aseta 5 V: n lähtö pehmeästi. (kuva)

Katso kuution painettua alaosaa. Jokaisessa komponentissa on oma reikä. Se määrittää kuinka pitkät johdot kunkin komponentin välillä tarvitset (älä käytä erityisen pitkiä johtoja, muuten saat langan viidakon). (kuva)

Juotosjohdot vain Arduino Nanon ja LED -renkaan välillä (3 johtoa: punainen 5V - 5V, musta GND - GND, sininen D6 - DI). Suorita LED -renkaan toimivuustesti seuraavasta luvusta. (kuva)

Jos kaikki on kunnossa, lisää Gyro MPU6050 (5 johtoa: punainen 5V - VCC, musta GND - GND, sininen A4 - SDA, vihreä A5 - SCL, keltainen D2 - INT). Lataa ColorCube.ino -koodi ja testaa (muut osat ovat vain akkua ja latausta varten). (kuva)

Jos kaikki on kunnossa, lisää loput komponentit. Johdot ovat vain punaisia (+) ja mustia (-). Valitse oikeat tapit itselukittuvasta painikkeesta (ei kytketty, kun sitä ei paineta). Testaa akun ja akun latauksen toimivuus. (kuva)

Punainen LED -valo palaa TP4056: ssa latauksen aikana ja sininen LED -valo palaa täyteen ladattuna. TP4056: n yläpuolella oleva reikä keskellä painetussa osassa siirtää LED -valon ColorCuben yläosaan ja voit tunnistaa latauksen vaiheen. (kuva)

Vaihe 5: Koodi

Ensin sinun on ladattava tarvittavat kirjastot.

Adafruit Neopixel -kirjastoon on yksityiskohtaiset ohjeet:

LED -renkaan toimivuustesti: Voit testata virtapiiriäsi kirjastossa olevan esimerkin avulla. Avaa tiedosto kohdasta Tiedosto/Esimerkit/Adafruit NeoPixels/simple ja lataa (älä unohda määrittää tätä riviä oikein käyttämäsi pikselien määrän mukaan: #define NUMPIXELS 16).

I2Cdev ja MPU6050: Lataa ja pura i2cdevlib-master.zip-tiedosto osoitteesta https://github.com/jrowberg/i2cdevlib. Kopioi lomake purettu kansio i2cdevlib-master/Arduino kaksi alikansiota: I2Cdev ja MPU6050. Molemmat kopioidaan Arduino IDE -kirjastokansioon (Documents/Arduino/libraries, jos oletusasennus).

Muista käynnistää Arduino IDE uudelleen kirjastojen kopioinnin jälkeen.

#include #ifdef _AVR_ #include // Pakollinen 16 MHz: n Adafruit -rihkalle #endif #include "Wire.h" sisältää "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // käytä nasta 2 Arduino Unossa ja useimmilla levyillä #define PIN 6 #define NUMPIXELS 16 // Aseta oikea LED -valojen määrä Adafruit_NeoPixel pikseliä (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = epätosi; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Kvaternion q; VectorFloat -painovoima; float rotace [3]; int x, y, z; haihtuva bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = true; } void setup () {Serial.begin (115200); pixels.begin (); pixels.clear (); pixels.setBrightness (128); #if määritetty (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // liittyä I2C -väylään (I2Cdev -kirjasto ei tee tätä automaattisesti) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz I2C -kello. Kommentoi tätä riviä, jos sinulla on kokoamisvaikeuksia #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Sarja); Serial.println (F ("I2C -laitteiden alustaminen…")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // Tarkista yhteys Serial.println (F ("Laitteen yhteyksien testaus …")); Serial.println (mpu.testConnection ()? F ("MPU6050 -yhteys onnistui"): F ("MPU6050 -yhteys epäonnistui")); // odota valmista // Serial.println (F ("\ nLähetä mikä tahansa merkki aloittaaksesi DMP -ohjelmoinnin ja esittelyn:")); // while (Serial.available () && Serial.read ()); // tyhjä puskuri // while (! Serial.available ()); // odota tietoja // while (Serial.available () && Serial.read ()); // tyhjä puskuri uudelleen // lataa ja konfiguroi DMP Serial.println (F ("DMP: n alustaminen…")); devStatus = mpu.dmpInitialize (); // syötä tänne omat gyroskooppisiirrot, skaalattuna min. herkkyyden mukaan mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // testisirun tehdasasetus 1688 // varmista, että se toimi (palauttaa 0, jos näin on) if (devStatus == 0) {// Kalibrointiaika: luo siirtymät ja kalibroi MPU6050 mpu. CalibrateAccel (6); mpu. Kalibroi Gyro (6); mpu. PrintActiveOffsets (); // kytke DMP päälle nyt, kun se on valmis Serial.println (F ("DMP: n käyttöönotto …")); mpu.setDMPEnabled (tosi); // ota käyttöön Arduinon keskeytyksen tunnistus Serial.print (F ("Keskeytyksen havaitsemisen salliminen (Arduinon ulkoinen keskeytys"))); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // aseta DMP Ready -lippumme niin, että pääsilmukka () -funktio tietää, että sen käyttö on okei Serial.println (F ("DMP valmis! Odotetaan ensimmäistä keskeytystä …")); dmpReady = totta; // saat odotetun DMP -paketin koon myöhempää vertailua varten packetSize = mpu.dmpGetFIFOPacketSize (); } muu {// VIRHE! // 1 = alustava muistin lataus epäonnistui // 2 = DMP -kokoonpanopäivitykset epäonnistui // (jos se katkeaa, koodi on yleensä 1) Serial.print (F ("DMP -alustus epäonnistui (koodi")); Sarja. print (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Hanki uusin paketti // näyttää Euler -kulmat asteina mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& painovoima, & q); mpu.dmpGetYawPitchRoll (rotace, & q, & gravity); } Serial.print ("X"); Serial.print (rotace [2] * 180/M_PI); Serial.print ("\ t Y"); Sarjajälki (rotace [1] * 180/M_PI); Serial.print ("\ t Z"); Sarja.println (pyöritä [0] * 180/M_PI); x = kierto [2] * 180/M_PI; y = kierto [1] * 180/M_PI; z = kierto [0] * 180/M_PI; if (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pikseliä. Väri (255, 0, 0); // Punainen kääntyessään sivulle} else if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Vihreä, kun käännyt toiselle puolelle} else if (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Keltainen, kun käännyt kolmannelle puolelle} else if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Sininen, kun käännät neljännelle puolelle} else if (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Musta ylösalaisin} if (activeColor! = OldActiveColor) {pixels.clear (); pixels.fill (activeColor); pixels.show (); oldActiveColor = aktiivinenVäri; }}

Lopuksi voit avata ja ladata ColorCube.ino -tiedoston. Aseta ColorCube tasaiselle pinnalle ja kytke se päälle. Älä siirrä sitä ennen kuin se alkaa vaaleaksi valkoisella värillä kalibroinnin jälkeen (muutama sekunti). Seuraavaksi voit laittaa ColorCuben sivulle ja väri muuttuu - jokaisella puolella on oma väri - punainen, vihreä, sininen, keltainen. ColorCube sammuu, kun se käännetään ylösalaisin.

Vaihe 6: Kokoaminen

Kokoaminen
Kokoaminen
Kokoaminen
Kokoaminen
Kokoaminen
Kokoaminen

Ole lempeä kokoamisen aikana. Johdot ja kaikki osat eivät pidä karkeasta käyttäytymisestä.

Painike 3D -painettu osa - paina pehmeästi painiketta painetun alaosan reikään (kuten kuvassa), sen on mentävä sisään ja ulos sujuvasti, ellei käytä skalpellia tai terävää veistä tai hiekkapaperia kaiken ylimääräisen materiaalin poistamiseksi (enimmäkseen sisällä ympyräreiän yläosa alaosassa). (kuva)

Aseta MPU-6050, Arduino Nano, TP4056 ja MT3608 reikiinsä. Laatikossa on ulkonemia, joiden alle asetat MPU-6050 ja MT3608. Aseta Arduino Nanon ja TP4056: n USB -liittimet reikiinsä laatikon sivuseinissä. (kuva)

Käytä 3D -tulostettua lukkoa komponenttien kiinnittämiseen (varmista, että kaikki osat ovat tiukasti alaosassa). Se on tärkeää, koska joku yrittää varmasti pelata ColorCubesi kanssa kuten nopalla. (kuva)

Aseta ja kiinnitä akku reikäänsä, jos se ei pidä tiukasti kiinni.

Työnnä itselukittuva painike pohjaosassa olevaan reikään. Itselukittuvan painikkeen on oltava ON-asennossa (lyhyt). Paina painiketta varovasti alas. Testaa toimivuus 3D -painikkeella. (kuvat)

Kiinnitä LED -rengas kahdella M2 -ruuvilla keskipainettuun osaan. On hyvä käyttää renkaan suuntausta, jossa lankakoskettimet ovat keskipainetun osan pyöristetyssä reiässä. (kuvat)

Valinnainen: Käytä tippaa kuuma liimaa siellä täällä - johtojen liitäntä renkaaseen, liian pitkät johdot, jos jokin ei ole tarpeeksi tiukka jne. Se voi tehdä ColorCubestasi kestävämmän.

Järjestä johdot ColorCuben sisään, jotta tulostetut osat eivät jää puristuksiin. Aseta keskiosa alaosaan. Kiinnitä se M3 -ruuvilla. (kuva)

Työnnä lopuksi yläpainettu osa varovasti alaspäin. (kuva)

Vaihe 7: Valmis

Onnittelut. Pidä hauskaa.

Suositeltava: