ዝርዝር ሁኔታ:

በአሩዲኖ እና በ ESP8266 መካከል MPU6050 ን በመጠቀም Servo ን መቆጣጠር በ HC-12: 6 ደረጃዎች
በአሩዲኖ እና በ ESP8266 መካከል MPU6050 ን በመጠቀም Servo ን መቆጣጠር በ HC-12: 6 ደረጃዎች

ቪዲዮ: በአሩዲኖ እና በ ESP8266 መካከል MPU6050 ን በመጠቀም Servo ን መቆጣጠር በ HC-12: 6 ደረጃዎች

ቪዲዮ: በአሩዲኖ እና በ ESP8266 መካከል MPU6050 ን በመጠቀም Servo ን መቆጣጠር በ HC-12: 6 ደረጃዎች
ቪዲዮ: Smart Ramps - Servo 2024, ሀምሌ
Anonim
በአሩዲኖ እና በ ESP8266 መካከል ከ HC-12 ጋር MPU6050 ን በመጠቀም Servo ን መቆጣጠር
በአሩዲኖ እና በ ESP8266 መካከል ከ HC-12 ጋር MPU6050 ን በመጠቀም Servo ን መቆጣጠር

በዚህ ፕሮጀክት ውስጥ በአርዱዲኖ 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 - የቪዲዮ ማሳያ

ቪዲዮውን ነገ አያይዘዋለሁ። ማሳወቂያ ለማግኘት ተከተሉኝ።

ሁላችሁንም እናመሰግናለን!

የሚመከር: