ዝርዝር ሁኔታ:
ቪዲዮ: በአሩዲኖ እና በ ESP8266 መካከል MPU6050 ን በመጠቀም Servo ን መቆጣጠር በ HC-12: 6 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:31
በዚህ ፕሮጀክት ውስጥ በአርዱዲኖ UNO እና በ ESP8266 NodeMCU መካከል ለመግባባት mpu6050 እና HC-12 ን በመጠቀም የ servo ሞተር ቦታን እንቆጣጠራለን።
ደረጃ 1 በዚህ ፕሮጀክት ላይ
በኤችሲ -12 አርኤፍ-ሞዱል ላይ የተመሠረተ ሌላ IoT ፕሮጀክት ነው። እዚህ ፣ ከአሩዱኖ ኢሙሙ (mpu6050) መረጃ ሰርቪ ሞተርን (ከኖደምኩ ጋር የተገናኘ) ለመቆጣጠር ያገለግላል። እዚህ ፣ የውሂብ ምስላዊነት እንዲሁ በ mpu6050 የዝውውር መረጃ (በ x-axis ዙሪያ መሽከርከር) በአቀነባባሪ ንድፍ (በኋላ ላይ ተብራርቷል) በሚታይበት በአርዲኖ ጎን ይከናወናል። በመሠረቱ ይህ ፕሮጀክት በአርዱዲኖ እና በ ESP8266 nodemcu የ Imu እና Servo መቆጣጠሪያ የተለያዩ ገጽታዎችን ለማስታወስ ትንሽ ይሞቃል።
ዓላማ
የዚህ በጣም ግልፅ ዓላማ ፣ እኛ የ IMU ን የመለኪያ እሴት በመጠቀም የ Servo ሞተር ቦታን እንቆጣጠራለን። እና ሁሉም በአንድ ላይ ይህ ቅጥነት እና የተመሳሰለ የሞተር አቀማመጥ ከሂደት ጋር በምስል ይታያል።
ደረጃ 2 ሃርድዌር ያስፈልጋል
NodeMCU ESP8266 12E Wifi ሞዱል
ብረታ የሌለው የዳቦ ሰሌዳ
ዝላይ ገመድ
MPU6050 accelo+gyro
HC-12 RF ሞጁሎች (ጥንድ)
SG90 Servo ሞተር
ደረጃ 3 የወረዳ እና ግንኙነቶች
ግንኙነቶች በቀጥታ ወደ ፊት ናቸው። በእርስዎ Nodemcu 3.3V አማካኝነት ሰርቪሱን ማብራት ይችላሉ። ኖምኩዎ በዚያ ፒን ላይ ያን ያህል voltage ልቴጅ ካለው እንዲሁም servo ን ለማብራት ቪን መጠቀም ይችላሉ። ግን አብዛኛዎቹ የሎሊን ሰሌዳዎች በቪን 5V የላቸውም (በአምራቹ ላይ የተመሠረተ)።
እነዚህ የወረዳ ሥዕሎች EasyADA ን በመጠቀም የተሰሩ ናቸው።
ደረጃ 4: መስራት
አርዱዲኖ ንድፍ እንደጀመረ ፣ ከ 0 እስከ 180 ዲግሪ Servo አቀማመጥ ባለው ካርታ ወደሚገኘው የኖደምኩ hc12 ተቀባዩ (ከ -45 እስከ 45 የሚደርስ) የመጫኛ አንግል ይልካል። ያንን በቀላሉ ወደ ሰርቪው አቀማመጥ ካርታ ማዘጋጀት እንድንችል እዚህ ከ -45 እስከ +45 ዲግሪ ያለውን የጠርዝ አንግል ተጠቅመናል።
አሁን ፣ ለምን በቀላሉ የካርታውን ዘዴ እንደሚከተለው መጠቀም እንደምንችል እያሰቡ ነው--
int pos = ካርታ (ቫል ፣ -45 ፣ 45 ፣ 0 ፣ 180);
በ hc12 አስተላላፊ የተላከው አሉታዊ አንግል በሚከተለው ይቀበላል።
1 ኛ አጋማሽ: (ቲ) 0 እስከ 45 => 0 እስከ 45 (R)
2 ኛ አጋማሽ: (ቲ) -45 እስከ -1 => ከ 255 እስከ 210 (አር)
ስለዚህ እንደ 0 እስከ 180 ድረስ ካርታ ማድረግ አለብዎት
ከሆነ (val> = 0 && val <= 45) pos = (val*2) +90; ሌላ pos = (val-210)*2;
በአንዳንድ አግባብነት በሌለው ስህተት ምክንያት የካርታውን ዘዴ እቀራለሁ። ያንን መሞከር እና ከእርስዎ ጋር እንደሚሰራ አስተያየት መስጠት ይችላሉ
ከሆነ (val> = 0 && val <= 45) pos = ካርታ (ቫል ፣ 0 ፣ 45 ፣ 90 ፣ 180); ሌላ ፖዝ = ካርታ (ቫል ፣ 255 ፣ 210 ፣ 0 ፣ 90); // 4 ኛ ክርክር 2 ሊሆን ይችላል (ማረጋገጥ ይችላሉ)
MPU6050 ፒች አንግል ስሌት
እኔ ከ IMU ጥሬ መረጃን በማውጣት ላይ የተመሠረተ የ MPU6050_tockn ቤተ -መጽሐፍትን እጠቀማለሁ።
int pitchAngle = mpu6050.getAngleX ()
ይህ ስለ x- ዘንግ የማሽከርከር አንግል ይሰጠናል። በስዕሉ ላይ እንዳየኸው ፣ ኢምባዬ በአቀባዊ የዳቦ ሰሌዳው ላይ ተቀመጠ ስለሆነም በድምፅ እና በጥቅል ግራ አትጋቡ። በእውነቱ ሁል ጊዜ ዘንግ በተነጣጠለው ሰሌዳ ላይ ታትሞ ማየት አለብዎት።
በዚህ ቤተ -መጽሐፍት በኩል ፣ ለተለየ አሠራር የተወሰኑ መዝገቦችን በማንበብ ስለ ውስጣዊ ኤሌክትሮኒክስ መጨነቅ አያስፈልግዎትም። እርስዎ ሥራውን ብቻ ይጥቀሱ እና ጨርሰዋል!
Btw አንግልውን በራስዎ ለማስላት ከፈለጉ። እንደሚከተለው በቀላሉ ማድረግ ይችላሉ-
#ያካትቱ
const int MPU6050_addr = 0x68; int16_t AcX ፣ AcY ፣ AcZ ፣ Temp ፣ GyroX ፣ GyroY ፣ GyroZ; ባዶነት ማዋቀር () {Wire.begin (); Wire.begin ማስተላለፊያ (MPU6050_addr); Wire.write (0x6B); Wire.write (0); Wire.end ማስተላለፍ (እውነት); Serial.begin (9600); } ባዶነት loop () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.end ማስተላለፍ (ሐሰት); Wire.requestFrom (MPU6050_addr ፣ 14 ፣ እውነት); AcX = Wire.read () << 8 | Wire.read (); AcY = Wire.read () << 8 | Wire.read (); AcZ = Wire.read () << 8 | Wire.read (); Temp = Wire.read () << 8 | Wire.read (); GyroX = Wire.read () << 8 | Wire.read (); GyroY = Wire.read () << 8 | Wire.read (); GyroZ = Wire.read () << 8 | Wire.read ();
int xAng = ካርታ (AcX ፣ minVal ፣ maxVal ፣ -90 ፣ 90); int yAng = ካርታ (AcY ፣ minVal ፣ maxVal ፣ -90 ፣ 90); int zAng = ካርታ (AcZ ፣ minVal ፣ maxVal ፣ -90 ፣ 90); x = RAD_TO_DEG * (atan2 (-yAng, -zAng)+PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng)+PI); z = RAD_TO_DEG * (atan2 (-yAng, -xAng)+PI); Serial.print ("AngleX ="); // Pitch Serial.println (x); Serial.print ("AngleY ="); // ጥቅል Serial.println (y); Serial.print ("AngleZ ="); // ያው Serial.println (z); }
ግን ፣ አንግል ለማግኘት ይህንን ብዙ ኮድ መጻፉ አስፈላጊ አይደለም። ከትዕይንቱ በስተጀርባ ያሉትን እውነታዎች ማወቅ አለብዎት ግን የሌሎች ሰዎችን ቤተ -መጽሐፍት መጠቀም በብዙ ፕሮጄክቶች ውስጥ በጣም ውጤታማ ነው። ከሚከተለው አገናኝ የበለጠ የተጣራ ውሂብ ለማግኘት ስለዚህ ኢምዩ እና ሌሎች ማፅደቆች ማንበብ ይችላሉ- Explore-mpu6050።
በማስተላለፊያው መጨረሻ ላይ የእኔ አርዱዲኖ ኮድ በ MPU6050_tockn ቤተ -መጽሐፍት እገዛ 30 መስመሮች ብቻ አሉት ስለዚህ በኢምዩ ተግባር ላይ አንዳንድ ዋና ለውጦች እስካልፈለጉ ድረስ ቤተመጽሐፍት መጠቀም ጥሩ ነው። በ I2Cdev የተሰየመ ቤተ -መጽሐፍት በጄፍ ሮውበርግ የ IMU ዲ ኤም ፒ (ዲጂታል እንቅስቃሴ አንጎለ ኮምፒውተር) በመጠቀም አንዳንድ የተጣራ ውሂብ ከፈለጉ በጣም ይረዳል።
ከሂደት ጋር ውህደት
እዚህ ማቀነባበር ከ MPU6050 በሚመጣው ጥሬ መረጃ እንደተሰላው ስለ አይኤምዩ የ x ዘንግ የማሽከርከር መረጃን ለማየት ጥቅም ላይ ይውላል። መጪውን ጥሬ መረጃ በ SerialEvent ውስጥ በሚከተለው መንገድ እንቀበላለን።
ባዶ serialEvent (ተከታታይ myPort) {
inString = myPort.readString (); ይሞክሩት {// ውሂቡን ይገምግሙ // println (inString); ሕብረቁምፊ dataStrings = ተከፋፈለ (inString ፣ ':') ፤ ከሆነ (dataStrings.length == 2) {ከሆነ (dataStrings [0].equals ("RAW")) {ለ (int i = 0; i <dataStrings.length - 1; i ++) {ጥሬ = ተንሳፋፊ (dataStrings [i+1]); }} ሌላ {println (inString) ፤ }}} ይያዙ (ለየት ያለ ሠ) {println («የተያዘ ልዩ»); }}
በዚህ ደረጃ በተያያዘው ምስል ውስጥ እዚህ ምስላዊነትን ማየት ይችላሉ። በ nodemcu መጨረሻ ላይ የተቀበለው የአቀማመጥ መረጃ እንዲሁ በምስሉ ላይ እንደሚታየው በተከታታይ ማሳያ ላይ ይታያል።
ደረጃ 5 ፦ ኮድ
የ github ማከማቻን አያይዣለሁ። በፕሮጀክቶችዎ ውስጥ እንዲጠቀሙበት ክሎኒንግ እና ሹካ ማድረግ ይችላሉ።
የእኔ_ኮድ
ሬፖው ለማስተላለፊያው (አርዱዲኖ+አይኤምዩ) እና ተቀባዩ (ኖደምኩ+ሰርቪ) 2 አርዱዲኖ ንድፍን ያካትታል።
እና አንድ የሂደት ንድፍ። ይህ በፕሮጀክትዎ ውስጥ የሚረዳ ከሆነ ሪፖውን ኮከብ ያድርጉ።
በዚህ ትምህርት ውስጥ ፣
R- ተቀባይ እና ቲ- አስተላላፊ
ደረጃ 6 - የቪዲዮ ማሳያ
ቪዲዮውን ነገ አያይዘዋለሁ። ማሳወቂያ ለማግኘት ተከተሉኝ።
ሁላችሁንም እናመሰግናለን!
የሚመከር:
የቴሌግራም መተግበሪያን በመጠቀም ESP8266 ን መቆጣጠር 7 ደረጃዎች
የቴሌግራም መተግበሪያን በመጠቀም ESP8266 ን መቆጣጠር - ሄይ ፣ ምን አለ ፣ ጓዶች! Akarsh እዚህ ከ CETech። በመልዕክት መላላኪያ መተግበሪያ ላይ ከመሳሪያዎችዎ ጋር ስለመወያየት አስበው ያውቃሉ? እንግዳ ይመስላል ፣ ትክክል። ግን ዛሬ እኛ ከዚህ ጋር የሚመሳሰል ነገር እናደርጋለን። አይጨነቁ ተንቀሳቃሽ ስልኮችን መግዛት አያስፈልግዎትም
ESP8266 የድር አገልጋይን በመጠቀም ባለ 7-ክፍል LED ማሳያ መቆጣጠር 8 ደረጃዎች (ከስዕሎች ጋር)
የ ESP8266 የድር አገልጋይን በመጠቀም ባለ 7-ክፍል LED ማሳያ መቆጣጠር የእኔ ፕሮጀክት የኤችቲኤምኤል ቅጽን በመጠቀም በኤችቲቲፒ አገልጋዩ በኩል ባለ 7 ክፍል ማሳያ የሚቆጣጠር Nodemcu ESP8266 አለው።
በአሩዲኖ መካከል NRF24L01 ሽቦ አልባ ማስተላለፍ 10 ደረጃዎች
አርዱዲኖ መካከል NRF24L01 ሽቦ አልባ ማስተላለፍ NRF24L01 ከኖርዲክ ሴሚኮንዳክተሮች ዝቅተኛ ኃይል 2.4 ጊኸ ሽቦ አልባ የ RF ሞዱል ነው። ከ 250 ኪባ / ሰ እስከ 2 ሜጋ ባይት ባውድ ተመኖች ሊሠራ ይችላል። በዝቅተኛ የባውድ ፍጥነት ክፍት ቦታ ላይ የሚንቀሳቀስ ከሆነ እስከ 300 ጫማ ሊደርስ ይችላል። ስለዚህ በአጭሩ ጥቅም ላይ ውሏል
የመዳረሻ ነጥብ - በሁለት ESP8266 MCUs መካከል የጣቢያ ግንኙነት -3 ደረጃዎች
የመዳረሻ ነጥብ - በሁለት ESP8266 MCUs መካከል የጣቢያ ግንኙነት -ሰላም ሠሪዎች! በቀደመው ትምህርቴ ውስጥ በሁለት የ ESP8266 MCUs መካከል በቤት WiFi ራውተር በኩል የ WiFi ግንኙነት አደረግሁ። ከአስተያየቶቹ እንዳየሁት ከ ራውተር ክልል ርቀው ESP8266 MCU ን ለመጠቀም የሚፈልጉ ሰሪዎች አሉ። ስለዚህ አንድ አሞሌ እዚህ አለ
በአሩዲኖ የተመሠረተ MIDI አማካኝነት ኩባን መቆጣጠር 4 ደረጃዎች
አርዱዲኖን መሠረት ባለው ሚዲአይ አማካኝነት ኩባን መቆጣጠር - አንድ ጓደኛዬ ወደ ኮምፒውተሩ ሄደው በቁልፍ ሰሌዳው ላይ መተየብ ሳያስፈልጋቸው ቆም ብለው ቀረጻዎችን በርቀት መጀመር እንዲችሉ የኦዲዮ መቅረጫ ሶፍትዌሩን ኩቤስን ለመቆጣጠር ፈለገ። ይህንን በሌላ መንገድ ማድረግ ይችሉ ይሆናል