Innholdsfortegnelse:
- Trinn 1: Materialer
- Trinn 2: Utskrift
- Trinn 3: Krets
- Trinn 4: Lodding
- Trinn 5: Kode
- Trinn 6: Montering
- Trinn 7: Ferdig
Video: ColorCube: 7 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Jeg laget denne lampen til barnebarnet mitt da hun lærte farger. Jeg ble inspirert av MagicCube -prosjektet, men opprettet til slutt alle delene fra bunnen av. Det er enkelt å skrive ut og enkelt å montere, og du vil få kunnskap om hvordan gyro -modulen fungerer.
Trinn 1: Materialer
Arduino del:
- Arduino Nano (bedre uten loddtekst)
- MPU-6050 3-akset giromodul
- TP4056 mikro USB batterilader modul
- MT3608 Step Up Power Booster -modul
- LiPo -batteri 902936 900mA eller 503035 3.7V 500mA. Du kan bruke et hvilket som helst LiPo -batteri med 3, 7V og størrelse mindre enn 35x30x15mm, men du må sikre batteriet i hullet.
- PS-22F28 Selvlåsende knapp eller PS-22F27 Selvlåsende knapp passer perfekt til den trykte delen.
- LED RGB WS2812B Ring - 16 LED 68mm ytterdiameter - du kan bruke hvilken som helst ring selv med forskjellige antall lysdioder (må endre en konstant i koden - #define NUMPIXELS 16) med maks diameter på 76mm (du kan også bruke en Neopixel Stick med 8x LED eller en hvilken som helst LED -stripe med WS2812b).
Ringeksempler: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm
For montering kan du bruke alle hullene som er trykt i den midterste delen. De dekker nesten alle alternativer (ikke nødvendig for å ha ringen 100% sentrert).
Ledninger
Kube
- PLA -filament for den øverste delen av kuben - bruk hvit farge fordi gjennomsiktig ikke er bra (lysdioder er synlige og fargen er ikke glatt), min anbefaling er Prusament Vanilla White
- PLA -filament for bunn-, midt- og knappdeler - bruk mørk farge fordi noen Arduino -moduler har lys på toppen og den passer ikke med kube -LED -farger, min anbefaling er Prusament Galaxy Black
- 1x M3x5 selvskruende skrue - Lengden (10 mm) og hodeformen er ikke kritisk - skruen er ikke synlig
- 2x M2x3 selvskruende skrue - Lengden (5 mm) og hodeformen er ikke kritisk - skruer er ikke synlige
Verktøy
- 3D -skriver
- Multi-meter
- Loddejern
- Skrujern
Trinn 2: Utskrift
Alle deler av ColorCube ble designet i Autodesk Fusion360. f3d -fil er vedlagt.
ColorCube ble skrevet ut på Prusa i3 MK3S -skriveren med alle standardinnstillinger, og jeg forventer ingen nødvendige endringer på forskjellige skrivere. Bruk dine favorittinnstillinger for PLA (hvis det skrives ut på PLA, ikke noe problem å bruke PETG eller ASA).
3D -utskriftsparametere:
- Lag 0,2 mm (0,2 mm KVALITET -innstillinger på PrusaSlicer)
- Prusament PLA Filament -innstillinger på PrusaSlicer
- Påfyll 15%
- Ingen støtte
- Ingen rand
Trinn 3: Krets
Trinn 4: Lodding
Advarsel: Bruk en multimeter for å være sikker på at DC-DC-booster MT3608 sender ut 5V. Først - før du måler - snu trimmen med klokken til slutten (klikk). Når du kobler spenning (3, 7V) til inngangen, må den gi omtrent samme verdi. Drei mot klokken (du trenger 10-20 hele omdreininger) og plutselig øker spenningen. Sett 5V på utgangen mykt. (bilde)
Ta en titt på den trykte nedre delen av terningen. Hver komponent har sitt eget hull. Den definerer hvor lange ledninger mellom hver komponent du trenger (ikke bruk ekstra lange ledninger, ellers får du wirejungel). (bilde)
Loddetråder mellom Arduino Nano og LED -ring bare (3 ledninger: rød 5V - 5V, svart GND - GND, blå D6 - DI). Kjør LED -ringfunksjonalitetstest fra neste kapittel. (bilde)
Hvis alt er OK, fortsett med å legge til Gyro MPU6050 (5 ledninger: rød 5V - VCC, svart GND - GND, blå A4 - SDA, grønn A5 - SCL, gul D2 - INT). Last opp ColorCube.ino -kode og test (andre komponenter er bare for batteri og lading). (bilde)
Hvis alt er i orden, legg til resten av komponentene. Det er bare røde (+) og svarte (-) ledninger. Velg høyre pinner på den selvlåsende knappen (ikke tilkoblet når den ikke trykkes). Test funksjonalitet på batteri og batterilading. (bilde)
Røde LED -lys på TP4056 ved lading og blå LED -lys når den er fulladet. Hullet over TP4056 i den midterste trykte delen passerer LED -lys til den øvre delen av ColorCube, og du kan gjenkjenne ladningsfasen. (bilde)
Trinn 5: Kode
Først må du laste ned nødvendige biblioteker.
Det er detaljerte instruksjoner for Adafruit Neopixel bibliotek:
LED -ringfunksjonalitetstest: Du kan teste kretsen din etter eksempel som er inkludert i biblioteket. Åpne filen fra Fil/Eksempler/Adafruit NeoPixels/simple og last opp (ikke glem å sette opp denne linjen riktig etter antall piksler du bruker: #define NUMPIXELS 16).
I2Cdev og MPU6050: Last ned og pakk ut i2cdevlib-master.zip-filen fra https://github.com/jrowberg/i2cdevlib. Kopier skjemaet utpakket mappe i2cdevlib-master/Arduino to undermapper: I2Cdev og MPU6050. Begge kopierer til Arduino IDE bibliotekmappe (Dokumenter/Arduino/biblioteker hvis standard installasjon).
Ikke glem å starte Arduino IDE på nytt etter at biblioteker har kopiert.
#include #ifdef _AVR_ #include // Påkrevd for 16 MHz Adafruit Trinket #endif #include "Wire.h" inkluderer "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // bruk pin 2 på Arduino Uno og de fleste boards #define PIN 6 #define NUMPIXELS 16 // Still inn riktig antall lysdioder Adafruit_NeoPixel piksler (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 tyngdekraft; float rotace [3]; int x, y, z; flyktig bool mpuInterrupt = false; void dmpDataReady () {mpuInterrupt = true; } ugyldig oppsett () {Serial.begin (115200); pixels.begin (); pixels.clear (); pixels.setBrightness (128); #if definert (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // bli med i I2C -buss (I2Cdev -biblioteket gjør ikke dette automatisk) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C klokke. Kommenter denne linjen hvis du har problemer med kompilering #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! Serial); Serial.println (F ("Initialiserer I2C -enheter …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // bekreft tilkoblingen Serial.println (F ("Tilkobling av testenheter …")); Serial.println (mpu.testConnection ()? F ("MPU6050 tilkobling vellykket"): F ("MPU6050 tilkobling mislyktes")); // vent på klar // Serial.println (F ("\ nSend et hvilket som helst tegn for å begynne DMP -programmering og demo:")); // while (Serial.available () && Serial.read ()); // tom buffer // mens (! Serial.available ()); // vent på data // mens (Serial.available () && Serial.read ()); // tom buffer igjen // last inn og konfigurer DMP Serial.println (F ("Initialiserer DMP …")); devStatus = mpu.dmpInitialize (); // gi dine egne gyroforskyvninger her, skalert for min følsomhet mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 fabrikkstandard for testbrikken min // sørg for at den fungerte (returnerer 0 i så fall) hvis (devStatus == 0) {// Kalibreringstid: generer forskyvninger og kalibrer vår MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // slå på DMP, nå som den er klar Serial.println (F ("Aktiverer DMP …")); mpu.setDMPEnabled (true); // aktiver Arduino avbruddsdeteksjon Serial.print (F ("Aktiverer avbruddsdeteksjon (Arduino ekstern avbrudd")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (") …"))); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // sett vårt DMP Ready -flagg slik at hovedsløyfen () -funksjonen vet at det er greit å bruke det Serial.println (F ("DMP ready! Waiting for first interrupt…")); dmpReady = true; // få forventet DMP -pakkestørrelse for senere sammenligning packetSize = mpu.dmpGetFIFOPacketSize (); } annet {// FEIL! // 1 = initial minnelast mislyktes // 2 = DMP -konfigurasjonsoppdateringer mislyktes // (hvis den skal gå i stykker, vil koden vanligvis være 1) Serial.print (F ("DMP -initialisering mislyktes (kode")); Seriell. print (devStatus); Serial.println (F (")"))); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Få den siste pakken // vis Euler -vinkler i grader mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& tyngdekraft, & q); mpu.dmpGetYawPitchRoll (rotace, & q, & gravity); } 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 = rotasjon [2] * 180/M_PI; y = rotace [1] * 180/M_PI; z = rotasjon [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 svinger til side} ellers hvis (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Grønn når du svinger til den andre siden} ellers hvis (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Gul når du svinger til den tredje siden} ellers hvis (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Blå når du svinger til fjerde side} ellers hvis (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Svart når den er opp ned} hvis (activeColor! = OldActiveColor) {pixels.clear (); piksler.fyll (activeColor); piksler.vis (); oldActiveColor = activeColor; }}
Til slutt kan du åpne og laste opp ColorCube.ino -filen. Sett ColorCube av flat overflate og slå den på. Ikke flytt den før den begynner å lyse med hvit farge etter kalibrering (noen sekunder). Deretter kan du sette ColorCube på siden og fargen endres - hver side har sin egen farge - rød, grønn, blå, gul. ColorCube slukker når den er snudd på hodet.
Trinn 6: Montering
Vær forsiktig under montering. Ledninger og alle deler liker ikke grov oppførsel.
Knapp 3d -trykt del - myk knapp til hullet i den nedre trykte delen (som vist på bildet), den må gå jevnt inn og ut, hvis ikke bruk skalpell eller skarp kniv eller sandpapir for å fjerne alt overflødig materiale (for det meste inne på toppen av et sirkelhull på nedre del). (bilde)
Sett MPU-6050, Arduino Nano, TP4056 og MT3608 i hullene. Boksen har fremspring som du setter inn MPU-6050 og MT3608 under. Sett USB -kontakter av Arduino Nano og TP4056 i hullene i boksens sidevegger. (bilde)
Bruk 3d -trykt lås for å fikse komponenter (sørg for at alle komponentene ligger tett på bunnen). Det er viktig fordi noen sikkert vil prøve å leke med ColorCube som med terninger. (bilde)
Sett batteriet i hullet hvis det ikke holder godt.
Sett den selvlåsende knappen til det forberedte hullet i den nedre delen. Selvlåsende knapp må være i PÅ-posisjon (kort). Trykk knappen forsiktig ned. Test funksjonalitet med 3d -trykt knapp. (bilder)
Bruk to M2 -skruer for å feste LED -ringen til den midterste trykte delen. Er god å bruke orienteringen av ringen der ledningskontakter er i avrundet hull på den midterste trykte delen. (bilder)
Valgfritt: Bruk en dråpe varmt lim her og der - ledningstilkobling til ring, for lange ledninger, hvis noe ikke er stramt nok osv. Det kan gjøre ColorCube mer holdbar.
Ordne ledninger inne i ColorCube for ikke å bli klemt av trykte deler. Legg den midtre delen til den nederste. Bruk M3 -skruen for å fikse den. (bilde)
Skyv til slutt forsiktig den øverste trykte delen til den nederste. (bilde)
Trinn 7: Ferdig
Gratulerer. Ha det gøy.
Anbefalt:
Ta flotte bilder med en iPhone: 9 trinn (med bilder)
Ta flotte bilder med en iPhone: De fleste av oss har med oss en smarttelefon overalt i disse dager, så det er viktig å vite hvordan du bruker smarttelefonkameraet ditt til å ta flotte bilder! Jeg har bare hatt en smarttelefon i et par år, og jeg har elsket å ha et greit kamera for å dokumentere ting jeg
Slik gjør du det: Installere Raspberry PI 4 Headless (VNC) med Rpi-imager og bilder: 7 trinn (med bilder)
Howto: Installere Raspberry PI 4 Headless (VNC) Med Rpi-imager og bilder: Jeg planlegger å bruke denne Rapsberry PI i en haug med morsomme prosjekter tilbake i bloggen min. Sjekk det gjerne ut. Jeg ønsket å begynne å bruke Raspberry PI igjen, men jeg hadde ikke tastatur eller mus på min nye plassering. Det var en stund siden jeg konfigurerte en bringebær
Slik demonterer du en datamaskin med enkle trinn og bilder: 13 trinn (med bilder)
Slik demonterer du en datamaskin med enkle trinn og bilder: Dette er en instruksjon om hvordan du demonterer en PC. De fleste grunnkomponentene er modulære og fjernes lett. Det er imidlertid viktig at du er organisert om det. Dette vil bidra til å hindre deg i å miste deler, og også i å gjøre monteringen igjen
PCB -design med enkle og enkle trinn: 30 trinn (med bilder)
PCB -design med enkle og enkle trinn: HELLO VENNER Den veldig nyttige og enkle opplæringen for de som ønsker å lære PCB -design, kan komme i gang
Hvordan lage en delt skjermvideo med fire trinn: 4 trinn (med bilder)
Hvordan lage en delt skjermvideo med fire trinn: Vi ser ofte en samme person vise i en scene to ganger i et TV -spill. Og så vidt vi vet har ikke skuespilleren en tvillingbror. Vi har også sett at to sangvideoer blir satt på en skjerm for å sammenligne sangferdighetene sine. Dette er kraften til spl