INHOUDSOPGAWE:
- Stap 1: materiaal
- Stap 2: Druk
- Stap 3: Skakel
- Stap 4: Soldeer
- Stap 5: Kode
- Stap 6: Monteer
- Stap 7: Klaar
Video: ColorCube: 7 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Ek het hierdie lamp vir my kleindogter gemaak toe sy kleure leer. Ek was geïnspireer met die MagicCube -projek, maar het uiteindelik alle dele van nuuts af gemaak. Dit is maklik om af te druk en maklik om te monteer, en u kry kennis van hoe die gyro -module werk.
Stap 1: materiaal
Arduino deel:
- Arduino Nano (beter sonder penne van soldeerkop)
- MPU-6050 3-as-gyro-module
- TP4056 -mikro -USB -laaiermodule
- MT3608 Step Up Power Booster -module
- LiPo -battery 902936 900mA of 503035 3.7V 500mA. U kan enige LiPo -battery met 3, 7V en 'n grootte van minder as 35x30x15 mm gebruik, maar u moet die battery in die gat hou.
- PS-22F28 Selfsluitende knoppie of PS-22F27 Selfsluitende knoppie pas perfek by die gedrukte deel.
- LED RGB WS2812B -ring - 16 LED -buitendiameter van 68 mm - u kan enige ring gebruik, selfs met verskillende LED's (moet een konstante in kode verander - #definieer NUMPIXELS 16) met 'n maksimum deursnee van 76mm (u kan ook 'n Neopixel Stick met 8x LED of enige LED -strook met WS2812b).
Ringvoorbeelde: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm
Vir montage kan u enige van die gate in die middelste gedeelte gebruik. Hulle dek byna elke opsie (nie nodig om die ring 100% gesentreer te hê nie).
Drade
Kubus
- PLA -filament vir die boonste deel van die kubus - gebruik 'n wit kleur, want deursigtig is nie goed nie (LED's is sigbaar en die kleur is nie glad nie), my aanbeveling is Prusament Vanilla White
- PLA -filament vir onder-, middel- en knooponderdele - gebruik donker kleur, want sommige Arduino -modules het ligte aan die bokant en pas nie by kubus -LED's nie, my aanbeveling is Prusament Galaxy Black
- 1x M3x5 self -tapskroef - Die lengte (10 mm) en die kopvorm is nie krities nie - skroef is nie sigbaar nie
- 2x M2x3 self -tapskroef - Die lengte (5 mm) en die kopvorm is nie krities nie - skroewe is nie sigbaar nie
Gereedskap
- 3D -drukker
- Multi-meter
- Soldeerbout
- Skroewedraaier
Stap 2: Druk
Alle dele van ColorCube is ontwerp in Autodesk Fusion360. f3d -lêer is aangeheg.
Die ColorCube is op alle Prusa i3 MK3S -drukkers gedruk met alle standaardinstellings en ek verwag nie die nodige veranderinge op verskillende drukkers nie. Gebruik u gunsteling instellings vir PLA (indien gedruk op PLA, geen probleem om PETG of ASA te gebruik nie).
3D druk parameters:
- Laag 0,2 mm (0,2 mm KWALITEIT -instellings op PrusaSlicer)
- Prusament PLA Filament -instellings op PrusaSlicer
- Vul 15%
- Geen ondersteuning
- Geen rand
Stap 3: Skakel
Stap 4: Soldeer
Waarskuwing: Gebruik 'n multi-meter om seker te maak dat die DC-DC booster MT3608 5V lewer. Eerstens - voor meting - draai die afwerking kloksgewys tot die einde (klik). As die spanning (3, 7V) met die ingang verbind word, moet dit ongeveer dieselfde waarde gee. Draai linksom (u benodig 10-20 volle draaie) en skielik verhoog die spanning. Stel 5V sag op die uitset. (foto)
Kyk na die onderste gedeelte van die kubus. Elke komponent het sy eie gat. Dit definieer hoe lank drade tussen elke komponent benodig word (moenie ekstra lang drade gebruik nie, anders kry u draadwoud). (foto)
Soldeerdrade tussen slegs Arduino Nano en LED -ring (3 drade: rooi 5V - 5V, swart GND - GND, blou D6 - DI). Begin die LED -ringfunksietoets vanaf die volgende hoofstuk. (foto)
As alles in orde is, gaan voort met die toevoeging van Gyro MPU6050 (5 drade: rooi 5V - VCC, swart GND - GND, blou A4 - SDA, groen A5 - SCL, geel D2 - INT). Laai ColorCube.ino -kode op en toets (ander komponente is slegs vir batterye en laai). (foto)
As alles reg is, voeg die res van die komponente by. Daar is slegs rooi (+) en swart (-) drade. Kies die regte penne op die self-sluitknoppie (nie verbind as dit nie ingedruk word nie). Toets die funksionaliteit van die battery en die laai van die battery. (foto)
Rooi LED -ligte op TP4056 tydens laai en blou LED -ligte as dit volledig gelaai is. Die gat bo TP4056 in die middelste gedrukte deel gee LED -lig na die boonste gedeelte van ColorCube, en u kan die laaifase herken. (foto)
Stap 5: Kode
Eerstens moet u die nodige biblioteke aflaai.
Daar is gedetailleerde instruksies vir die Adafruit Neopixel -biblioteek:
LED -ringfunksietoets: u kan u stroombaan toets deur 'n voorbeeld in die biblioteek te toets. Maak lêer oop van File/Voorbeelde/Adafruit NeoPixels/simple en laai op (moenie vergeet om hierdie reël korrek op te stel volgens die aantal pixels wat u gebruik nie: #define NUMPIXELS 16).
I2Cdev en MPU6050: Laai die i2cdevlib-master.zip-lêer af en pak dit uit https://github.com/jrowberg/i2cdevlib. Kopieer die losgemaakte vouer i2cdevlib-master/Arduino twee submappe: I2Cdev en MPU6050. Beide kopieer na die Arduino IDE -biblioteekmap (dokumente/Arduino/biblioteke as standaardinstallasie).
Moenie vergeet om Arduino IDE weer te begin nadat biblioteke gekopieer is nie.
#include #ifdef _AVR_ #include // Vereis vir 16 MHz Adafruit Trinket #endif #include "Wire.h" sluit in "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // gebruik pen 2 op Arduino Uno en die meeste borde #definieer PIN 6 #definieer NUMPIXELS 16 // Stel die korrekte aantal LED's Adafruit_NeoPixel pixels (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800) in; uint32_t activeColor, oldActiveColor = 0; bool dmpReady = vals; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Quaternion q; VectorFloat swaartekrag; float rotace [3]; int x, y, z; vlugtige bool mpuInterrupt = vals; void dmpDataReady () {mpuInterrupt = true; } ongeldige opstelling () {Serial.begin (115200); pixels.begin (); pixels.clear (); pixels.setBrightness (128); #as gedefinieer (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // sluit aan by I2C -bus (I2Cdev -biblioteek doen dit nie outomaties nie) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C klok. Lewer kommentaar op hierdie reël as u probleme met die opstel het #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif terwyl (! Serial); Serial.println (F ("Initialiseer I2C -toestelle …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // verifieer verbinding Serial.println (F ("Toestelverbindings toets …")); Serial.println (mpu.testConnection ()? F ("MPU6050 verbinding suksesvol"): F ("MPU6050 verbinding misluk")); // wag vir gereed // Serial.println (F ("\ nStuur enige karakter om met DMP -programmering en demo te begin:")); // terwyl (Serial.available () && Serial.read ()); // leë buffer // terwyl (! Serial.available ()); // wag vir data // terwyl (Serial.available () && Serial.read ()); // leë buffer weer // laai en konfigureer die DMP Serial.println (F ("Initialiseer DMP …")); devStatus = mpu.dmpInitialize (); // verskaf u eie gyro -offset hier, afgeskaal vir min sensitiwiteit mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 fabrieksinstellings vir my toetsskyfie // maak seker dat dit gewerk het (gee 0 indien wel) as (devStatus == 0) {// Kalibreringstyd: genereer verrekenings en kalibreer ons MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // skakel die DMP aan, noudat dit gereed is Serial.println (F ("DMP aktiveer …")); mpu.setDMPEnabled (waar); // aktiveer Arduino -onderbrekingsopsporing Serial.print (F ("Onderbreking -opsporing moontlik maak (eksterne Arduino -onderbreking")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (") …"))); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // stel ons DMP Ready -vlag in sodat die hooflus () -funksie weet dat dit goed is om dit te gebruik Serial.println (F ("DMP gereed! Wag vir eerste onderbreking …")); dmpReady = waar; // kry verwagte DMP -pakkiegrootte vir latere vergelyking packetSize = mpu.dmpGetFIFOPacketSize (); } anders {// FOUT! // 1 = aanvanklike geheue laai misluk // 2 = DMP -konfigurasie -opdaterings misluk // (as dit gaan breek, sal die kode gewoonlik 1 wees) Serial.print (F ("DMP -inisialisering misluk (kode")); Serial. print (devStatus); Serial.println (F (")"))); }} nietige lus () {as (! dmpReady) terugkeer; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// Kry die nuutste pakkie // vertoon Euler -hoeke in grade mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& swaartekrag, & 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 = rotasie [2] * 180/M_PI; y = rotasie [1] * 180/M_PI; z = rotasie [0] * 180/M_PI; as (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (255, 0, 0); // Rooi as dit na kant draai} anders as (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Groen as jy na die tweede kant draai} anders as (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Geel as dit na die derde kant draai} anders as (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Blou as jy na die vierde kant draai} anders as (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Swart onderstebo} if (activeColor! = OldActiveColor) {pixels.clear (); pixels.fill (activeColor); pixels.show (); oldActiveColor = activeColor; }}
Uiteindelik kan u die ColorCube.ino -lêer oopmaak en oplaai. Sit ColorCube op 'n plat oppervlak en skakel dit aan. Beweeg dit nie totdat dit lig begin word met 'n wit kleur na kalibrasie ('n paar sekondes). Vervolgens kan u die ColorCube aan die kant sit en die kleur verander - elke kant het sy eie kleur - rooi, groen, blou, geel. Die ColorCube gaan uit as dit onderstebo gedraai word.
Stap 6: Monteer
Wees versigtig tydens montering. Drade en alle dele hou nie van rowwe gedrag nie.
Knop 3d -gedrukte deel - druk die knoppie saggies in die gat in die onderste gedeelte (soos op die foto getoon), dit moet glad in en uit gaan, indien nie 'n skalpel of 'n skerp mes of sandpapier nie, moet u alle oortollige materiaal verwyder (meestal binne bo -op 'n sirkelgat in die onderste deel). (foto)
Sit MPU-6050, Arduino Nano, TP4056 en MT3608 in hul gate. Die boks het uitsteeksels waaronder u MPU-6050 en MT3608 insit. Sit USB -verbindings van Arduino Nano en TP4056 in hul gate in die sywande van die boks. (foto)
Gebruik 'n 3D -gedrukte slot om komponente vas te maak (maak seker dat alle komponente styf op die onderste deel lê). Dit is belangrik, want iemand sal beslis probeer om met u ColorCube te speel soos met dobbelstene. (foto)
Plaas die battery in die gat en maak dit vas as dit nie styf hou nie.
Plaas die self-sluitknoppie in die voorbereide gat in die onderste deel. Selfsluitknoppie moet in AAN-posisie wees (kort). Druk die knoppie saggies af. Toets funksionaliteit met 'n 3D -gedrukte knoppie. (foto's)
Gebruik twee M2 -skroewe om die LED -ring aan die middelste gedeelte te druk. Dit is goed om die rigting van die ring te gebruik waar draadkontakte in die afgeronde gat van die middelste gedrukte deel is. (foto's)
Opsioneel: Gebruik 'n druppel warm gom hier en daar - drade wat verband hou met ring, vir te lang drade, as iets nie styf genoeg is nie, ens. Dit kan u ColorCube duursamer maak.
Rangskik die drade aan die binnekant van die ColorCube sodat dit nie deur die gedrukte dele geknyp word nie. Sit die middelste deel na die onderste een. Gebruik die M3 -skroef om dit reg te maak. (foto)
Druk uiteindelik die boonste gedrukte gedeelte liggies na die onderste een. (foto)
Stap 7: Klaar
Geluk. Hê pret.
Aanbeveel:
Neem wonderlike foto's met 'n iPhone: 9 stappe (met foto's)
Neem wonderlike foto's met 'n iPhone: die meeste van ons dra deesdae 'n slimfoon oral, daarom is dit belangrik om te weet hoe u u slimfoonkamera kan gebruik om fantastiese foto's te neem! Ek het net 'n paar jaar 'n slimfoon gehad, en ek hou daarvan om 'n ordentlike kamera te hê om dinge te dokumenteer wat ek
Raspberry Pi -boks met koelventilator met CPU -temperatuuraanwyser: 10 stappe (met foto's)
Raspberry Pi Box of Cooling FAN Met CPU Temperature Indicator: Ek het framboos pi (Hierna as RPI) CPU temperatuur aanwyser stroombaan in die vorige projek bekendgestel. Die kring wys eenvoudig RPI 4 verskillende CPU temperatuur vlakke soos volg.- Groen LED aangeskakel wanneer CPU temperatuur is binne 30 ~
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: 7 stappe (met foto's)
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: ek is van plan om hierdie Rapsberry PI te gebruik in 'n klomp prettige projekte in my blog. Kyk gerus daarna. Ek wou weer my Raspberry PI gebruik, maar ek het nie 'n sleutelbord of muis op my nuwe plek gehad nie. Dit was 'n rukkie sedert ek 'n Framboos opgestel het
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer