ዝርዝር ሁኔታ:

በድር ቁጥጥር የሚደረግበት ሮቨር 14 ደረጃዎች (ከስዕሎች ጋር)
በድር ቁጥጥር የሚደረግበት ሮቨር 14 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: በድር ቁጥጥር የሚደረግበት ሮቨር 14 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: በድር ቁጥጥር የሚደረግበት ሮቨር 14 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Хакасия: пока ещё дёшево — Отчёт разведки 2024, ህዳር
Anonim
በድር ቁጥጥር የሚደረግበት ሮቨር
በድር ቁጥጥር የሚደረግበት ሮቨር
በድር ቁጥጥር የሚደረግበት ሮቨር
በድር ቁጥጥር የሚደረግበት ሮቨር

በሮቦቶች መገንባት እና መጫወት በሕይወቴ ውስጥ ዋነኛው የጥፋተኝነት ደስታዬ ነው። ሌሎች ጎልፍ ወይም ስኪን ይጫወታሉ ፣ ግን እኔ ሮቦቶችን እሠራለሁ (ጎልፍ ወይም ስኪን መጫወት ስለማልችል--)። ዘና የሚያደርግ እና አስደሳች ሆኖ አግኝቼዋለሁ! አብዛኞቹን ቦቶቼን ለመሥራት ፣ የሻሲ ኪት እጠቀማለሁ። ኪትዎችን መጠቀም የበለጠ ማድረግ የምፈልገውን ፣ ሶፍትዌሩን እና ኤሌክትሮኒክስን እንድሠራ ይረዳኛል እንዲሁም ለእኔ ለሁሉም አውራ ጣቶቼ የተሻለ ሻሲን እንድሠራ ያደርገኛል።

በዚህ አስተማሪ ውስጥ ቀላል ግን ጠንካራ የ Wifi/ድር መቆጣጠሪያ ሮቨር ለመሥራት ምን እንደሚፈልግ እንመለከታለን። ጥቅም ላይ የዋለው ሻሲው Actobotics Gooseneck ነው። እኔ ለእሱ መጠን ፣ መስፋፋት-ችሎታ እና ዋጋ መርጫለሁ ፣ ግን ማንኛውንም የራስዎን የመረጡት ሻሲን መጠቀም ይችላሉ።

ለእንደዚህ ዓይነቱ ፕሮጀክት ጥሩ ጠንካራ ነጠላ ቦርድ ኮምፒተር እንፈልጋለን እና ለዚህ ቦት በ Raspberry Pi (RPI) በሊኑክስ ላይ የተመሠረተ ኮምፒተርን ለመጠቀም መረጥኩ። አርፒአይ (እና ሊኑክስ) ብዙ የኮድ አማራጮችን ይሰጠናል እና ፓይዘን ለኮዲንግ ጎን ጥቅም ላይ ይውላል። ለድር በይነገጽ ለፓይዘን ቀለል ያለ የድር ማዕቀፍ Flask ን እጠቀማለሁ።

ሞተሮችን ለማሽከርከር ሮቦክላው 2x5a መርጫለሁ። እሱን ለማዘዝ ቀላል ተከታታይ ግንኙነትን ይፈቅዳል እና ከ RPI እና በ Gooseneck ላይ ካሉ ሞተሮች ጋር በጥሩ ሁኔታ ይሠራል።

በመጨረሻም ፣ በርቀት ለመንዳት ለ POV ዓይነት የቪዲዮ ግብረመልስ የድር ካሜራ አለው። እያንዳንዱን ርዕስ በኋላ ላይ በዝርዝር እሸፍናለሁ።

ደረጃ 1 ሃርድዌር ያስፈልጋል

ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
  • Actobotics Gooesneck chassis ወይም የመረጡት ተስማሚ ምትክ
  • የመረጡት Raspberry Pi (ወይም clone) - በዚህ ቦት ላይ የ RPI ሞዴል ቢ ጥቅም ላይ ይውላል ፣ ግን ቢያንስ ሁለት የዩኤስቢ ወደቦች ያሉት ማንኛውም ይሠራል
  • መደበኛ Servo Plate B x1
  • 90 ° ነጠላ አንግል ሰርጥ ቅንፍ x1
  • ሮቦክላው 2x5a የሞተር ሾፌር
  • S3003 ወይም ተመሳሳይ መደበኛ መጠን servo
  • አነስተኛ የዳቦ ሰሌዳ ወይም አነስተኛ የዳቦ ሰሌዳ
  • ከሴት እስከ ሴት ዝላይ ሽቦዎች
  • ከወንድ እስከ ሴት ዝላይ ሽቦዎች
  • የድር ካሜራ (አማራጭ) - ሎጌቴክ C110 ን እጠቀማለሁ ፣ እና ለ RPI የሚደገፉ የካሜራዎች ዝርዝር እዚህ አለ
  • 5V-6v የኃይል ምንጭ ለ servo ኃይል
  • ለመንዳት ሞተር ኃይል 7.2v-11.1v ባትሪ
  • 5V 2600mah (ወይም ከዚያ በላይ) የዩኤስቢ የኃይል ባንክ ለ RPI
  • የዩኤስቢ Wifi አስማሚ

በእኔ ቦት ላይ ትንሽ የበለጠ ሁሉንም-መሬት-የቤት ውስጥ ለማድረግ 4 ኢንች ጎማዎችን እጠቀማለሁ። ለዚህ አማራጭ ያስፈልግዎታል

  • 4 "ከባድ ተረኛ ጎማ x2
  • 4 ሚሜ ቦረቦረ የስውር መገናኛ (0.770 ኢንች) x2

ደረጃ 2 - ቻሲስን መሰብሰብ

ቻሲስን በመገጣጠም ላይ
ቻሲስን በመገጣጠም ላይ
ቻሲስን በመገጣጠም ላይ
ቻሲስን በመገጣጠም ላይ
ቻሲስን በመገጣጠም ላይ
ቻሲስን በመገጣጠም ላይ

ከሻሲው ወይም ከቪዲዮው ጋር የተካተቱትን መመሪያዎች በመከተል መጀመሪያ ቻሲሱን ይሰብስቡ። ከጨረሱ በኋላ እንደ ምስሉ ያለ ነገር ሊኖርዎት ይገባል። ማሳሰቢያ: የአንገት ክፍልን በሚሰበስቡበት ጊዜ ፣ የመጫኛ ቅንፍውን ብቻ ይተውት።

በእኔ ቦት ላይ ፣ የሻሲው የመጡትን መንኮራኩሮች ለ 4 “ከባድ የከባድ ጎማዎች” ለመተካት መረጥኩ። ይህ እንዲሁ ማድረግ ካልፈለጉ በስተቀር የግድ አይደለም።

ደረጃ 3 - ኤሌክትሮኒክስን መትከል

ኤሌክትሮኒክስን መትከል
ኤሌክትሮኒክስን መትከል
ኤሌክትሮኒክስን መትከል
ኤሌክትሮኒክስን መትከል
ኤሌክትሮኒክስን መትከል
ኤሌክትሮኒክስን መትከል

Gooseneck ኤሌክትሮኒክዎን ለመጫን ብዙ ቦታ እና አማራጮች አሉት። እኔ እነዚህን ሥዕሎች እንደ መመሪያ መስመር እሰጥዎታለሁ ፣ ግን ሁሉንም እንዴት መደርደር እንደሚፈልጉ መምረጥ ይችላሉ። ሰሌዳውን እና ባትሪዎቹን ለመጫን ማቆሚያዎችን ፣ ባለ ሁለት ጎን ቴፕ ፣ ቬልክሮ ወይም ሰርቮፕ ቴፕ መጠቀም ይችላሉ።

ደረጃ 4 የድር ካሜራ ማከል

የድር ካሜራ ማከል
የድር ካሜራ ማከል
የድር ካሜራ ማከል
የድር ካሜራ ማከል
የድር ካሜራ ማከል
የድር ካሜራ ማከል

ለዚህ ደረጃ የ 90 ዲግሪ ቅንፍ ፣ ቀላል ክብደት ያለው የ servo ማዕከል እና አራት (4) የ.3125”ብሎኖች ይውሰዱ።

  • የ servo ማዕከሉን ይውሰዱ እና በቅንፍ በኩል በአንዱ ላይ ያስቀምጡት እና ልክ እንደ ስዕሉ ካሉ.2125 "ዊንቶች ጋር አብረው ይጠብቋቸው።
  • በመቀጠልም servo ን ወደ servo ቅንፍ ያስገቡ
  • የ 90 ዲግሪ ቅንፍ ከ servo ቀንድ ጋር ወደ ሰርቪስ አከርካሪ ያያይዙ እና አንድ ላይ ለማገናኘት ከ servo ጋር የመጣውን የቀንድ ክር ይጠቀሙ።
  • አሁን Servo ን በቀሪዎቹ ዊንጮዎች ላይ በጌዝ አንገት አናት ላይ በቅንፍ ላይ ይጫኑ
  • በ 90 ዲግሪ ቅንፍ ላይ ዚፕ-ትስስር ወይም ባለ ሁለት ጎን ቴፕ ያለው ካሜራ ይጫኑ

አስፈላጊ ከሆነ ስዕሎቹን ለመመሪያ ይጠቀሙ።

ደረጃ 5 - ሁሉንም ነገር ሽቦ ማገናኘት

ሁሉንም ወደላይ ማዛወር
ሁሉንም ወደላይ ማዛወር
ሁሉንም ወደላይ ማዛወር
ሁሉንም ወደላይ ማዛወር
ሁሉንም ወደላይ ማዛወር
ሁሉንም ወደላይ ማዛወር
ሁሉንም ወደላይ ማዛወር
ሁሉንም ወደላይ ማዛወር

ለዚህ ሮቦት ሽቦው በትክክል ወደፊት ጠባብ ነው።

ሞተርስ;

አስቀድመው ካላደረጉት ሶልደር በሁለቱም ሞተሮች ላይ ይመራል

ከሮቦቶች ፊት (መጨረሻው ከጉዝ አንገት ጋር) ከእርስዎ ፊት ለፊት

  • በግራ ሞተር ላይ የሞተር ሽቦዎችን ወደ ሰርጡ M1A እና M1B ያገናኙ
  • በትክክለኛው ሞተር ላይ የሞተር ሽቦዎችን ወደ ሰርጡ M2A እና M2B ያገናኙ

የመሬት (GND) ግንኙነቶች;

  • በሮቦክላው ላይ አንድ የመሬት ፒን ከመሬት ዝላይ ቦርድ ጋር ያገናኙ። በሮቦክላው ላይ ያለው የመሬት ሚስማር መስመር ከማዕከሉ ቅርብ ነው (ምስል ይመልከቱ)
  • በ RPI ላይ ፒን 6 ን ወደ ዝላይ ቦርድ ያገናኙ። ለፒን ምደባዎች የ RPI ራስጌ ስዕል ይመልከቱ።
  • GND ን ከ servo ባትሪ ጥቅል ወደ ዝላይ ሰሌዳ ላይ ካሉት ፒኖች አንዱን ያገናኙ።
  • ከዝላይ ሰሌዳው እስከ servos GND ሽቦ ድረስ የመዝለያ ሽቦን ያሂዱ።

RPI ለ RoboClaw:

የ RPI GPIO14 TXD ፒን ከሮቦክላው S1 ፒን ጋር ያገናኙ

ኃይል

  • የ POS ሽቦውን ከ servo ባትሪ ወደ servos POS እርሳስ ያገናኙ
  • የሮቦክላው የሞተር ኃይል ግብዓት ተርሚናል የ POS ሽቦን ከሞተር ባትሪ ወደ POS (+) ያገናኙ። የ GND ተርሚናል ግንኙነቱን ለጊዜው እንተወዋለን።

ደረጃ 6 - RPI ን ማቀናበር

RPI ን በማዋቀር ላይ
RPI ን በማዋቀር ላይ

እዚህ ተጠቃሚው ስለ ሊኑክስ እና ስለ አርፒአይ አንዳንድ የሚያውቅ ይመስለኛል። አንዱን እንዴት ማዋቀር ወይም ማገናኘት እንዳለብኝ አልሸፍንም። በዚህ ላይ እገዛ ከፈለጉ ከዚያ ከዚህ በታች ያሉትን ገጾች ይጠቀሙ።

የ RPI ቅንብርዎን ለማግኘት የሚከተሉትን ገጾች ይመልከቱ።

  • የ RPI መሰረታዊ ቅንብር
  • RPI ፈጣን ጅምር መመሪያ
  • NOOBS ማዋቀር guilde

ለአጠቃላይ ዝላይ ገጾች ፣ የ RPI ዋና ገጽ እና የኢሊኑክስ ገጾች ለመጀመር ጥሩ ቦታዎች ናቸው።

ለ RPI አጠቃላይ የ Wifi ቅንብር ይህንን አገናኝ ይመልከቱ።

በቦት ላይ አንድ ዓይነት ካሜራ ወይም የድር ካሜራ ለመጠቀም ካቀዱ ፣ መሠረታዊዎቹን ፋይሎች ለማግኘት እነዚህን ገጾች ይመልከቱ።

  • የ RPI ካሜራ ማዋቀር
  • ኢሊኒክስ RPI ካሜራ ማዋቀር

የዥረት ቪዲዮ ፦

በ RPI ላይ እንዲሠራ የቪዲዮ ዥረት ለማግኘት ጥቂት መንገዶች አሉ ፣ ግን የምመርጠው ዘዴ እንቅስቃሴን በመጠቀም ነው።

በእርስዎ RPI ላይ እሱን ለመጫን ይህንን ያሂዱ-sudo apt-get install እንቅስቃሴ

ይህ አስተማሪ እንዲሁ ለዥረት ማቀናበር ያበቃል።

ደረጃ 7 - የ RPI ተከታታይ ወደብ በማዋቀር ላይ

ከዚህ ወደብ ከሮቦክላው የሞተር መቆጣጠሪያ ጋር መነጋገር ስለምንፈልግ RX እና TX ን ለመጠቀም የሊኑክስ ኮንሶል ሁነታን ማሰናከል አለብን። ይህንን ለማድረግ ይህንን ዘዴ ወይም ይህንን መሳሪያ መጠቀም ይችላሉ። ሁለቱም በመጨረሻ ተመሳሳይ ነገር ስለሚያደርጉ ምርጫው ዘዴው ላይ የእርስዎ ነው።

ደረጃ 8 የ Python ሞጁሎችን መጫን

በ RPI ላይ የተጫነ ፓይዘን እና እንዲሁም የፓይዘን ጥቅል ጫኝ ፓይፕ ያስፈልግዎታል።

ፒፕ ለመጫን የሚከተሉትን ያድርጉ

  1. sudo apt-get install Python-setuptools ን ይጫኑ
  2. sudo easy_install pip

ከዚያም ፦

  1. sudo pip የመጫኛ ብልቃጥ
  2. sudo pip መጫኛ
  3. sudo pip RPIO ን ይጫኑ

ይህ ኮዱ እንዲሠራ የሚያስፈልጉ ሁሉም ሞጁሎች ይሆናሉ።

ደረጃ 9: RoboClaw ን ማቀናበር

በ 19200 ባውድ በመደበኛ የ Serial Mode ውስጥ ከሮቦክላው ጋር የሚነጋገር የሮቦት ኮድ አለኝ።

RoboClaw ን ለማዋቀር ይህንን ያድርጉ

  1. በሮቦክላው ላይ “MODE” ቁልፍን ይምቱ
  2. በ LED መዘግየቶች መካከል 5 (አምስት) ጊዜ እስኪያበራ ድረስ የተቀመጠውን ቁልፍ ይምቱ
  3. ለማከማቸት የ “LIPO” ቁልፍን ይምቱ
  4. በመዘግየቱ መካከል ኤልኢዲ 3 (ሶስት) ጊዜ እስኪያበራ ድረስ በመቀጠል የ “SET” ቁልፍን ይምቱ
  5. ለማከማቸት የ LIPO ቁልፍን ይምቱ

የሞተር መቆጣጠሪያውን ለማቀናበር ያ ነው። አስፈላጊ ከሆነ ለበለጠ መረጃ ከላይ የተገናኘውን ፒዲኤፍ ይመልከቱ።

ደረጃ 10 - የሮቨር ፕሮግራም/ፋይሎችን መጫን

በ pi ተጠቃሚ ማውጫዎ ውስጥ የ rover.zip ፋይልን ወደ RPI ያውርዱ እና ይቅዱ።

ሊኑክስን ወይም ማክን እያሄዱ ከሆነ እሱን ለማድረግ ‹scp› ን መጠቀም ይችላሉ-

scp ~/ሥፍራ/የ/ፋይሉ/rover.zip pi@your_rpi_ip:/~

ለዊንዶውስ ፣ pscp ን ማውረድ እና መጠቀም እና ከዚያ ማድረግ ይችላሉ-

pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/~

የዚፕ ፋይሉ ወደ RPI ከተገለበጠ በኋላ እንደ ፒ ተጠቃሚ ይግቡ።

አሁን አሂድ ፦

ዚፕ ሮቨር.ዚፕ

ይህ ፋይሎቹን ‹ሮቨር› ወደሚባል አቃፊ ያራግፋል እና በዚያ አቃፊ ስር የሚከተለው ይኖረዋል

  • restrover.py (ለሮቦቱ የፓይዘን ኮድ)
  • የማይንቀሳቀስ (በመቆጣጠሪያ ገጹ ላይ ላሉት አዝራሮች የምስል ፋይሎችን ይይዛል)
  • አብነቶች (የ index.htlm ፋይልን ፣ የቁጥጥር ድር ገጹን ይይዛል)

የድር ካሜራ እየተጠቀሙ ከሆነ ፣ በአብነት አቃፊው ውስጥ ካለው የ index.html ፋይል ታችኛው ክፍል አጠገብ ያለውን መስመር ይለውጡ። ለቪዲዮ ዥረትዎ ከ src ዩአርኤል ጋር ለማዛመድ በ IFRAME መስመር ውስጥ ዩአርኤሉን ይለውጡ።

ደረጃ 11: ቦት ወደላይ መጀመር

Bot Up ን ማስጀመር
Bot Up ን ማስጀመር

የዩኤስቢ ኃይልን ከ RPI ጋር ያገናኙ።

የቦት ኮዱን ለማስጀመር እንደ ፒ ተጠቃሚ ይግቡ እና ያሂዱ

  • ሲዲ ሮቨር
  • sudo python restrover.py

ሁሉም ደህና ከሆነ ፣ በዚህ ደረጃ ከምስሉ ጋር ተመሳሳይ የሆነ ማያ ገጽ ማየት አለብዎት

ማንኛቸውም ስህተቶች ወይም ችግሮች ካዩ ወደ ፊት ከመሄድዎ በፊት እነሱን ማስተካከል ይኖርብዎታል።

አሁን የ GND (-) ሽቦውን በሮቦክላው የሞተር ኃይል ግብዓት ላይ ወደ NEG (-) ተርሚናል ያገናኙ።

ደረጃ 12 የቦት መቆጣጠሪያ ገጽን መድረስ

የቦት መቆጣጠሪያ ገጽን መድረስ
የቦት መቆጣጠሪያ ገጽን መድረስ
የቦት መቆጣጠሪያ ገጽን መድረስ
የቦት መቆጣጠሪያ ገጽን መድረስ

የሮቦቱ ፓይዘን ስክሪፕት ከሮጠ በኋላ ሮቦኮላውን ያብሩ እና ከዚያ ወደ የእርስዎ RPI ip ይሂዱ።

your_rpi_ip

በምስሎቹ ላይ እንደሚታየው የድር መቆጣጠሪያ ገጽ ብቅ ሲል ማየት አለብዎት። ካልሆነ ፣ የ RPI ውፅዓት ተርሚናልዎን ይፈትሹ እና ማንኛውንም ስህተቶች ይፈልጉ እና ያርሟቸው።

አንዴ በገጹ ላይ ፣ ቦቱን ለመቆጣጠር ዝግጁ ነዎት።

ሮቦቱ በ “ሜድ ሩጫ” ቅንብር እና በመካከለኛ ፍጥነት ይጀምራል።

ቦቱ በገጹ ላይ ባሉት አዝራሮች ወይም በቁልፍ ሰሌዳው ላይ ባሉ ቁልፎች ቁጥጥር ሊደረግበት ይችላል።

ቁልፎቹ -

  • w - ወደ ፊት
  • z - ወደኋላ/ወደኋላ
  • ሀ - ረጅም የግራ መዞር
  • s - ረጅም የቀኝ መዞር
  • q - አጭር የግራ መዞሪያ
  • ሠ - አጭር የቀኝ መዞር
  • 1 - የፓን ካሜራ ቀርቷል
  • 2 - የፓን ካሜራ ቀኝ
  • 3 - ድስት ሙሉ ግራ
  • 4 - ሙሉ ቀኝ መጥበሻ
  • / - የቤት/ ማዕከላዊ ካሜራ
  • ሸ - ሮቦት አቁም/አቁም

በተላኩ ትዕዛዞች መካከል ግማሽ ሰከንድ የመዘግየት ቋት አለ። አላስፈላጊ ተደጋጋሚ ትዕዛዞችን ለማስወገድ ይህንን አደረግሁ። ከፈለጉ ይህንን ከኮዱ ማስወገድ ይችላሉ (በ index.html)

የተቀሩት መቆጣጠሪያዎች እና እሱን መቆጣጠር እራሱ ገላጭ መሆን አለበት።

ደረጃ 13 የ Python/Flask ኮድ

ይህ ቦት ፓይዘን እና የፍላሽ ድር ማዕቀፍ ይጠቀማል። ፍላጎት ካለዎት እዚህ ስለ ፍላስክ የበለጠ ማወቅ ይችላሉ።

ከፍላሽ መተግበሪያ እና ከተለመደው የፓይዘን ስክሪፕት ትልቁ ልዩነት የዩአርአይ አያያዝን ለማከናወን የሚያገለግል @app.route ክፍል/ዘዴ ነው። ከዚህ ውጭ ለአብዛኛው ክፍል በጣም የተለመደ ፓይዘን ነው።

#!/usr/bin/env ፓይዘን

# # Wifi/በድር የሚነዳ ሮቨር # # በ ስኮት ቤስሌይ ተፃፈ - 2015 # # RPIO ፣ pyserial እና Flask # የማስመጣት ጊዜ ማስመጫ ተከታታይን ከ RPIO ማስመጣት PWM ከፋሲ ማስመጣት Flask ፣ render_template ፣ app app = Flask (_name_ ፣ static_url_path =”) ይጠቀማል።) ከሮቦክላው የሞተር ተቆጣጣሪ ሙከራ ጋር ለመነጋገር # ከኮም ወደብ ጋር ይገናኙ - # ከ 19200 roboclaw = serial የተለየ ከሆነ የባውድ ዋጋን እዚህ ይለውጡ። ተገኝቷል ") sys.exit (0) # የፍጥነት እና የመኪና መቆጣጠሪያ ተለዋዋጮች last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Servo ገለልተኛ አቋም (ቤት) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18 ፣ servo_pos) # ጊዜን ለማስተካከል ትንሽ መኖር። እንቅልፍ (3) # # የ URI ተቆጣጣሪዎች - ሁሉም የቦት ገጽ እርምጃዎች እዚህ ተከናውነዋል # # የቦቶች መቆጣጠሪያ ገጽን (መነሻ ገጽ) @app.route ("/") ይላኩ።) def index (): render_template ('index.html' ፣ name = No) @app.route ("/forward") def forward (): global last_direction, run_ti እኔ አተም "ወደፊት" go_forward () last_direction = 0 # መተኛት 100ms + run_time time. እንቅልፍ (0.100 + run_time) # ቀጣይ ካልሆነ ሩጫ_ ሰዓት> 0: ካለፈው ዘግይተው ያቁሙ> 0: last_direction = -1 ማቆም () መመለስ "ok" @ app.route ("/ወደ ኋላ") def ወደ ኋላ (): ዓለም አቀፋዊ የመጨረሻ_አቅጣጫ ፣ የአሂድ_ጊዜ ህትመት "ወደኋላ" go_backward () last_direction = 1 # መተኛት 100ms + run_time time. እንቅልፍ (0.100 + run_time) # ቀጣይ ካልሆነ ፣ ከዚያ ከዘገዩ በኋላ ያቁሙ if run_time> 0: last_direction = -1 stop () "ok" @app.route ("/left") def left (): global last_direction, turn_tm_offset print "left" go_left () last_direction = -1 # sleep @1 /2 ሰከንድ. እንቅልፍ (0.500 - turn_tm_offset) # stop stop () time.sleep (0.100) return "ok" @app.route ("/right") def right (): global last_direction, turn_tm_offset print "right" go_right () # እንቅልፍ @1/2 ሁለተኛ ጊዜ። እንቅልፍ (0.500 - turn_tm_offset) last_direction = -1 # stop stop () time.sleep (0.100) return “ok” @app.route ("/ltforward") def ltforward (): ዓለም አቀፋዊ የመጨረሻ_አቅጣጫ ፣ turn_t m_offset የህትመት "የግራ ወደፊት መዞር" go_left () # እንቅልፍ @1/8 ሰከንድ ሁለተኛ እንቅልፍ። (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop stop () time.sleep (0.100) return "ok" @app.route ("/rtforward") def rtforward (): ዓለም አቀፋዊ የመጨረሻ_አቅጣጫ ፣ turn_tm_offset የህትመት "የቀኝ ወደፊት መዞር" go_right () # እንቅልፍ @1/8 ሁለተኛ ጊዜ. እንቅልፍ (0.250 - (turn_tm_offset/2)) last_direction = -1 # stop stop () time.sleep (0.100) return "ok" @app.route ("/stop") def stop (): global last_direction print "Stop" stop () last_direction = -1 # sleep 100ms time.sleep (0.100) "እሺ" @app.route ("/panlt") def panlf (): አቀፍ servo_pos ህትመት "Panlt" servo_pos -= 100 servo_pos 2500 ከሆነ: servo_pos = 2500 servo.set_servo (18, servo_pos) # እንቅልፍ 150ms ጊዜ. እንቅልፍ (0.150) መመለስ "እሺ" @app.route ("/ቤት") def home (): ዓለም አቀፍ servo_pos የህትመት "መነሻ" servo_pos = 1250 servo.set_servo (18, servo_pos) # እንቅልፍ 150ms time.sleep (0.150) መመለስ "እሺ" @app.route ("/panfull_lt") def panfull_lt (): ዓለም አቀፍ servo_pos ህትመት "ፓን ሙሉ l eft "servo_pos = 500 servo.set_servo (18 ፣ servo_pos) # እንቅልፍ 150ms ጊዜ. እንቅልፍ (0.150) መመለስ" እሺ " @app.route ("/panfull_rt ") def panfull_rt (): ዓለም አቀፍ servo_pos ህትመት" ፓን ሙሉ ቀኝ "servo_pos = 2500 servo. የመጨረሻ_አቅጣጫ == 0: go_forward () የመጨረሻ_አቅጣጫ == 1: ወደኋላ () # መተኛት 150ms ጊዜ። እንቅልፍ (0.150) “እሺ” @app.route ("/speed_mid") def speed_mid (): ዓለም አቀፋዊ የፍጥነት_ኦፍሴት ፣ የመጨረሻ_አቅጣጫ ፣ turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # last_direction == 0: go_forward () last_direction == 1: go_backward () # sleep 150ms time.sleep (0.1) "እሺ" @app.route ("/speed_hi") def speed_hi (): አቀፍ speed_offset, last_direction, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0.332 # last_direction == 0: go_forward () last_direction == 1: go_forward () # መተኛት 150ms ጊዜ። ") def ቀጣይ (): ዓለም አቀፍ የ run_time ህትመት" ቀጣይ ሩጫ "run_time = 0 # እንቅልፍ 100ms time.sleep (0.100) return" ok " @app.route ("/mid_run ") def mid_run (): global run_time print" Mid አሂድ "run_time = 0.750 stop () # sleep 100ms time. እንቅልፍ (0.100) መመለስ" ok " @app.route ("/short_time ") def short_time (): ዓለም አቀፍ run_time ህትመት" አጭር ሩጫ "run_time = 0.300 stop () # መተኛት 100ms ጊዜ። እንቅልፍ (0.100) መመለስ “እሺ” # # የሞተር ድራይቭ ተግባራት # def go_forward (): የፍጥነት_ፍጥነት ከሆነ ዓለም አቀፋዊ የፍጥነት_ፍጥነት! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) ሌላ: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): የፍጥነት_ፍጥነት ከሆነ ዓለም አቀፍ የፍጥነት_ፍጥነት! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.wri te (chr (255 - speed_offset)) ሌላ - roboclaw.write (chr (1 + speed_offset)) chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) ሌላ - roboclaw.write (chr (1 + speed_offset)) speed_offset! = 42 ፦ roboclaw.write (chr (1 + speed_offset))) def halt (): roboclaw.write (chr (0)) _name_ == "_main_": app.run (አስተናጋጅ = '0.0.0.0' ፣ ወደብ = 80 ፣ አርም = እውነት)

ከ Flask የማረም መረጃ ካልፈለጉ ወይም በ app.run መስመር ላይ ‹ሐሰተኛ› የሚለውን አርም ያዘጋጁ።

_name_ == "_main_" ከሆነ

app.run (አስተናጋጅ = '0.0.0.0' ፣ ወደብ = 80 ፣ ማረም = ውሸት)

እንዲሁም የ Flask http አገልጋይ እዚህ የሚያዳምጠውን ወደብ መለወጥም ይችላሉ።

ደረጃ 14 - ሌላ ሃርድዌር መጠቀም

እንደ ሌላ የኤስቢሲ ዓይነት (ነጠላ ቦርድ ኮምፒተር) ሌላ ሃርድዌር ለመጠቀም ከፈለጉ ፒቶን እና ፍላስክን እንደ ቢግል አጥንት ፣ ፒሲዲዩኖ ወዘተ ባሉ ሌሎች ሰሌዳዎች ላይ ማስኬድ ትንሽ ችግሮች ሊኖሩዎት ይገባል… ከጂፒዮ ጋር ለማዛመድ ኮዱን መለወጥ ይኖርብዎታል። የአዲሱ ቦርድ የ servo የመንዳት ችሎታን አቀማመጥ እና ይጠቀሙ።

ሌላ ዓይነት የሞተር አሽከርካሪ ለመጠቀም ፣ ተተኪው የሞተር ሾፌሩ ሞተሩ ያንን የተለየ ተግባር እንዲሠራ ለማድረግ የ go_forward ፣ go_backward ፣ go_left ፣ go_right እና የማቆም ተግባሮችን ማሻሻል ብቻ ያስፈልግዎታል።

የሚመከር: