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, Decembar
Anonim
Image
Image
ColorCube
ColorCube
ColorCube
ColorCube

Napravio sam ovu lampu za svoju unuku dok je učila boje. Bio sam inspiriran projektom MagicCube, ali sam napokon stvorio sve dijelove od nule. Lako se štampa i lako sastavlja i steći ćete znanje o načinu rada žiroskopskog modula.

Korak 1: Materijali

Materijali
Materijali

Arduino dio:

  • Arduino Nano (bolje bez pinova za lemljenje zaglavlja)
  • 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 sa 3, 7V i veličinom manjom od 35x30x15 mm, ali morate pričvrstiti bateriju u rupu.
  • PS-22F28 Samo-zaključavajuće dugme ili PS-22F27 Samo-zaključavajuće dugme savršeno pristaje štampanom dijelu.
  • LED RGB WS2812B prsten - 16 LED 68 mm vanjski promjer - možete koristiti bilo koji prsten čak i sa različitim brojem LED dioda (morate promijeniti jednu konstantu u kodu - #define NUMPIXELS 16) maksimalnog promjera 76 mm (možete koristiti i neopikselni štap sa 8x LED ili bilo koja LED traka sa 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

Cube

  • PLA vlakna za gornji dio kocke - koristite bijelu boju jer prozirna nije dobra (LED diode su vidljive i boja nije glatka), moja preporuka je Prusament Vanilla White
  • PLA vlakna za donje, srednje i dijelove dugmadi - 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 - Dužina (10 mm) i oblik glave nisu kritični - vijak se ne vidi
  • 2x samorezni vijak M2x3 - Dužina (5 mm) i oblik glave nisu kritični - vijci nisu vidljivi

Alati

  • 3D štampač
  • Više metara
  • Lemilica
  • Šrafciger

Korak 2: Štampanje

Štampanje
Štampanje
Štampanje
Štampanje

Svi dijelovi 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 štampano na PLA, nema problema s upotrebom PETG ili ASA).

Parametri 3D štampe:

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

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 ukras u smjeru kazaljke na satu do kraja (klik). Kada 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. Lagano postavite 5V na izlaz. (fotografija)

Pogledajte odštampani donji deo kocke. Svaka komponenta ima svoju rupu. Određuje koliko će vam žica između svake komponente trebati (nemojte koristiti ekstra 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). Otpremite ColorCube.ino kôd i testirajte (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 pinove na samoblokirajućem gumbu (nije povezano ako se ne pritisne). Testirajte funkcionalnost baterije i punjenja baterije. (fotografija)

Crvena LED svjetla na TP4056 pri punjenju 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 biblioteke.

Postoje detaljna uputstva za biblioteku Adafruit Neopixel:

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

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

Ne zaboravite ponovno pokrenuti Arduino IDE nakon kopiranja biblioteka.

#include #ifdef _AVR_ #include // Potrebno za 16 MHz Adafruit Trinket #endif #include "Wire.h" uključuje "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 ispravan broj LED dioda Adafruit_NeoPixel piksela (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; VectorFloat gravitacija; rotacija plovka [3]; int x, y, z; volatile bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = true; } void setup () {Serial.begin (115200); pixels.begin (); pixels.clear (); pixels.setBrightness (128); #if definirano (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // pridruži se I2C sabirnici (biblioteka 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 pri sastavljanju #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 da bude spreman // Serial.println (F ("\ nPošaljite bilo koji znak za početak DMP programiranja i demonstracije:")); // while (Serial.available () && Serial.read ()); // prazan bafer // while (! Serial.available ()); // čekamo podatke // while (Serial.available () && Serial.read ()); // ponovo isprazniti bafer // 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 zadane vrijednosti za moj testni čip // provjerite je li radio (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ćavaju 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 se prvi prekid …")); dmpReady = true; // dobiti očekivanu veličinu DMP paketa za kasnije poređenje packetSize = mpu.dmpGetFIFOPacketSize (); } else {// GREŠKA! // 1 = početno učitavanje memorije nije uspjelo // 2 = ažuriranje DMP konfiguracije nije uspjelo // (ako će se prekinuti, obično će kôd biti 1) Serial.print (F ("DMP inicijalizacija nije uspjela (kod")); Serijski. print (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Nabavite najnoviji paket // prikažete 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 = rotacija [2] * 180/M_PI; y = rotacija [1] * 180/M_PI; z = rotacija [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 kada 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); pixels.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 kada je okrenut naopačke.

Korak 6: Sklapanje

Sklapanje
Sklapanje
Sklapanje
Sklapanje
Sklapanje
Sklapanje

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

Gumb sa 3D otisnutim dijelom - meko pritisnite gumb do rupe u donjem dijelu odštampanog (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 unutra 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 ubacujete MPU-6050 i MT3608. Stavite USB konektore Arduino Nano i TP4056 na njihove rupe na bočnim zidovima 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 njenu rupu ako se ne drži čvrsto.

Stavite samoblokirajuće dugme na pripremljenu rupu u donjem dijelu. Samoblokirajuće dugme mora biti u položaju ON (kratko). Lagano pritisnite dugme nadole. Testirajte funkcionalnost pomoću 3D štampanog dugmeta. (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)

Opcionalno: 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 kako ih štampani dijelovi ne bi prikliještili. Stavite srednji dio na donji dio. Za pričvršćivanje upotrijebite vijak M3. (fotografija)

Konačno, lagano gurnite gornji ispisani dio prema donjem. (fotografija)

Korak 7: Gotovo

Čestitam. Zabavi se.

Preporučuje se: