Агуулгын хүснэгт:

ColorCube: 7 алхам (зурагтай)
ColorCube: 7 алхам (зурагтай)

Видео: ColorCube: 7 алхам (зурагтай)

Видео: ColorCube: 7 алхам (зурагтай)
Видео: БИД 2 ФРАНЦАД ЮУ ХИЙЖ АМЬДАРДАГ ВЭ? | Notre profession | 2024, Арванхоёрдугаар сар
Anonim
Image
Image
ColorCube
ColorCube
ColorCube
ColorCube

Би ач охиноо өнгө сурч байхдаа энэ дэнлүүг хийсэн. Би MagicCube төслөөс санаа авсан боловч эцэст нь бүх хэсгийг эхнээс нь бүтээсэн. Үүнийг хэвлэх, угсрахад хялбар бөгөөд гиро модуль хэрхэн ажилладаг талаар олж мэдэх болно.

Алхам 1: Материал

Материал
Материал

Arduino хэсэг:

  • Arduino Nano (гагнуурын толгойн зүүгүй бол илүү дээр юм)
  • MPU-6050 3 тэнхлэгтэй гиро модуль
  • TP4056 микро USB батерей цэнэглэгч модуль
  • MT3608 Step Up Power Booster Module
  • LiPo батерей 902936 900mA эсвэл 503035 3.7V 500mA. Та 3, 7V, 35x30x15 мм -ээс бага хэмжээтэй ямар ч LiPo батерей ашиглаж болно, гэхдээ та батерейгаа нүхэнд бэхлэх ёстой.
  • PS-22F28 Өөрөө түгжигддэг товчлуур эсвэл PS-22F27 Өөрөө түгжигддэг товчлуур нь хоёулаа хэвлэсэн хэсэгт бүрэн нийцдэг.
  • LED RGB WS2812B бөгж - Гадна диаметр нь 16 LED, та өөр өөр тооны LED ч гэсэн ямар ч цагираг ашиглаж болно (нэг кодыг тогтмол кодоор солих шаардлагатай - #define NUMPIXELS 16), хамгийн их диаметр нь 76 мм (та Neopixel Stick ашиглаж болно. 8x LED эсвэл WS2812b бүхий LED тууз).

Бөгжний жишээ: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm

Монтаж хийхийн тулд дунд хэсэгт хэвлэгдсэн нүхийг ашиглаж болно. Тэд бараг бүх сонголтыг хамардаг (бөгжийг 100% төвтэй байлгах шаардлагагүй).

Утас

Куб

  • Шоо дөрвөлжин хэсгийн PLA судалтай - тунгалаг биш тул цагаан өнгийг ашиглаарай (LED нь харагдаж, өнгө нь жигд биш байна), миний зөвлөмж бол Prusament Vanilla White
  • PLA судал нь доод, дунд, товчлуур хэсгүүдэд зориулагдсан байдаг - бараан өнгийг ашигла, учир нь зарим Arduino модулиуд нь дээд талд нь гэрэл асдаг бөгөөд LED шоо өнгөтэй таарахгүй тул миний санал бол Prusament Galaxy Black юм.
  • 1х M3x5 өөрөө түншдэг эрэг - Урт (10мм) ба толгойны хэлбэр нь чухал биш - шураг харагдахгүй байна
  • 2х M2x3 өөрөө түншдэг эрэг - Урт (5мм) ба толгойны хэлбэр нь чухал биш - эрэг нь харагдахгүй байна

Багаж хэрэгсэл

  • 3D хэвлэгч
  • Олон метр
  • Гагнуурын төмөр
  • Халив

Алхам 2: Хэвлэх

Хэвлэх
Хэвлэх
Хэвлэх
Хэвлэх

ColorCube -ийн бүх хэсгийг Autodesk Fusion360 дээр бүтээсэн болно. f3d файл хавсаргасан болно.

ColorCube -ийг Prusa i3 MK3S принтер дээр бүх анхдагч тохиргоогоор хэвлэсэн бөгөөд өөр өөр принтер дээр шаардлагатай өөрчлөлт гарахгүй гэж би бодож байна. PLA -ийн дуртай тохиргоогоо ашиглаарай (хэрэв PLA дээр хэвлэсэн бол PETG эсвэл ASA ашиглахад асуудал гарахгүй).

3d хэвлэх параметрүүд:

  • Давхарга 0.2 мм (PrusaSlicer дээр 0.2 мм QUALITY тохиргоо)
  • PrusaSlicer дээрх Prusament PLA Filament тохиргоо
  • 15% дүүргэх
  • Дэмжлэг байхгүй
  • Хязгааргүй

Алхам 3: Хэлхээ

Хэлхээ
Хэлхээ

Алхам 4: Гагнах

Гагнах
Гагнах
Гагнах
Гагнах
Гагнах
Гагнах

Анхааруулга: DC-DC өргөгч MT3608 нь 5V хүчдэл гаргаж байгаа эсэхийг шалгахын тулд олон метр ашиглана уу. Нэгдүгээрт - хэмжихийн өмнө ирмэгийг цагийн зүүний дагуу эцэс хүртэл эргүүлнэ (дарна уу). (3, 7V) хүчдэлийг оролтод холбохдоо ойролцоогоор ижил утгыг өгөх ёстой. Цагийн зүүний эсрэг эргүүлэх (танд 10-20 бүрэн эргэлт хэрэгтэй болно), гэнэт хүчдэл дээшлэх болно. 5V гаралтыг зөөлөн тохируулна уу. (зураг)

Кубын хэвлэсэн доод хэсгийг анхаарч үзээрэй. Бүрэлдэхүүн хэсэг бүр өөрийн гэсэн нүхтэй байдаг. Энэ нь бүрэлдэхүүн хэсэг бүрийн хооронд хэр урт утас шаардагдахыг тодорхойлдог (хэт урт утас бүү ашигла, тэгвэл утсан ширэнгэн ой бий болно). (зураг)

Зөвхөн 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 код болон тестийг байршуулах (бусад бүрэлдэхүүн хэсгүүд нь зөвхөн батерей болон цэнэглэх зориулалттай). (зураг)

Хэрэв бүх зүйл хэвийн байвал бусад бүрэлдэхүүн хэсгүүдийг нэмнэ үү. Зөвхөн улаан (+) ба хар (-) утаснууд байдаг. Өөрөө түгжих товчлуур дээр баруун тээглүүрийг сонгоно уу (дараагүй үед холбогдоогүй). Батерей болон батерейг цэнэглэх ажиллагааг шалгана уу. (зураг)

Цэнэглэх үед TP4056 дээр улаан LED гэрэл, бүрэн цэнэглэгдсэн тохиолдолд цэнхэр LED гэрэл. Дундаж хэвлэсэн хэсгийн TP4056 дээрх нүх нь LED гэрлийг ColorCube -ийн дээд хэсэгт дамжуулж, цэнэглэх үе шатыг таньж чадна. (зураг)

Алхам 5: Код

Юуны өмнө та шаардлагатай номын санг татаж авах хэрэгтэй.

Adafruit Neopixel номын санд зориулсан дэлгэрэнгүй заавар байдаг:

LED бөгжний функциональ тест: Та номын санд орсон жишээгээр хэлхээгээ туршиж үзэх боломжтой. Файл/Жишээнүүд/Adafruit NeoPixels/-ээс файлыг нээж, байршуулах (энэ мөрийг ашиглаж буй пикселийн тоогоороо зөв тохируулахаа бүү мартаарай: #define NUMPIXELS 16).

I2Cdev ба MPU6050: https://github.com/jrowberg/i2cdevlib дээрээс i2cdevlib-master.zip файлыг татаж аваад задлаарай. I2cdevlib-master/Arduino гэсэн хоёр дэд хавтас: I2Cdev ба MPU6050 гэсэн фолдерыг хуулж ав. Аль аль нь Arduino IDE номын сангийн хавтсанд хуулагддаг (хэрэв анхдагчаар суулгасан бол Documents/Arduino/library).

Номын санг хуулж авсны дараа Arduino IDE -ийг дахин эхлүүлэхээ бүү мартаарай.

#include #ifdef _AVR_ #include // 16 МГц давтамжтай Adafruit Trinket #endif #include "Wire.h" -д "I2Cdev.h" орно "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #тодорхойлох INTERRUPT_PIN 2 // зүү 2 -ийг Arduino Uno дээр ашиглана уу & ихэнх самбар дээр #PIN 6 тодорхойлох #NUMPIXELS 16 -ийг тодорхойлох // Adafruit_NeoPixel пикселийн зөв тооны тоог тохируулах (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = худал; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Quaternion q; VectorFloat таталцал; хөвөх эргэлт [3]; int x, y, z; дэгдэмхий bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = үнэн; } void setup () {Serial.begin (115200); пиксел.begin (); пиксел.лүү (); piksel.setBrightness (128); #if тодорхойлогдсон (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // I2C автобусанд нэгдэх (I2Cdev номын сан үүнийг автоматаар хийдэггүй) #хэрэв I2CDEV_IMPLEMATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 кГц I2C цаг. Эмхэтгэхэд хүндрэлтэй байгаа бол энэ мөрийг бичнэ үү #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, үнэн); #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 ("\ nDMP програмчлал болон демо эхлүүлэхийн тулд ямар ч тэмдэгт илгээнэ үү:")); // while (Serial.available () && Serial.read ()); // хоосон буфер // while (! Serial.available ()); // өгөгдлийг хүлээх // while (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 буцаана) if (devStatus == 0) {// Калибровк хийх хугацаа: офсет үүсгэж, манай MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // DMP -ийг асаана уу, одоо бэлэн болсон байна Serial.println (F ("DMP -ийг идэвхжүүлж байна …")); mpu.setDMPEnabled (үнэн); // Arduino тасалдлын илрүүлэлтийг идэвхжүүлэх Serial.print (F ("Тасалдлын илрүүлэлтийг идэвхжүүлэх (Arduino гадаад тасалдал")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // манай DMP Бэлэн тугийг тохируулах тул үндсэн давталт () функц үүнийг ашиглах нь зөв гэдгийг мэддэг Serial.println (F ("DMP бэлэн боллоо! Эхний тасалдлыг хүлээж байна …")); dmpReady = үнэн; // хожим харьцуулахын тулд хүлээгдэж буй DMP пакетийн хэмжээг авах packetSize = mpu.dmpGetFIFOPacketSize (); } өөр {// АЛДАА! // 1 = санах ойн анхны ачаалал амжилтгүй боллоо // 2 = DMP тохиргооны шинэчлэлт амжилтгүй боллоо // (хэрэв энэ нь эвдрэх гэж байгаа бол ихэвчлэн код нь 1 болно) Serial.print (F ("DMP эхлүүлэх амжилтгүй болсон (код")); Цуваа. хэвлэх (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"); Цуваа.хэвлэх (эргүүлэх [2] * 180/M_PI); Serial.print ("\ t Y"); Цуваа.хэвлэх (эргүүлэх [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; if (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = пиксел. Өнгө (255, 0, 0); // Хажуу тийш эргэхэд улаан} else if if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = piksel. Color (0, 255, 0); // Хоёр дахь тал руу эргэхэд ногоон} өөрөөр бол өөр (хэрэв> y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = пиксел. Color (255, 255, 0); // Гурав дахь тал руу эргэхэд шар}} if if if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = piksel. Color (0, 0, 255); // Дөрөв дэх тал руу эргэхэд цэнхэр} else if if (abs (y)> 135 && abs (x)> 135) {activeColor = piksel. Color (0, 0, 0); // Доошоо хар байвал} if (activeColor! = OldActiveColor) {piksel.clear (); piksel.fill (activeColor); пиксел.шоу (); oldActiveColor = идэвхтэй өнгө; }}

Эцэст нь та ColorCube.ino файлыг нээж, байршуулах боломжтой. ColorCube хавтгай гадаргуу дээр тавиад асаагаарай. Тохируулгын дараа (хэдхэн секундын дараа) цагаан өнгөтэй цайвар өнгөтэй болтол бүү хөдөлгө. Дараа нь та ColorCube -ийг хажуу тийш нь тавиад өнгө нь өөрчлөгдөх болно - тал бүр өөрийн гэсэн өнгөтэй байдаг - улаан, ногоон, цэнхэр, шар. ColorCube -ийг дээрээс нь эргүүлээд унтраадаг.

Алхам 6: угсрах

Угсарч байна
Угсарч байна
Угсарч байна
Угсарч байна
Угсарч байна
Угсарч байна

Угсрах явцад болгоомжтой байгаарай. Утас болон бүх эд анги нь бүдүүлэг зан авирт дургүй байдаг.

Товчлуур 3d хэвлэсэн хэсэг - товчлуурыг доод хэвлэсэн хэсгийн нүхэнд зөөлөн дарна (зураг дээр үзүүлсэн шиг), бүх илүүдэл материалыг (ихэвчлэн дотор нь доод хэсэгт тойрог нүхний дээд хэсэг). (зураг)

MPU-6050, Arduino Nano, TP4056, MT3608-ийг нүхэндээ хий. Хайрцаг нь MPU-6050 ба MT3608-ийг оруулдаг цухуйсан хэсгүүдтэй. Arduino Nano болон TP4056 -ийн USB холбогчийг хайрцагны хажуу хананд нүхэнд хийнэ. (зураг)

Бүрэлдэхүүн хэсгүүдийг засахын тулд 3d хэвлэмэл түгжээг ашиглана уу (бүх бүрэлдэхүүн хэсгүүд нь доод хэсэгт сайтар бэхлэгдсэн байх ёстой). Хэн нэгэн таны ColorCube -т шоо шиг тоглохыг хичээх нь гарцаагүй. (зураг)

Батерейг чанга барихгүй бол нүхэнд хийж бэхлээрэй.

Өөрөө түгжих товчлуурыг доод хэсэгт бэлтгэсэн нүхэнд хийнэ. Өөрөө түгжих товчлуур нь ON байрлалд байх ёстой (богино). Товчлуурыг зөөлөн дарна уу. 3D хэвлэсэн товчлуур ашиглан функцийг туршиж үзээрэй. (зураг)

LED бөгжийг дунд хэвлэсэн хэсэгт бэхлэхийн тулд хоёр М2 боолтыг ашиглана уу. Утасны контактууд дунд хэвлэсэн хэсгийн дугуйрсан нүхэнд байгаа бөгжний чиглэлийг ашиглах нь зүйтэй. (зураг)

Нэмэлт: Халуун цавуу дуслыг энд тэнд ашиглаарай. Утасны холболтыг цагираг руу холбох, хэт урт утсанд, хэрэв ямар нэгэн зүйл хангалттай нягт биш байвал таны ColorCube -ийг илүү бат бөх болгох боломжтой.

ColorCube дотор утсыг хэвлэсэн хэсгүүдээр хавчихгүй байхаар байрлуул. Дунд хэсгийг доод хэсэгт нь тавь. Үүнийг засахын тулд M3 шураг ашиглана уу. (зураг)

Эцэст нь дээд хэвлэсэн хэсгийг доод хэсэгт нь зөөлөн дарна уу. (зураг)

Алхам 7: Дууссан

Баяр хүргэе. Хөгжилтэй байгаарай.

Зөвлөмж болгож буй: