Sisällysluettelo:
- Vaihe 1: Materiaalit
- Vaihe 2: Tulostaminen
- Vaihe 3: Piiri
- Vaihe 4: Juotos
- Vaihe 5: Koodi
- Vaihe 6: Kokoaminen
- Vaihe 7: Valmis
Video: ColorCube: 7 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
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
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
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
Vaihe 4: 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
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:
Infrapuna -anturin käyttäminen Arduinon kanssa: 8 vaihetta (kuvien kanssa)
Infrapuna -anturin käyttäminen Arduinon kanssa: Mikä on infrapuna -anturi? . IR -signaali
Automaattinen lataus (tyhjiö) -kytkin ACS712: n ja Arduinon kanssa: 7 vaihetta (kuvien kanssa)
Automaattinen kuorman (tyhjiö) kytkin ACS712: n ja Arduinon kanssa: Hei kaikki! Sähkötyökalun käyttäminen suljetussa tilassa on kiire, koska kaikki ilmassa oleva pöly ja ilmassa oleva pöly tarkoittaa pölyä keuhkoissasi. Vac -myymälän suorittaminen voi poistaa osan tästä riskistä, mutta kytkeä sen päälle ja pois päältä joka kerta
GPS-moduulin (NEO-6m) liittäminen Arduinon kanssa: 7 vaihetta (kuvien kanssa)
GPS-moduulin (NEO-6m) liittäminen Arduinon kanssa: Tässä projektissa olen osoittanut, kuinka liittää GPS-moduuli Arduino UNO: n kanssa. Pituus- ja leveysasteiden tiedot näkyvät nestekidenäytössä ja sijaintia voi tarkastella sovelluksessa. Luettelo materiaalista Arduino Uno == > 8 dollarin Ublox NEO-6m GPS -moduuli == > 15 dollaria 16x
Kuvien tallentaminen tehtävää varten: 4 vaihetta (kuvien kanssa)
Kuvien tallentaminen tehtävää varten: 1. Avaa uusi Google -asiakirja ja suojaa kuvat tällä sivulla. Käytä ctrl (ohjaus) ja " c " kopioitava näppäin 3. Käytä ctrl (control) ja " v " liitettävä avain
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): 11 vaihetta (kuvien kanssa)
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): Jos yrität "Tee saumaton" -laajennusta GIMP: ssä, se tekee kuvasta saumattoman sekä vaaka- että pystysuunnassa samanaikaisesti. Se ei salli sinun tehdä siitä saumatonta vain yhdessä ulottuvuudessa. Tämä ohje auttaa sinua saamaan kuvan