ዝርዝር ሁኔታ:

ዋላስ - DIY ራስ ገዝ ሮቦት - ክፍል 5 - IMU ን ያክሉ - 9 ደረጃዎች
ዋላስ - DIY ራስ ገዝ ሮቦት - ክፍል 5 - IMU ን ያክሉ - 9 ደረጃዎች

ቪዲዮ: ዋላስ - DIY ራስ ገዝ ሮቦት - ክፍል 5 - IMU ን ያክሉ - 9 ደረጃዎች

ቪዲዮ: ዋላስ - DIY ራስ ገዝ ሮቦት - ክፍል 5 - IMU ን ያክሉ - 9 ደረጃዎች
ቪዲዮ: לקחתי את האנשים שפרצו דרך לשיחה על גזענות #קצתאחר 2024, ታህሳስ
Anonim
Image
Image

ከዋልስ ጋር አብረን እንቀጥላለን። ዋላስ የሚለው ስም የመጣው ከ “ዎል-ኢ” ድብልቅ ነው ፣ እና ከቀደመው ፕሮጀክት (የድምፅ ማወቂያ) ፣ እና “እስፔክ” መገልገያውን በመጠቀም ፣ ትንሽ ብሪታንያ ይመስላል። እና እንደ ቫሌት ወይም ጠጅ ቤት። እና ያ የመጨረሻው ግብ ነው -ይህ ፕሮጀክት ወደ ጠቃሚ ነገር እንዲለወጥ። ስለዚህ “ዋላስ”።

ዋላስ ዙሪያውን መንቀሳቀስ ይችላል ፣ የ IR ርቀት ዳሳሾችን በመጠቀም መሰናክሎችን ማስወገድ ይችላል (በቅርቡ ፣ በሆነ መንገድ ጥብስ (?) (ዕድል ስገኝ ያንን መመርመር አለበት) ፣ እንዲሁም አንዳንድ የአኮስቲክ ርቀት ዳሳሾች አሉት (ከእነዚህ ውስጥ ሦስቱ በተመሳሳይ መጥፎ ሆኑ) ጊዜ ፣ ከ MCP23017 ማስፋፊያ ጋር) ፣ እና በመጨረሻም ፣ የሆነ ነገር ውስጥ ሲወድቅ ለማወቅ በሞተር-የአሁኑ ውስጥ ለውጦችን መለየት ይችላል።

ዋልስ ከአነፍናፊዎቹ በተጨማሪ የ 100 ን እንቅስቃሴዎችን “ያስታውሳል” እና የእንቅስቃሴውን ታሪክ በመጠቀም አንዳንድ መሠረታዊ ትንታኔዎች አሉት።

ለዋላስ እስካሁን ያለው ግብ ወደ ፊት መሄድን ለመቀጠል መሞከር ብቻ ነው ፣ እና በአንዳንድ ተደጋጋሚ ዘይቤ (እንደ ጥግ ላይ) ተጣብቆ እና በእውነቱ ወደፊት የማይራመድ መሆኑን ማወቅ ነው።

ለእንቅስቃሴ እና ለአሰሳ በርካታ ድግግሞሾችን አልፌያለሁ ፣ እና ወጥነት ያለው ራስ ምታት በሚሽከረከርበት ጊዜ ነበር።

ዋላስ ክትትል የሚደረግበት ሮቦት ስለሆነ ፣ እና ነገሮችን በሶፍትዌሩ ውስጥ (ለቀጣይ) ቀለል ለማድረግ ፈለግሁ ፣ እሱን ለማዞር እኔ እሱ ምሰሶ/በቦታው እንዲሽከረከር አድርጌዋለሁ። ስለዚህ ለሞተር ሞተሮች እኩል ግን ተቃራኒ የኃይል / የግዴታ ዑደት ይተግብሩ።

ያጋጠመው ችግር በተወካዩ 390 ሮቦት መድረክ ንድፍ ምክንያት ነው። የትራክ ቀበቶዎች በጎኖቹ ላይ የመቧጨር አዝማሚያ አላቸው። እና ይባስ ብሎ አንዱ ወገን ከሌላው የበለጠ ያደርገዋል።

በመሬቱ ወለል ላይ እና ቀጥ ብሎ ሲሄድ ፣ ችግር አልነበረም። ምንጣፍ ላይ ይታያል። ትራኮች አስጨናቂ ከሆኑ በኋላ ዋልስን ከምንጣፍ ምንጣፍ ለማራቅ መረጥኩ (እነሱ በጣም ቀላል ቆሻሻን ያነሳሉ)።

እውነተኛው ችግር በወለል ላይ ሲሰነጠቅ ነው።

ሶፍትዌሩ ካለኝ የከፍተኛ ደረጃ የግዴታ ዑደትን ተግባራዊ ካደረግኩ ከዚያ በበለጠ ወይም ባነሰ በተከታታይ ይለወጣል። ሆኖም ፣ በዝቅተኛ የሥራ ዑደት ወቅት ፣ ምናልባት ሊዞር ወይም ላይዞር ይችላል። ወይም ትንሽ ሊዞር እና ከዚያ ፍጥነቱን ሊቀንስ ይችላል። የማገጣጠሚያው እርምጃ በሶፍትዌሩ በኩል ከቁጥጥር ውጭ የሆነ ይመስላል ፣ ወይም በተሻለ ሁኔታ በጣም ከባድ ነው።

ችግሩ በአሰሳ ወቅት ይታያል እና ከእንቅፋቶች ዙሪያ ወይም ይርቃል። እሱ በጣም በዱር ሊወዛወዝ ይችላል ፣ ወይም በእውነቱ እንኳን ሳይንቀሳቀስ በጣም ደቂቃ ፈረቃዎችን ለማድረግ በመሞከር ሊጣበቅ ይችላል።

እና ስለዚህ ከላይ ያለው ማብራሪያ ይህንን አስተማሪ አነሳስቶታል።

መጀመሪያ ፣ እኔ ሀ) የተወሳሰበ ፣ ለ) ጫጫታ ፣ ሐ) ስህተቶች በጊዜ ሂደት ሊተዋወቁ ስለሚችሉ ፣ የእንቅስቃሴ ዳሳሽ ክፍል (አይኤምዩ) ለማስተዋወቅ ወይም ለማዘግየት ፈልጌ ነበር ፣ ወዘተ ሀሳቤ ነበረኝ ወደ በረራ ጊዜ ወደ አይር ሌዘር ዳሳሾች ወደ ፊት በመዝለል እኛ በጣም ጥሩ ማድረግ እንደምንችል ነው። እናም እኛ ማድረግ እንችላለን - ሌዘርን በመጠቀም ሮቦቱ መዞሩን ወይም አለመሆኑን ፣ በርቀት ለውጦቹን በመከታተል።

እንደ እውነቱ ከሆነ ፣ እኛ አሁን (በድምፅ አነፍናፊ) ዳሳሾች (ያንን) ማድረግ እንችላለን።

ሆኖም ፣ ያ ሁሉ አንድ ቀላል ጥያቄን ለመመለስ በጣም ቀጥተኛ ያልሆነ ፣ የተወሳሰበ መንገድ ነው - “አሽከረከርን ወይስ አልለወጥንም?”

የ ToF ሌዘር ዳሳሾችን ለመጠቀም መዝለል ወደ ቀጣዩ የሶፍትዌር ደረጃ የሚወስደኝ ይመስለኝ ነበር። ማለትም SLAM (በአንድ ጊዜ አካባቢያዊነት እና ካርታ)። ገና ወደዚያ ለመሄድ ዝግጁ አልነበርኩም።

የመጀመሪያዎቹ (የታችኛው) ንብርብሮች ቀለል ያሉ ሲሆኑ የኋለኛው (የላይኛው) ንብርብሮች የበለጠ ረቂቅ እና የበለጠ አስቸጋሪ ጉዳዮችን በመፍታት የሮቦት ፕሮጀክት በንብርብሮች ውስጥ ማድረጉ ጥሩ ነገር ነው።

ንብርብሮች እንደዚህ ያለ ነገር ሊታሰብባቸው ይችላል-

  1. ሮቦት አካላዊ ክፈፍ / ሜካኒካዊ መዋቅራዊ መሠረት
  2. የማሽከርከሪያ ድራይቭ ስርዓት (Raspberry ፣ Roboclaw ፣ Motors ፣ ኬብሌ ፣ ወዘተ ፣ መሰረታዊ ሶፍትዌር ፣ በቁልፍ ሰሌዳ የሚነዳ)
  3. ዳሳሾችን (ባለሁለት አቅጣጫ የቮልቴጅ መቀየሪያ ፣ ወደብ ማስፋፊያ ፣ ኢ-ማቆሚያ ፣ የኃይል ማከፋፈያ ፣ ወዘተ) ለመደገፍ አስፈላጊ ወረዳ
  4. እንቅፋት-ማስወገጃ ዳሳሾች (አኮስቲክ ፣ አይአር)
  5. አስፈላጊ ፣ መሠረታዊ አቀማመጥ እና እንቅስቃሴ - ማወቂያ (የፍጥነት መለኪያ ፣ ጋይሮ ፣ ማግኔቶሜትር ፣ የሞተር ኢንኮደሮች ፣ የጎማ ኢንኮዴሮች)

የራስዎን ዝርዝር ይዘው መምጣት ይችላሉ። በዚህ ዝርዝር ውስጥ ያሉት ነጥቦች ምናልባት ምናልባት እርስዎ በቅደም ተከተል እነዚህን ብዙ ወይም ያነሰ ማድረግ አለብዎት ፣ እና ደግሞ እያንዳንዱን ወደ ጥሩ የሥራ ሁኔታ ለማምጣት በእያንዳንዱ ንብርብር ላይ የተወሰነ ጊዜ ቢያሳልፉ ፣ ነገሮች ይበልጥ የተወሳሰቡ በመሆናቸው በኋላ ሊረዳዎ ይገባል።

ከላይ ያለው ዝርዝር በሶፍትዌር ውስጥ ለእነዚህ ጽንሰ -ሀሳቦች ንብርብሮች ብዙ ወይም ያነሰ ሊሆን ይችላል።

  • SLAM (በአንድ ጊዜ አካባቢያዊነት እና ካርታ)
  • የእንቅስቃሴ ቁጥጥር እና ግንዛቤ ፣ ማሽከርከር
  • መሰረታዊ መሰናክልን ማስወገድ
  • የአነፍናፊ ውሂብን መቆጣጠር እና ማወቅ
  • አስፈላጊ እንቅስቃሴ ወደፊት ፣ ወደ ኋላ ፣ ወደ ግራ እና ወደ ቀኝ ፣ ፍጠን ፣ ቀርፋፋ ፣ አቁም

እንደሚመለከቱት ፣ ለዚህ ዝርዝር የመጀመሪያዎቹ ንጥሎች እንደ “የት ነኝ” እና “የት እሄዳለሁ” ያሉ ይበልጥ ረቂቅ ጉዳዮችን እና ጥያቄዎችን የሚመለከቱ የላይኛው ፣ በጣም የተወሳሰቡ ንብርብሮች ይሆናሉ ፣ የኋለኛው ንጥሎች ደግሞ “እንዴት ዳሳሽ ሀን ማውራት/ማዳመጥ” ወይም “ይህንን መንኮራኩር እንዴት ማንቀሳቀስ እንደሚቻል” የሚይዙ የሶፍትዌር ንብርብሮች።

አሁን እኔ አንድ ንብርብር ላይ ሲጀምሩ ያጠናቅቁት እና ከዚያ ወደ ቀጣዩ ንብርብር በጭራሽ በሚቀጥለው ንብርብር ላይ ነው እያልኩ አይደለም። የሮቦት ፕሮጀክት እንደ ዘመናዊ ፣ ተደጋጋሚ የሶፍትዌር ልማት ዘዴዎች (ቀልጣፋ ፣ SCRUM ፣ ወዘተ) ሊሆን ይችላል።

እኔ እያንዳንዳችሁ ጊዜ ውሰዱ እያልኩ ነው። በእያንዳንዳቸው ምን ያህል ማድረግ እንዳለብዎ ሚዛናዊ መሆን አለብዎት ፣ እና ጊዜውን እና ችግርን በሚጎዳ በተወሰነ ንብርብር ላይ ምን እየሞከሩ እንደሆነ ይወስኑ።

በሁለት ተፎካካሪ ሀሳቦች ወይም አቅጣጫዎች መካከል የተወሰነ “ግጭት” ወይም “ውጥረት” አለ።

አንደኛው ችግር ሀን ለመፍታት “plug-n-play” ብዬ የምጠራው ነው።

ሌላኛው DIY ነው (እራስዎ ያድርጉት)። እና ያ ለዚህ ሌላ ሀሳብ ምርጥ መለያ እንኳን ላይሆን ይችላል።

የሁሉም ምሳሌ እዚህ አለ ፣ በሁለቱ ምርጫዎች መካከል ውጥረትን ወይም ግጭትን ያያሉ ብለን ተስፋ እናደርጋለን።

ለዚህ ምሳሌ ፣ SLAM ን እናደናቅፍ ፣ መሰናክልን ማስወገድ እና አስፈላጊ መሠረታዊ እንቅስቃሴን በአንድ ጊዜ ለመፍታት እንደ አንድ ችግር እናድርገው።

  1. ወደ plug-n-play መንገድ ለመሄድ ከወሰንን ወዲያውኑ (እንደ በጀት ላይ በመመስረት) እንደ እነዚያ ከላይ የተጫኑ የማሽከርከሪያ ሌዘር ፣ ወይም የመስክ ጥልቀት ካሜራ ፣ ወይም ቶኤፍ ሌዘር ፣ እና አይሙዩ (የዚህ ርዕስ) አስተማሪ)።
  2. እኛ ፣ በሁለተኛው መንገድ ለመሄድ ከፈለግን ፣ በተቻለ መጠን ማንኛውንም መረጃ ከአንዳንድ የአኮስቲክ ዳሳሾች ወይም የ IR ዳሳሾች ፣ ወይም ምንም ዳሳሾች ከሌሉ ለማውጣት እንሞክር - እኛ የሞተር -የአሁኑን ክትትል (ጉብታ) ብቻ እንጠቀማለን።

ስለ #1 vs #2 ምን ማለት ይቻላል? አንድ ነገር #2 ን በማድረግ ብዙ ብዙ እንማራለን። አብሮ ለመስራት የአኮስቲክ ዳሳሾች ብቻ የመኖራቸው ገደቦች ፣ ስለ ብዙ ተጨማሪ ጉዳዮች እንድናስብ ያስገድደናል።

በሌላ በኩል ፣ ነገሮችን በ #2 በኩል በማድረግ ላይ በጣም የምናተኩር ከሆነ ጊዜን እያጠፋን ሊሆን ይችላል ፣ ምክንያቱም እኛ ከአኮስቲክ ዳሳሾች ከሚገባው በላይ እንጠይቃለን።

ሊታሰብበት የሚገባ አንድ ተጨማሪ ፅንሰ -ሀሳብ ወይም ሀሳብ -የሃርድዌር እና የሶፍትዌር ድብልቅ “እንዴት” ለሚሉት ጥያቄዎች በጣም ጥሩ መልስ ይሰጣል ፣ እና የትኛው የሶፍትዌር ድብልቅ (እና ሃርድዌር?) “ምን” ፣ “መቼ” ፣ “የት” የሚለውን ጥያቄ ይመልሳል።. ምክንያቱም “እንዴት” የሚለው ጥያቄ መልስ ለማግኘት በየትኛው ላይ “ምን” ፣ “መቼ” እና “የት” የሚወሰንበት ዝቅተኛ ደረጃ ጥያቄ ነው።

ለማንኛውም ፣ ከላይ የተጠቀሱት ሁሉ ሊታሰቡበት የሚገባ ነገር ብቻ ነበር።

በእኔ ሁኔታ ፣ ከብዙ ጥረት በኋላ እና ወጥ የሆነ የሚያበሳጭ የትራክ-ግጭት ጉዳይ እና ወጥ ቁጥጥር እና እንቅስቃሴን ማግኘት ካልቻልን ፣ ሌላ ነገር ለማድረግ ጊዜው አሁን ነው።

ስለዚህ ይህ Instructable - አንድ IMU.

ግቡ ኢምዩ ሮቦቱ አይነፋም ካለ ፣ የግዴታ ዑደቱን እንጨምራለን። በጣም በፍጥነት የምንገፋፋ ከሆነ ፣ የግዴታ ዑደቱን እንቀንሳለን።

ደረጃ 1: የ IMU ዳሳሽ

የ IMU ዳሳሽ
የ IMU ዳሳሽ
የ IMU ዳሳሽ
የ IMU ዳሳሽ

እና ስለዚህ ወደ ዋልስ የሚጨምረው ቀጣዩ ዳሳሳችን ኢምዩ ነው። ከተወሰነ ምርምር በኋላ ፣ በ MPU6050 ላይ እረጋጋ ነበር። ግን በዚህ ጊዜ ፣ MPU9050 (እና እንዲያውም በቅርቡ ፣ MPU9250) የበለጠ የተሻለ ሀሳብ ይመስል ነበር።

የእኔ መነሻ ምንጭ አማዞን (በአሜሪካ) ነበር። ስለዚህ ሁለቱንም አዘዝኩ።

በእውነቱ ያገኘሁት (በዚህ ላይ ምንም ቁጥጥር ያለ አይመስልም ፣ ስለ አማዞን የማልወደው ይህ ነው) ሁለት MPU92/65 ነበሩ። ስለ ስያሜው ትንሽ አስባለሁ። ምስሎቹን ይመልከቱ; ያ “ቤተሰብ” መሰየሚያ ይመስላል። ያም ሆነ ይህ እኔ ያጣበቅኩት ያ ነው።

እሱን ማከል በጣም ቀላል ነው -ትራኮችን በማገናኘት የፕሮቶ ቦርድ ያግኙ ፣ ዳሳሹን ወደ ሰሌዳ ይሸጡ ፣ ባለ 10 -ሚስማር የፍጥነት ተርሚናል ብሎክን ይጨምሩ (እኔ ከፖሎሉ የእኔን አግኝቻለሁ)።

ማንኛውንም ጣልቃ ገብነት ለመቀነስ ፣ እነዚህን ዳሳሾች ከሌላ ነገር ለማራቅ ሞከርኩ።

ያ ማለት ደግሞ አንዳንድ የናይለን ብሎኖች/ለውዝ መጠቀም ማለት ነው።

እኔ የ I2C ፕሮቶኮልን እጠቀማለሁ። ጠቅላላ የሽቦ ርዝመት በጣም መጥፎ አይሆንም ብለን ተስፋ እናደርጋለን።

ስለ መሰረታዊ ግንኙነቶች እና የ voltage ልቴጅ ደረጃዎች ፣ ወዘተ ብዙ መረጃ አለ ፣ ስለዚህ እዚህ አልደግመውም።

ደረጃ 2 ነገሮች ሁል ጊዜ ንጹህ አይደሉም ፣ ቀላል ናቸው

በዚህ ጽሑፍ ፣ ለዚህ ልዩ MPU-92/65 ብዙ በመስመር ላይ ያለ አይመስልም። ልክ እንደ አብዛኛዎቹ ዳሳሾች ሁሉ ፣ አርዱዲኖን በመጠቀም ምሳሌዎች ይመስላሉ።

ነገሮች ሁል ጊዜ ወዲያውኑ ስለማይሠሩ ፣ እነዚህን ንፁህ ያልሆኑ ሂደቶችን በማቅረብ ትንሽ ለየት ለማድረግ እሞክራለሁ።

እነዚህ አስተማሪዎች ከ ‹ብሎግ› ጋር ቀጥታ ከሆኑት A-B-C ፣ 1-2-3 ‹እንደዚህ ያደርጉታል› ብለው ከብሎግ የበለጠ ይመስላሉ ብዬ እገምታለሁ።

ደረጃ 3 የመጀመሪያ ሙከራ

የመጀመሪያ ሙከራ
የመጀመሪያ ሙከራ
የመጀመሪያ ሙከራ
የመጀመሪያ ሙከራ

በቀድሞው ደረጃ ላይ ካሉ ምስሎች ፣ ወደ ዳሳሾች የሚሄዱ ቀይ እና ጥቁር ሽቦዎች በእርግጥ ቪሲሲ (5 ቪ) እና ጂኤንዲ ናቸው። አረንጓዴ እና ቢጫ ሽቦዎች የ I2C ግንኙነቶች ናቸው።

ሌሎች የ I2C ፕሮጄክቶችን ከሠሩ ፣ ወይም ከእነዚህ ተከታታዮች ጋር እየተከተሉ ከሆነ ፣ ስለ ‹i2cdetect› አስቀድመው ያውቁታል ፣ እና Raspberry አዲሱን ዳሳሽ ማየት ይችል እንደሆነ ለማወቅ የመጀመሪያው እርምጃ ነው።

በዚህ ደረጃ ከምስሎቹ እንደሚመለከቱት ፣ የመጀመሪያ ሙከራችን አልተሳካም። አይኤምዩ አይታይም (የመሣሪያ መታወቂያ 0x68 መሆን አለበት)።

ሆኖም ፣ የምስራቹ ዜና I2C አውቶቡስ እየሰራ መሆኑ ነው። እኛ አንድ መሣሪያ 0x20 እናያለን እና እሱ የ MCP23017 ወደብ ማስፋፊያ (በአሁኑ ጊዜ ለ HCSR04 አኮስቲክ ዳሳሾች ኃላፊነት አለበት)።

በምስሉ ውስጥ ማየት ቀላል አይደለም ፣ ግን እኔ ተመሳሳይ ቀለም ያለው አረንጓዴ እና ቢጫ ሽቦዎችን ከ IMU ወደ MCP23017 አገናኘሁ (በምስሉ ታችኛው ግራ ይመልከቱ)

አንዳንድ መላ መፈለግ አለብን።

ደረጃ 4 - መላ መፈለግ

Image
Image
ችግርመፍቻ
ችግርመፍቻ
ችግርመፍቻ
ችግርመፍቻ

በቮልቲሜትር (የከፍተኛ ድምጽ ቃና ያለው) ቀጣይነት ያለውን ቅንብር በመጠቀም ፣ ቪሲሲ (5 ቮ) ፣ ጂኤንዲ ፣ ኤስዲኤ እና ኤስ.ሲ.ኤል ግንኙነቶችን ሞከርኩ። እነዚያ ጥሩ ነበሩ።

ቀጣዩ ሙከራ MCP23017 ን ከ I2C አውቶቡስ ማለያየት ነበር ፣ በአውቶቡሱ ላይ MPU-92/65 ን ብቻ ይቀራል። ያ ፍሬ አልባ ሆኖ ተገኝቷል - “i2cdetect” ከዚያ ምንም መሣሪያዎችን አላሳየም።

ስለዚህ ፣ ቀጥሎ ፣ አነፍናፊውን ከቶቴም ምሰሶ አውጥቼ በቀጥታ ወደ 5 ቮ-ወደ -3 ቪ ባለሁለት አውቶቡስ እንደገና አስተካክዬዋለሁ። ማለትም በቀጥታ ወደ Raspberry። (አጭር ሽቦዎች?)

እና voila. በዚህ ጊዜ ስኬት አለ። 0x68 “i2cdetect” ን በመጠቀም ሲታይ እናያለን።

ግን በዚህ ጊዜ ለምን እንደሰራ ገና አናውቅም። የሽቦዎቹ ርዝመት ሊሆን ይችላል? የቀድሞው ቦታ?

ማሳሰቢያ - አዶ መሬት ላይ ይሁን አልሆነ ምንም ለውጥ አላመጣም። በቦርዱ ላይ መጎተት እና መጎተት መከላከያዎች ሊኖሩ ይችላሉ። ለ FSYNC ተመሳሳይ ሊሆን ይችላል።

በመቀጠል ፣ MCP23017 ን እንደገና አገናኘሁት። ስለዚህ አሁን በ I2C አውቶቡስ ላይ ሁለት መሣሪያዎች አሉን። (ምስሉን ይመልከቱ)። ስኬቶች ፣ አሁን ሁለቱንም 0x20 እና 0x68 ከ i2cdetect ጋር እናያለን።

ቪዲዮዎቹ በመላ መፈለጊያ ወቅት ከተከሰተው ትንሽ ወደ ውስጥ ይገባሉ።

ደረጃ 5 የአነፍናፊውን መረጃ ማንበብ

Image
Image
የአነፍናፊውን ውሂብ ማንበብ
የአነፍናፊውን ውሂብ ማንበብ
የአነፍናፊውን ውሂብ ማንበብ
የአነፍናፊውን ውሂብ ማንበብ

የተለያዩ አቀራረቦች

ጠቃሚ መረጃን ከአነፍናፊው ለማግኘት ብዙ አቀራረቦችን ለመውሰድ ወሰንኩ። እዚህ እነሱ በየትኛውም ቅደም ተከተል አይደሉም

  1. አንዳንድ መሠረታዊ ፕሮግራሞችን ይሞክሩ
  2. በመመዝገቢያዎች ላይ አንዳንድ የመስመር ላይ ሰነዶችን ይመልከቱ
  3. የሌሎችን ምሳሌዎች እና / ወይም ኮድ ይመልከቱ

እነዚህ አቀራረቦች ለምን? ለምን አንዳንድ ነባር ቤተ -መጽሐፍት ወይም ኮድ አይፈልጉም?

አንዳንድ ሀሳቦችን በመሞከር እና በመሞከር ፣ ስለእዚህ ልዩ ዳሳሽ ብቻ የተወሰነ ዕውቀትን በተሻለ ሁኔታ መምጠጥ እንችላለን ፣ ግን አዲስ ቴክኒኮችን ፣ ክህሎትን እና አዲስ ነገርን ስለማስተናገድ ፣ እና ብዙ ሰነዶች ላይኖራቸው የሚችል ነገርን ማግኘት እንችላለን ፤ ብዙ የማይታወቁ ነገሮች ሊኖሩት ይችላል።

እንዲሁም ፣ አንዳንድ የራሳችንን ሀሳቦች ተጫውተን ከሞከርን እና የተወሰነ ግንዛቤ ካገኘን በኋላ ፣ የሌላ ሰው ኮድ ወይም ቤተመፃህፍት ለመገምገም በተሻለ ሁኔታ ላይ ነን።

ለምሳሌ ፣ በጊቱብ ውስጥ ለ MPU9250 አንዳንድ የ C ++ ኮድ ከተመለከትኩ በኋላ ፣ እኔ እስካሁን የማልፈልገውን ማቋረጫዎችን እንድጠቀም እንደሚያስገድደኝ ተገነዘብኩ።

እንዲሁም ፣ እንደ መለካት ካሉ ተጨማሪ ነገሮች ጋር ይመጣል። እንደገና ፣ ገና የማልፈልገው ነገር።

ምናልባት “ሮቦቱ አዎ ወይም አይደለም የሚሽከረከር ሮቦት ነው” የሚለውን ቀላል ጥያቄ ለመመለስ እኔ ማድረግ ያለብኝ ምናልባት አንዳንድ መዝገቦችን በማንበብ ብቻ በቀላሉ ሊመልስ ይችላል።

ይመዘግባል

በዚህ ጽሑፍ ላይ ፣ በዚህ ዳሳሽ ላይ ብዙ የሚገኝ አይመስልም። በእውነቱ ፣ ከዚህ አስተማሪ ጋር የሚመጡትን ምስሎች ከተመለከቱ ፣ እና በእውነተኛው ቺፕስ ላይ የተቀረጹ ጽሑፎችን በቅርበት ከተመለከቱ ፣ ይህ ተንኳኳ አለመሆኑ ያስገርመኛል። እኔ ያየሁትን ከማንኛውም ነገር ከኢንቬንሴ ጋር አያያዙም። ምንም ይሁን ምን ፣ እኔ ላገኘኋቸው ሞዴሎች የመመዝገቢያ-መረጃውን መረጥኩ-MPU-6050 ፣ እና MPU-9250።

በሁለቱም ሁኔታዎች የሚከተለው ለሁለቱም ተመሳሳይ ነው። እና ለጀማሪዎች ፣ ለዚህ MPU-92/65 እንዲሁ እንዲሁ ይሆናል ብለን እናስባለን።

ከ 59 እስከ 64 - የፍጥነት መለኪያ መለኪያዎች

65 ፣ 66 - የሙቀት መለኪያዎች ከ 67 እስከ 72 - ጋይሮስኮፕ መለኪያዎች ከ 73 እስከ 96 - የውጭ ዳሳሽ ውሂብ

የማስታወሻ ንጥል MPU-6050 ማግኔቶሜትር ያለው አይመስልም ፣ MPU-9250 (እና እኛ ይህንን እንገምታለን) አንድ አለው።

አንዳንድ አስደሳች ፣ ከመመዝገቢያ ሰነዱ የተሰበሰበ ጠቃሚ መረጃ።

የማግኔትቶሜትር መረጃ ፦

የማግኔትቶሜትር መታወቂያ 0x48 ከ 00 እስከ 09 00 ሰዓት ድረስ ይመዘግባል WIA 0 1 0 0 1 0 0 0 01H INFO7 INFO6 INFO5 INFO4 INFO3 INFO2 INFO1 INFO0 02H ST1 0 0 0 0 0 0 0 DOR DRDY 03H HXL HX7 HXX HX HX HX HXH HX15 HX14 HX13 HX12 HX11 HX10 HX9 HX8 05H HYL HY7 HY6 HY5 HY4 HY3 HY2 HY1 HY0 06H HYH HY15 HY14 HY13 HY12 HY10 HY9 HY HZ HZ HZ HZ HZ HZ HZ HZ ST2 0 0 0 BITM HOFL 0 0 0 እያንዳንዱ መመዝገቢያ ምን ማለት እንደሆነ መከፋፈል ፦ ኤክስኤክስኤል [7: 0]-የኤክስ-ዘንግ የመለኪያ ውሂብ ዝቅተኛው 8 ቢት ኤችኤችኤች [15: 8] ፦ የኤክስ-ዘንግ የመለኪያ ውሂብ ከፍ ያለ 8 ቢት HYL [7: 0]: የ-ዘንግ የመለኪያ ውሂብ ዝቅተኛው 8 ቢት HYH [15: 8]: የ-ዘንግ የመለኪያ ውሂብ ከፍ ያለ 8bit HZL [7: 0]: የ Z- ዘንግ የመለኪያ ውሂብ ዝቅተኛ 8 ቢት HZH [15: 8]: የ Z- ዘንግ የመለኪያ ውሂብ ከፍ ያለ 8 ቢት

ፕሮግራሚንግ

ከመመዝገቢያ ሰነዶች አንድ ሌላ ትንሽ መረጃ ወደ 100 ወይም ከዚያ በላይ የተመዘገቡ ብቻ ይመስላሉ። ስለዚህ አንድ ዘዴ መሣሪያውን (0x68) የሚደርስ እና ምን ዓይነት ውሂብ ሊታይ እንደሚችል ለማየት ፣ ምንም እንኳን ለትርጉማቸው ምንም ሳያስብ ፣ ተከታታይ መዝገቦችን በተከታታይ ለማንበብ የሚሞክር ቀላል ፕሮግራም መጻፍ ሊሆን ይችላል።

እና ከዚያ ፣ ተመሳሳዩን ኮድ በመጠቀም ተከታታይ ማለፊያዎችን ያድርጉ እና ውሂቡን ከአንድ ማለፊያ እና ከሚቀጥለው ጋር ያወዳድሩ።

ሀሳቡ ምናልባት ምንም መረጃ የሌላቸው (ዜሮዎች ወይም ኤፍኤፍ?) ወይም ፈጽሞ የማይለወጡ ማንኛውንም መዝገቦችን ማስወገድ እንችላለን ፣ እና እኛ በሚለወጡ ላይም ማተኮር እንችላለን።

ከዚያ እኛ የምንመለከተው አንድ የሚለወጡትን ብቻ ነው ፣ በእውነቱ ለዚያ መመዝገቢያ የተወሰነ የተረጋጋ እሴት መኖሩን ለማየት የዚያ ምዝገባ የቅርብ ጊዜዎቹን N ን ን የሚገመገም አማካይ ተግባር ውስጥ ይጨምሩ። ይህ እኛ አነፍናፊውን በጣም ዝም ብለን እና በተመሳሳይ ቦታ ላይ እናስቀምጠዋለን ብሎ ያስባል።

በመጨረሻ ፣ ከዚያ እሱን እንደ ነቅፈው (የፍጥነት መለኪያ ፣ ጋይሮ) ፣ ወይም በእሱ ላይ መንፋት (የሙቀት መጠን) ፣ ወይም ማሽከርከር (ቀዳሚዎቹ ሁለት ሲደመር ማግኔቶሜትር) ያሉ ነገሮችን በእርጋታ መሞከር እና ይህ በእሴቶቹ ላይ ምን ተጽዕኖ እንደሚያሳድር ማየት እንችላለን።

በተቻለ መጠን የሽቦ ፒፒ ቤተ -መጽሐፍትን መጠቀም እወዳለሁ። ለ I2C ድጋፍ አለው።

የመጀመሪያ ሩጫ ፦

/********************************************************************************

* ለመገንባት: gcc first.test.mpu9265.c -o first.test.mpu9265 -lwiringPi * * to run: sudo./first.test.mpu9265 * * ይህ ፕሮግራም ከ MCP23017 የተመዘገቡ (የሚቻል) ምዝገባዎችን ብቻ ያወጣል። ፣ * እና ከዚያ ከ MPU9265 (ወይም በዚያ ማንኛውም 0x68 አድራሻ ላይ ማንኛውም MPU) * * እኔ ቀድሞውኑ * በ MCP23017 ላይ እምነት ስለነበረኝ ከአነፍናፊው እንኳ ማንበብ ከቻልኩ ለማረጋገጥ ተጠቀምኩበት። **************************************************** ****************************** {ያስቀምጣል («MCP23017 @ 0x20 የሚሉትን እንይ ፦»); errno = 0; int deviceId1 = 0x20; int fd1 = wiringPiI2CSetup (deviceId1); (-1 == fd1) {fprintf (stderr ፣ “wiringPi I2C መሣሪያን መክፈት አይቻልም %s / n” ፣ strerror (errno)); መመለስ 1; } ለ (int reg = 0; reg <300; reg ++) {fprintf (stderr ፣ "%d" ፣ wiringPiI2CReadReg8 (fd1, reg)) ፤ fflush (stderr); መዘግየት (10); } ያስቀምጣል (""); ያስቀምጣል ("MPU9265 @ 0x20 ምን እንደሚል እንመልከት"); errno = 0; int deviceId2 = 0x68; int fd2 = wiringPiI2CSetup (deviceId2); (-1 == fd2) {fprintf (stderr ፣ “wiringPi I2C መሣሪያን መክፈት አይችልም %s / n” ፣ strerror (errno)); መመለስ 1; } ለ (int reg = 0; reg <300; reg ++) {fprintf (stderr ፣ "%d" ፣ wiringPiI2CReadReg8 (fd2, reg)) ፤ flush (stderr); መዘግየት (10); } ያስቀምጣል (""); መመለስ 0; }

ሁለተኛው ሩጫ;

/********************************************************************************

* ለመገንባት: gcc second.test.mpu9265.c -o second.test.mpu9265 -lwiringPi * * to run: sudo./second.test.mpu9265 * * ይህ ፕሮግራም ከተመዘገበው እሴት ጎን የመዝገብ ቁጥሩን ያወጣል። * * ይህ ውጤቱን ወደ ፋይል ማዞር (ማዛወር) ጠቃሚ ያደርገዋል ፣ እና ከዚያ * ብዙ ሩጫዎች ሊነፃፀሩ ይችላሉ። ምን መመዝገቢያ አስፈላጊ እንደሆነ እና ውሂቡ እንዴት እንደሚሠራ የተወሰነ ግንዛቤ ሊሰጥ ይችላል። ************************************************** ****************************/ #ያካትቱ #ያካትቱ #ያካትቱ #ያካትቱ argv) {int deviceId = -1; ከሆነ (0) {} ሌላ ከሆነ (! strncmp (argv [1] ፣ "0x20" ፣ strlen ("0x20")))) {deviceId = 0x20; } ሌላ ከሆነ (! strncmp (argv [1] ፣ "0x68" ፣ strlen ("0x68"))) {deviceId = 0x68; } ሌላ ከሆነ (! strncmp (argv [1] ፣ "0x69" ፣ strlen ("0x69"))) {deviceId = 0x69; } ያስቀምጣል ("MPU9265 @ 0x20 ምን እንደሚል እንመልከት"); errno = 0; int fd = wiringPiI2CSetup (deviceId); (-1 == fd) {fprintf (stderr ፣ “wiringPi I2C መሣሪያን መክፈት አይቻልም %s / n” ፣ strerror (errno)); መመለስ 1; } ለ (int reg = 0; reg <300; reg ++) {fprintf (stderr, "%d:%d / n", reg, wiringPiI2CReadReg8 (fd, reg)); flush (stderr); መዘግየት (10); } መመለስ 0; }

ሦስተኛው ሩጫ;

/********************************************************************************

* ለመገንባት: gcc third.test.mpu9265.c -o third.test.mpu9265 -lwiringPi * * to run: sudo./third.test.mpu9265 * * ይህ ፕሮግራም የሁለተኛው ውጤት ነው። በአንድ ሩጫ እና በሚቀጥለው መካከል ያለውን ልዩነት ከጠቆሙት ከ * መዝገቦች ብቻ ያነባል።************************************************** ****************************/ #ያካትቱ #ያካትቱ #ያካትቱ #ያካትቱ argv) {int deviceId = -1; ከሆነ (0) {} ሌላ ከሆነ (! strncmp (argv [1] ፣ "0x68" ፣ strlen ("0x68")))) {deviceId = 0x68; } ሌላ ከሆነ (! strncmp (argv [1] ፣ "0x69" ፣ strlen ("0x69"))) {deviceId = 0x69; } ያስቀምጣል ("MPU9265 @ 0x20 ምን እንደሚል እንመልከት"); errno = 0; int fd = wiringPiI2CSetup (deviceId); (-1 == fd) {fprintf (stderr ፣ “wiringPi I2C መሣሪያን መክፈት አይቻልም %s / n” ፣ strerror (errno)); መመለስ 1; } ለ (int reg = 61; reg <= 73; reg ++) {fprintf (stderr, "%d:%d / n", reg, wiringPiI2CReadReg8 (fd, reg)); flush (stderr); መዘግየት (10); } ለ (int reg = 111; reg <= 112; reg ++) {fprintf (stderr, "%d:%d / n", reg, wiringPiI2CReadReg8 (fd, reg)) ፤ ፍሳሽ (stderr); መዘግየት (10); } ለ (int reg = 189; reg <= 201; reg ++) {fprintf (stderr, "%d:%d / n", reg, wiringPiI2CReadReg8 (fd, reg)); flush (stderr); መዘግየት (10); } ለ (int reg = 239; reg <= 240; reg ++) {fprintf (stderr, "%d:%d / n", reg, wiringPiI2CReadReg8 (fd, reg)); flush (stderr); መዘግየት (10); } መመለስ 0; }

ስለዚህ እስካሁን ምን ተማርን? ባለቀለም የደመቁ አካባቢዎች ያሉት የጠረጴዛው ምስል ውጤቱ ከመጀመሪያዎቹ የመመዝገቢያ ስብስቦች ጋር የሚስማማ ይመስላል።

እስካሁን የተገኙት ውጤቶች አዳዲስ ጥያቄዎችን ሊያስገኙ ይችላሉ።

ጥያቄ - ለ “ውጫዊ” ቡድን አንድ የምዝገባ ውጤት ለምን አለ?

ጥያቄ - እነዚያ ያልታወቁ መመዝገቢያዎች ሁሉ "??????"

ጥያቄ-ፕሮግራሙ በማቋረጥ የሚገፋፋ ስላልሆነ ፣ በጣም ቀርፋፋ መረጃን ጠይቋል? በጣም ፈጣን?

ጥያቄ - እሱ በሚሠራበት ጊዜ ነገሮችን ከዳሳሽ ጋር በመሞከር ውጤቱን ልንነካ እንችላለን?

ደረጃ 6 - ወደ ንባቦች / ውሂብ የበለጠ እንገባ

ከማንኛውም ነገር በፊት ቀጣዩ እርምጃ ፕሮግራሙን ማሻሻል ነው ብዬ አስባለሁ-

  • ምን ያህል የሉፕ መዘግየት (ሚሴ) ውስጥ ተለዋዋጭ ይሁኑ
  • በአንድ መዝገብ ውስጥ የአሂድ አማካይ ለመስጠት ስንት ንባቦች ላይ ተለዋዋጭ ይሁኑ

(ፕሮግራሙን እንደ ፋይል ማያያዝ ነበረብኝ። እዚህ የማስገባት ችግር ያለ ይመስላል። "4th.test.mpu9265.c")

በ 10ms loop ላይ ለአማካይ የመጨረሻዎቹን 10 ንባቦች በመጠቀም ሩጫ እዚህ አለ -

sudo./fourth.test.mpu9265 0x68 10 10

61:255 0 255 0 255 0 255 0 0 0: 102 62:204 112 140 164 148 156 188 248 88 228: 167 63:189 188 189 187 189 188 188 188 188 189: 188 64: 60 40 16 96 208 132 116 252 172 36: 112 65: 7 7 7 7 7 7 7 7 7 7: 7 66:224 224 224 240 160 208 224 208 144 96: 195 67: 0 0 0 0 0 0 0 0 0 0: 0 68:215 228 226 228 203 221 239 208 214 187: 216 69: 0 255 0 255 255 0 255 0 0 0: 102 70:242 43 253 239 239 45 206 28 247 207: 174 71: 0 255 255 0 255 255 255 255 255 255: 204 72: 51 199 19 214 11 223 21 236 193 8: 117 73: 0 0 0 0 0 0 0 0 0 0: 0 111: 46 149 91 199 215 46 142 2 233 199: 132 112: 0 0 0 0 0 0 0 0 0 0: 0 189:255 0 255 0 255 0 0 255 0 255: 127 190: 76 36 240 36 100 0 164 164 152 244: 121 191:188 188 188 188 187 188 187 189 187 189: 187 192: 8 48 48 196 96 220 144 0 76 40: 87 193: 7 7 7 7 7 8 7 7 7 7: 7 194:208 224 144 240 176 240 224 208 240 224: 212 195: 0 0 0 0 0 0 0 0 0 0: 0 196:243 184 233 200 225 192 189 242 188 203: 209 197:255 0 0 0 255 0 255 0 0 255: 102 198:223 39 247 43 245 22 255 221 0 6: 130 199: 0 255 255 255 0 255 255 255 255 0: 178 200:231 225 251 1 252 20 211 216 218 16: 164 201: 0 0 0 0 0 0 0 0 0 0: 0 239: 21 138 196 87 26 89 16 245 187 144: 114 240: 0 0 0 0 0 0 0 0 0 0: 0

የመጀመሪያው ፣ ግራ-አምድ የመመዝገቢያ ቁጥር ነው። ከዚያ ለዚያ መዝገብ የመጨረሻዎቹ 10 ንባቦች ይምጡ። በመጨረሻም ፣ የመጨረሻው ዓምድ ለእያንዳንዱ ረድፍ አማካይ ነው።

መመዝገቢያዎች 61 ፣ 69 ፣ 71 ፣ 189 ፣ 197 እና 199 የሚመስሉ ሁለትዮሽ ብቻ ናቸው ፣ ወይም ዝግጁ / ዝግጁ አይደሉም ፣ ወይም እነሱ ባለ 16 ቢት እሴት ከፍተኛ ባይት (አሉታዊ?) ናቸው።

ሌሎች አስደሳች ምልከታዎች-

  • 65 ፣ 193 ይመዘግባል - በጣም የተረጋጋ እና ተመሳሳይ እሴት
  • ይመዝገቡ 63 ፣ 191 - በጣም የተረጋጋ እና ተመሳሳይ እሴት
  • ይመዘግባል 73 ፣ 112 ፣ 195 ፣ 201 ፣ 240 - ሁሉም በዜሮ

እነዚህን ምልከታዎች ቀደም ሲል ከነበረው ባለብዙ ቀለም ፣ የደመቀው የሠንጠረዥ ምስል ጋር እናያይዛቸው።

ይመዝገቡ 65 - የሙቀት መጠን

ይመዝገቡ 193 - ??????

ይመዝገቡ 63 - የፍጥነት መለኪያ

191 ይመዝገቡ - ??????

ይመዝገቡ 73 - ውጫዊ

ይመዝገቡ 112 እና በርቷል - ??????

ደህና ፣ አሁንም ያልታወቁ ነገሮች አሉን ፣ ሆኖም ፣ አንድ ጠቃሚ ነገር ተምረናል።

65 (የሙቀት መጠን) ይመዝገቡ እና 63 (የፍጥነት መለኪያ) ይመዝገቡ ሁለቱም በጣም የተረጋጉ ነበሩ። እኛ የምንጠብቀው ይህ ነው። አነፍናፊውን አልነኩትም ፤ ሮቦቱ ከኮምፒውተሬ ጋር በአንድ ጠረጴዛ ላይ ስለሚያርፍ ከማንኛውም ድንገተኛ ንዝረት በስተቀር አይንቀሳቀስም።

ለእያንዳንዳቸው ለእነዚህ የሙቀት/የፍጥነት መለኪያ መመዝገቢያዎች የምንችላቸው አንድ አስደሳች ፈተና አለ። ለዚያ ፈተና ፣ ሌላ የፕሮግራሙ ስሪት እንፈልጋለን።

ደረጃ 7 - እኛ የሙቀት መጠንን እና ማፋጠን ላይ ተጽዕኖ ማሳደር ችለናል

በቀደሙት ደረጃዎች ውስጥ ቢያንስ አንድ መመዝገቢያ ለሙቀት ፣ እና አንዱን ለማፋጠን።

በዚህ በሚቀጥለው የፕሮግራሙ ስሪት ("5th.test.mpu9265.c") ፣ ለሁለቱም መመዝገቢያዎች ለውጥ ሲደረግ ማየት እንችላለን። እባክዎን ቪዲዮዎቹን ይመልከቱ።

ተጨማሪ መቆፈር

ወደ ኋላ ተመልሰን የምዝገባ መረጃውን ከተመለከትን ፣ እናያለን -

  • ለጊሮስኮፕ ሶስት 16 ቢት ውጤቶች
  • ለአክስሌሮሜትር ሶስት 16 ቢት ውጤቶች
  • ለማግኔትሜትር ሶስት 16 ቢት ውጤቶች
  • ለሙቀት አንድ 16 ቢት ውፅዓት

ሆኖም ፣ በቀላል የሙከራ ፕሮግራሞቻችን የተገኙት ውጤቶች ሁሉም ነጠላ 8 ቢት ውጤቶች ነበሩ። (ነጠላ መዝገቦች)።

ስለዚህ ተመሳሳይ ዘዴን የበለጠ እንሞክር ፣ ግን በዚህ ጊዜ ከ 8 ይልቅ 16 ቢት ን አንብብ።

ምናልባት ከዚህ በታች የሆነ ነገር ማድረግ አለብን። አንድ 16 ቢት ውፅዓት ብቻ ስለሆነ ሙቀቱን እንደ ምሳሌ እንውሰድ።

// ፋይል ገላጭ fd ያግኙ…

int tempRegHi = 65; int tempRegLo = 66; int hiByte = wiringPiI2CReadReg8 (ኤፍዲ ፣ tempRegHi); int loByte = wiringPiI2CReadReg8 (fd, tempRegLo); int ውጤት = hiByte << 8; // የሰላም ትዕዛዙን 8 ቢት በ 16 ቢት እሴት ውጤት የላይኛው ክፍል ላይ ያስገቡ | = loByte; // አሁን ሙሉውን 16 ቢት ቁጥር በማምጣት በሎ ትዕዛዝ 8 ቢት ውስጥ ይጨምሩ/ ያንን ቁጥር ያትሙ ወይም ከበፊቱ የማሳያውን አግድም የግራፍ ተግባር ይጠቀሙ

ከቀደሙት እርምጃዎቻችን መመዝገቢያ 65 ቆንጆ አለት የተረጋጋ መሆኑን ተመልክተናል ፣ መዝገብ 66 ግን በጣም ጫጫታ ነው። 65 የሰላም ቅደም ተከተል ባይት ፣ እና 66 ዝቅተኛ ቅደም ተከተል ባይት ስለሆነ ይህ ትርጉም ይሰጣል።

ለንባብ ፣ የ 65 ን ውሂብ እንደነበረው መውሰድ እንችላለን ፣ ግን የ 66 እሴቶችን ለመመዝገብ በአማካይ ልንወጣ እንችላለን።

ወይም አጠቃላይ ውጤቱን በአማካይ ልናደርግ እንችላለን።

ለዚህ ክፍል የመጨረሻውን ቪዲዮ ይመልከቱ ፤ እሱ ሙሉውን የ 16 ቢት የሙቀት እሴትን ማንበብ ያሳያል። ኮዱ "ስድስተኛ.test.mpu9265.c" ነው

ደረጃ 8 - የፍጥነት መለኪያ እና ጋይሮስኮፕ

Image
Image

የዚህ ክፍል ቪዲዮዎች የሙከራ መርሃ ግብርን በመጠቀም “seven.test.mpu9265.c” ን ከአክስሌሮሜትር እና ከጂሮስኮስኮፕ ያሳያል። ያ ኮድ 1 ፣ 2 ወይም 3 ተከታታይ ባይት-ጥንዶችን (ሠላም እና ባይት ባይት) ማንበብ እና እሴቶቹን ወደ አንድ 16 ቢት እሴት መለወጥ ይችላል። ስለዚህ ፣ ማንኛውንም ነጠላ ዘንግ እናነባለን ፣ ወይም ሁለቱን አብረን እናነባለን (እና ለውጦቹን ያጠቃልላል) ፣ ወይም ሦስቱን (እና ለውጦቹን ያጠቃልላል)።

እንደገና ለመድገም ፣ ለዚህ ደረጃ ፣ ለዚህ አስተማሪ ፣ አንድ ቀላል ጥያቄ ለመመለስ እየፈለግኩ ነው - “ሮቦቱ አሽከረከረ/ምሰሶ አደረገ?”። እኔ ማንኛውንም ትክክለኛ እሴት አልፈልግም ፣ ለምሳሌ ፣ 90 ዲግሪ አሽከረከረ። SLAM ን ስናደርግ ያ በኋላ ይመጣል ፣ ግን ለቀላል እንቅፋት-መራቅ እና የዘፈቀደ እንቅስቃሴ አስፈላጊ አይደለም።

ደረጃ 9 (በሂደት ላይ መሥራት) ማግኔቶሜትር

የ i2cdetect መሣሪያን ሲጠቀሙ ፣ MPU9265 በሰንጠረ in ውስጥ እንደ 0x68 ያሳያል

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --

ከ IMU ማግኔቶሜትር ክፍል ለማንበብ ተጨማሪ እርምጃዎች አሉ።

ከ Invesense የፒዲኤፍ ሰነድ ይመዘግባል

ተመዝጋቢዎች 37 እስከ 39 - I2C ባሪያ 0 ቁጥጥር

  • ይመዝገቡ 37 - I2C_SLV0_ADDR
  • ይመዝገቡ 38 - I2C_SLV0_REG
  • ይመዝገቡ 39 - I2C_SLV0_CTRL

የሚመከር: