Orodha ya maudhui:

ColourCube: Hatua 7 (na Picha)
ColourCube: Hatua 7 (na Picha)

Video: ColourCube: Hatua 7 (na Picha)

Video: ColourCube: Hatua 7 (na Picha)
Video: Федя Великий – Хата на тата 7 сезон. Выпуск 9 от 22.10.2018 2024, Desemba
Anonim
Image
Image
ColourCube
ColourCube
ColourCube
ColourCube

Nilitengeneza taa hii kwa mjukuu wangu wakati alikuwa anajifunza rangi. Niliongozwa na mradi wa MagicCube lakini mwishowe niliunda sehemu zote kutoka mwanzoni. Ni rahisi kuchapisha na rahisi kukusanyika na utapata maarifa jinsi moduli ya gyro inavyofanya kazi.

Hatua ya 1: Vifaa

Vifaa
Vifaa

Sehemu ya Arduino:

  • Arduino Nano (bora bila pini za kichwa cha solder)
  • MPU-6050 3-Axis Gyro Module
  • Moduli ya Chaja ya Batri ya USB ya TP4056
  • Module ya Kuongeza Nguvu ya MT3608
  • LiPo Battery 902936 900mA au 503035 3.7V 500mA. Unaweza kutumia betri yoyote ya LiPo na 3, 7V na saizi chini ya 35x30x15mm lakini lazima uhifadhi betri kwenye shimo.
  • Kitufe cha kujifunga cha PS-22F28 au PS-22F27 Kitufe cha kujifunga kinafaa kwa sehemu iliyochapishwa kikamilifu.
  • LED RGB WS2812B Gonga - 16 LED 68mm kipenyo cha nje - unaweza kutumia pete yoyote hata na idadi tofauti ya LED (lazima ubadilishe nambari moja kila mara - #fafanua NUMPIXELS 16) na kipenyo cha juu cha 76mm (unaweza pia kutumia Fimbo ya Neopixel na 8x LED au ukanda wowote wa LED na WS2812b).

Mifano ya pete: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm

Kwa montage unaweza kutumia yoyote ya mashimo yaliyochapishwa katikati. Zinashughulikia karibu chaguo lolote (sio lazima kuwa na pete ya 100%).

Waya

Mchemraba

  • PLA Filament ya sehemu ya juu ya mchemraba - tumia rangi nyeupe kwa sababu uwazi sio mzuri (LED zinaonekana na rangi sio laini), pendekezo langu ni Prusament Vanilla White
  • Uboreshaji wa PLA kwa sehemu za chini, katikati na vifungo - tumia rangi nyeusi kwa sababu moduli zingine za Arduino zina taa juu na hailingani na rangi za mchemraba za LED, pendekezo langu ni Prusament Galaxy Black
  • 1x M3x5 Bofya ya kugonga - Urefu (10mm) na umbo la kichwa sio muhimu - parafujo haionekani
  • 2x M2x3 Bofya ya kugonga - Urefu (5mm) na umbo la kichwa sio muhimu - screws hazionekani

Zana

  • Printa ya 3D
  • Mita nyingi
  • Chuma cha kulehemu
  • Bisibisi

Hatua ya 2: Kuchapa

Uchapishaji
Uchapishaji
Uchapishaji
Uchapishaji

Sehemu zote za ColorCube zilibuniwa katika Autodesk Fusion360. Faili ya f3d imeambatanishwa.

ColourCube ilichapishwa kwenye prusa i3 MK3S printa na mipangilio yote chaguomsingi na sitarajii mabadiliko yoyote muhimu kwa printa tofauti. Tumia mipangilio yako uipendayo kwa PLA (ikiwa imechapishwa kwenye PLA, hakuna shida kutumia PETG au ASA).

Vigezo vya uchapishaji 3d:

  • Tabaka 0.2 mm (mipangilio ya UBORA 0.2mm kwenye PrusaSlicer)
  • Mipangilio ya Prusament PLA Filament kwenye PrusaSlicer
  • Jaza 15%
  • Hakuna Msaada
  • Hakuna Ukingo

Hatua ya 3: Mzunguko

Mzunguko
Mzunguko

Hatua ya 4: Kufunga

Kufundisha
Kufundisha
Kufundisha
Kufundisha
Kufundisha
Kufundisha

Onyo: Tumia mita nyingi kuhakikisha kuwa DC-DC nyongeza MT3608 inatoa 5V. Kwanza - kabla ya kupima - pindua trim kwa saa hadi mwisho (kubonyeza). Wakati unganisha voltage (3, 7V) kwa pembejeo inapaswa kutoa juu ya thamani sawa. Pinduka kinyume na saa (utahitaji zamu 10-20 kamili) na ghafla uinue voltage. Weka 5V kwenye pato laini. (picha)

Angalia sehemu iliyo chini ya mchemraba. Kila sehemu ina shimo lake mwenyewe. Inafafanua ni muda gani waya kati ya kila sehemu utahitaji (usitumie waya ndefu zaidi vinginevyo unapata msitu wa waya). (picha)

Waya za Solder kati ya Arduino Nano na pete ya LED tu (waya 3: nyekundu 5V - 5V, GND nyeusi - GND, bluu D6 - DI). Tumia jaribio la utendaji wa pete ya LED kutoka sura inayofuata. (picha)

Ikiwa kila kitu ni sawa endelea na kuongeza Gyro MPU6050 (waya 5: nyekundu 5V - VCC, GND nyeusi - GND, bluu A4 - SDA, kijani A5 - SCL, manjano D2 - INT). Pakia msimbo wa ColourCube.ino na ujaribu (vifaa vingine ni vya betri na kuchaji tu). (picha)

Ikiwa zote ni sawa ongeza sehemu zingine. Kuna waya nyekundu tu (+) na nyeusi (-). Chagua pini za kulia kwenye kitufe cha kujifungia (hakijaunganishwa wakati haikubanwa). Utendaji wa jaribio kwenye malipo ya betri na betri. (picha)

Taa nyekundu za LED kwenye TP4056 wakati wa kuchaji na taa za bluu za LED zinapochajiwa kikamilifu. Shimo hapo juu TP4056 katikati iliyochapishwa sehemu hupitisha mwangaza wa LED kwenye sehemu ya juu ya ColourCube na unaweza kutambua awamu ya kuchaji. (picha)

Hatua ya 5: Kanuni

Kwanza lazima upakue maktaba muhimu.

Kuna maagizo ya kina kwa maktaba ya Adafruit Neopixel:

Jaribio la utendaji wa pete ya LED: Unaweza kujaribu mzunguko wako kwa mfano uliojumuishwa kwenye maktaba. Fungua faili kutoka kwa Faili / Mifano / Adafruit NeoPixels / rahisi na upakie (usisahau kuweka sawa laini hii kwa idadi ya saizi unayotumia: #fafanua NUMPIXELS 16).

I2Cdev na MPU6050: Pakua na unzip faili ya i2cdevlib-master.zip kutoka https://github.com/jrowberg/i2cdevlib. Nakili fomu iliyofunguliwa folda i2cdevlib-master / Arduino folda mbili: I2Cdev na MPU6050. Nakala zote mbili kwenye folda ya maktaba ya Arduino IDE (Nyaraka / Arduino / maktaba ikiwa usakinishaji wa msingi).

Usisahau kuanzisha tena Arduino IDE baada ya maktaba kunakiliwa.

#jumuisha #ifdef _AVR_ # pamoja na // Inayohitajika kwa 16 MHz Adafruit Trinket # endif # pamoja na "Wire.h" ni pamoja na "I2Cdev.h" # pamoja na "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #fafanua INTERRUPT_PIN 2 // tumia pin 2 kwenye Arduino Uno & bodi nyingi #fafanua PIN 6 #fafanua NUMPIXELS 16 // Weka idadi sahihi ya saizi za LED Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t Active Colour, oldActiveColor = 0; bool dmpReady = uongo; uint8_t mpuIntStatus; uint8_t devStatus; pakiti ya uint16_tizeSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Quaternion q; Mvuto wa VectorFloat; kuelea rotace [3]; int x, y, z; bool tete mpuInterrupt = uongo; batili dmpDataReady () {mpuInterrupt = kweli; } usanidi batili () {Serial.begin (115200); saizi. anza (); saizi safi (); saizi.setBrightness (128); # ikiwa imefafanuliwa (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); # endif // jiunge na basi ya I2C (maktaba ya I2Cdev haifanyi hivi moja kwa moja) # ikiwa I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // saa ya I2C ya 400kHz. Toa maoni kwenye mstari huu ikiwa na shida ya mkusanyiko #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: kuanzisha (400, kweli); # endif wakati (! Serial); Serial.println (F ("Inazindua vifaa vya I2C…")); mpu kuanzisha (); pinMode (INTERRUPT_PIN, INPUT); // thibitisha unganisho Serial.println (F ("Upimaji wa unganisho wa kifaa…")); Serial.println (mpu.testConnection () F? // subiri tayari // Serial.println (F ("\ nTuma mhusika yeyote kuanza programu na onyesho la DMP:")); // wakati (Serial. Inapatikana () && Serial.read ()); // bafa tupu // wakati (! Siri haipatikani ()); // subiri data // wakati (Serial.available () && Serial.read ()); // bafa tupu tena // mzigo na usanidi DMP Serial.println (F ("Inazindua DMP…")); devStatus = mpu.dmp Anzisha (); // usambazaji wa gyro yako mwenyewe hapa, iliyopunguzwa kwa unyeti wa dakika mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // Chaguo-msingi cha kiwanda cha 1688 kwa chip yangu ya jaribio // hakikisha imefanya kazi (inarudi 0 ikiwa ni hivyo) ikiwa (devStatus == 0) {// Saa ya Kuweka: zalisha pesa na usuluhishe MPU6050 mpu yetu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // washa DMP, sasa ikiwa iko tayari Serial.println (F ("kuwezesha DMP…")); mpu.setDMPEnabled (kweli); // kuwezesha Arduino kukatiza kugundua Serial.print (F ("Kuwezesha kugundua kukatiza (Arduino kukatiza nje")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); ambatishaKukatiza (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // weka bendera yetu iliyo tayari ya DMP kwa hivyo kitanzi kuu () kazi inajua ni sawa kuitumia Serial.println (F ("DMP iko tayari! Inangojea usumbufu wa kwanza…")); dmpReady = kweli; // pata ukubwa wa pakiti ya DMP inayotarajiwa kwa pakiti ya kulinganisha baadayeSize = mpu.dmpGetFIFOPacketSize (); } mwingine {// KOSA! // 1 = mzigo wa kumbukumbu ya awali umeshindwa // 2 = sasisho za usanidi wa DMP zimeshindwa // (ikiwa itaenda kuvunjika, kawaida nambari itakuwa 1) Serial.print (F ("Uanzishaji wa DMP umeshindwa (nambari")); Serial. chapa (devStatus); Serial.println (F (")")); }} kitanzi batili () {if (! dmpReady) kurudi; ikiwa (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Pata pakiti ya hivi karibuni // onyesha pembe za Euler kwa digrii mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpPata Uzito (& mvuto, & q); mpu.dmpGetYawPitchRoll (rotace, & q, & mvuto); } Serial.print ("X"); Printa ya serial (rotace [2] * 180 / M_PI); Serial.print ("\ t Y"); Printa ya serial (rotace [1] * 180 / M_PI); Serial.print ("\ t Z"); Serial.println (rotace [0] * 180 / M_PI); x = rotace [2] * 180 / M_PI; y = rotace [1] * 180 / M_PI; z = rotace [0] * 180 / M_PI; ikiwa (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (255, 0, 0); // Nyekundu ukigeukia upande} mwingine ikiwa (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Kijani ukigeukia upande wa pili} mwingine ikiwa (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Njano ukigeukia upande wa tatu} mwingine ikiwa (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Bluu ukigeukia upande wa nne} mwingine ikiwa (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Nyeusi wakati kichwa chini} ikiwa (activeColor! = OldActiveColor) {pixels.clear (); saizi.fill (ActiveColor); saizi. onyesha (); oldActiveColor = ActiveColor; }}

Mwishowe unaweza kufungua na kupakia faili ya ColourCube.ino. Weka Rangi ya Mchemraba ya uso gorofa na uiwashe. Usiisogeze mpaka itaanza kuwa nyepesi na rangi nyeupe baada ya usawa (sekunde chache). Ifuatayo unaweza kuweka ColourCube kando na rangi itabadilika - kila upande una rangi yake - nyekundu, kijani kibichi, hudhurungi, manjano. ColourCube hutoka wakati imegeuzwa chini.

Hatua ya 6: Kukusanyika

Kukusanyika
Kukusanyika
Kukusanyika
Kukusanyika
Kukusanyika
Kukusanyika

Kuwa mpole wakati wa kukusanyika. Waya na sehemu zote hazipendi tabia mbaya.

Kifungo 3d kilichochapishwa sehemu - laini kuweka kitufe kwenye shimo kwenye sehemu iliyochapishwa chini (kama inavyoonekana kwenye picha), inapaswa kuingia na kutoka vizuri, ikiwa haitumii scalpel au kisu kali au karatasi ya mchanga kuondoa vifaa vyote vya ziada (zaidi ndani juu ya shimo la duara kwenye sehemu ya chini). (picha)

Weka MPU-6050, Arduino Nano, TP4056 na MT3608 kwenye mashimo yao. Sanduku lina protrusions ambayo unaweza kuingiza MPU-6050 na MT3608. Weka viunganisho vya USB vya Arduino Nano na TP4056 kwenye mashimo yao kwenye kuta za upande wa sanduku. (picha)

Tumia kufuli iliyochapishwa 3d kurekebisha vifaa (hakikisha kuwa vifaa vyote vimewekwa kwa sehemu ya chini vizuri). Ni muhimu kwa sababu mtu hakika atajaribu kucheza na ColourCube yako kama na kete. (picha)

Weka na salama betri kwenye shimo lake ikiwa haishikilii sana.

Weka kitufe cha kujifunga kwenye shimo lililotayarishwa katika sehemu ya chini. Kitufe cha kujifunga kinafaa kuwa katika nafasi ya ON (fupi). Bonyeza kifungo kwa upole chini. Utendaji wa jaribio na kitufe cha kuchapishwa cha 3d. (picha)

Tumia screws mbili za M2 kurekebisha Gonga la LED kwa sehemu iliyochapishwa katikati. Ni vizuri kutumia mwelekeo wa pete ambapo anwani za waya ziko kwenye shimo lenye mviringo la sehemu iliyochapishwa katikati. (picha)

Hiari: Tumia tone la gundi moto hapa na pale - unganisho la waya ili kupigia, kwa waya mrefu sana, ikiwa kuna kitu kisichobana vya kutosha n.k Inaweza kufanya ColourCube yako kudumu zaidi.

Panga waya ndani ya ColourCube isiwe kubanwa na sehemu zilizochapishwa. Weka sehemu ya kati hadi chini. Tumia screw ya M3 kuirekebisha. (picha)

Mwishowe pole pole bonyeza sehemu iliyochapishwa hadi chini. (picha)

Hatua ya 7: Imekamilika

Hongera. Furahiya.

Ilipendekeza: