فهرست مطالب:

ColorCube: 7 مرحله (همراه با تصاویر)
ColorCube: 7 مرحله (همراه با تصاویر)

تصویری: ColorCube: 7 مرحله (همراه با تصاویر)

تصویری: ColorCube: 7 مرحله (همراه با تصاویر)
تصویری: Full Color Cube Duo Camera 2024, دسامبر
Anonim
Image
Image
ColorCube
ColorCube
ColorCube
ColorCube

من این چراغ را برای نوه ام زمانی که در حال یادگیری رنگ بود ، ساختم. من از پروژه MagicCube الهام گرفتم اما در نهایت همه قسمت ها را از ابتدا ایجاد کردم. چاپ آسان و مونتاژ آسان است و با نحوه عملکرد ماژول ژیروسکوپ آشنا می شوید.

مرحله 1: مواد

مواد
مواد

قسمت آردوینو:

  • آردوینو نانو (بدون پین هدر لحیم بهتر است)
  • MPU-6050 ماژول ژیروسکوپ 3 محوره
  • ماژول شارژر باتری TP4056 Micro USB
  • ماژول تقویت کننده MT3608 Step Up Power
  • باتری LiPo 902936 900mA یا 503035 3.7V 500mA. شما می توانید از هر باتری LiPo با 3 ، 7V و اندازه کمتر از 35x30x15mm استفاده کنید ، اما باید باتری را در سوراخ محکم کنید.
  • PS-22F28 دکمه خود قفل کننده یا PS-22F27 دکمه خود قفل هر دو کاملاً با قسمت چاپ شده متناسب است.
  • حلقه LED RGB WS2812B - 16 LED 68 میلی متر قطر بیرونی - می توانید از هر حلقه ای حتی با تعداد LED های مختلف استفاده کنید (باید یک کد را تغییر دهید - #تعریف NUMPIXELS 16) با حداکثر قطر 76 میلی متر (همچنین می توانید از چوب نئوپیکسل با 8 برابر LED یا هر نوار LED با WS2812b).

نمونه های حلقه: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm

برای مونتاژ می توانید از هر یک از سوراخ های چاپ شده در قسمت وسط استفاده کنید. آنها تقریباً هر گزینه ای را پوشش می دهند (لازم نیست که حلقه 100 cent متمرکز باشد).

سیم ها

مکعب

  • رشته PLA برای قسمت بالای مکعب - از رنگ سفید استفاده کنید زیرا شفاف خوب نیست (LED ها قابل مشاهده هستند و رنگ صاف نیستند) ، توصیه من Prusament Vanilla White است
  • PLA Filament برای قسمت های پایین ، وسط و دکمه - از رنگ تیره استفاده کنید زیرا برخی از ماژول های آردوینو دارای چراغ هایی در بالا هستند و با رنگ های LED های مکعبی متناسب نیست ، توصیه من Prusament Galaxy Black است
  • پیچ پیچ 1x M3x5 - طول (10 میلی متر) و شکل سر مهم نیست - پیچ قابل مشاهده نیست
  • 2x M2x3 پیچ مخصوص ضربه زدن - طول (5 میلی متر) و شکل سر مهم نیست - پیچ ها قابل مشاهده نیستند

ابزارها

  • پرینتر سه بعدی
  • چند متری
  • آهن لحیم کاری
  • پیچ گوشتی

مرحله 2: چاپ

چاپ
چاپ
چاپ
چاپ

تمام قسمت های ColorCube در Autodesk Fusion360 طراحی شده اند. فایل f3d ضمیمه شده است.

ColorCube بر روی چاپگر Prusa i3 MK3S با تمام تنظیمات پیش فرض چاپ شد و انتظار ندارم تغییرات لازم در چاپگرهای مختلف ایجاد شود. از تنظیمات مورد علاقه خود برای PLA استفاده کنید (در صورت چاپ بر روی PLA ، مشکلی برای استفاده از PETG یا ASA وجود ندارد).

پارامترهای چاپ سه بعدی:

  • لایه 0.2 میلی متر (تنظیمات کیفیت 0.2 میلی متر در PrusaSlicer)
  • تنظیمات رشته Prusament PLA در PrusaSlicer
  • پر کردن 15
  • بدون پشتیبانی
  • بدون حاشیه

مرحله 3: مدار

جریان
جریان

مرحله 4: لحیم کاری

لحیم کاری
لحیم کاری
لحیم کاری
لحیم کاری
لحیم کاری
لحیم کاری

هشدار: برای اطمینان از خروجی تقویت کننده DC-DC MT3608 از 5 متر استفاده کنید. ابتدا - قبل از اندازه گیری - تریم را در جهت عقربه های ساعت به سمت انتها بچرخانید (کلیک کنید). هنگامی که ولتاژ (3 ، 7 ولت) را به ورودی وصل می کنید ، باید مقدار مشابهی داشته باشد. خلاف جهت عقربه های ساعت بچرخید (به 10-20 دور کامل نیاز دارید) و ناگهان ولتاژ بالا می رود. 5 ولت را به آرامی روی خروجی تنظیم کنید. (عکس)

نگاهی به قسمت پایین مکعب چاپ شده بیندازید. هر جزء سوراخ مخصوص خود را دارد. این تعیین می کند که چقدر سیم بین هر جزء مورد نیاز است (از سیم های طولانی استفاده نکنید در غیر این صورت به جنگل سیم برخورد می کنید). (عکس)

سیمها را فقط بین آردوینو نانو و LED حلقه کنید (3 سیم: قرمز 5 ولت - 5 ولت ، مشکی 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: می توانید مدار خود را با مثال موجود در کتابخانه آزمایش کنید. فایل را از File/Examples/Adafruit NeoPixels/ساده باز کرده و بارگذاری کنید (فراموش نکنید که این خط را بر اساس تعداد پیکسل هایی که استفاده می کنید به درستی تنظیم کنید: #تعریف NUMPIXELS 16).

I2Cdev و MPU6050: فایل i2cdevlib-master.zip را از https://github.com/jrowberg/i2cdevlib بارگیری و از حالت فشرده خارج کنید. فرم پوشه فشرده نشده i2cdevlib-master/Arduino را دو زیر پوشه کپی کنید: I2Cdev و MPU6050. هر دو در پوشه کتابخانه Arduino IDE کپی می شوند (در صورت نصب پیش فرض Documents/Arduino/libraries).

فراموش نکنید که Arduino IDE را پس از کپی کتابخانه ها راه اندازی مجدد کنید.

#شامل #ifdef _AVR_ #شامل // مورد نیاز برای 16 مگاهرتز Adafruit Trinket #endif #شامل "Wire.h" شامل "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu؛ #تعریف INTERRUPT_PIN 2 // استفاده از پین 2 در Arduino Uno و بیشتر تابلوها #تعریف PIN 6 #تعریف NUMPIXELS 16 // تعداد صحیح LED های پیکسل Adafruit_NeoPixel (NUMPIXELS ، PIN ، NEO_GRB + NEO_KHZ800) ؛ uint32_t activeColor ، oldActiveColor = 0 ؛ bool dmpReady = false؛ uint8_t mpuIntStatus؛ uint8_t devStatus؛ uint16_t packetSize؛ uint16_t fifoCount؛ uint8_t fifoBuffer [64]؛ کواترنیون q؛ گرانش شناور ؛ چرخ شناور [3]؛ int x ، y ، z ؛ bool فرار mpuInterrupt = false؛ void dmpDataReady () {mpuInterrupt = true؛ } void setup () {Serial.begin (115200)؛ pixels.begin ()؛ pixels.clear ()؛ pixels.setBrightness (128) ؛ #اگر تعریف شده (_ AVR_ATtiny85_) && (F_CPU == 16000000) ساعت_سنجی_تنظیمی (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 هر کاراکتری ارسال کنید:")) ؛ // در حالی که (Serial.available () && Serial.read ())؛ // بافر خالی // در حالی که (! 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) {// زمان کالیبراسیون: آفست ها را ایجاد کرده و MPU6050 mpu ما را کالیبره کنید. CalibrateAccel (6)؛ 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 ما را تنظیم کنید تا تابع حلقه اصلی () بداند که استفاده از آن اشکالی ندارد Serial.println (F ("DMP آماده! منتظر اولین وقفه …")) ؛ dmpReady = true؛ // اندازه بسته مورد انتظار DMP را برای مقایسه packetSize = mpu.dmpGetFIFOPacketSize () دریافت کنید؛ } else {// ERROR! // 1 = بارگذاری اولیه حافظه انجام نشد // 2 = به روز رسانی پیکربندی DMP ناموفق بود // (در صورت خرابی ، معمولاً کد 1 خواهد بود) Serial.print (F ("DMP Initialization failed (code")) ؛ Serial. print (devStatus) ؛ Serial.println (F (")")) ؛ }} void loop () {if (! dmpReady) return؛ 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 ؛ if (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 وقتی وارونه می شود خاموش می شود.

مرحله ششم: مونتاژ

مونتاژ کردن
مونتاژ کردن
مونتاژ کردن
مونتاژ کردن
مونتاژ کردن
مونتاژ کردن

هنگام مونتاژ ملایم باشید. سیمها و همه قسمتها رفتار خشن را دوست ندارند.

قسمت چاپی سه بعدی دکمه - دکمه را به آرامی روی سوراخ قسمت چاپ شده در پایین قرار دهید (همانطور که در تصویر نشان داده شده است) ، اگر از چاقوی چاقو یا چاقوی تیز یا کاغذ ماسه ای برای حذف تمام مواد اضافی استفاده نکنید (بیشتر داخل بالای سوراخ دایره در قسمت پایین). (عکس)

MPU-6050 ، Arduino Nano ، TP4056 و MT3608 را در سوراخ های آنها قرار دهید. جعبه دارای برجستگی هایی است که در زیر آن MPU-6050 و MT3608 را قرار می دهید. اتصالات USB آردوینو نانو و TP4056 را در حفره های آنها در دیواره های جانبی جعبه قرار دهید. (عکس)

برای تعمیر قطعات از قفل چاپ سه بعدی استفاده کنید (مطمئن شوید که همه اجزا در قسمت پایینی محکم قرار گرفته اند). این مهم است زیرا مطمئناً کسی سعی می کند با ColorCube شما مانند تاس بازی کند. (عکس)

اگر باتری را محکم نگه نداشت در سوراخ آن قرار دهید و محکم کنید.

دکمه خود قفل را در سوراخ آماده شده در قسمت پایین قرار دهید. دکمه خود قفل باید در وضعیت ON (کوتاه) باشد. دکمه را به آرامی به پایین فشار دهید. عملکرد را با دکمه چاپ سه بعدی آزمایش کنید. (عکس)

از دو پیچ M2 برای ثابت کردن حلقه LED در قسمت چاپ وسط استفاده کنید. استفاده از جهت حلقه در جایی که مخاطبین سیم در حفره گرد قسمت چاپ شده وسط قرار دارند. (عکس)

اختیاری: از یک قطره چسب حرارتی اینجا و آنجا استفاده کنید - سیمها به زنگ وصل می شوند ، برای سیمهای خیلی طولانی ، اگر هر چیزی به اندازه کافی محکم نیست و غیره این می تواند ColorCube شما را با دوام تر کند.

سیم هایی را در داخل ColorCube قرار دهید که توسط قطعات چاپ شده گیر نکند. قسمت وسط را به قسمت پایین قرار دهید. برای تعمیر آن از پیچ M3 استفاده کنید. (عکس)

در نهایت قسمت چاپی بالا را به آرامی به قسمت پایین فشار دهید. (عکس)

مرحله 7: انجام شد

تبریک میگم. خوش بگذره.

توصیه شده: