Satura rādītājs:
- 1. solis: materiāli
- 2. darbība: drukāšana
- 3. solis: ķēde
- 4. solis: lodēšana
- 5. darbība: kods
- 6. darbība: salikšana
- 7. darbība. Gatavs
Video: ColorCube: 7 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
Es izgatavoju šo lampu savai mazmeitai, kad viņa mācījās krāsas. Mani iedvesmoja MagicCube projekts, bet beidzot visas detaļas izveidoju no nulles. To ir viegli drukāt un viegli salikt, un jūs iegūsit zināšanas par žiroskopu moduļa darbību.
1. solis: materiāli
Arduino daļa:
- Arduino Nano (labāk bez lodēšanas galvenes tapām)
- MPU-6050 3 asu žiroskopu modulis
- TP4056 mikro USB akumulatora lādētāja modulis
- Jaudas pastiprinātāja modulis MT3608
- LiPo akumulators 902936 900mA vai 503035 3.7V 500mA. Jūs varat izmantot jebkuru LiPo akumulatoru ar 3, 7V un izmēru mazāku par 35x30x15mm, bet akumulators ir jānostiprina caurumā.
- PS-22F28 pašbloķējošā poga vai PS-22F27 pašbloķējošā poga lieliski iederas izdrukātajā daļā.
- LED RGB WS2812B gredzens - 16 LED 68 mm ārējais diametrs - jūs varat izmantot jebkuru gredzenu pat ar dažādu gaismas diožu skaitu (jāmaina viena konstante kodā - #define NUMPIXELS 16) ar maksimālo diametru 76 mm (varat izmantot arī Neopixel Stick ar 8x LED vai jebkura LED sloksne ar WS2812b).
Gredzenu piemēri: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm
Montāžai varat izmantot jebkuru caurumu, kas uzdrukāts vidējā daļā. Tie aptver gandrīz jebkuru iespēju (nav nepieciešams, lai gredzens būtu 100% centrēts).
Vadi
Kubs
- PLA pavediens kuba augšējai daļai - izmantojiet baltu krāsu, jo caurspīdīgs nav labs (gaismas diodes ir redzamas un krāsa nav gluda), mans ieteikums ir Prusament Vanilla White
- PLA kvēldiegs apakšējām, vidējām un pogu daļām - izmantojiet tumšu krāsu, jo dažiem Arduino moduļiem ir gaismas augšpusē, un tas neder ar kuba gaismas diodes krāsām, mans ieteikums ir Prusament Galaxy Black
- 1x M3x5 pašvītņojoša skrūve - garums (10 mm) un galvas forma nav kritiska - skrūve nav redzama
- 2x M2x3 pašvītņojoša skrūve - garums (5 mm) un galvas forma nav kritiska - skrūves nav redzamas
Rīki
- 3D printeris
- Daudzmetru
- Lodāmurs
- Skrūvgriezis
2. darbība: drukāšana
Visas ColorCube daļas tika izstrādātas Autodesk Fusion360. f3d fails ir pievienots.
ColorCube tika izdrukāts uz Prusa i3 MK3S printera ar visiem noklusējuma iestatījumiem, un es negaidu nekādas nepieciešamās izmaiņas dažādos printeros. Izmantojiet savus iecienītākos PLA iestatījumus (ja tie ir drukāti uz PLA, nav problēmu izmantot PETG vai ASA).
3D drukāšanas parametri:
- Slānis 0,2 mm (0,2 mm KVALITĀTES iestatījumi PrusaSlicer)
- Prusament PLA pavedienu iestatījumi PrusaSlicer
- Uzpilde 15%
- Nav atbalsta
- Bez malas
3. solis: ķēde
4. solis: lodēšana
Brīdinājums: izmantojiet multimetru, lai pārliecinātos, ka līdzstrāvas pastiprinātājs MT3608 izvada 5 V. Pirmkārt - pirms mērīšanas - pagrieziet apdari pulksteņrādītāja virzienā līdz galam (noklikšķinot). Pievienojot spriegumu (3, 7V) ieejai, tam jāsniedz aptuveni tāda pati vērtība. Pagrieziet pretēji pulksteņrādītāja virzienam (jums vajadzēs 10–20 pilnus apgriezienus) un pēkšņi paaugstināsit spriegumu. Klusi iestatiet 5 V izeju. (foto)
Paskatieties uz drukāto kuba apakšējo daļu. Katrai sastāvdaļai ir savs caurums. Tas nosaka, cik ilgi vadi starp katru komponentu jums būs nepieciešami (neizmantojiet īpaši garus vadus, pretējā gadījumā jūs saņemsiet vadu džungļus). (foto)
Lodēšanas vadi starp Arduino Nano un tikai LED gredzenu (3 vadi: sarkans 5V - 5V, melns GND - GND, zils D6 - DI). Veiciet LED gredzenu funkcionalitātes pārbaudi no nākamās nodaļas. (foto)
Ja viss ir kārtībā, turpiniet pievienot Gyro MPU6050 (5 vadi: sarkans 5V - VCC, melns GND - GND, zils A4 - SDA, zaļš A5 - SCL, dzeltens D2 - INT). Augšupielādējiet ColorCube.ino kodu un pārbaudiet (citas sastāvdaļas ir paredzētas tikai akumulatoram un uzlādēšanai). (foto)
Ja viss ir kārtībā, pievienojiet pārējās sastāvdaļas. Ir tikai sarkani (+) un melni (-) vadi. Izvēlieties pareizās tapas uz pašbloķējošās pogas (nav pieslēgta, ja netiek nospiesta). Pārbaudiet akumulatora un akumulatora uzlādes funkcionalitāti. (foto)
Sarkanās gaismas diodes iedegas uz TP4056 uzlādes laikā un zilas gaismas diodes, kad tās ir pilnībā uzlādētas. Caurums virs TP4056 vidējā drukātā daļā nodod LED gaismu ColorCube augšējai daļai, un jūs varat atpazīt uzlādes fāzi. (foto)
5. darbība: kods
Pirmkārt, jums ir jālejupielādē nepieciešamās bibliotēkas.
Ir sīki izstrādāti norādījumi par Adafruit Neopixel bibliotēku:
LED gredzenu funkcionalitātes tests: varat pārbaudīt savu ķēdi, izmantojot bibliotēkā iekļauto piemēru. Atveriet failu no Fails/Piemēri/Adafruit NeoPixels/vienkārši un augšupielādējiet (neaizmirstiet pareizi iestatīt šo rindu pēc izmantoto pikseļu skaita: #define NUMPIXELS 16).
I2Cdev un MPU6050: lejupielādējiet un izpakojiet i2cdevlib-master.zip failu no vietnes https://github.com/jrowberg/i2cdevlib. Kopējiet veidlapu, kas ir neiesaiņota, i2cdevlib-master/Arduino divas apakšmapes: I2Cdev un MPU6050. Abi kopē uz Arduino IDE bibliotēkas mapi (dokumenti/Arduino/bibliotēkas, ja tiek instalēta pēc noklusējuma).
Pēc bibliotēku kopēšanas neaizmirstiet restartēt Arduino IDE.
#include #ifdef _AVR_ #include // Nepieciešams 16 MHz Adafruit piekariņam #endif #include "Wire.h" include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // izmantojiet 2. tapu Arduino Uno un lielākajā daļā dēļu #definējiet PIN 6 #define NUMPIXELS 16 // Iestatiet pareizo gaismas diožu skaitu Adafruit_NeoPixel pikseļi (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = nepatiess; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Kvartērijs q; VectorFloat gravitācija; pludiņa rotācija [3]; int x, y, z; gaistošs bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = true; } void setup () {Serial.begin (115200); pikseļi.sākas (); pikseļi.skaidrs (); pikseļi.setBrightness (128); #if definēts (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // pievienoties I2C kopnei (I2Cdev bibliotēka to nedara automātiski) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz I2C pulkstenis. Komentējiet šo rindiņu, ja rodas apkopošanas grūtības #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Serial); Serial.println (F ("I2C ierīču inicializēšana …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // pārbaudīt savienojumu Serial.println (F ("Ierīču savienojumu pārbaude …")); Serial.println (mpu.testConnection ()? F ("MPU6050 savienojums izdevies"): F ("MPU6050 savienojums neizdevās")); // gaidiet gatavību // Serial.println (F ("\ nSūtiet jebkuru rakstzīmi, lai sāktu DMP programmēšanu un demonstrāciju:")); // while (Serial.available () && Serial.read ()); // tukšs buferis // while (! Serial.available ()); // gaidīt datus // while (Serial.available () && Serial.read ()); // atkal tukšs buferis // ielādēt un konfigurēt DMP Serial.println (F ("DMP inicializēšana …")); devStatus = mpu.dmpInitialize (); // šeit ievadiet savus žiroskopu nobīdes, pielāgojot minimālajai jutībai mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 rūpnīcas noklusējuma iestatījums manai testa mikroshēmai // pārliecinieties, vai tā darbojās (ja tā atgriež 0), ja (devStatus == 0) {// Kalibrēšanas laiks: ģenerējiet nobīdes un kalibrējiet mūsu MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // ieslēdziet DMP tagad, kad tas ir gatavs Serial.println (F ("DMP iespējošana …")); mpu.setDMPEnabled (true); // iespējot Arduino pārtraukuma noteikšanu Serial.print (F ("Pārtraukuma noteikšanas iespējošana (Arduino ārējais pārtraukums"))); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // iestatiet mūsu DMP Ready karodziņu, lai galvenā cilpa () funkcija zinātu, ka ir pareizi to izmantot Serial.println (F ("DMP gatavs! Gaida pirmo pārtraukumu …")); dmpReady = true; // iegūt paredzamo DMP paketes izmēru vēlākai salīdzināšanai packetSize = mpu.dmpGetFIFOPacketSize (); } cits {// KĻŪDA! // 1 = sākotnējā atmiņas ielāde neizdevās // 2 = DMP konfigurācijas atjauninājumi neizdevās // (ja tas pārtrauks, parasti kods būs 1) Serial.print (F ("DMP inicializācija neizdevās (kods))); Seriāls. print (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Iegūstiet jaunāko paketi // parādiet Eilera leņķus grādos mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& gravitācija, & q); mpu.dmpGetYawPitchRoll (rotācija, & q, & gravitācija); } Serial.print ("X"); Sērijas nospiedums (rotācija [2] * 180/M_PI); Serial.print ("\ t Y"); Sērijas nospiedums (rotācija [1] * 180/M_PI); Serial.print ("\ t Z"); Sērijas.println (rotācija [0] * 180/M_PI); x = rotācija [2] * 180/M_PI; y = rotācija [1] * 180/M_PI; z = rotācija [0] * 180/M_PI; ja (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pikseļi. Krāsa (255, 0, 0); // Sarkans, pagriežoties uz sāniem} else if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Zaļš, pagriežoties uz otro pusi} else if (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Dzeltens, pagriežoties uz trešo pusi} else if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Zils, pagriežoties uz ceturto pusi} else if (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // melns, kad otrādi} if (activeColor! = OldActiveColor) {pixels.clear (); pixels.fill (activeColor); pikseļi.parādīt (); oldActiveColor = aktīvaKrāsa; }}
Beidzot jūs varat atvērt un augšupielādēt failu ColorCube.ino. Novietojiet ColorCube uz līdzenas virsmas un ieslēdziet to. Nepārvietojiet to, kamēr pēc kalibrēšanas (dažas sekundes) tas sāk iedegties baltā krāsā. Tālāk jūs varat novietot ColorCube uz sāniem, un krāsa mainīsies - katrai pusei ir sava krāsa - sarkana, zaļa, zila, dzeltena. ColorCube nodziest, kad tas ir apgriezts otrādi.
6. darbība: salikšana
Montāžas laikā esiet saudzīgs. Vadi un visas detaļas nepatīk rupja uzvedība.
Poga 3D drukātā daļa - maigi ievietojiet pogu apakšējās drukātās daļas caurumā (kā parādīts attēlā), tai vienmērīgi jāiziet un jāiziet, ja neizmantojiet skalpeli vai asu nazi vai smilšpapīru, lai noņemtu visu lieko materiālu (galvenokārt iekšpusē) apļa augšdaļas apakšējā daļā). (foto)
Ievietojiet MPU-6050, Arduino Nano, TP4056 un MT3608 savos caurumos. Kastē ir izvirzījumi, zem kuriem ievietojat MPU-6050 un MT3608. Ievietojiet Arduino Nano un TP4056 USB savienotājus savos caurumos kastes sānu sienās. (foto)
Izmantojiet 3D drukātu slēdzeni, lai nostiprinātu komponentus (pārliecinieties, ka visas detaļas cieši pieguļ apakšējai daļai). Tas ir svarīgi, jo kāds noteikti mēģinās spēlēties ar jūsu ColorCube kā ar kauliņiem. (foto)
Ievietojiet un nostipriniet akumulatoru savā caurumā, ja tas nav cieši turēts.
Novietojiet pašbloķējošo pogu pie sagatavotā cauruma apakšējā daļā. Pašbloķējošajai pogai jābūt ON pozīcijā (īsa). Viegli nospiediet pogu uz leju. Pārbaudiet funkcionalitāti ar 3D drukāto pogu. (fotogrāfijas)
Izmantojiet divas M2 skrūves, lai LED gredzenu piestiprinātu pie vidējās drukātās daļas. Ir labi izmantot gredzena orientāciju vietās, kur stieples kontakti atrodas noapaļotajā vidējās drukātās daļas caurumā. (fotogrāfijas)
Neobligāti: šur tur izmantojiet pilienu karstas līmes - vadu savienojums ar gredzenu, pārāk gariem vadiem, ja kaut kas nav pietiekami saspringts utt. Tas var padarīt jūsu ColorCube izturīgāku.
Sakārtojiet vadus ColorCube iekšpusē, lai tie netiktu saspiesti ar drukātajām detaļām. Novietojiet vidējo daļu apakšā. Lai to salabotu, izmantojiet M3 skrūvi. (foto)
Visbeidzot viegli piespiediet augšējo drukāto daļu uz apakšējo. (foto)
7. darbība. Gatavs
Apsveicu. Izklaidējieties.
Ieteicams:
Kā: Raspberry PI 4 bez galvas (VNC) instalēšana ar RPI attēlu un attēliem: 7 soļi (ar attēliem)
Kā: Raspberry PI 4 bez galvas (VNC) instalēšana ar Rpi-imager un Pictures: Es plānoju izmantot šo Rapsberry PI daudzos jautros projektos savā emuārā. Jūtieties brīvi to pārbaudīt. Es gribēju atkal izmantot savu aveņu PI, bet manā jaunajā vietā nebija tastatūras vai peles. Pagāja laiks, kopš es izveidoju aveņu
Arduino Halloween Edition - zombiju uznirstošais ekrāns (soļi ar attēliem): 6 soļi
Arduino Helovīna izdevums - zombiju uznirstošais ekrāns (soļi ar attēliem): Vai vēlaties Helovīnā nobiedēt savus draugus un radīt kliedzošu troksni? Vai arī vienkārši gribi uztaisīt labu palaidnību? Šis zombiju uznirstošais ekrāns to var izdarīt! Šajā pamācībā es iemācīšu jums, kā viegli izveidot izlecošus zombijus, izmantojot Arduino. HC-SR0
Skrūve - DIY bezvadu uzlādes nakts pulkstenis (6 soļi): 6 soļi (ar attēliem)
Bolt - DIY bezvadu uzlādes nakts pulkstenis (6 soļi): Induktīvās uzlādes (pazīstamas arī kā bezvadu uzlāde vai bezvadu uzlāde) ir bezvadu enerģijas pārneses veids. Tas izmanto elektromagnētisko indukciju, lai nodrošinātu elektroenerģiju pārnēsājamām ierīcēm. Visizplatītākā lietojumprogramma ir Qi bezvadu uzlādes st
Ciclop 3D skeneris Mans ceļš soli pa solim: 16 soļi (ar attēliem)
Ciclop 3d skeneris mans ceļš soli pa solim: Sveiki, es sapratīšu slaveno Ciclop 3D skeneri. Visi soļi, kas ir labi izskaidroti sākotnējā projektā, nav pieejami. Vispirms veicu dažus labojumus, lai vienkāršotu procesu Es izdrukāju pamatni un atkārtoti pārveidoju PCB, bet turpiniet
Kamera atvieglotiem laika intervāla attēliem: 22 soļi (ar attēliem)
Kamera atvieglotiem laika intervāla attēliem: es pārbaudīju vienu no citām instrukcijām par laika nobīdes filmu veidošanu. Viņš diezgan labi aptvēra filmas daļu. Viņš pastāstīja par bezmaksas programmatūru, kuru varat lejupielādēt, lai izveidotu filmas. Es sev teicu: domāju, ka redzēšu, vai varu