Sadržaj:

ColorCube: 7 koraka (sa slikama)
ColorCube: 7 koraka (sa slikama)

Video: ColorCube: 7 koraka (sa slikama)

Video: ColorCube: 7 koraka (sa slikama)
Video: СУПЕР СМЕШНАЯ КОМЕДИЯ! "Как Извести Любовницу За 7 Дней" РУССКИЕ КОМЕДИИ НОВИНКИ, ФИЛЬМЫ HD, КИНО 2024, Prosinac
Anonim
Image
Image
ColorCube
ColorCube
ColorCube
ColorCube

Napravio sam ovu lampu za svoju unuku dok je učila boje. Inspirirao me projekt MagicCube, ali napokon sam izradio sve dijelove od nule. Lako se ispisuje i lako sastavlja, a steći ćete i znanje o načinu rada žiroskopskog modula.

Korak 1: Materijali

Materijali
Materijali

Arduino dio:

  • Arduino Nano (bolje bez igle zaglavlja lemljenja)
  • MPU-6050 troosni žiroskopski modul
  • TP4056 Modul za punjenje mikro USB baterija
  • MT3608 Modul za pojačavanje snage
  • LiPo baterija 902936 900mA ili 503035 3.7V 500mA. Možete koristiti bilo koju LiPo bateriju s 3, 7V i veličinom manjom od 35x30x15 mm, ali morate pričvrstiti bateriju u rupu.
  • PS-22F28 Samozaključajući gumb ili PS-22F27 Samozaključani gumb savršeno pristaje ispisanom dijelu.
  • LED RGB WS2812B prsten - 16 LED 68 mm vanjski promjer - možete koristiti bilo koji prsten čak i s različitim brojem LED dioda (morate promijeniti jednu konstantu u kodu - #define NUMPIXELS 16) s maksimalnim promjerom od 76 mm (možete koristiti i neopikselni štap sa 8x LED ili bilo koja LED traka s WS2812b).

Primjeri prstena: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm

Za montažu možete koristiti bilo koju rupu otisnutu u srednjem dijelu. Pokrivaju gotovo sve opcije (nije potrebno imati prsten 100% centriran).

Žice

Kocka

  • PLA vlakna za gornji dio kocke - koristite bijelu boju jer prozirna nije dobra (LED su vidljive i boja nije glatka), moja preporuka je Prusament Vanilla White
  • PLA nit za donje, srednje i dijelove gumba - koristite tamnu boju jer neki Arduino moduli imaju svjetla na vrhu i ne uklapaju se u kockaste LED boje, moja preporuka je Prusament Galaxy Black
  • 1x samorezni vijak M3x5 - Duljina (10 mm) i oblik glave nisu kritični - vijak se ne vidi
  • 2x samorezni vijak M2x3 - Duljina (5 mm) i oblik glave nisu kritični - vijci nisu vidljivi

Alati

  • 3D pisač
  • Višemetarski
  • Lemilica
  • Odvijač

Korak 2: Ispis

Tiskanje
Tiskanje
Tiskanje
Tiskanje

Svi dijelovi programa ColorCube dizajnirani su u Autodesk Fusion360. f3d datoteka je priložena.

ColorCube je ispisan na Prusa i3 MK3S pisaču sa svim zadanim postavkama i ne očekujem nikakve potrebne promjene na različitim pisačima. Koristite svoje omiljene postavke za PLA (ako je tiskano na PLA, nema problema s upotrebom PETG -a ili ASA -e).

Parametri 3D ispisa:

  • Sloj 0,2 mm (0,2 mm KVALITETNE postavke na PrusaSlicer -u)
  • Prusament PLA postavke niti na PrusaSliceru
  • Ispuni 15%
  • Bez podrške
  • Nema Brima

Korak 3: Krug

Krug
Krug

Korak 4: Lemljenje

Lemljenje
Lemljenje
Lemljenje
Lemljenje
Lemljenje
Lemljenje

Upozorenje: Pomoću višemetara provjerite daje li DC-DC pojačivač MT3608 izlaz 5V. Prvo - prije mjerenja - okrenite oblogu u smjeru kazaljke na satu do kraja (klik). Kad priključite napon (3, 7V) na ulaz, on mora dati približno istu vrijednost. Okrenite u smjeru suprotnom od kazaljke na satu (trebat će vam 10-20 punih okreta) i iznenada se napon poveća. Tiho postavite 5V na izlaz. (fotografija)

Pogledajte otisnuti donji dio kocke. Svaka komponenta ima svoju rupu. Određuje koliko će vam žica između svake komponente trebati (nemojte koristiti iznimno dugačke žice inače ćete dobiti žicu). (fotografija)

Lemne žice samo između Arduino Nano i LED prstena (3 žice: crvena 5V - 5V, crna GND - GND, plava D6 - DI). Pokrenite test funkcionalnosti LED prstena iz sljedećeg poglavlja. (fotografija)

Ako je sve u redu, nastavite s dodavanjem žiroskopa MPU6050 (5 žica: crvena 5V - VCC, crna GND - GND, plava A4 - SDA, zelena A5 - SCL, žuta D2 - INT). Prenesite ColorCube.ino kôd i test (ostale komponente služe samo za bateriju i punjenje). (fotografija)

Ako je sve u redu, dodajte ostale komponente. Postoje samo crvene (+) i crne (-) žice. Odaberite desne iglice na samoblokirajućoj tipki (nije spojeno kada se ne pritisne). Testirajte funkcionalnost baterije i punjenja baterije. (fotografija)

Crvena LED svjetla na TP4056 tijekom punjenja i plava LED svjetla kada su potpuno napunjena. Rupa iznad TP4056 u srednjem ispisanom dijelu propušta LED svjetlo na gornji dio ColorCube -a i možete prepoznati fazu punjenja. (fotografija)

Korak 5: Kodirajte

Prvo morate preuzeti potrebne knjižnice.

Postoje detaljne upute za biblioteku Adafruit Neopixel:

Test funkcionalnosti LED prstena: Možete testirati svoj krug primjerom koji je uključen u biblioteku. Otvorite datoteku iz Datoteka/Primjeri/Adafruit NeoPixels/jednostavno i prenesite (ne zaboravite ispravno postaviti ovaj redak prema broju piksela koje koristite: #define NUMPIXELS 16).

I2Cdev i MPU6050: Preuzmite i raspakirajte datoteku i2cdevlib-master.zip s https://github.com/jrowberg/i2cdevlib. Kopirajte raspakiranu mapu i2cdevlib-master/Arduino iz dvije podmape: I2Cdev i MPU6050. Oboje se kopiraju u mapu knjižnice Arduino IDE (Dokumenti/Arduino/knjižnice ako je zadana instalacija).

Ne zaboravite ponovno pokrenuti Arduino IDE nakon kopiranja knjižnica.

#include #ifdef _AVR_ #include // Potrebno za 16 MHz Adafruit Trinket #endif #include "Wire.h" include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // koristite pin 2 na Arduino Uno i većini ploča #define PIN 6 #define NUMPIXELS 16 // Postavite točan broj LED dioda Adafruit_NeoPixel piksela (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = netočno; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Kvaternion q; VectorFloat gravitacija; plutati rotace [3]; int x, y, z; volatile bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = true; } void setup () {Serial.begin (115200); pikseli.begin (); pikseli.clear (); piksela.setBrightness (128); #ako je definirano (_ AVR_ATtiny85_) && (F_CPU == 16000000) set_pretmjera_sastava (sat_div_1); #endif // pridruži se I2C sabirnici (knjižnica I2Cdev to ne radi automatski) #iko I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz I2C sat. Komentirajte ovaj redak ako imate poteškoća s sastavljanjem #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, istina); #endif while (! Serijski); Serial.println (F ("Inicijalizacija I2C uređaja …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // provjeravamo vezu Serial.println (F ("Testiranje veza uređaja …")); Serial.println (mpu.testConnection ()? F ("Veza MPU6050 uspješna"): F ("Veza MPU6050 nije uspjela")); // čekamo spremnost // Serial.println (F ("\ nSamo pošaljite bilo koji znak za početak programiranja i demonstracije DMP -a:")); // while (Serial.available () && Serial.read ()); // prazan međuspremnik // while (! Serial.available ()); // čekamo podatke // while (Serial.available () && Serial.read ()); // ponovno isprazniti međuspremnik // učitati i konfigurirati DMP Serial.println (F ("Inicijalizacija DMP …")); devStatus = mpu.dmpInitialize (); // ovdje unosite vlastite pomake žiroa, prilagođene za minimalnu osjetljivost mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 tvornički zadani za moj testni čip // provjerite radi li (vraća 0 ako je tako) if (devStatus == 0) {// Vrijeme kalibracije: generirajte pomake i kalibrirajte naš MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // uključite DMP, sada kada je spreman Serial.println (F ("Omogućavanje DMP …")); mpu.setDMPEnabled (true); // omogućiti otkrivanje prekida Arduino Serial.print (F ("Omogućavanje otkrivanja prekida (Arduino vanjski prekid")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (") …")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // postavljamo zastavu DMP Ready tako da funkcija main loop () zna da je u redu koristiti je Serial.println (F ("DMP spreman! Čeka prvi prekid …")); dmpReady = istina; // dobiti očekivanu veličinu paketa DMP za kasniju usporedbu packetSize = mpu.dmpGetFIFOPacketSize (); } else {// GREŠKA! // 1 = početno učitavanje memorije nije uspjelo // 2 = ažuriranja konfiguracije DMP -a nisu uspjela // (ako će se prekinuti, obično će kôd biti 1) Serial.print (F ("DMP Initialization failed (code")); Serial. ispis (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Dohvati najnoviji paket // prikaže Eulerove kutove u stupnjevima mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& gravitacija, & q); mpu.dmpGetYawPitchRoll (rotacija, & q, & gravitacija); } Serial.print ("X"); Serial.print (rotacija [2] * 180/M_PI); Serial.print ("\ t Y"); Serial.print (rotacija [1] * 180/M_PI); Serial.print ("\ t Z"); Serial.println (rotacija [0] * 180/M_PI); x = zakretanje [2] * 180/M_PI; y = zakretanje [1] * 180/M_PI; z = zakretanje [0] * 180/M_PI; if (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (255, 0, 0); // Crveno pri okretanju na stranu} else if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Zeleno kad se okrene na drugu stranu} else if (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Žuta kada se okrene na treću stranu} else if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Plavo kad se okrene na četvrtu stranu} else if (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Crno kad je naopako} if (activeColor! = OldActiveColor) {pixels.clear (); pixels.fill (activeColor); pikseli.show (); oldActiveColor = activeColor; }}

Na kraju možete otvoriti i učitati datoteku ColorCube.ino. Postavite ColorCube na ravnu površinu i uključite ga. Nemojte ga pomicati dok ne počne svijetliti bijelom bojom nakon kalibracije (nekoliko sekundi). Zatim možete staviti ColorCube sa strane i boja će se promijeniti - svaka strana ima svoju boju - crvenu, zelenu, plavu, žutu. ColorCube se gasi kad je okrenut naopako.

Korak 6: Sklapanje

Sklapanje
Sklapanje
Sklapanje
Sklapanje
Sklapanje
Sklapanje

Budite pažljivi tijekom montaže. Žice i svi dijelovi ne vole grubo ponašanje.

Gumb s 3D otisnutim dijelom - meko pritisnite gumb do rupe u donjem ispisanom dijelu (kao što je prikazano na slici), mora glatko ulaziti i izlaziti, ako ne koristite skalpel ili oštar nož ili brusni papir za uklanjanje viška materijala (uglavnom iznutra na vrh kružne rupe na donjem dijelu). (fotografija)

Stavite MPU-6050, Arduino Nano, TP4056 i MT3608 u njihove rupe. Kutija ima izbočine ispod kojih umetnete MPU-6050 i MT3608. Stavite USB konektore Arduino Nano i TP4056 na njihove rupe na bočnim stijenkama kutije. (fotografija)

Za pričvršćivanje komponenti upotrijebite 3D tiskanu bravu (provjerite jesu li sve komponente čvrsto položene na donji dio). To je važno jer će se netko sigurno pokušati igrati s vašim ColorCubeom kao s kockicama. (fotografija)

Stavite i pričvrstite bateriju u njezinu rupu ako se ne drži čvrsto.

Stavite samoblokirajuće dugme na pripremljenu rupu u donjem dijelu. Samoblokirajući gumb mora biti u položaju ON (kratko). Lagano pritisnite gumb prema dolje. Testirajte funkcionalnost pomoću gumba s 3D ispisom. (fotografije)

Pomoću dva vijka M2 pričvrstite LED prsten na srednji ispisani dio. Dobro je koristiti orijentaciju prstena gdje su žičani kontakti u zaobljenoj rupi srednjeg ispisanog dijela. (fotografije)

Izborno: Tu i tamo upotrijebite kapljicu vrućeg ljepila - spoj žica s prstenom, za preduge žice, ako nešto nije dovoljno čvrsto itd. Može učiniti vaš ColorCube izdržljivijim.

Rasporedite žice unutar ColorCube -a tako da ih ne prikliješte ispisani dijelovi. Stavite srednji dio na donji dio. Za pričvršćivanje upotrijebite vijak M3. (fotografija)

Na kraju nježno gurnite gornji ispisani dio prema donjem. (fotografija)

Korak 7: Gotovo

Čestitam. Zabavi se.

Preporučeni: