ዝርዝር ሁኔታ:

ለዜንዌልስ ማይክሮካር ሊጠለፍ የሚችል የርቀት መቆጣጠሪያ 7 ደረጃዎች
ለዜንዌልስ ማይክሮካር ሊጠለፍ የሚችል የርቀት መቆጣጠሪያ 7 ደረጃዎች

ቪዲዮ: ለዜንዌልስ ማይክሮካር ሊጠለፍ የሚችል የርቀት መቆጣጠሪያ 7 ደረጃዎች

ቪዲዮ: ለዜንዌልስ ማይክሮካር ሊጠለፍ የሚችል የርቀት መቆጣጠሪያ 7 ደረጃዎች
ቪዲዮ: Консультант от бога Tg: cadrolikk 2024, ሰኔ
Anonim
Image
Image
ስብሰባ
ስብሰባ

በዚህ መማሪያ ውስጥ ለዜንዌልስ ማይክሮካር ብጁ የርቀት መቆጣጠሪያ እንገነባለን። የ ZenWheels ማይክሮካር በ Android ወይም በ Iphone መተግበሪያ በኩል ሊቆጣጠር የሚችል የ 5 ሴ.ሜ መጫወቻ መኪና ነው። ስለ የግንኙነት ፕሮቶኮል ለማወቅ እና አርዱዲኖ እና ጋይሮስኮፕን በመጠቀም የርቀት መቆጣጠሪያን እንዴት መገንባት እንደሚችሉ ለማወቅ የ Android መተግበሪያውን መሐንዲስ እንዴት እንደሚቀይሩ አሳያችኋለሁ።

ደረጃ 1: አካላት እና መሣሪያዎች

ክፍሎች ፦

1. የዜንዌልስ ማይክሮካር

2. Arduino pro mini 328p

3. የዳቦ ሰሌዳ

4. MPU6050 ጋይሮስኮፕ

5. የኃይል ምንጭ <= 5 v (ከዳቦ ሰሌዳው ጋር ማያያዝ የምንችለው አንዳንድ ባትሪ)

6. የ U- ቅርፅ ዝላይ ኬብሎች (አማራጭ)። እኔ የዳቦ ሰሌዳ ላይ የተሻለ ስለሚመስሉ እነዚህን የጃምፐር ገመዶች ተጠቅሜአለሁ። በምትኩ መደበኛ ዝላይ ኬብሎች ጥቅም ላይ ሊውሉ ይችላሉ

7. HC-05 የብሉቱዝ ሞዱል (ወደ AT ሁነታ ለመግባት በአዝራር)

መሣሪያዎች ፦

1. አርዱዲኖ ፕሮ ሚኒን ፕሮግራም ለማድረግ ዩኤስቢ ወደ ተከታታይ FTDI አስማሚ FT232RL

2. አርዱዲኖ አይዲኢ

3. የ Android ስልክ

4. የ Android ስቱዲዮ [አማራጭ]

ደረጃ 2 - የ ZenWheels Android መተግበሪያን ወደ ኋላ መመለስ (አማራጭ)

ይህንን ክፍል ለመረዳት አንዳንድ የጃቫ እና የ Android ዕውቀት ያስፈልጋል።

የፕሮጀክቱ ግብ ጋይሮስኮፕን በመጠቀም ማይክሮ ካርቶርን መቆጣጠር ነው። ለዚህ በዚህ መጫወቻ እና በ android መተግበሪያ መካከል ስላለው የብሉቱዝ ግንኙነት የበለጠ ማወቅ አለብን።

በዚህ ደረጃ እኔ በማይክሮካር እና በ android መተግበሪያ መካከል ያለውን የግንኙነት ፕሮቶኮል እንዴት እንደሚቀይሩ እገልጻለሁ። የርቀት መቆጣጠሪያውን ለመገንባት ከፈለጉ ይህ እርምጃ አስፈላጊ አይደለም። ፕሮቶኮሉን ለማወቅ አንዱ መንገድ የምንጭ ኮዱን መመልከት ነው። እምም ግን ይህ በቀጥታ ወደ ፊት አይደለም ፣ የ android መተግበሪያዎች ተሰብስበዋል እናም አንድ ሰው በ google ጨዋታ በኩል ኤፒኬውን መጫን ይችላል።

ስለዚህ ይህንን ለማድረግ መሰረታዊ መመሪያ አዘጋጅቻለሁ-

1. ኤፒኬውን ያውርዱ። የ Android ጥቅል ኪት (በአጭሩ ኤፒኬ) የሞባይል መተግበሪያዎችን ለማሰራጨት እና ለመጫን በ Android ስርዓተ ክወና የሚጠቀም የጥቅል ፋይል ቅርጸት ነው።

በመጀመሪያ በ google play መደብር ላይ መተግበሪያውን ይፈልጉ ፣ በእኛ ሁኔታ “ዘንዌልስ” ይፈልጉ እና የመተግበሪያ አገናኙን ያገኛሉ

ከዚያ በ google ላይ “የመስመር ላይ ኤፒኬ አውርድ” ን ይፈልጉ እና ኤፒኬውን ለማውረድ አንዱን ይጠቀሙ። ብዙውን ጊዜ የትግበራ አገናኙን (ቀደም ሲል ያገኘነውን) ይጠይቃሉ ፣ ከዚያ የማውረጃ ቁልፍን ተጭነው በኮምፒውተራችን ውስጥ እናስቀምጠዋለን።

2. ኤፒኬውን መበታተን። በእኛ ሁኔታ ውስጥ ዲኮምፕለር ኤፒኬውን የሚወስድ እና የጃቫ ምንጭ ኮድ የሚያወጣ መሣሪያ ነው።

በጣም ቀላሉ መፍትሔ ሥራውን ለማከናወን የመስመር ላይ ማከፋፈያ መጠቀም ነው። Google ን “የመስመር ላይ ማከፋፈያ” ን ፈልጌዋለሁ እና https://www.javadecompilers.com/ ን መርጫለሁ። እርስዎ ቀደም ብለው ያገኙትን ኤፒኬ እና መስቀል ብቻ ያስፈልግዎታል

መበታተን ይጫኑ። ከዚያ ምንጮችን ብቻ ያውርዱ።

3. ኮዱን እየተመለከተ መሐንዲስን ለመቀልበስ ይሞክሩ

ፕሮጀክቱን ለመክፈት የጽሑፍ አርታኢ ወይም የተሻለ አይዲኢ (የተቀናጀ ልማት አከባቢ) ያስፈልግዎታል። ለ Android ፕሮጀክቶች ነባሪው አይዲኢ የ Android ስቱዲዮ (https://developer.android.com/studio) ነው። የ Android ስቱዲዮን ከጫኑ በኋላ የፕሮጀክቱን አቃፊ ይክፈቱ።

መኪናችን በብሉቱዝ ስለሚቆጣጠር “ብሉቱዝ” በሚለው ቁልፍ ቃል ፍለጋዬን በተበታተነ ኮድ ውስጥ ጀመርኩ ፣ ከተከሰቱት ክስተቶች “ብሉቱዝ ሰርቪስ ሰርቪስ” የግንኙነቱን እጀታ ይዞ ነበር። ይህ ክፍል ግንኙነቱን የሚይዝ ከሆነ የመላኪያ ትዕዛዝ ዘዴ ሊኖረው ይገባል። በብሉቱዝ ሰርጥ በኩል መረጃን የሚልክ አንድ የመፃፍ ዘዴ አለ -

የህዝብ ባዶ መጻፍ (ባይት ውጭ)

ይህ ጥሩ ጅምር ነው ፣ የ.write ን ፈልጌያለሁ (ዘዴው ጥቅም ላይ እየዋለ እና የእኛን “ብሉቱዝ ሰርቪስ አገልግሎት” የሚዘረጋ ክፍል “ZenWheelsMicrocar” አለ። ይህ ክፍል በብሉቱዝ ላይ አብዛኛዎቹን የእኛን የግንኙነት አመክንዮ ይ containsል። ሌላኛው ክፍል አመክንዮው በተቆጣጣሪዎች ውስጥ ነው - BaseController እና StandardController።

በ ‹BaseController› ውስጥ የአገልግሎት ጅማሬ አለን ፣ እንዲሁም የመሪ እና ስሮትል ሰርጦች ትርጓሜዎች ፣ ሰርጦች በእውነቱ አንድ ዓይነት ትዕዛዝ እንደሚከተል ለመግለጽ የትእዛዝ ቅድመ -ቅጥያዎች ናቸው።

የተጠበቀ ZenWheelsMicrocar microcar = new ZenWheelsMicrocar (ይህ ፣ ይህ.btHandler);

የተጠበቀ ChannelOutput ውጤቶች = {አዲስ TrimChannelOutput (ZenWheelsMicrocar. STEERING_CHANNEL) ፣ አዲስ TrimChannelOutput (ZenWheelsMicrocar. THROTTLE_CHANNEL)};

በ StandardController ውስጥ መሪው የሚከናወነው በ

የህዝብ ባዶነት እጀታ (ስቴሪንግ) (TouchEvent touchEvent) {

… This.microcar.setChannel (steeringOutput.channel ፣ steeringOutput.resolveValue ()); }

ዘዴውን በማወቅ ፣ steeringOutput.channel እሴቱ 129 (ለመሪነት የሚያገለግል ሰርጥ) እና steeringOutput.resolveValue () በ -90 እና 90 መካከል እሴት ሊኖረው ይችላል። የሰርጥ ዋጋ (129) በቀጥታ ይላካል ፣ እና የመሪው እሴቱ ተስተካክሏል ቢትዊድ ኦፕሬሽኖችን በመተግበር

የግል የመጨረሻ int value_convert_out (int እሴት) {

ቡሊያን አሉታዊ = ሐሰት; ከሆነ (እሴት <0) {አሉታዊ = f6D; } int value2 = እሴት & 63; ከሆነ (አሉታዊ) {የመመለሻ እሴት 2 | 64; } የመመለሻ እሴት 2; }

በ StandardController ውስጥ ተመሳሳይ ዘዴ አለ

የህዝብ ባዶ እጀታ ስሮትል (TouchEvent touchEvent)

ደረጃ 3: አካላት

ክፍሎች ፦

1. Arduino pro mini 328p 2 $

2. የዳቦ ሰሌዳ

3. MPU6050 ጋይሮስኮፕ 1.2 $

4. HC-05 ዋና-ባሪያ 6 ፒን ሞዱል 3 $

5. 4 x AA የባትሪ ጥቅል ከ 4 ባትሪዎች ጋር

6. የ U- ቅርፅ ዝላይ ኬብሎች (አማራጭ)። እኔ የዳቦ ቦርዱ ላይ የተሻለ ስለሚመስሉ እነዚህን መዝለያ ኬብሎች ተጠቅሜአለሁ ፣ እና ሌዲዎቹ በዚህ መንገድ የበለጠ ይታያሉ። እነዚህ ኬብሎች ከሌሉዎት በዱፖን ሽቦዎች መተካት ይችላሉ።

ከላይ ያሉት ዋጋዎች ከ eBay የተወሰዱ ናቸው።

መሣሪያዎች ፦

1. አርዱዲኖ ፕሮ ሚኒን ለማቀናበር ዩኤስቢ ወደ ተከታታይ FTDI አስማሚ FT232RL

2. አርዱዲኖ አይዲኢ

3. የ Android ስቱዲዮ (መሐንዲስን እራስዎ መቀልበስ ከፈለጉ እንደ አማራጭ)

ደረጃ 4 - ስብሰባ

ስብሰባ
ስብሰባ

በዳቦ ሰሌዳ ላይ ስለምናደርገው ስብሰባው በጣም ቀላል ነው:)

- በመጀመሪያ የእኛን ክፍሎች በእንጀራ ሰሌዳ ላይ እናስቀምጣለን -ማይክሮ መቆጣጠሪያ ፣ የብሉቱዝ ሞዱል እና ጋይሮስኮፕ

- HC-05 ብሉቱዝ RX እና TX ፒኖችን ከ arduino 10 እና 11 ፒኖች ጋር ያገናኙ። ጋይሮስኮፕ SDA እና SCL ከ arduino A4 እና A5 ፒኖች ጋር መገናኘት አለባቸው

- የኃይል ፒኖችን ወደ ብሉቱዝ ፣ ጋይሮ እና አርዱዲኖ ያገናኙ። ፒኖቹ ከ + እና - ከዳቦርዱ ጎን ጋር መገናኘት አለባቸው

- ለመጨረሻ ጊዜ የኃይል አቅርቦትን (ከ 3.3 ቪ እስከ 5 ቮ) ከዳቦርዱ ሰሌዳ ጋር ያገናኙ ፣ እኔ ትንሽ LiPo አንድ የሕዋስ ባትሪ ተጠቅሜያለሁ ፣ ግን ማንኛውም በኃይል ክልል ውስጥ እስካለ ድረስ ያደርገዋል።

ለተጨማሪ ዝርዝሮች እባክዎን ከላይ ያሉትን ስዕሎች ይመልከቱ

ደረጃ 5: HC-05 ብሉቱዝን ከማይክሮካር ጋር ያጣምሩ

HC-05 ብሉቱዝን ከማይክሮካር ጋር ያጣምሩ
HC-05 ብሉቱዝን ከማይክሮካር ጋር ያጣምሩ
HC-05 ብሉቱዝን ከማይክሮካር ጋር ያጣምሩ
HC-05 ብሉቱዝን ከማይክሮካር ጋር ያጣምሩ
HC-05 ብሉቱዝን ከማይክሮካር ጋር ያጣምሩ
HC-05 ብሉቱዝን ከማይክሮካር ጋር ያጣምሩ

ለዚህ የ Android ስልክ ፣ የብሉቱዝ HC-05 ሞዱል እና ተከታታይ ሽቦዎች ያሉት የ FTDI አስማሚ ያስፈልግዎታል። እንዲሁም ከብሉቱዝ ሞዱል ጋር ለመገናኘት አርዱዲኖ አይዲኢን እንጠቀማለን።

በመጀመሪያ የማይክሮካር ብሉቱዝ አድራሻውን ማወቅ አለብን

- በስልክዎ ላይ ብሉቱዝን ያንቁ

- መኪናውን ያብሩ እና በ Android ውስጥ ወደ ቅንብሮችዎ ብሉቱዝ ክፍል ይሂዱ

- አዳዲስ መሣሪያዎችን ይፈልጉ እና “ማይክሮካር” የሚባል አንዳንድ መሣሪያ መታየት አለበት

- ከዚህ መሣሪያ ጋር ያጣምሩ

- ከዚያ የብሉቱዝ MAC ን ለማውጣት ይህንን መተግበሪያ ከጉግል ጨዋታ ተከታታይ የብሉቱዝ ተርሚናል ተጠቀምኩ

ይህን መተግበሪያ ከጫኑ በኋላ ወደ ምናሌ -> መሣሪያዎች ይሂዱ እና እዚያ ሁሉም የብሉቱዝ ተጣማጅ ዴቪዶች ያሉት ዝርዝር ይኖርዎታል። እኛ የምንፈልገው “ማይክሮካር” ከሚለው የማዕድን ማውጫ በታች 00: 06: 66: 49: A0: 4B ያለውን ኮድ ብቻ ነው

በመቀጠል የ FTDI አስማሚውን ወደ ብሉቱዝ ሞዱል ያገናኙ። የመጀመሪያው VCC እና GROUND ፒኖች እና ከዚያ FTDI RX ወደ ብሉቱዝ TX እና FTDI TX ወደ ብሉቱዝ RX። እንዲሁም ከቪሲሲ ጋር መገናኘት ያለበት በብሉቱዝ ሞጁል ላይ ፒን መኖር አለበት። ይህንን በማድረግ የብሉቱዝ ሞጁል ወደ “ሊሠራ የሚችል ሁኔታ” ይገባል። የእኔ ሞዱል ቪ.ሲ.ሲን ወደዚያ ልዩ ፒን የሚያገናኝ አዝራር አለው። FTDI ን በዩኤስቢ ውስጥ ሲሰኩ በዚህ ልዩ በፕሮግራም ሊሠራ በሚችል ሁኔታ ለመግባት ከተገናኘው / ከተጫነ ቁልፍ ጋር መሆን አለበት። ብሉቱዝ በየ 2 ሰከንዶች ቀስ ብሎ ብልጭ ድርግም በማለት ወደዚህ የአሠራር ሁኔታ መግባቱን ያረጋግጣል።

በ Arduino IDE ውስጥ ተከታታይ ወደቡን ይምረጡ ፣ ከዚያ ተከታታይ ማሳያውን ይክፈቱ (ሁለቱም NL እና CR ከ 9600 ባውድ ተመን ጋር)። AT ይተይቡ እና ሞጁሉ በ “እሺ” ማረጋገጥ አለበት።

ሞጁሉን በዋና ሞድ ውስጥ ለማስቀመጥ “AT+ROLE = 1” ብለው ይተይቡ። ከ bluetooh ሞዱልዎ ጋር ለማጣመር “AT+BIND = 0006 ፣ 66 ፣ 49A04B” ብለው ይፃፉ ፣ የእኛ “00: 06: 66: 49: A0: 4B” ወደ “0006 ፣ 66 ፣ 49A04B” እንዴት እንደሚለወጥ ያስተውሉ። ለ bluetooh MACዎ ተመሳሳይ ለውጥ ማድረግ አለብዎት።

አሁን በዜንዌልስ መኪና ላይ ኃይል ከዚያ FTDI ን ይንቀሉ እና የተጫነ / ልዩ ፒን ሳይገናኝ እንደገና ይሰኩት። ከጥቂት ጊዜ በኋላ ከመኪናው ጋር መገናኘት አለበት እና መኪናው አንድ የተወሰነ ግንኙነት ስኬታማ ድምጽ ሲያደርግ ያስተውላሉ።

ችግርመፍቻ:

- ካገኘኋቸው ሁሉም የብሉቱዝ ሞጁሎች ፣ ቁልፍ ያለው አንድ ብቻ እንደ ዋና ሆኖ አገኘሁ!

- መኪናው ሙሉ በሙሉ መሙላቱን ያረጋግጡ

- መኪናው ከስልክ ጋር አለመገናኘቱን ያረጋግጡ

- ብሉቱዝ በኤቲ ሞድ ውስጥ ከገባ (ቀስ ብሎ ብልጭ ድርግም ይላል) ግን ለትእዛዝ ምላሽ አይሰጥም ፣ ሁለቱንም NL እና CR እንዳለዎት ያረጋግጡ ፣ እንዲሁም ከሌሎች የ BAUD ተመኖች ጋር ሙከራ ያድርጉ።

- RX ን እንደገና ይፈትሹ ከ TX ጋር ይገናኛል እና በተቃራኒው

- ይህንን አጋዥ ስልጠና ይሞክሩ

ደረጃ 6 ኮድ እና አጠቃቀም

በመጀመሪያ ሁለት ቤተ -መጽሐፍትን ማውረድ እና መጫን ያስፈልግዎታል

1. MPU6050 ቤተ መፃህፍት ለጋይሮስኮፕ

2. I2CDev ቤተ -መጽሐፍት ምንጭ

ከዚያ የእኔን ቤተ -መጽሐፍት ያውርዱ እና ይጫኑ ወይም ከዚህ በታች ይቅዱ

/** * ቤተ -መጻሕፍት *.h " #ያካትቱ" SoftwareSerial.h"

const int MAX_ANGLE = 45;

const byte commandStering = 129; const byte commandSpeed = 130;

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 ማቋረጫ ፒን ከፍ ማለቱን ወይም አለመሆኑን ነው

ያልተፈረመ ረጅም lastPrintTime ፣ lastMoveTime = 0;

ሶፍትዌርSerial BTserial (10, 11);

MPU6050 mpu;

ባዶነት ማዋቀር ()

{Serial.begin (9600); BTserial.begin (38400); Serial.println ("ፕሮግራሙ ተጀመረ"); ማስነሻ = initializeGyroscope (); }

ባዶነት 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 ፣ & ስበት); መሪ (ypr [0] * 180/M_PI ፣ ypr [1] * 180/M_PI ፣ ypr [2] * 180/M_PI); }}

/*

* 0 ከፍተኛው ግራ እና 180 ከፍተኛው ቀኝ ከሆነ ከ 0 ወደ 180 አንግል ይቀበላል * ፍጥነት ከ -90 ወደ 90 የት -90 ከፍተኛ ወደኋላ እና 90 ወደ ፊት ወደፊት ነው// ባዶ እንቅስቃሴZwheelsCar (ባይት አንግል ፣ int ፍጥነት) {ከሆነ (ሚሊስ () - lastMoveTime = 90) {resultAngle = map (አንግል ፣ 91 ፣ 180 ፣ 1 ፣ 60) ፤ } ሌላ ከሆነ (አንግል 0) {resultSpeed = map (ፍጥነት ፣ 0 ፣ 90 ፣ 0 ፣ 60) ፤ } ሌላ ከሆነ (ፍጥነት <0) {resultSpeed = map (ፍጥነት ፣ 0 ፣ -90 ፣ 120 ፣ 60) ፤ } Serial.print ("exactAngle ="); Serial.print (ማዕዘን); Serial.print (";"); Serial.print ("exactSpeed ="); Serial.print (resultSpeed); Serial.println (";"); BTserial.write (commandStering); BTserial.write (resultAngle); BTserial.write (commandSpeed); BTserial.write ((ባይት) resultSpeed); lastMoveTime = ሚሊስ (); }

ባዶ መሪ (int x ፣ int y ፣ int z)

{x = መገደብ (x, -1 * MAX_ANGLE ፣ MAX_ANGLE); y = መገደብ (y, -1 * MAX_ANGLE ፣ MAX_ANGLE); z = መገደብ (z ፣ -MAX_ANGLE ፣ MAX_ANGLE); int አንግል = ካርታ (y ፣ -MAX_ANGLE ፣ MAX_ANGLE ፣ 0 ፣ 180); int ፍጥነት = ካርታ (z ፣ -MAX_ANGLE ፣ MAX_ANGLE ፣ 90 ፣ -90); printDebug (x ፣ y ፣ z ፣ አንግል ፣ ፍጥነት); moveZwheelsCar (አንግል ፣ ፍጥነት); }

ባዶ ህትመት (int x ፣ int y ፣ int z ፣ int angle ፣ int ፍጥነት)

{ከሆነ (ሚሊስ () - lastPrintTime <1000) {መመለስ; } Serial.print ("z ="); Serial.print (x); Serial.print (";"); Serial.print ("y ="); Serial.print (y); Serial.print (";"); Serial.print ("z ="); Serial.print (z); Serial.print (";"); Serial.print ("angle ="); Serial.print (ማዕዘን); Serial.print (";"); Serial.print ("ፍጥነት ="); Serial.print (ፍጥነት); Serial.println (";"); lastPrintTime = millis (); }

bool initialize ጋይሮስኮፕ ()

{Wire.begin (); mpu.initialize (); Serial.println (mpu.testConnection ()? F ("MPU6050 ግንኙነት ተሳካ"): F ("MPU6050 ግንኙነት አልተሳካም")); 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 = እውነት; }

ቡሊያን አለው ፊፎ ኦቨርፎን (int mpuIntStatus ፣ int fifoCount)

{mpuIntStatus & 0x10 ተመለስ || fifoCount == 1024; }

የ FTDI አስማሚውን ወደ አርዱዲኖ በመጠቀም ኮዱን ይስቀሉ ከዚያም ባትሪዎቹን ያገናኙ።

የርቀት መቆጣጠሪያውን በመጠቀም;

አርዱዲኖ ከተበራ በኋላ ፣ እንዲሁም በመኪናው ላይ ኃይል ያድርጉ። የ HC-05 ሞጁል ከመኪናው ጋር መገናኘት አለበት ፣ ያ ሲከሰት መኪናው ድምጽ ያሰማል። ካልሰራ እባክዎን የቀደመውን ደረጃ እና የመላ ፍለጋ ክፍልን ይመልከቱ።

የዳቦ ሰሌዳውን ወደ ፊት ካዘረጉ መኪናው ወደ ፊት ፣ ወደ ቀኝ እና መኪናው ወደ ቀኝ መንቀሳቀስ አለበት። እንዲሁም በዚህ ሁኔታ መኪናው ቀስ በቀስ ወደ ግራ ይሄዳል እንደ ትንሽ ወደ ፊት እና እንደ ትንሽ መዘግየት ያሉ ቀስ በቀስ እንቅስቃሴዎችን ያካሂዳል።

የዳቦ ሰሌዳውን ሲያዘነብል መኪናው በተለየ መንገድ ከሄደ መጀመሪያ የዳቦ ሰሌዳውን በተለያዩ አቅጣጫዎች ያዙ።

እንዴት እንደሚሰራ:

ሥዕሉ በየ 100 ሚ.ሜ ጋይሮስኮፕ መጋጠሚያዎችን ያገኛል ፣ ስሌቶችን ይሠራል እና ከዚያ የመኪና ትዕዛዞችን በብሉቱዝ ያስተላልፋል። በመጀመሪያ በጥሬ x ፣ y እና z ማዕዘኖች የሚጠራ “መሪ” ዘዴ አለ። ይህ ዘዴ መሪውን ከ 0 እስከ 180 ዲግሪዎች እና ፍጥነቱን በ -90 እና በ 90 መካከል ይለውጣል። ይህ ዘዴ ይደውላል

ባዶ መንቀሳቀሻ የዙዊልስ መኪና (ባይት አንግል ፣ int ፍጥነት) ወደ ZenWheels ዝርዝር መግለጫዎች የሚቀይር እና ከዚያም ብሉቱዝን በመጠቀም ትዕዛዞችን የሚያስተላልፍ።

ለውጡን በሁለት ደረጃዎች ያደረግሁበት ምክንያት ፣ እንደገና ጥቅም ላይ መዋል ነው። ይህንን ንድፍ ከርቀት መቆጣጠሪያ ሌላ መሣሪያን ማላመድ ካስፈለገኝ ፍጥነቱን እና መሪውን ወደ አንዳንድ ጠቃሚ እሴቶች ከሚወስደው ከመሠረቱ ዘዴ “መሪ” እጀምራለሁ።

ደረጃ 7: አማራጮች

ለ “ተገላቢጦሽ ምህንድስና” አማራጭ። በ Android ትግበራ በመጀመር ፕሮጀክቱን መሐንዲስ እንዴት መቀልበስ እንደሚቻል ተነጋግሬያለሁ። ግን ለዚህ አማራጭ አለ ተከታታይ FTDI + ብሉቱዝ ባሪያ (ዋናውን ቅንብሮች ሳይገልጹ መደበኛ HC-05)። ከዚያ ከዜንዌልስ መተግበሪያ ከ ‹ማይክሮካር› ይልቅ ከ HC-05 ጋር ይገናኙ።

ትዕዛዞቹን ዲክሪፕት ለማድረግ መሪውን ተሽከርካሪ በተወሰነ ቦታ መያዝ ያስፈልግዎታል ፣ ከዚያ የፓይዘን ስክሪፕት በመጠቀም ተከታታይ ግንኙነቱን ይተነትኑ። እኔ የፓይዘን ስክሪፕት እጠቁማለሁ ምክንያቱም ሊታተሙ የማይችሉ ገጸ -ባህሪዎች ስላሉ እና አርዱዲኖ አይዲ ለዚያ ተስማሚ አይደለም። መንኮራኩሩን በአንድ ቦታ ከያዙት መተግበሪያው ተመሳሳይ ሁለት ባይት በመደበኛነት እንደሚያስተላልፍ ያስተውላሉ። የመንኮራኩሩን አቀማመጥ ከተለዋወጡ የጡጫ ባይት ተመሳሳይ ይሆናል ፣ ሁለተኛው ይለወጣል። ከብዙ ሙከራዎች በኋላ መሪውን ስልተ -ቀመር ይዘው መምጣት ይችላሉ ፣ ከዚያ የኢንጂነር ስሮትሉን ወዘተ ይለውጡ።

በአርዱዲኖ ላይ የተመሠረተ የርቀት አማራጭ የ RaspberryPi የርቀት መቆጣጠሪያ ይሆናል። Raspberry pi በ ‹ማስተር› ሞድ ውስጥ ለማዋቀር ህመም የሌለበት የተከተተ የብሉቱዝ ሞዱል አለው እና የፓይዘን ብሉቱዝ ቤተ -መጽሐፍት እንደ ውበት ይሠራል። እንዲሁም አሌክሳንደር አስተጋባን በመጠቀም መኪናውን መቆጣጠር ያሉ አንዳንድ የበለጠ አስደሳች ፕሮጄክቶች ይቻላል:)

በፕሮጀክቱ እንደተደሰቱ ተስፋ አደርጋለሁ እና እባክዎን ከዚህ በታች አስተያየቶችን ይተው!

የሚመከር: