
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48




Այս լամպը պատրաստել եմ թոռնիկիս համար, երբ նա գույներ էր սովորում: Ինձ ոգեշնչեց MagicCube նախագիծը, բայց վերջապես ստեղծեցի բոլոր մասերը զրոյից: Հեշտ է տպել և հեշտ հավաքել, և դուք կստանաք գիտելիքներ, թե ինչպես է աշխատում գիրո մոդուլը:
Քայլ 1: Նյութեր

Arduino մաս
- Arduino Nano (ավելի լավ ՝ առանց զոդման վերնագրի կապում)
- MPU-6050 3-Axis Gyro մոդուլ
- TP4056 Միկրո USB մարտկոցի լիցքավորման մոդուլ
- MT3608 Step Up Power Booster մոդուլ
- LiPo մարտկոց 902936 900 մԱ կամ 503035 3.7 Վ 500 մԱ: Դուք կարող եք օգտագործել ցանկացած LiPo մարտկոց `3, 7 Վ և 35x30x15 մմ -ից պակաս չափերով, բայց դուք պետք է մարտկոցը ամրացնեք անցքի մեջ:
- PS-22F28 Ինքնափակման կոճակ կամ PS-22F27 Ինքնափակման կոճակը երկուսն էլ հիանալի տեղավորվում են տպագիր մասի վրա:
- LED RGB WS2812B մատանի - 16 LED 68 մմ արտաքին տրամագիծ - կարող եք օգտագործել ցանկացած օղակ նույնիսկ տարբեր թվով լուսադիոդներով (պետք է փոխել մեկ հաստատուն ՝ ծածկագրում ՝ #սահմանել NUMPIXELS 16) 76 մմ առավելագույն տրամագծով (կարող եք օգտագործել նաև Neopixel Stick) 8x LED կամ ցանկացած LED շերտ WS2812b- ով):
Օղակների օրինակներ. 8 LED 32 մմ 12 LED 38 մմ 12 LED 50 մմ 16 LED 60 մմ 24 LED 66 մմ 16 LED 44 մմ
Մոնտաժի համար կարող եք օգտագործել միջին մասում տպված ցանկացած անցք: Դրանք ընդգրկում են գրեթե ցանկացած տարբերակ (անհրաժեշտ չէ, որ մատանին 100% կենտրոնացված լինի):
Լարերը
Խորանարդ
- PLA թելիկ խորանարդի վերևի մասի համար - օգտագործեք սպիտակ գույն, քանի որ թափանցիկը լավ չէ (LED- ները տեսանելի են, իսկ գույնը հարթ չէ), իմ առաջարկությունն է Prusament Vanilla White
- PLA թել ՝ ներքևի, միջին և կոճակի մասերի համար - օգտագործեք մուգ գույն, քանի որ որոշ Arduino մոդուլներ լուսարձակներ են վերևում և այն չի տեղավորվում խորանարդի LED- ների գույների հետ, իմ առաջարկությունն է Prusament Galaxy Black
- 1x M3x5 ինքնահոսքի պտուտակ - երկարությունը (10 մմ) և գլխի ձևը կարևոր չեն, պտուտակը տեսանելի չէ
- 2x M2x3 ինքնահոսքի պտուտակ - երկարությունը (5 մմ) և գլխի ձևը կարևոր չեն, պտուտակները տեսանելի չեն
Գործիքներ
- 3D տպիչ
- Բազմամետր
- Sոդման երկաթ
- Պտուտակահան
Քայլ 2: Տպագրություն


ColorCube- ի բոլոր մասերը նախագծված են Autodesk Fusion360- ում: f3d ֆայլը կցված է:
ColorCube- ը տպվել է Prusa i3 MK3S տպիչի վրա `բոլոր կանխադրված պարամետրերով, և ես չեմ ակնկալում որևէ անհրաժեշտ փոփոխություն տարբեր տպիչների վրա: Օգտագործեք ձեր նախընտրած կարգավորումները PLA- ի համար (եթե տպված է PLA- ում, PETG կամ ASA- ի օգտագործման խնդիր չկա):
3D տպագրության պարամետրեր.
- Շերտ 0.2 մմ (0.2 մմ ՈՐԱԿԻ կարգավորումներ PrusaSlicer- ում)
- Prusament PLA թելերի կարգավորումները PrusaSlicer- ում
- Լցնել 15%
- Աջակցություն չկա
- Ոչ եզերք
Քայլ 3: Շղթա

Քայլ 4: Sոդում



Wգուշացում. Օգտագործեք բազմաչափ հաշվիչ `համոզվելու համար, որ DC-DC ուժեղացուցիչ MT3608- ը թողնում է 5 Վ: Նախ `չափելուց առաջ, ժամացույցի սլաքի ուղղությամբ պտտեք ավարտը (կտտացնելով): Երբ լարումը (3, 7 Վ) միացնում է մուտքին, այն պետք է տա մոտավորապես նույն արժեքը: Պտտեք ժամացույցի սլաքի հակառակ ուղղությամբ (ձեզ հարկավոր կլինի 10-20 ամբողջական պտույտ) և հանկարծակի լարումը բարձրանա: Փափուկ միացրեք 5 Վ ելքի վրա: (լուսանկար)
Նայեք խորանարդի տպված ներքևի հատվածին: Յուրաքանչյուր բաղադրիչ ունի իր սեփական անցքը: Այն սահմանում է, թե որքան երկար լարեր կպահանջվեն յուրաքանչյուր բաղադրիչի միջև (մի օգտագործեք չափազանց երկար լարեր, հակառակ դեպքում մետաղալար ջունգլիներ եք ստանում): (լուսանկար)
Arոդման լարեր միայն Arduino Nano- ի և LED օղակի միջև (3 լար `կարմիր 5V - 5V, սև GND - GND, կապույտ D6 - DI): Գործարկեք LED օղակի ֆունկցիոնալության թեստը հաջորդ գլխից: (լուսանկար)
Եթե ամեն ինչ կարգին է, շարունակեք ավելացնել Gyro MPU6050 (5 լար ՝ կարմիր 5V - VCC, սև GND - GND, կապույտ A4 - SDA, կանաչ A5 - SCL, դեղին D2 - INT): Վերբեռնեք ColorCube.ino կոդը և փորձարկեք (այլ բաղադրիչները նախատեսված են միայն մարտկոցի և լիցքավորման համար): (լուսանկար)
Եթե ամեն ինչ կարգին է, ավելացրեք մնացած բաղադրիչները: Կան միայն կարմիր (+) և սև (-) լարեր: Ընտրեք ինքնափակման կոճակի աջ կապում (միացված չէ, երբ սեղմված չէ): Փորձարկեք մարտկոցի և մարտկոցի լիցքավորման ֆունկցիոնալությունը: (լուսանկար)
Կարմիր LED լույսերը լիցքավորման ժամանակ TP4056- ով և կապույտ LED լույսերը ՝ ամբողջովին լիցքավորված: Միջին տպագիր հատվածում TP4056- ի վերևի անցքը LED լույս է փոխանցում ColorCube- ի վերևին, և դուք կարող եք ճանաչել լիցքավորման փուլը: (լուսանկար)
Քայլ 5: Կոդ
Նախ պետք է ներբեռնեք անհրաժեշտ գրադարանները:
Կան մանրամասն հրահանգներ Adafruit Neopixel գրադարանի համար ՝
LED օղակի ֆունկցիոնալության թեստ. Դուք կարող եք ստուգել ձեր սխեման `գրադարանում ներառված օրինակով: Բացեք ֆայլը Ֆայլից/Օրինակներից/Adafruit NeoPixels- ից/պարզ և վերբեռնեք (մի մոռացեք, որ այս տողը ճիշտ տեղադրեք ըստ օգտագործվող պիքսելների քանակի ՝ #define NUMPIXELS 16):
I2Cdev և MPU6050. Ներբեռնեք և անջատեք i2cdevlib-master.zip ֆայլը https://github.com/jrowberg/i2cdevlib- ից: Պատճենեք unzipped թղթապանակը i2cdevlib-master/Arduino երկու ենթապանակ ՝ I2Cdev և MPU6050: Երկուսն էլ պատճենվում են Arduino IDE գրադարանի թղթապանակում (Փաստաթղթեր/Arduino/գրադարաններ `կանխադրված տեղադրման դեպքում):
Մի մոռացեք վերագործարկել Arduino IDE- ն գրադարանները պատճենելուց հետո:
#ներառել #ifdef _AVR_ #ներառել // Պահանջվում է 16 ՄՀց հաճախականությամբ Adafruit մանրուք #endif #ներառել «Wire.h» ներառել «I2Cdev.h» #ներառել «MPU6050_6Axis_MotionApps20.h» MPU6050 mpu; #define INTERRUPT_PIN 2 // օգտագործեք PIN 2 Arduino Uno- ի և տախտակների մեծ մասում #սահմանեք PIN 6 #սահմանեք NUMPIXELS 16 // Սահմանեք LED- ների ճիշտ թիվը Adafruit_NeoPixel պիքսելներ (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = կեղծ; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t փաթեթ Չափ; uint16_t fifoCount; uint8_t fifoBuffer [64]; Quaternion q; VectorFloat ինքնահոս; բոց պտույտ [3]; int x, y, z; անկայուն bool mpuInterrupt = կեղծ; դատարկ dmpDataReady () {mpuInterrupt = true; } void setup () {Serial.begin (115200); pixels.begin (); pixels.clear (); pixels.setBrightness (128); #եթե սահմանված է (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // միանալ I2C ավտոբուսին (I2Cdev գրադարանը դա ինքնաբերաբար չի անում) #եթե I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C ժամացույց: Մեկնաբանեք այս տողը, եթե կազմման դժվարություններ ունեք #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Սերիա); Serial.println (F («I2C սարքերի նախաստորագրում …»)); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // ստուգեք կապը Serial.println (F («Սարքի միացումների փորձարկում …»)); Serial.println (mpu.testConnection ()? F ("MPU6050 կապը հաջող է"). F ("MPU6050 կապը ձախողվեց")); // սպասեք պատրաստ // Serial.println (F ("\ n Ուղարկեք որևէ կերպար ՝ DMP ծրագրավորումն ու ցուցադրումը սկսելու համար")); // while (Serial.available () && Serial.read ()); // դատարկ բուֆեր // while (! Serial.available ()); // սպասել տվյալների // մինչ (Serial.available () && Serial.read ()); // նորից դատարկ բուֆեր // բեռնել և կարգավորել DMP Serial.println (F ("DMP նախաստորագրում …")); devStatus = mpu.dmpInitialize (); // մատակարարեք ձեր սեփական գիրո փոխհատուցումները այստեղ ՝ փոքրացված զգայունության համար mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 գործարանային լռելյայն իմ փորձարկման չիպի համար // համոզվեք, որ այն աշխատել է (վերադարձնում է 0 -ն, եթե այո), եթե (devStatus == 0) {// Calibration Time. mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // միացրեք DMP- ը, այժմ, երբ այն պատրաստ է Serial.println (F («DMP- ի միացում …»)); mpu.setDMP Միացված է (ճշմարիտ); // միացնել Arduino- ի ընդհատումների հայտնաբերումը Serial.print (F ("Ընդհատման հայտնաբերման միացում (Arduino արտաքին ընդհատում")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (") …")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // սահմանեք մեր DMP Ready դրոշը, որպեսզի հիմնական loop () գործառույթը իմանա, որ դա նորմալ է օգտագործել այն Serial.println (F ("DMP պատրաստ է: Սպասում ենք առաջին ընդհատմանը …")); dmpReady = ճշմարիտ; // ստանալ սպասվող DMP փաթեթի չափը հետագայում համեմատվող packetSize = mpu.dmpGetFIFOPacketSize (); } այլ {// ՍԽԱԼ! // 1 = հիշողության սկզբնական բեռը ձախողվեց // 2 = DMP կոնֆիգուրացիայի թարմացումները ձախողվեցին // (եթե այն կոտրվի, սովորաբար կոդը կլինի 1) Serial.print (F ("DMP Initialization failed (code")); Serial. տպել (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) վերադառնալ; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Ստացեք վերջին փաթեթը // ցուցադրեք Էյլերի անկյունները աստիճաններով mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& ինքնահոս, & q); mpu.dmpGetYawPitchRoll (պտույտ, & q, & ինքնահոս); } Serial.print ("X"); Serial.print (պտույտ [2] * 180/M_PI); Serial.print ("\ t Y"); Serial.print (պտույտ [1] * 180/M_PI); Serial.print ("\ t Z"); Serial.println (պտույտ [0] * 180/M_PI); x = պտույտ [2] * 180/M_PI; y = պտույտ [1] * 180/M_PI; z = պտույտ [0] * 180/M_PI; եթե (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (255, 0, 0); // Կարմիր, երբ շրջվում ես դեպի}} եթե (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Կանաչ, երբ շրջվում ես դեպի երկրորդ կողմը} այլ դեպքում, եթե (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Դեղին, երբ շրջվում ես դեպի երրորդ կողմը} այլ դեպքում (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Կապույտ, երբ շրջվում ես չորրորդ կողմը} այլ դեպքում, եթե (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Սև, երբ գլխիվայր շրջվում է} if (activeColor! = OldActiveColor) {pixels.clear (); pixels.fill (activeColor); pixels.show (); oldActiveColor = activeColor; }}
Ի վերջո, կարող եք բացել և վերբեռնել ColorCube.ino ֆայլը: Տեղադրեք ColorCube- ը հարթ մակերևույթով և միացրեք այն: Մի տեղափոխեք այն, մինչև որ այն ստուգումից հետո (մի քանի վայրկյան) սպիտակ գույնով բացվի: Հաջորդը կարող եք տեղադրել ColorCube- ը կողքի վրա և գույնը կփոխվի. Յուրաքանչյուր կողմ ունի իր գույնը `կարմիր, կանաչ, կապույտ, դեղին: ColorCube- ը դուրս է գալիս, երբ այն գլխիվայր շրջվում է:
Քայլ 6: Հավաքում



Հավաքվելիս եղեք մեղմ: Լարերը և բոլոր մասերը չեն սիրում կոպիտ պահվածք:
Կոճակ 3D տպագիր մաս - ներքևում տպված հատվածի փոսին փափուկ տեղադրեք կոճակը (ինչպես ցույց է տրված նկարում), այն պետք է սահուն ներս մտնի և դուրս գա, եթե չօգտագործեք դանակ կամ սուր դանակ կամ ավազ թուղթ `ամբողջ ավելորդ նյութը հեռացնելու համար (հիմնականում ներսում ներքևի մասում շրջանաձև անցքի վերև): (լուսանկար)
Տեղադրեք MPU-6050, Arduino Nano, TP4056 և MT3608 դրանց անցքերին: Տուփի վրա կան ելուստներ, որոնց տակ տեղադրում եք MPU-6050 և MT3608: Arduino Nano- ի և TP4056- ի USB միակցիչները տեղադրեք տուփի կողային պատերի նրանց անցքերի մեջ: (լուսանկար)
Օգտագործեք 3D տպագիր կողպեքը `բաղադրիչները ամրացնելու համար (համոզվեք, որ բոլոր բաղադրիչները սերտորեն դրված են ներքևի մասում): Դա կարևոր է, քանի որ ինչ -որ մեկը, անշուշտ, կփորձի խաղալ ձեր ColorCube- ի հետ, ինչպես զառերի հետ: (լուսանկար)
Տեղադրեք և ամրացրեք մարտկոցը դրա փոսում, եթե այն ամուր չի պահվում:
Ներքեւի մասում պատրաստված փոսին տեղադրեք ինքնափակման կոճակը: Ինքնափակման կոճակը պետք է լինի ON դիրքում (կարճ): Մեղմորեն սեղմեք կոճակը ներքև: Փորձեք ֆունկցիոնալությունը 3D տպագիր կոճակով: (նկարներ)
Օգտագործեք երկու M2 պտուտակ `LED օղակը միջին տպագիր հատվածին ամրացնելու համար: Լավ է օգտագործել օղակի կողմնորոշումը, որտեղ մետաղալարերի կոնտակտները գտնվում են միջին տպագիր հատվածի կլորացված անցքում: (նկարներ)
Լրացուցիչ. Օգտագործեք մի կաթիլ տաք սոսինձ այստեղ -այնտեղ - լարերի միացում օղակին, չափազանց երկար լարերի համար, եթե որևէ բան բավականաչափ ամուր չէ և այլն: Դա կարող է ձեր ColorCube- ն ավելի դիմացկուն դարձնել:
ColorCube- ի ներսում տեղադրեք լարեր, որոնք չպետք է սեղմվեն տպագիր մասերով: Տեղադրեք միջին մասը ներքևից մեկին: Օգտագործեք M3 պտուտակը այն ամրացնելու համար: (լուսանկար)
Ի վերջո, վերևից տպված մասը նրբորեն մղեք ներքևի մեկին: (լուսանկար)
Քայլ 7: Կատարված է

Շնորհավորում եմ: Զվարճանալ.
Խորհուրդ ենք տալիս:
Ինչպես. Raspberry PI 4 Headless (VNC) տեղադրելը Rpi- պատկերիչով և նկարներով. 7 քայլ (նկարներով)

Ինչպես. Raspberry PI 4 Headless (VNC) տեղադրելը Rpi-imager- ով և նկարներով. Ես պլանավորում եմ օգտագործել այս Rapsberry PI- ն իմ բլոգում զվարճալի նախագծերի փունջում: Ազատորեն ստուգեք այն: Ես ուզում էի նորից օգտագործել իմ Raspberry PI- ն, բայց իմ նոր վայրում Ստեղնաշար կամ մկնիկ չկար: Որոշ ժամանակ անց ես ստեղծեցի ազնվամորի
Atari Punk Console With Baby 8 քայլ հաջորդականիչ. 7 քայլ (նկարներով)

Atari Punk Console With Baby 8 Step Sequencer: Այս միջանկյալ կառուցվածքը հանդիսանում է Atari Punk Console- ը և Baby 8 Step Sequencer- ը `բոլորը մեկում: Դուք կարող եք տրորել Bantam Tools Desktop PCB ֆրեզերային մեքենայի վրա: Այն բաղկացած է երկու տպատախտակից ՝ մեկը օգտագործողի միջերեսի (UI) տախտակ է, իսկ մյուսը ՝ կոմունալ ծառայությունների
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ) `8 քայլ

Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ). Ուլտրաձայնային ձայնային փոխարկիչներ L298N Dc կանացի ադապտեր էներգիայի մատակարարում արական dc pin Arduino UNOBreadboard և անալոգային նավահանգիստներ ՝ կոդը փոխարկելու համար (C ++)
Ինչպես ապամոնտաժել համակարգիչը հեշտ քայլերով և նկարներով. 13 քայլ (նկարներով)

Ինչպես ապամոնտաժել համակարգիչը հեշտ քայլերով և նկարներով. Սա հրահանգ է, թե ինչպես ապամոնտաժել համակարգիչը: Հիմնական բաղադրիչների մեծ մասը մոդուլային են և հեշտությամբ հանվում են: Այնուամենայնիվ, կարևոր է, որ դուք կազմակերպված լինեք դրա վերաբերյալ: Սա կօգնի ձեզ զերծ պահել մասերի կորստից, ինչպես նաև նորից հավաքելիս
Ciclop 3D Scanner My Way Քայլ առ քայլ ՝ 16 քայլ (նկարներով)

Ciclop 3D Scanner My Way Քայլ առ քայլ. Ողջույն, ես գիտակցելու եմ հանրահայտ Ciclop 3D սկաները: Բոլոր այն քայլերը, որոնք լավ բացատրված են սկզբնական նախագծում, ներկա չեն: Ես որոշ շտկումներ կատարեցի ՝ գործընթացը պարզեցնելու համար, նախ Ես տպում եմ հիմքը, իսկ հետո վերականգնում եմ PCB- ն, բայց շարունակում եմ