Sadržaj:
- Korak 1: Materijali
- Korak 2: Ispis
- Korak 3: Krug
- Korak 4: Lemljenje
- Korak 5: Kodirajte
- Korak 6: Sklapanje
- Korak 7: Gotovo
Video: ColorCube: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
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
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
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
Korak 4: 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
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:
Kako: Instaliranje Raspberry PI 4 bez glave (VNC) s Rpi-imagerom i slikama: 7 koraka (sa slikama)
Kako: Instaliranje Raspberry PI 4 Headless (VNC) s Rpi-imagerom i slikama: Planiram koristiti ovaj Rapsberry PI u hrpi zabavnih projekata na svom blogu. Slobodno provjerite. Htio sam se vratiti korištenju Raspberry PI -a, ali nisam imao tipkovnicu ili miš na novoj lokaciji. Prošlo je dosta vremena od postavljanja maline
Kako napraviti brojač koraka?: 3 koraka (sa slikama)
Kako napraviti brojač koraka?: Nekada sam se dobro snašao u mnogim sportovima: hodanje, trčanje, vožnja bicikla, igranje badmintona itd. Volim jahanje da bih brzo putovao. Pa, pogledaj moj trbušni trbuh … Pa, u svakom slučaju, odlučujem ponovno početi vježbati. Koju opremu trebam pripremiti?
Brojač koraka - Mikro: Bit: 12 koraka (sa slikama)
Brojač koraka - Micro: Bit: Ovaj projekt će biti brojač koraka. Za mjerenje koraka koristit ćemo senzor akcelerometra koji je ugrađen u Micro: Bit. Svaki put kad se Micro: Bit protrese, zbroju ćemo dodati 2 i prikazati ga na ekranu
Atari Punk konzola s bebom Sekvencer za 8 koraka: 7 koraka (sa slikama)
Atari Punk konzola s Baby 8 Step Sequencer-om: Ova srednja verzija je sve-u-jednom Atari Punk Console i Baby 8 Step Sequencer koje možete glodati na stolnom PCB glodalici Bantam Tools. Sastoji se od dvije ploče: jedna je ploča korisničkog sučelja (UI), a druga je pomoćna bo
Kako rastaviti računalo jednostavnim koracima i slikama: 13 koraka (sa slikama)
Kako rastaviti računalo jednostavnim koracima i slikama: Ovo uputstvo o tome kako rastaviti računalo. Većina osnovnih komponenti je modularna i lako se uklanja. Međutim, važno je da se oko toga organizirate. To će vam pomoći da spriječite gubitak dijelova, a također i prilikom ponovnog sastavljanja