Πίνακας περιεχομένων:
- Βήμα 1: Υλικά
- Βήμα 2: Εκτύπωση
- Βήμα 3: Κύκλωμα
- Βήμα 4: Συγκόλληση
- Βήμα 5: Κωδικός
- Βήμα 6: Συναρμολόγηση
- Βήμα 7: Έγινε
Βίντεο: ColorCube: 7 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:33
Έφτιαξα αυτό το φωτιστικό για την εγγονή μου όταν μάθαινε χρώματα. Εμπνεύστηκα με το έργο MagicCube, αλλά τελικά δημιούργησα όλα τα μέρη από την αρχή. Είναι εύκολο να εκτυπωθεί και να συναρμολογηθεί εύκολα και θα λάβετε γνώση για το πώς λειτουργεί το γυροσκόπιο.
Βήμα 1: Υλικά
Μέρος Arduino:
- Arduino Nano (καλύτερα χωρίς καρφίτσες κεφαλίδας συγκόλλησης)
- MPU-6050 3-Axis Gyro Module
- Μονάδα φόρτισης μπαταρίας TP4056 Micro USB
- MT3608 Ενισχυμένη μονάδα ενίσχυσης ισχύος
- Μπαταρία LiPo 902936 900mA ή 503035 3.7V 500mA. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε μπαταρία LiPo με 3, 7V και μέγεθος μικρότερο από 35x30x15mm, αλλά πρέπει να ασφαλίσετε την μπαταρία σε τρύπα.
- Κουμπί αυτο-κλειδώματος PS-22F28 ή κουμπί αυτο-κλειδώματος PS-22F27 ταιριάζει απόλυτα στο εκτυπωμένο τμήμα.
- Δαχτυλίδι LED RGB WS2812B - 16 LED 68mm εξωτερική διάμετρος - μπορείτε να χρησιμοποιήσετε οποιοδήποτε δαχτυλίδι ακόμη και με διαφορετικό αριθμό LED (πρέπει να αλλάξετε μία σταθερά στον κωδικό - #define NUMPIXELS 16) με μέγιστη διάμετρο 76mm (μπορείτε επίσης να χρησιμοποιήσετε ένα Neopixel Stick με 8x LED ή οποιαδήποτε λωρίδα LED με WS2812b).
Παραδείγματα δαχτυλιδιών: 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
- 1x M3x5 Self Tapping Screw - Το μήκος (10mm) και το σχήμα της κεφαλής δεν είναι κρίσιμα - η βίδα δεν είναι ορατή
- 2x M2x3 Self Tapping Screw - Το μήκος (5mm) και το σχήμα της κεφαλής δεν είναι κρίσιμα - οι βίδες δεν είναι ορατές
Εργαλεία
- Τρισδιάστατος εκτυπωτής
- Πολύμετρο
- Συγκολλητικό σίδερο
- Κατσαβίδι
Βήμα 2: Εκτύπωση
Όλα τα μέρη του ColorCube σχεδιάστηκαν στο Autodesk Fusion360. Το αρχείο f3d επισυνάπτεται.
Το ColorCube εκτυπώθηκε στον εκτυπωτή Prusa i3 MK3S με όλες τις προεπιλεγμένες ρυθμίσεις και δεν περιμένω τις απαραίτητες αλλαγές σε διαφορετικούς εκτυπωτές. Χρησιμοποιήστε τις αγαπημένες σας ρυθμίσεις για PLA (εάν εκτυπώνονται στο PLA, δεν υπάρχει πρόβλημα χρήσης PETG ή ASA).
Τρισδιάστατες παράμετροι εκτύπωσης:
- Στρώμα 0,2 mm (ρυθμίσεις ΠΟΙΟΤΗΤΑΣ 0,2 mm στο PrusaSlicer)
- Ρυθμίσεις Prusament PLA Filament στο PrusaSlicer
- Συμπλήρωση 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 και δοκιμάστε (τα άλλα εξαρτήματα είναι μόνο για μπαταρία και φόρτιση). (φωτογραφία)
Εάν όλα είναι εντάξει, προσθέστε τα υπόλοιπα στοιχεία. Υπάρχουν μόνο κόκκινα (+) και μαύρα (-) καλώδια. Επιλέξτε δεξιά καρφίτσες στο κουμπί αυτόματου κλειδώματος (δεν είναι συνδεδεμένο όταν δεν πιέζεται). Δοκιμάστε τη λειτουργικότητα της μπαταρίας και της φόρτισης της μπαταρίας. (φωτογραφία)
Κόκκινες λυχνίες 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. Αντιγράψτε τη φόρμα χωρίς αποσυμπίεση i2cdevlib-master/Arduino δύο υποφακέλους: I2Cdev και MPU6050. Και τα δύο αντιγράφονται στο φάκελο βιβλιοθήκης Arduino IDE (Έγγραφα/Arduino/βιβλιοθήκες εάν η προεπιλεγμένη εγκατάσταση).
Μην ξεχάσετε να κάνετε επανεκκίνηση του Arduino IDE μετά την αντιγραφή των βιβλιοθηκών.
#include #ifdef _AVR_ #include // Required for 16 MHz Adafruit Trinket #endif #include "Wire.h" include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // χρησιμοποιήστε τον πείρο 2 στο Arduino Uno & τους περισσότερους πίνακες #καθορίστε τον κωδικό PIN 6 #ορίστε NUMPIXELS 16 // Ορίστε τον σωστό αριθμό LED 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]; Quaternion q; VectorFloat gravity? float rotace [3]? int x, y, z; πτητικό bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = true; } void setup () {Serial.begin (115200); pixels.begin (); pixels.clear (); pixels.setBrightness (128); #if καθορίζεται (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // συμμετοχή στο δίαυλο I2C (η βιβλιοθήκη I2Cdev δεν το κάνει αυτόματα) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // ρολόι I2C 400kHz. Σχολιάστε αυτήν τη γραμμή εάν αντιμετωπίζετε δυσκολίες στη σύνταξη #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Serial); 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 ()); // κενό buffer // while (! Serial.available ()); // περιμένετε δεδομένα // ενώ (Serial.available () && Serial.read ()); // αδειάστε ξανά το buffer // φορτώστε και ρυθμίστε τις παραμέτρους του DMP Serial.println (F ("Initializing 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 ("Enabling DMP …")); mpu.setDMPEnabled (true); // ενεργοποίηση εντοπισμού διακοπής 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. εκτύπωση (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return? if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Λήψη του τελευταίου πακέτου // εμφάνιση γωνιών Euler σε μοίρες 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 = rotace [2] * 180/M_PI; y = περιστροφή [1] * 180/M_PI; z = rotace [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: Συναρμολόγηση
Να είστε ευγενικοί κατά τη συναρμολόγηση. Στα καλώδια και σε όλα τα μέρη δεν αρέσει η τραχιά συμπεριφορά.
Κουμπί τρισδιάστατο τυπωμένο μέρος - τοποθετήστε απαλά το κουμπί στην τρύπα στο κάτω μέρος (όπως φαίνεται στην εικόνα), πρέπει να μπεί και να βγει ομαλά, αν δεν χρησιμοποιήσετε νυστέρι ή κοφτερό μαχαίρι ή χαρτί άμμου για να αφαιρέσετε όλο το πλεόνασμα υλικού (κυρίως στο εσωτερικό πάνω από μια τρύπα κύκλου στο κάτω μέρος). (φωτογραφία)
Τοποθετήστε MPU-6050, Arduino Nano, TP4056 και MT3608 στις οπές τους. Το κουτί έχει προεξοχές κάτω από τις οποίες τοποθετείτε MPU-6050 και MT3608. Τοποθετήστε τους συνδετήρες USB του Arduino Nano και του TP4056 στις οπές τους στα πλευρικά τοιχώματα του κουτιού. (φωτογραφία)
Χρησιμοποιήστε τρισδιάστατη κλειδαριά για να στερεώσετε τα εξαρτήματα (βεβαιωθείτε ότι όλα τα εξαρτήματα είναι καλά τοποθετημένα στο κάτω μέρος). Είναι σημαντικό γιατί κάποιος σίγουρα θα προσπαθήσει να παίξει με το ColorCube σας όπως με τα ζάρια. (φωτογραφία)
Τοποθετήστε και ασφαλίστε την μπαταρία στην τρύπα της αν δεν την κρατάτε σφιχτά.
Τοποθετήστε το κουμπί Self-lock στην προετοιμασμένη τρύπα στο κάτω μέρος. Το κουμπί αυτόματου κλειδώματος πρέπει να βρίσκεται στη θέση ON (σύντομο). Πιέστε απαλά το κουμπί προς τα κάτω. Δοκιμάστε τη λειτουργικότητα με τρισδιάστατο κουμπί. (φωτογραφίες)
Χρησιμοποιήστε δύο βίδες M2 για να στερεώσετε το δαχτυλίδι LED στο τμήμα μεσαίας εκτύπωσης. Είναι καλό να χρησιμοποιείτε τον προσανατολισμό του δακτυλίου όπου οι επαφές σύρματος βρίσκονται σε στρογγυλεμένη οπή του μέσου τυπωμένου τμήματος. (φωτογραφίες)
Προαιρετικά: Χρησιμοποιήστε μια σταγόνα θερμής κόλλας εδώ και εκεί - συνδέστε καλώδια για να χτυπήσετε, για πολύ μακριά καλώδια, αν κάτι δεν είναι αρκετά σφιχτό κλπ. Μπορεί να κάνει το ColorCube σας πιο ανθεκτικό.
Τακτοποιήστε τα καλώδια μέσα στο ColorCube ώστε να μην τσιμπηθούν από τυπωμένα μέρη. Βάλτε το μεσαίο μέρος στο κάτω μέρος. Χρησιμοποιήστε τη βίδα M3 για να τη στερεώσετε. (φωτογραφία)
Τέλος, σπρώξτε απαλά το επάνω μέρος που εκτυπώνεται στο κάτω μέρος. (φωτογραφία)
Βήμα 7: Έγινε
Συγχαρητήρια. Καλα να περνατε.
Συνιστάται:
Πώς: Εγκατάσταση Raspberry PI 4 Headless (VNC) Με Rpi-imager και εικόνες: 7 βήματα (με εικόνες)
Howto: Εγκατάσταση Raspberry PI 4 Headless (VNC) Με Rpi-imager και Εικόνες: Σκοπεύω να χρησιμοποιήσω αυτό το Rapsberry PI σε ένα σωρό διασκεδαστικά έργα στο ιστολόγιό μου. Μη διστάσετε να το ελέγξετε. Iθελα να επιστρέψω στη χρήση του Raspberry PI, αλλά δεν είχα πληκτρολόγιο ή ποντίκι στη νέα μου τοποθεσία. Είχε περάσει λίγος καιρός από τότε που έστησα ένα Raspberry
Πώς να αποσυναρμολογήσετε έναν υπολογιστή με εύκολα βήματα και εικόνες: 13 βήματα (με εικόνες)
Πώς να αποσυναρμολογήσετε έναν υπολογιστή με εύκολα βήματα και εικόνες: Αυτή είναι μια οδηγία σχετικά με τον τρόπο αποσυναρμολόγησης ενός υπολογιστή. Τα περισσότερα από τα βασικά στοιχεία είναι αρθρωτά και αφαιρούνται εύκολα. Ωστόσο, είναι σημαντικό να είστε οργανωμένοι σε αυτό. Αυτό θα σας βοηθήσει να αποφύγετε την απώλεια εξαρτημάτων και επίσης να κάνετε την επανασυναρμολόγηση να
Αποδώστε τρισδιάστατες εικόνες των PCB σας χρησιμοποιώντας Eagle3D και POV-Ray: 5 βήματα (με εικόνες)
Αποδώστε τρισδιάστατες εικόνες των PCB σας χρησιμοποιώντας Eagle3D και POV-Ray: Χρησιμοποιώντας Eagle3D και POV-Ray, μπορείτε να δημιουργήσετε ρεαλιστικές τρισδιάστατες αποδόσεις των PCB σας. Το Eagle3D είναι ένα σενάριο για EAGLE Layout Editor. Αυτό θα δημιουργήσει ένα αρχείο ανίχνευσης ακτίνων, το οποίο θα σταλεί στο POV-Ray, το οποίο με τη σειρά του θα βγει τελικά από το τελικό im
Κάμερα για εικόνες λήξης χρόνου που έγιναν εύκολα .: 22 βήματα (με εικόνες)
Camera for Time Lapse Pictures Made Easy: Έλεγχα ένα από τα άλλα Instructables σχετικά με την παραγωγή ταινιών time lapse. Καλύπτει αρκετά καλά το κομμάτι της ταινίας. Μίλησε για το δωρεάν λογισμικό που μπορείτε να κατεβάσετε για να κάνετε ταινίες. Είπα στον εαυτό μου, νομίζω ότι θα δω αν μπορώ
Πώς να εικονογραφήσετε εικόνες - Εύκολα: 3 βήματα (με εικόνες)
Πώς να Pixellate Εικόνες - Εύκολα: Αυτή η γρήγορη είναι μια τεχνική για τη χρήση λογοκρισίας pixel για τη διατήρηση της ανωνυμίας, της αξιοπρέπειας κ.λπ. σε ψηφιακές εικόνες. Χρειάζεστε μόνο έναν απλό επεξεργαστή εικόνας όπως το MS Paint, χρησιμοποιώ το MS Paint. Για εναλλακτική λύση, δείτε αυτό Διδάξιμο