Innehållsförteckning:
- Steg 1: Material
- Steg 2: Utskrift
- Steg 3: Krets
- Steg 4: Lödning
- Steg 5: Kod
- Steg 6: Montering
- Steg 7: Klar
Video: ColorCube: 7 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:39
Jag gjorde den här lampan till mitt barnbarn när hon lärde sig färger. Jag blev inspirerad av MagicCube -projektet men skapade slutligen alla delar från grunden. Det är enkelt att skriva ut och enkelt att montera och du får kunskap om hur gyromodulen fungerar.
Steg 1: Material
Arduino del:
- Arduino Nano (bättre utan lödhuvudstiften)
- MPU-6050 3-Axis Gyro-modul
- TP4056 Micro USB -batteriladdningsmodul
- MT3608 Step Up Power Booster -modul
- LiPo -batteri 902936 900mA eller 503035 3.7V 500mA. Du kan använda vilket LiPo -batteri som helst med 3, 7V och storlek mindre än 35x30x15mm men du måste säkra batteriet i hålet.
- PS-22F28 Självlåsande knapp eller PS-22F27 Självlåsande knapp passar perfekt till den tryckta delen.
- LED RGB WS2812B Ring - 16 LED 68mm ytterdiameter - du kan använda vilken ring som helst med olika antal lysdioder (måste ändra en konstant i kod - #define NUMPIXELS 16) med max diameter på 76mm (du kan också använda en Neopixel Stick med 8x LED eller någon LED -remsa med WS2812b).
Ringexempel: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm
För montage kan du använda alla hål som är tryckta i mitten. De täcker nästan alla alternativ (behöver inte ha ringen 100% centrerad).
Trådar
Kub
- PLA -filament för övre delen av kuben - använd vit färg eftersom transparent inte är bra (lysdioder är synliga och färgen är inte slät), min rekommendation är Prusament Vanilla White
- PLA -filament för botten-, mitten- och knappdelar - använd mörk färg eftersom vissa Arduino -moduler har lampor på toppen och det passar inte med kub -LED -färger, min rekommendation är Prusament Galaxy Black
- 1x M3x5 självgängande skruv - Längden (10 mm) och huvudformen är inte kritisk - skruven syns inte
- 2x M2x3 självgängande skruv - Längden (5 mm) och huvudformen är inte kritisk - skruvar syns inte
Verktyg
- 3d skrivare
- Multimätare
- Lödkolv
- Skruvmejsel
Steg 2: Utskrift
Alla delar av ColorCube designades i Autodesk Fusion360. f3d -fil bifogas.
ColorCube skrevs ut på Prusa i3 MK3S -skrivare med alla standardinställningar och jag förväntar mig inga nödvändiga ändringar på olika skrivare. Använd dina favoritinställningar för PLA (om de skrivs ut på PLA, inga problem att använda PETG eller ASA).
3D -utskriftsparametrar:
- Skikt 0,2 mm (0,2 mm KVALITET -inställningar på PrusaSlicer)
- Inställningar för Prusament PLA Filament på PrusaSlicer
- Infill 15%
- Inget stöd
- Ingen rand
Steg 3: Krets
Steg 4: Lödning
Varning: Använd en multimätare för att vara säker på att DC-DC-förstärkaren MT3608 matar ut 5V. För det första - innan du mäter - vrid trimmen medsols till slutet (klicka). När spänningen (3, 7V) ansluts till ingången måste den ge ungefär samma värde. Vrid moturs (du behöver 10-20 hela varv) och plötsligt stiger spänningen. Ställ in 5V på utgången mjukt. (Foto)
Ta en titt på den tryckta nedre delen av kuben. Varje komponent har sitt eget hål. Den definierar hur långa ledningar mellan varje komponent du behöver (använd inte extra långa ledningar annars får du tråddjungel). (Foto)
Lödtrådar mellan Arduino Nano och endast LED -ring (3 ledningar: röd 5V - 5V, svart GND - GND, blå D6 - DI). Kör LED -ringfunktionstest från nästa kapitel. (Foto)
Om allt är OK fortsätt med att lägga till Gyro MPU6050 (5 ledningar: röd 5V - VCC, svart GND - GND, blå A4 - SDA, grön A5 - SCL, gul D2 - INT). Ladda upp ColorCube.ino -kod och test (andra komponenter är endast för batteri och laddning). (Foto)
Om allt är OK lägg till resten av komponenterna. Det finns bara röda (+) och svarta (-) trådar. Välj höger stift på den självlåsande knappen (inte ansluten när den inte trycks in). Testa funktionalitet på batteri och batteriladdning. (Foto)
Röda LED -lampor på TP4056 vid laddning och blå LED -lampor när de är fulladdade. Hålet ovanför TP4056 i mitten tryckt del passerar LED -ljus till den övre delen av ColorCube och du kan känna igen laddningsfasen. (Foto)
Steg 5: Kod
Först måste du ladda ner nödvändiga bibliotek.
Det finns detaljerade instruktioner för Adafruit Neopixel bibliotek:
LED -ringfunktionstest: Du kan testa din krets med exempel som ingår i biblioteket. Öppna filen från File/Exemplar/Adafruit NeoPixels/simple och ladda upp (glöm inte att ställa in den här raden korrekt efter antalet pixlar du använder: #define NUMPIXELS 16).
I2Cdev och MPU6050: Ladda ner och packa upp i2cdevlib-master.zip-filen från https://github.com/jrowberg/i2cdevlib. Kopiera formulär uppackad mapp i2cdevlib-master/Arduino två undermappar: I2Cdev och MPU6050. Båda kopieras till Arduino IDE biblioteksmapp (Dokument/Arduino/bibliotek om standardinstallation).
Glöm inte att starta om Arduino IDE efter att bibliotek har kopierats.
#include #ifdef _AVR_ #include // Krävs för 16 MHz Adafruit Trinket #endif #include "Wire.h" inkluderar "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // use pin 2 on Arduino Uno & most boards #define PIN 6 #define NUMPIXELS 16 // Ställ in rätt antal lysdioder Adafruit_NeoPixel pixlar (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]; Kvarternion q; VectorFloat gravitation; float rotace [3]; int x, y, z; flyktig bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = true; } void setup () {Serial.begin (115200); pixlar. börjar (); pixlar.clear (); pixlar.setBrightness (128); #if definierat (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // gå med i I2C -buss (I2Cdev -biblioteket gör inte detta automatiskt) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C klocka. Kommentera den här raden om du har problem med sammanställning #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Serial); Serial.println (F ("Initierar I2C -enheter …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // verifiera anslutning Serial.println (F ("Testenhetsanslutningar …")); Serial.println (mpu.testConnection ()? F ("MPU6050 -anslutningen lyckades"): F ("MPU6050 -anslutningen misslyckades")); // vänta på redo // Serial.println (F ("\ nSkicka vilket tecken som helst för att påbörja DMP -programmering och demo:")); // while (Serial.available () && Serial.read ()); // tom buffert // while (! Serial.available ()); // vänta på data // while (Serial.available () && Serial.read ()); // tom buffert igen // ladda och konfigurera DMP Serial.println (F ("Initierar DMP …")); devStatus = mpu.dmpInitialize (); // ange dina egna gyroförskjutningar här, skalade för min känslighet mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 fabriksinställning för mitt testchip // se till att det fungerade (returnerar 0 i så fall) om (devStatus == 0) {// Kalibreringstid: generera förskjutningar och kalibrera vår MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // slå på DMP, nu när det är klart Serial.println (F ("Aktiverar DMP …")); mpu.setDMPEnabled (true); // aktivera Arduino avbrottsdetektering Serial.print (F ("Aktiverar avbrottsdetektering (Arduino externt avbrott")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (") …"))); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // ställ in vår DMP Ready -flagga så att huvudslingan () -funktionen vet att det är okej att använda den Serial.println (F ("DMP ready! Waiting for first interrupt …")); dmpReady = true; // få förväntad DMP -paketstorlek för senare jämförelse packetSize = mpu.dmpGetFIFOPacketSize (); } annat {// FEL! // 1 = initial minnesbelastning misslyckades // 2 = DMP -konfigurationsuppdateringar misslyckades // (om den kommer att gå sönder brukar koden vara 1) Serial.print (F ("DMP -initialisering misslyckades (kod")); Serial. print (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Skaffa det senaste paketet // visa Euler -vinklar i grader mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& gravitation, & q); mpu.dmpGetYawPitchRoll (rotace, & q, & gravitation); } Serial.print ("X"); Serial.print (rotace [2] * 180/M_PI); Serial.print ("\ t Y"); Serial.print (rotace [1] * 180/M_PI); Serial.print ("\ t Z"); Serial.println (rotace [0] * 180/M_PI); x = rotera [2] * 180/M_PI; y = rotera [1] * 180/M_PI; z = rotera [0] * 180/M_PI; if (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (255, 0, 0); // Röd när du vänder till sidan} annars om (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Grön när du vrider till andra sidan} annars om (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Gul när du vänder till tredje sidan} annars om (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Blå när du vrider till fjärde sidan} annars if (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Svart när den är upp och ner} if (activeColor! = OldActiveColor) {pixels.clear (); pixlar. fyllning (activeColor); pixlar. visa (); oldActiveColor = activeColor; }}
Slutligen kan du öppna och ladda upp filen ColorCube.ino. Sätt ColorCube på en plan yta och slå på den. Flytta inte den förrän den börjar lysa med vit färg efter kalibrering (några sekunder). Därefter kan du lägga ColorCube på sidan och färgen ändras - varje sida har sin egen färg - röd, grön, blå, gul. ColorCube slocknar när den vänds upp och ner.
Steg 6: Montering
Var försiktig under montering. Ledningar och alla delar gillar inte grovt beteende.
Knapp 3d -tryckt del - mjukt sätta knappen till hålet i den nedre tryckta delen (som visas på bilden), den måste gå in och ut smidigt, om inte använda skalpell eller vass kniv eller sandpapper för att ta bort allt överflödigt material (mestadels inuti toppen av ett cirkelhål på nedre delen). (Foto)
Sätt MPU-6050, Arduino Nano, TP4056 och MT3608 i sina hål. Lådan har utsprång under vilka du sätter in MPU-6050 och MT3608. Sätt USB -kontakter av Arduino Nano och TP4056 i sina hål i lådans sidoväggar. (Foto)
Använd 3D -tryckt lås för att fixa komponenter (se till att alla komponenter ligger hårt på botten). Det är viktigt eftersom någon säkert kommer att försöka spela med din ColorCube som med tärningar. (Foto)
Sätt i och säkra batteriet i hålet om det inte håller hårt.
Sätt den självlåsande knappen i det förberedda hålet i botten. Självlåsningsknappen måste vara i PÅ-läge (kort). Tryck försiktigt ner knappen. Testfunktion med 3D -tryckt knapp. (foton)
Använd två M2 -skruvar för att fästa LED -ringen på den mellersta tryckta delen. Är bra att använda orienteringen av ringen där trådkontakterna är i det rundade hålet på den mellersta tryckta delen. (foton)
Valfritt: Använd en droppe varmt lim här och där - trådanslutning till ring, för för långa ledningar, om något inte är tillräckligt tätt etc. Det kan göra din ColorCube mer hållbar.
Ordna trådarna inuti ColorCube så att de inte kläms av tryckta delar. Lägg den mellersta delen till den nedre. Använd M3 -skruven för att fixa den. (Foto)
Skjut försiktigt den övre tryckta delen till den nedre. (Foto)
Steg 7: Klar
Grattis. Ha så kul.
Rekommenderad:
Ta fantastiska bilder med en iPhone: 9 steg (med bilder)
Ta fantastiska bilder med en iPhone: De flesta av oss har en smartphone med oss överallt nuförtiden, så det är viktigt att veta hur du använder din smartphone -kamera för att ta fantastiska bilder! Jag har bara haft en smartphone i ett par år, och jag har älskat att ha en bra kamera för att dokumentera saker jag
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: 7 steg (med bilder)
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: Jag planerar att använda denna Rapsberry PI i ett gäng roliga projekt tillbaka i min blogg. Kolla gärna in det. Jag ville börja använda mitt Raspberry PI men jag hade inte ett tangentbord eller en mus på min nya plats. Det var ett tag sedan jag installerade en hallon
Hur man digitaliserar bilder och filmnegativ med en DSLR: 12 steg (med bilder)
Hur man digitaliserar diabilder och filmnegativ med en DSLR: En mångsidig och stabil inställning för digitalisering av diabilder och negativ med en DSLR eller en kamera med ett makroalternativ. Denna instruerbara är en uppdatering av Hur man digitaliserar 35 mm negativ (uppladdad juli 2011) med flera förbättringar för att utöka dess
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Hur man tar isär en dator med enkla steg och bilder: 13 steg (med bilder)
Hur man tar isär en dator med enkla steg och bilder: Detta är en instruktion om hur man demonterar en dator. De flesta av de grundläggande komponenterna är modulära och lätt att ta bort. Det är dock viktigt att du är organiserad kring det. Detta hjälper dig att inte förlora delar, och även för att göra ommonteringen