ዝርዝር ሁኔታ:
ቪዲዮ: የጂዮስኮፕ ደስታ በኒዮፒክስል ቀለበት 4 ደረጃዎች (ከስዕሎች ጋር)
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:30
በዚህ መማሪያ ውስጥ የ MPU6050 ጋይሮስኮፕን ፣ የኒዮፒክስል ቀለበት እና አርዱinoኖን በመጠቀም የመብራት መብራትን ከዝንባታው ማእዘን ጋር የሚስማማ መሣሪያ ለመገንባት እንጠቀማለን።
ይህ ቀላል እና አስደሳች ፕሮጀክት ነው እና በዳቦ ሰሌዳ ላይ ይሰበሰባል። ደረጃዎቹን ከተከተሉ በቪዲዮው ውስጥ ያዩትን ይገነባሉ። ስለ ጋይሮስኮፕ እና ስለ ኒዮፒክስል ቀለበት ለመማር ጥሩ አጋዥ ስልጠና ነው።
እኔ እዚህ በመጀመሪያ አስተማሪዬ ላይ ባየሁት ፍላጎት (ይህንን በጊዮስኮፕ መሪ ቁጥጥር ከአርዱዲኖ ጋር) ይህንን ትምህርት እገነባለሁ። በዚህ መመሪያ ውስጥ ቀለል ያሉ መሪዎችን በኒዮፒክስል ቀለበት እተካለሁ። ቀለበቱ በአዳፍ ፍሬም ቤተ -መጽሐፍት በኩል ለመጠቀም ቀላል እና በእርግጠኝነት የበለጠ አስደናቂ ነው።
ስለዚህ እነዚህ አካላት በዚህ ዙሪያ ተኝተው ከሆነ እነሱን ለመጠቀም ጥሩ መንገድ ነው ፣ መሣሪያውን በመገንባት ደረጃ በደረጃ ለመውሰድ እሞክራለሁ እና እንዲሁም በመጨረሻው ደረጃ እንዴት እንደሚሰራ ለማብራራት እሞክራለሁ።
ደረጃ 1: የሚያስፈልጉ ነገሮች
ክፍሎች
1. Arduino pro mini 328p (eBay) 2 $
2. የዳቦ ሰሌዳ
3. MPU6050 ጋይሮስኮፕ (ኢቤይ) 1.2 $
4. 24 ኒኦፒክስል መሪ ቀለበት (አዳፍ ፍሬ) 17 $
5. 4 x AA የባትሪ ጥቅል ከ 4 ባትሪዎች ጋር
6. የ U- ቅርፅ ዝላይ ኬብሎች (አማራጭ)። እኔ የዳቦ ቦርዱ ላይ የተሻለ ስለሚመስሉ እነዚህን መዝለያ ኬብሎች ተጠቅሜአለሁ ፣ እና ሌዲዎቹ በዚህ መንገድ የበለጠ ይታያሉ። በ ebay ላይ የ 140 ሳጥን በ 4 ዶላር ገደማ ማግኘት ይችላሉ። እነዚህ ኬብሎች ከሌሉዎት በዱፖን ሽቦዎች መተካት ይችላሉ።
መሣሪያዎች ፦
1. አርዱዲኖ ፕሮ ሚኒን ፕሮግራም ለማድረግ ዩኤስቢ ወደ ተከታታይ FTDI አስማሚ FT232RL
2. አርዱዲኖ አይዲኢ
ችሎታዎች: 1. መሸጥ ፣ ይህንን መማሪያ ይመልከቱ
3. መሠረታዊ የአሩዲኖ ፕሮግራም ፣ ይህ አጋዥ ትምህርት ጠቃሚ ሊሆን ይችላል
ደረጃ 2 - ስብሰባ
ለግንኙነቶች በቀላሉ ለማየት የ fritzing schematic ን በ fzz ቅርጸት እና ስዕሉን አያይዘዋለሁ
1. በሥዕሉ ላይ እንደሚታየው በኒዮፒክስል ቀለበት ጀርባ ላይ 3 የወንድ ፒኖችን መሸጥ ያስፈልግዎታል
- አዎንታዊውን ፒን ያሽጡ
- መሬቱን መሸጥ
- የውሂብ ግብዓቱን ፒን ይሽጡ
2. ከዚያ 4x የባትሪ መያዣው ከዳቦ ሰሌዳው ጋር የሚገናኝበት መንገድ ሊኖረው ይገባል ፣ ቀላል መፍትሄ ሁለት የወንድ ዱፖን ሽቦዎችን ወደ ተርሚናሎቹ መሸጥ ነው።
3. የዳቦ ሰሌዳውን ያዘጋጁ።
- በምስሉ ላይ እንደሚታየው የኒዮፒክስል ቀለበት ፣ ማይክሮ መቆጣጠሪያ እና ጋይሮስኮፕ በዳቦ ሰሌዳው ላይ ያድርጉት
- ሁሉንም አሉታዊ ሽቦዎች ያስቀምጡ -ወደ ማይክሮ መቆጣጠሪያ ፣ ኒዮፒክስል ቀለበት ፣ ጋይሮ
- ሁሉንም አዎንታዊ ሽቦዎችን ያስቀምጡ -ወደ ማይክሮ መቆጣጠሪያ ፣ ኒዮፒክስል ቀለበት ፣ ጋይሮ
- ሁሉንም የውሂብ ሽቦዎች ያስቀምጡ:
* ኤስዲኤ እና ኤስ.ሲ.ኤል ወደ ማይክሮ መቆጣጠሪያ እስከ ጋይሮ ድረስ
* D6 ን ከማይክሮ መቆጣጠሪያ ወደ ኒዮፒክስል ቀለበት
- ኃይል ከመስጠትዎ በፊት ሁሉንም ግንኙነቶች በእጥፍ ያረጋግጡ
- እንደ አማራጭ የቴፕ ቴፕ በመጠቀም በቦታው ለመያዝ እና የበለጠ ተንቀሳቃሽ ለማድረግ የባትሪውን ጥቅል በብራድቦርዱ ጀርባ ላይ ይለጥፉ
ደረጃ 3 - ኮድ እና መለካት
በመጀመሪያ ሁለት ቤተ -መጽሐፍትን ማውረድ እና መጫን ያስፈልግዎታል
1. አዳፍ ፍሬው ኒዮፒክስል ቤተ ፍርግም ኒኦፒክስሉን የሚቆጣጠር
2. MPU6050 ቤተ መፃህፍት ለጋይሮስኮፕ
3. I2CDev ቤተ -መጽሐፍት ምንጭ
ከባድ ማንሳትን የሚሠሩ ሁለት ታላላቅ ቤተ -መጻሕፍት ናቸው!
ስለ ኒዮፒክስሎች ተጨማሪ ዝርዝሮች እዚህ
ከዚያ የእኔን ቤተ -መጽሐፍት ያውርዱ እና ይጫኑ ወይም ከዚህ በታች ይቅዱ
#"I2Cdev.h" ን ያካትቱ
#ያካትቱ #ያካትቱ "MPU6050_6Axis_MotionApps20.h" # #"Wire.h" #ንፍቅር NEOPIXED_CONTROL_PIN 6 #definine NUM_LEDS 24 const int MAX_ANGLE = 45; const int LED_OFFSET = 12; MPU6050 mpu; Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS ፣ NEOPIXED_CONTROL_PIN ፣ NEO_RBG + NEO_KHZ800) ፤ ያልተፈረመ ረጅም lastPrintTime = 0; bool initialization = ሐሰት; / ዲኤምፒ init ስኬታማ ከሆነ uint8_t mpuIntStatus/ ከሆነ እውነት ያዘጋጁ። // ከ MPU uint8_t devStatus ትክክለኛ የማቋረጥ ሁኔታ ባይት ይይዛል ፤ // ከእያንዳንዱ የመሣሪያ አሠራር (0 = ስኬት ፣ 0 = ስህተት) uint16_t packetSize በኋላ የመመለስ ሁኔታ; // የሚጠበቀው የ DMP ፓኬት መጠን (ነባሪ 42 ባይት ነው) uint16_t fifoCount; // በአሁኑ ጊዜ በ FIFO ውስጥ የሁሉም ባይቶች ብዛት መቁጠር uint8_t fifoBuffer [64]; // የ FIFO ማከማቻ ቋት Quaternion q; // [w, x, y, z] quaternion መያዣ VectorFloat ስበት; // [x, y, z] የስበት ቬክተር ተንሳፋፊ ypr [3]; // [yaw ፣ pitch ፣ roll] yaw/pitch/roll መያዣ እና የስበት ቬክተር የማይለዋወጥ bool mpuInterrupt = ሐሰት; // የሚያመለክተው የ MPU ማቋረጫ ፒን ከፍ ማለቱን ወይም አለመሆኑን ነው
ባዶነት ማዋቀር ()
{Serial.begin (9600); Serial.println ("ፕሮግራሙ ተጀመረ"); ማስነሻ = initializeGyroscope (); strip.begin (); } ባዶነት loop () {ከሆነ (! ማስጀመሪያ) {መመለስ ፤ } mpuInterrupt = ሐሰት; mpuIntStatus = mpu.getIntStatus (); fifoCount = mpu.getFIFOCount (); ከሆነ (hasFifoOverflown (mpuIntStatus ፣ fifoCount)) {mpu.resetFIFO (); መመለስ; } ከሆነ (mpuIntStatus & 0x02) {እያለ (fifoCount <packetSize) {fifoCount = mpu.getFIFOCount (); } mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount -= packetSize; mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& ስበት ፣ & q); mpu.dmpGetYawPitchRoll (ypr ፣ & q ፣ & ስበት); redrawLeds (ypr [0] * 180/M_PI ፣ ypr [1] * 180/M_PI ፣ ypr [2] * 180/M_PI); }} boolean hasFifoOverflown (int mpuIntStatus, int fifoCount) {መመለስ mpuIntStatus & 0x10 || fifoCount == 1024; } ባዶነት redrawLeds (int x ፣ int y ፣ int z) {x = constrain (x ፣ -1 * MAX_ANGLE ፣ MAX_ANGLE) ፤ y = መገደብ (y, -1 * MAX_ANGLE ፣ MAX_ANGLE); ከሆነ (y 0) {lightLeds (y, z, 0, 5, 0, 89); } ሌላ ከሆነ (y <0 እና z 0 እና z 0 እና z> 0) {lightLeds (y ፣ z ፣ 20 ፣ 24 ፣ 89 ፣ 0) ፤ }} ባዶ ባዶ መብራቶች (int x ፣ int y ፣ int fromLedPosition ፣ int toLedPosition ፣ int fromAngle ፣ int toAngle) {double angle = (atan ((double) abs (x) / (double) abs (y)) * 4068) / 71; int ledNr = ካርታ (አንግል ፣ ከኤንጅሌ ፣ እስከ አንንግሌ ፣ ከሊፕፖዚሽን ፣ ወደላይፕፖዝ); printDebug (x ፣ y ፣ ledNr ፣ አንግል); uint32_t ቀለም; ለ (int i = 0; i position + LED_OFFSET) {የመመለሻ ቦታ + LED_OFFSET; } የመመለሻ ቦታ + LED_OFFSET - NUM_LEDS; } ባዶ ባዶ ህትመት (int y ፣ int z ፣ int lightLed ፣ int angle) {if (millis () - lastPrintTime <500) {return; } Serial.print ("a ="); Serial.print (ማዕዘን); Serial.print (";"); Serial.print ("ll ="); Serial.print (lightLed); Serial.print (";"); Serial.print ("y ="); Serial.print (y); Serial.print (";"); Serial.print ("z ="); Serial.print (z); Serial.println (";"); lastPrintTime = millis (); } bool initializeGyroscope () {Wire.begin (); TWBR = 24; mpu.initialize (); Serial.println (mpu.testConnection ()? F ("MPU6050 ግንኙነት ተሳካ"): F ("MPU6050 ግንኙነት አልተሳካም")); Serial.println (ኤፍ ("DMP ን ማስጀመር …")); devStatus = mpu.dmpInitialize (); mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788); ከሆነ (devStatus! = 0) {Serial.print (F ("DMP Initialization failed (ኮድ"))) ፤ Serial.println (devStatus) ፤ ሐሰትን መመለስ ፤} mpu.setDMPEnabled (እውነት) ፤ Serial.println (F ("ማንቃት) ማቋረጫ ማወቂያ (የአርዱዲኖ ውጫዊ መቋረጥ 0)…”)) ፤ አባሪ መቋረጥ (0 ፣ dmpDataReady ፣ RISING) ፤ mpuIntStatus = mpu.getIntStatus () ፤ Serial.println (ኤፍ (“ዲኤምፒ ዝግጁ ነው! ለመጀመሪያ ጊዜ ማቋረጥ በመጠበቅ ላይ…”)); packetSize = mpu.dmpGetFIFOPacketSize () ፤ እውነት ተመለስ ፤} ባዶ ባዶ dmpDataReady () {mpuInterrupt = true;}
ኮዱን ይስቀሉ ፦
የ FTDI አስማሚውን በመጠቀም ኮዱን ወደ አርዱዲኖ ይስቀሉ።
የኃይል አቅርቦቱን (ባትሪዎችን) ያገናኙ
መለካት ፦
እዚህ ለመለካት በጣም አስፈላጊው ነገር “LED_OFFSET” ቋሚ ነው። በምሳሌዬ 12. ይህንን ከ 0 ወደ 23 ማስተካከል ያስፈልግዎታል ስለዚህ ቦርዱን ከኃይል በኋላ መሪዎቹ ሰሌዳውን ወደሚያዘዙበት አቅጣጫ ያበራል።
እንዴት እንደሚሰራ ተጨማሪ ዝርዝሮችን ለማወቅ ከፈለጉ የመጨረሻውን ደረጃ ይመልከቱ
ደረጃ 4: እንዴት እንደሚሰራ (አማራጭ)
በመጀመሪያ ስለ MPU6050 ጋይሮስኮፕ ትንሽ መረጃ። ይህ የ MEMS ጋይሮስኮፕ (ሜኤምኤስ ለማይክሮኤሌክትሮሜካኒካል ስርዓቶች ነው)።
እያንዳንዱ ዓይነት የኤምኤምኤስ ጋይሮስኮፕ ማድመቂያው ከሚገኝበት የተወሰነ የመወዛወዝ አካል አለው ፣ ስለሆነም አቅጣጫው የሚለወጥበት ሊታወቅ ይችላል። ምክንያቱም በእንቅስቃሴ ሕግ ጥበቃ መሠረት የሚንቀጠቀጥ ነገር በአንድ አውሮፕላን ውስጥ መንቀጥቀጥን ለመቀጠል ስለሚወድ እና ማንኛውም የንዝረት መዛባት የአቅጣጫ ለውጥ ለማምጣት ሊያገለግል ይችላል።
ጋይሮ አንዳንድ ጥቅጥቅ ያሉ ሂሳቦችን በመጠቀም ጥቅሉን ፣ ድምፁን እና ያውን ለማስላት የእራሱ ማይክሮ መቆጣጠሪያን ይ containsል።
ነገር ግን የጂሮ ጥሬ መረጃ በጩኸት እና በመንሸራተት ይሠቃያል ፣ ስለሆነም ነገሮችን ለማቅለል እና ንፁህ ጥቅም ላይ ሊውል የሚችል ውሂብን ለመስጠት ውጫዊ ቤተመጽሐፍት ተጠቀምን።
ኒዮፒክስል በግለሰብ ደረጃ አድራሻ ሊሰጡ የሚችሉ እና በባንዶች እና ቀለበቶች ውስጥ በሰንሰለት የታሰሩ የ RGB ሊዶች ናቸው። እነሱ በ 5 ቪ ላይ ይሰራሉ እና እነሱ የራሳቸው ወረዳ አላቸው ፣ ስለዚህ የኒዮፒክሴሎችን ኃይል ማብራት እና የውሂብ መስመሩን በመጠቀም ከእነሱ ጋር መገናኘት ያስፈልግዎታል። ግንኙነቱ የሚከናወነው በአንድ የውሂብ መስመር ሰዓት እና ውሂብ (ተጨማሪ ዝርዝሮች እዚህ)። Adafruit ከኒዮፒክስል ቀለበቶች ጋር ለመገናኘት ንፁህ ቤተ -መጽሐፍት ይሰጣል።
ኮዱ
በ l oop () ተግባር ውስጥ MPU6050_6Axis_MotionApps20 ቤተ -መጽሐፍት ይባላል። ቤተ መፃህፍቱ ከጂሮስኮፕ አዲስ ውሂብ ሲኖረው ያው ፣ ቅጥነት እና ጥቅል የሚወክሉ 3 ክርክሮችን የያዘ redrawLeds (x ፣ y ፣ z) ብሎ ይጠራል።
በውስጥ redrawLeds ():
- እኛ በሁለት ዘንግ ላይ እናተኩራለን - y ፣ z
- ከ -MAX_ANGLE እስከ +MAX_ANGLE ሁለቱንም ዘንጎች እየገደብን ነው ፣ ከፍተኛውን አንግል ወደ 45 ወስነናል እና ሊለወጥ የሚችል ነው
- እኛ 360 ደረጃዎችን በ 4 ኳድራቶች እንከፋፍለን እና ለእያንዳንዳቸው የ LightLeds () ተግባሮችን እንጠራለን -
* y አሉታዊ ፣ z አዎንታዊ የመጀመሪያ ኳድራንት መሪዎችን ከ 0 እስከ 5 ይቆጣጠራል ፣ አንግል ከ 0 ወደ 89 ይሆናል
* y አሉታዊ ፣ z አሉታዊ ሁለተኛ አራተኛ መቆጣጠሪያዎች ከ 6 እስከ 12 ይመራሉ ፣ አንግል ከ 89 ወደ 0 ይሆናል
*… ወዘተ
- በ LightLeds ተግባር ውስጥ
* አርክታንጀንት በመጠቀም በሁለቱ ዘንግ ላይ የተመሠረተ አንግል እሰላለሁ (የተያያዘውን ስዕል ይመልከቱ)
* የአሩዲኖ ካርታ ተግባርን በመጠቀም ለማሳየት ያነሳሳውን አስላለሁ
* እኔ የመሪውን ድርድር ከሁለት መሪ በስተቀር ሁሉንም እቀዳለሁ ፣ ከዚህ በፊት ካሰላሁት መሪ ቦታ ጋር የሚዛመድ እና ከዚህ በፊት መሪ ቦታ (የደበዘዘ ውጤት ለማሳየት)
* የኒዮፒክስል ልኬትን ከግምት ውስጥ ለማስገባት normalizeLedPosition () የተባለ ተግባር እጠቀማለሁ። የኒዮፒክስል ቀለበት እንደወደደው ሊሽከረከር ስለሚችል እና ከጂስትሮስኮፕ ጋር መጣጣም ስለሚችል መለኪያው ጠቃሚ ነው
* እኔ የመጎተት ዘንግን እያተምኩ ነው ፣ የመራው ብርሃን እና አንግል አለው
ሂሳብ
ማዕዘኑን ለመወሰን ጥቅም ላይ ከሚውለው ቀለበት እና ከትሪግኖሜትሪክ ተግባር ጋር ስዕል ተያይዣለሁ።
የሚመከር:
የ NFC ቀለበት ቁልፍ ሳጥን 6 ደረጃዎች (ከስዕሎች ጋር)
የ NFC ቀለበት መቆለፊያ ሳጥን - ሰላም ሁላችሁም! ወደ መጀመሪያው አስተማሪዬ እንኳን በደህና መጡ! በእንግሊዝኛ ለደካማ ደረጃዬ አስቀድሜ ይቅርታ እጠይቃለሁ። በዚህ የደረጃ በደረጃ መመሪያ ቀላል እና በጣም ርካሽ የ NFC ቀለበት ቁልፍ ሣጥን እንዴት እንደሚገነቡ አስተምራችኋለሁ
የ LED ቀለበት መብራት 9 ደረጃዎች (ከስዕሎች ጋር)
የ LED ቀለበት አምፖል -እኔ በሽያጭ እና ወረዳዎችን አንድ ላይ ስይዝ በጠረጴዛዬ ላይ የተሻለ መብራት ስፈልግ ይህ ግንባታ ይመጣል። ለሌላ ግንባታ ከጥቂት ወራት በፊት የ LED መብራት ቀለበት አምጥቻለሁ (እነሱ የመላእክት አይኖች ተብለው ይጠራሉ እና በመኪና የፊት መብራቶች ላይ ያገለግላሉ)
የመቁጠር ቀለበት ሰዓት - 5 ደረጃዎች (ከስዕሎች ጋር)
የመቁጠር ቀለበት ሰዓት - ሰዓት ለመሥራት የኔኦፒክስል ቀለበት 60 ሊድ ለመግዛት አቅጄ ነበር ነገር ግን እንደ አለመታደል ሆኖ እኔ መግዛት አልቻልኩም። በመጨረሻም, እኔ አንድ Neopixel ቀለበት ገዙ 35 ሊድ &; ሰዓት ፣ ደቂቃ እና amp ሊያሳይ የሚችል የበይነመረብ ሰዓት ለመሥራት ቀለል ያለ መንገድ አመጣ። ሁለተኛ ከሱ ጋር
ቅልቅል እና ደስታ: 13 ደረጃዎች
ቅይጥ እና ደስታ - ብዙዎች ለአነስተኛ መጠጥ ቤቶች ብዙ ገንዘብ በመክፈል ደክመዋል። ከጓደኞቻቸው ጋር የራሳቸውን ኮክቴል ምሽት ማድረግ ይፈልጋሉ ፣ ግን የኮክቴሎች የመቀላቀል ችሎታ የላቸውም ወይም ምሽቱን መደሰት ይፈልጋሉ። መጠጦችን ከመቀላቀል ይልቅ
የአርዱዲኖ የገና ደስታ! 5 ደረጃዎች (ከስዕሎች ጋር)
የአርዲኖ የገና ደስታ !: የአርዲኖኖን በበዓላት ቦታዎች ላይ ለመለጠፍ ወቅቱን ይጣፍጡ ፣ እና ከገና ዛፍ የበለጠ ምን የተሻለ ቦታ ነው! በዚህ ፕሮጀክት ውስጥ የተለያዩ የገና ዘፈኖችን መዝፈን እና ከሙሴ ጋር በመተባበር ማብራት የሚችል የገና ዛፍ እንሠራለን