Mundarija:
- 1 -qadam: materiallar
- 2 -qadam: Chop etish
- 3 -qadam: O'chirish
- 4 -qadam: Lehimlash
- 5 -qadam: kod
- 6 -qadam: yig'ish
- 7 -qadam: bajarildi
Video: ColorCube: 7 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Men bu chiroqni nevaram ranglarni o'rganayotganda yasaganman. Men MagicCube loyihasidan ilhomlandim, lekin oxir -oqibat barcha qismlarni noldan yaratdim. Chop etish oson va yig'ish oson, siz gyro modulining qanday ishlashini bilib olasiz.
1 -qadam: materiallar
Arduino qismi:
- Arduino Nano (lehim boshi pimsiz)
- MPU-6050 3 o'qli gyro moduli
- TP4056 Micro USB batareya zaryadlovchi moduli
- MT3608 Step Up Power Booster moduli
- LiPo batareyasi 902936 900mA yoki 503035 3.7V 500mA. Siz har qanday LiPo batareyasini 3, 7V va o'lchamlari 35x30x15 mm dan kichikroq ishlatishingiz mumkin, lekin batareyani teshikka mahkamlashingiz kerak.
- PS-22F28 O'z-o'zidan qulflanadigan tugma yoki PS-22F27 o'z-o'zidan qulflanadigan tugma bosilgan qismga juda mos keladi.
- LED RGB WS2812B uzuk - tashqi diametri 16 ta LED - har xil sonli LEDlar bo'lsa ham har qanday halqadan foydalanishingiz mumkin (kodda bitta konstantani o'zgartirish kerak - #define NUMPIXELS 16), maksimal diametri 76 mm (siz Neopixel tayoqchasidan ham foydalanishingiz mumkin) 8x LED yoki WS2812b bilan har qanday LED tasmasi).
Ring misollari: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm
O'rnatish uchun siz o'rtada bosilgan har qanday teshikdan foydalanishingiz mumkin. Ular deyarli har qanday variantni qamrab oladi (halqaning 100% markazlashtirilgan bo'lishi shart emas).
Simlar
Kub
- Kubning yuqori qismi uchun PLA filamenti - oq rangdan foydalaning, chunki shaffof yaxshi emas (LEDlar ko'rinadi va rangi silliq emas), mening tavsiyam Prusament Vanilla White
- Pastki, o'rta va tugma qismlari uchun PLA filamenti - quyuq rangdan foydalaning, chunki ba'zi Arduino modullarining yuqori qismida chiroqlar bor va u kubikli LED ranglariga mos kelmaydi, mening tavsiyam Prusament Galaxy Black
- 1x M3x5 o'z -o'zidan tejamkor vint - uzunligi (10 mm) va bosh shakli muhim emas - vida ko'rinmaydi
- 2x M2x3 o'z -o'zidan tejamkor vint - uzunligi (5 mm) va bosh shakli muhim emas - vintlar ko'rinmaydi
Asboblar
- 3D printer
- Ko'p metrli
- Lehimlash temir
- Tornavida
2 -qadam: Chop etish
ColorCube -ning barcha qismlari Autodesk Fusion360 -da yaratilgan. f3d fayli biriktirilgan.
ColorCube Prusa i3 MK3S printerida barcha standart sozlamalar bilan chop etilgan va men har xil printerlarda kerakli o'zgarishlarni kutmayman. PLA uchun sevimli sozlamalaringizdan foydalaning (agar PLA -da chop etilgan bo'lsa, PETG yoki ASA -dan foydalanish muammosiz).
3D bosib chiqarish parametrlari:
- Qatlam 0,2 mm (PrusaSlicer -da 0,2 mm QUALITY sozlamalari)
- PrusaSlicer -da Prusament PLA filament sozlamalari
- 15% to'ldirish
- Qo'llab -quvvatlash yo'q
- Chegara yo'q
3 -qadam: O'chirish
4 -qadam: Lehimlash
Ogohlantirish: MT3608 DC-DC kuchaytirgichi 5V chiqishiga ishonch hosil qilish uchun ko'p o'lchagichdan foydalaning. Birinchidan - o'lchashdan oldin - qirrani soat yo'nalishi bo'yicha oxirigacha aylantiring (bosish). Kirish uchun kuchlanishni (3, 7V) ulaganda, u taxminan bir xil qiymatni berishi kerak. Soat yo'nalishi bo'yicha teskari aylantiring (sizga 10-20 to'liq burilish kerak bo'ladi) va to'satdan kuchlanish ko'tariladi. 5V kuchlanishni sekin qo'ying. (rasm)
Kubning pastki qismiga qarang. Har bir komponentning o'z teshiklari bor. U har bir komponent orasidagi qancha uzunlikdagi simlar kerakligini aniqlaydi (ortiqcha simlardan foydalanmang, aks holda siz simli o'rmon olasiz). (rasm)
Faqat Arduino Nano va LED halqasi orasidagi lehim simlari (3 ta sim: qizil 5V - 5V, qora GND - GND, ko'k D6 - DI). Keyingi bobdan LED halqasining ishlashini tekshiring. (rasm)
Agar hamma narsa yaxshi bo'lsa, Gyro MPU6050 (5 sim: qizil 5V - VCC, qora GND - GND, ko'k A4 - SDA, yashil A5 - SCL, sariq D2 - INT) qo'shishni davom ettiring. ColorCube.ino kodini yuklang va test qiling (boshqa komponentlar faqat batareya va zaryad uchun). (rasm)
Agar hamma narsa OK bo'lsa, qolgan komponentlarni qo'shing. Faqat qizil (+) va qora (-) simlar mavjud. O'z-o'zidan qulflash tugmachasidagi o'ng pinlarni tanlang (bosilmaganda ulanmagan). Batareya va batareyaning zaryadlanishini tekshiring. (rasm)
Zaryad olayotganda TP4056 qizil LED chiroqlari va to'liq zaryadlanganda ko'k LED chiroqlar. O'rta bosilgan qismdagi TP4056 ustidagi teshik LED chiroqni ColorCube -ning yuqori qismiga o'tkazadi va siz zaryadlash bosqichini aniqlay olasiz. (rasm)
5 -qadam: kod
Avval siz kerakli kutubxonalarni yuklab olishingiz kerak.
Adafruit Neopixel kutubxonasi uchun batafsil ko'rsatmalar mavjud:
LED halqasining funksionalligi testi: Siz kutubxonaga kiritilgan misol orqali o'z davrangizni sinab ko'rishingiz mumkin. Faylni Fayl/Misollar/Adafruit NeoPixels/dan oching va yuklang (bu qatorni siz foydalanayotgan piksellar soniga to'g'ri sozlashni unutmang: #define NUMPIXELS 16).
I2Cdev va MPU6050: https://github.com/jrowberg/i2cdevlib saytidan i2cdevlib-master.zip faylini yuklab oling va oching. I2cdevlib-master/Arduino ikkita pastki jildni ochilmagan papkasini nusxalash: I2Cdev va MPU6050. Ikkalasi ham Arduino IDE kutubxona papkasiga nusxa ko'chiriladi (agar standart o'rnatish bo'lsa, Hujjatlar/Arduino/kutubxonalari).
Kutubxonalar nusxalanganidan so'ng Arduino IDE -ni qayta ishga tushirishni unutmang.
#include #ifdef _AVR_ #include // 16 MGts uchun zarur Adafruit Trinket #endif #include "Wire.h" o'z ichiga "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // 2 -pinni Arduino Uno -da ishlating va ko'pchilik taxtalarda #PIN -kodni belgilang 6 #NUMPIXELS 16 -ni aniqlang // Adafruit_NeoPixel piksellarining to'g'ri sonini o'rnating (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = noto'g'ri; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Quaternion q; VectorFloat tortishish kuchi; suzuvchi aylanma [3]; int x, y, z; o'zgaruvchan bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = rost; } void setup () {Serial.begin (115200); piksel.begin (); piksellar aniq (); piksel.setBrightness (128); #if aniqlangan (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // I2C avtobusiga qo'shilish (I2Cdev kutubxonasi buni avtomatik ravishda qilmaydi) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz chastotali I2C. Kompilyatsiya qilishda qiyinchiliklar bo'lsa, bu qatorga izoh bering #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Serial); Serial.println (F ("I2C qurilmalarini ishga tushirish …")); mpu.initialize (); pinMod (INTERRUPT_PIN, INPUT); // ulanishni tekshirish Serial.println (F ("Qurilma ulanishlarini sinab ko'rish …")); Serial.println (mpu.testConnection ()? F ("MPU6050 ulanishi muvaffaqiyatli"): F ("MPU6050 ulanishi bajarilmadi")); // tayyor bo'lishni kuting // Serial.println (F ("\ nDMP dasturlash va demoni boshlash uchun istalgan belgini yuboring:")); // while (Serial.available () && Serial.read ()); // bo'sh bufer // while (! Serial.available ()); // ma'lumotlarni kuting // while (Serial.available () && Serial.read ()); // bo'sh tampon yana // DMP Serial.println -ni yuklang va sozlang (F ("DMP boshlanmoqda …")); devStatus = mpu.dmpInitialize (); // bu erda minimal sezgirlik uchun o'lchangan, o'z gyro ofsetlarini etkazib bering mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // sinov chipi uchun 1688 zavod standarti // uning ishlaganligiga ishonch hosil qiling (agar shunday bo'lsa, 0 qaytariladi) if (devStatus == 0) {// Kalibrlash vaqti: ofsetlarni hosil qiling va MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // DMP -ni yoqing, endi u tayyor Serial.println (F ("DMP -ni yoqish …")); mpu.setDMPEnabled (haqiqiy); // Arduino uzilishini aniqlashni yoqish Serial.print (F ("Uzilishlarni aniqlashni yoqish (Arduino tashqi uzilish")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // DMP Ready bayrog'ini o'rnating, shunda asosiy loop () funktsiyasi uni ishlatishni biladi Serial.println (F ("DMP tayyor! Birinchi uzilish kutilmoqda …")); dmpReady = rost; // keyinchalik taqqoslash uchun kutilgan DMP paket hajmini oling packetSize = mpu.dmpGetFIFOPacketSize (); } boshqa {// XATO! // 1 = xotira yuklanmadi // 2 = DMP konfiguratsiyasini yangilab bo'lmadi // (agar u buzilsa, odatda kod 1 bo'ladi) Serial.print (F ("DMP ishga tushirilmadi (kod")); Seriya. chop etish (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) qaytish; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Oxirgi paketni olish // Euler burchaklarini gradusda ko'rsatish mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& tortish kuchi, & q); mpu.dmpGetYawPitchRoll (aylanish, & q, & tortishish); } Serial.print ("X"); Serial.print (aylanish [2] * 180/M_PI); Serial.print ("\ t Y"); Serial.print (aylanish [1] * 180/M_PI); Serial.print ("\ t Z"); Serial.println (aylanish [0] * 180/M_PI); x = aylanma [2] * 180/M_PI; y = aylanma [1] * 180/M_PI; z = aylanma [0] * 180/M_PI; if (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = piksellar. Color (255, 0, 0); // Qizil yon tomonga burilganda} else if if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = piksel. Color (0, 255, 0); // Ikkinchi tomonga burilganda yashil}} if if if (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = piksellar. Color (255, 255, 0); // Uchinchi tomonga burilganda sariq}} if if if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = piksellar. Color (0, 0, 255); // To'rtinchi tomonga o'girilganda ko'k} else if else (abs (y)> 135 && abs (x)> 135) {activeColor = piksel. Color (0, 0, 0); // Qora teskari bo'lganda} if (activeColor! = OldActiveColor) {piksel.clear (); piksel.fill (faolColor); piksel.show (); oldActiveColor = faol rang; }}
Oxir -oqibat siz ColorCube.ino faylini ochishingiz va yuklashingiz mumkin. ColorCube -ni tekis yuzaga qo'ying va uni yoqing. Kalibrlashdan keyin (bir necha soniya) oq rang bilan ochilguncha uni qimirlatmang. Keyin ColorCube -ni yon tomonga qo'yishingiz mumkin va rang o'zgaradi - har bir tomonning o'ziga xos rangi bor - qizil, yashil, ko'k, sariq. ColorCube teskari o'girilganda o'chadi.
6 -qadam: yig'ish
O'rnatish paytida yumshoq bo'ling. Simlar va barcha qismlar qo'pol xatti -harakatlarni yoqtirmaydi.
Tugmachali 3D bosilgan qism - tugmani bosilgan pastki qismidagi teshikka yumshoq joylashtiring (rasmda ko'rsatilgandek), u hamma narsadan ortiqcha materialni olib tashlash uchun skalpel yoki o'tkir pichoq yoki qum qog'ozidan foydalanmasa, silliq kirishi va chiqib ketishi kerak. pastki qismida aylana teshigining yuqori qismi). (rasm)
MPU-6050, Arduino Nano, TP4056 va MT3608-ni teshiklariga qo'ying. Qutida chiqishlar bor, uning ostiga siz MPU-6050 va MT3608 ni qo'yasiz. Arduino Nano va TP4056 USB ulagichlarini qutining yon devorlaridagi teshiklariga joylashtiring. (rasm)
Komponentlarni tuzatish uchun 3d bosma qulfdan foydalaning (barcha komponentlar pastki qismga mahkam joylashtirilganligiga ishonch hosil qiling). Bu juda muhim, chunki kimdir sizning ColorCube bilan zar bilan o'ynagani aniq. (rasm)
Batareyani mahkam ushlamasa, uning teshigiga qo'ying va mahkamlang.
O'z-o'zidan qulflash tugmachasini pastki qismidagi teshikka joylashtiring. O'z-o'zidan qulflash tugmasi ON holatida bo'lishi kerak (qisqa). Tugmani sekin pastga bosing. 3D bosilgan tugma yordamida funksionallikni tekshirish. (rasmlar)
LED halqasini o'rta bosilgan qismga mahkamlash uchun ikkita M2 vintni ishlating. O'rtacha bosilgan qismning dumaloq teshigida simli aloqa bo'ladigan halqaning yo'nalishini ishlatish yaxshidir. (rasmlar)
Majburiy emas: bu erda va u erda bir tomchi issiq elim ishlating - simlar uzukka ulanadi, juda uzun simlar uchun, agar biror narsa etarlicha qattiq bo'lmasa va hokazo. Bu sizning ColorCube -ni yanada mustahkam qiladi.
ColorCube ichidagi simlarni bosilgan qismlar qisilmasligi uchun joylashtiring. O'rta qismini pastki qismiga qo'ying. Uni tuzatish uchun M3 vintini ishlating. (rasm)
Nihoyat, yuqoridan bosilgan qismni sekin pastga suring. (rasm)
7 -qadam: bajarildi
Tabrik. Maza qiling.
Tavsiya:
Batareya bilan ishlaydigan ofis. Quyosh panellari va shamol turbinasi: Sharq/G'arbni avtomatik almashtirish bilan quyosh tizimi: 11 qadam (rasmlar bilan)
Batareya bilan ishlaydigan ofis. Quyosh tizimi Sharq/G'arbning avtomatik panellari va shamol turbinasi bilan almashinuvi bilan: Loyiha: 200 kvadrat metrli ofis batareyali bo'lishi kerak. Ofis, shuningdek, ushbu tizim uchun zarur bo'lgan barcha tekshirgichlar, batareyalar va komponentlarni o'z ichiga olishi kerak. Quyosh va shamol energiyasi batareyalarni zaryad qiladi. Faqat kichik muammo bor
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'l bilan amalga oshirildi: 8 qadam (rasmlar bilan)
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'lga qo'yildi: 1 yil davomida 2 xil joyda muvaffaqiyatli ishlaganimdan so'ng, men quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasining loyiha rejalari bilan bo'lishaman va uning qanday qilib uzoq vaqt yashay oladigan tizimga aylanganini tushuntiraman. quyosh energiyasidan o'tgan davrlar. Agar ergashsangiz
Twinky bilan eng zo'r Arduino robot bilan tanishing: 7 qadam (rasmlar bilan)
Twinky bilan eng zo'r Arduino roboti bilan tanishing: Salom, men sizga "Jibo" ni o'zim qanday yaratganimni o'rgataman. lekin "Twinky" deb nomlangan, men buni ochib bermoqchiman … Bu nusxa emas! Men ikkiyuzlamachilik bilan qurardim va shundan keyingina shunga o'xshash narsaning mavjudligini tushundim: bu erda
OpenLH: Biologiya bilan ijodiy tajriba o'tkazish uchun ochiq suyuqlik bilan ishlash tizimi: 9 qadam (rasmlar bilan)
OpenLH: Biologiya bilan ijodiy eksperimentlar uchun ochiq suyuqlik bilan ishlash tizimi: Biz bu ishni moddiy, ko'milgan va mujassamlangan o'zaro ta'sir xalqaro konferentsiyasida (TEI 2019) taqdim etganimizdan faxrlanamiz. Tempe, Arizona, AQSh | 17-20 mart. Hamma yig'ish fayllari va qo'llanmalar bu erda mavjud. Oxirgi kod versiyasi
Vaqt o'tishi bilan rasmlar uchun kamera osonlashtirildi: 22 qadam (rasmlar bilan)
Vaqt o'tishi bilan suratga olish uchun kamera osonlashtirildi. Men boshqa ko'rsatmalarni vaqtni tez suratga olish filmlarini suratga olishni tekshirib ko'rdim. U kino qismini juda yaxshi yoritgan. U filmlar yaratish uchun yuklab olishingiz mumkin bo'lgan bepul dasturiy ta'minot haqida gapirib berdi. Men o'z -o'zimga aytdim, men o'ylaymanki, agar men qila olsam