ዝርዝር ሁኔታ:

Servodriver- ቦርድ ከ Python-GUI እና Arduino ጋር: 5 ደረጃዎች
Servodriver- ቦርድ ከ Python-GUI እና Arduino ጋር: 5 ደረጃዎች

ቪዲዮ: Servodriver- ቦርድ ከ Python-GUI እና Arduino ጋር: 5 ደረጃዎች

ቪዲዮ: Servodriver- ቦርድ ከ Python-GUI እና Arduino ጋር: 5 ደረጃዎች
ቪዲዮ: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, ህዳር
Anonim
Servodriver- ቦርድ ከ Python-GUI እና Arduino ጋር
Servodriver- ቦርድ ከ Python-GUI እና Arduino ጋር

የፕሮቶታይፕንግ ወይም የሞዴል አውሮፕላኖችን ሲሠሩ ፣ ብዙውን ጊዜ ችግሩን ያጋጥሙዎታል ፣ ይህም የ servo ጉዞን መፈተሽ ወይም ሰርጎዎችን ወደ መካከለኛ ቦታ ማዘጋጀት አለብዎት።

መላውን የአርሲ-ሲስተምዎን ወይም ሙከራዎን ለመገንባት የማይችሉ ከሆነ ፣ ሰርቪሱን ምን ያህል መግፋት ወይም የመካከለኛው አቀማመጥ የት እንደሚገኝ ፣ ከዚያ ይህ ሰሌዳ ለእርስዎ ነው! አገልጋዩን ወደ ተለዩ ቦታዎች እንዲያንቀሳቅሱ ወይም ወደ ኋላ እና ወደ ፊት እንጓዝ።

በሚገርም ሁኔታ በጥሩ ሁኔታ ይሠራል ፣ በሎፕ ውስጥ ከአንዱ አቀማመጥ ወደ ሌላው በሚወዳደሩ 6 servos እንኳን።

እንዲሁም ፣ ተከታታይን በመጠቀም በ Python-GUI እና Arduino መካከል ስላለው ግንኙነት ለመማር ጥሩ ፕሮጀክት ነው።

ደረጃ 1: የሚያስፈልግዎ…

ለዚህ ፕሮጀክት የሚከተሉትን ያስፈልግዎታል

ሃርድዌር

  • አርዱዲኖ ናኖ ከኬብል ጋር። እኔ ክሎኔን እጠቀም ነበር ፣ እና የፓይዘን ኮድ በእውነቱ የክሎኔን CH340-ቺፕ ይጠብቃል
  • የፕሮቶታይፕ ቦርድ። 7x5 ሴ.ሜ በቂ ነው
  • አንዳንድ 2 ፣ 54 ሚሜ ራስጌዎች እና ፒኖች
  • 1-6 servos
  • ለ servos የኃይል አቅርቦት (በ 4 ባትሪዎች የባትሪ ቦርሳ እጠቀም ነበር)

ሶፍትዌር

  • Python 3:
  • ዩኤስቢ-ነጂ ለ CH340-ቺፕስ-ለ google340 ሾፌሮች ለአሽከርካሪዎች ብቻ google
  • አርዱዲኖ አይዲኢ

ደረጃ 2 ቦርዱን መሸጥ

ቦርዱን መሸጥ
ቦርዱን መሸጥ

በስዕሉ ላይ ባለው ፍሪቲንግ መሠረት የሽያጭ ሥራው በቀጥታ ወደ ፊት ቀጥሏል። ልክ እርግጠኛ ይሁኑ ፣ ሰርጎቹን በቀላሉ ወደ 3-ፒን-ረድፎች ማያያዝ ይችላሉ።

  • ባለ 3-ፒን ረድፎች ከአርዱዲኖ ናኖ ዲጂታል ፒን 3 ፣ 5 ፣ 6 ፣ 9 ፣ 10 እና 11 ጋር ተያይዘዋል።
  • ቀይ ሽቦ ከአርዱዲኖ 5V ፒን ጋር ተያይ isል
  • ጥቁር ሽቦው ከአርዱዲኖው GND-pin ጋር ተገናኝቷል
  • ከ 3-ፒን ረድፎች በታች ያሉት ጥንድ ጥንድዎች የተለመደው RC- ተቀባዩ የኃይል አቅርቦትን ለማያያዝ የታሰቡ ናቸው ፣ እንደፈለጉት ማያያዣዎችን ማከል ይችላሉ ፣ እንደ ተርሚናሎች ፣ ኤክስቲ-አያያctorsች ፣ JST ወይም… ወይም…

በግለሰብ ደረጃ አርዱዲኖን ለማስገባት የሴት ራስጌዎችን ረድፎች እወዳለሁ ፣ ግን ያ የእርስዎ ነው።

እባክዎን ያስተውሉ ፣ አጫጭር የሴት ራስጌዎች ለሙከራ ዓላማዎች የአርዲኖኖን 5 ቮ ምንጭ በመጠቀም ሰርቪሱን እንዲያቀርቡ የሚያስችል ዝላይ ነው። በጣም ካወጡት ፣ አርዱinoኖ እንደገና ይጀመራል እና ትክክለኛውን ፍጥነት ያራግፋል። ሌላ የኃይል አቅርቦት ከማያያዝዎ በፊት መወገድ አለባቸው።

ደረጃ 3: አርዱዲኖን ማቀናበር

የ Arduino IDE ን ይጫኑ እና አርዱዲኖ ናኖውን ከተያያዘው ስዕል ጋር ያብሩ።

ደረጃ 4 Python ን ማቀናበር

Python ን ማቀናበር
Python ን ማቀናበር

ካወረዱ በኋላ Python 3 ን ይጫኑ። “PATH”-ተለዋዋጭ ለመፍጠር አማራጩን መፈተሽዎን ያረጋግጡ።

ፒፕን በመጠቀም ሁለት ተጨማሪ ጥቅሎችን መጫን ያስፈልግዎታል። ለዚያ “ዊንዶውስ”-ቁልፍን ይጫኑ ፣ “cmd” ብለው ይተይቡ እና “አስገባ” ን ይምቱ። በትእዛዝ መጠየቂያ ውስጥ የሚከተሉትን ትዕዛዞች ይተይቡ

  • pip ጭነት ተከታታይ
  • piip pyserial ን ይጫኑ
  • pip install tkinter

እንደሚመለከቱት ፣ pyserial ተከታታይን መተካት ስላለበት ፣ ምናልባት በጣም ቀልጣፋ ላይሆን የሚችል ሞጁሎች ተከታታይ እንዲሁም ፒሲየር እፈልጋለሁ። የሆነ ሆኖ ይሠራል እና እኔ ገና መማር እጀምራለሁ;).

በ IDE ውስጥ ፓይዘን-ስክሪፕቱን ይክፈቱ እና አያሂዱ ፣ ወይም ከተርሚናል በቀጥታ ያሂዱ።

በተቆልቋይ ምናሌ ውስጥ በሁለት ሁነታዎች መካከል “ቀጥታ ሂድ” እና “ፒንግ ፓንግ” መካከል መምረጥ ይችላሉ።

  • ቀጥ ብለው ይሂዱ-በመጀመሪያው አምድ ውስጥ በማይክሮ ሰከንዶች ውስጥ ሰርቪ-አቀማመጥን ያስገቡ እና ሰርቪው ወደተጠቀሰው ቦታ እንዲሄድ “ጀምር” ን ይምቱ።
  • ፒንግ ፓንግ - በሁለተኛው እና በሦስተኛው ዓምድ ውስጥ የታችኛው ወሰን እና የላይኛው ወሰን ያስገቡ። ያኛው አገልጋዩ ወደ ኋላ እና ወደ ኋላ የሚሄድበት የታችኛው እና የላይኛው አቀማመጥ ነው። በ “ፒንግ ፓንግ ሰዓት” አምድ ውስጥ አገልጋዩ የላይኛው ወይም የታችኛው ቦታ ላይ ሲደርስ የሚጠብቀውን በሚሊሰከንዶች ውስጥ አንድ ጊዜ መግለፅ ይችላሉ። “ጀምር” ን ይምቱ እና አገልጋዩ ወደ ኋላ እና ወደ ፊት መንቀሳቀስ ይጀምራል ፣ “አቁም” ን ይምቱ እና አገልጋዩ ያቆማል።

ደረጃ 5 አስማት በሚከሰትበት

በመጨረሻ ግን ቢያንስ በፒቶን እና በአርዱዲኖ መካከል ወደ ትንሽ ተከታታይ ግንኙነት ለመግባት ለሚፈልጉት አንዳንድ ዝርዝሮችን ኮዱን መጠቆም እፈልጋለሁ።

አሁን ፣ በ Python ፕሮግራም ውስጥ ምን ይሆናል?

በመጀመሪያ ደረጃ ፣ ፕሮግራሙ ይፈትሻል ፣ በዚህ መስመር ከ COM- ወደቦች ጋር የተገናኘውን እና ወደ ዝርዝር ያስቀምጠዋል።

self. COMPortsList = ዝርዝር (serial.tools.list_ports.comports ())

ከዚያም አንድ የታወቀ CH340-ቺፕ እስኪያገኝ ድረስ ዝርዝሩን ይፈትሻል ፣ ያስቀምጠዋል እና ከዚያ ከ ‹‹Lop›› በኋላ ተከታታይ ግንኙነት ይመሰርታል። ልብ ይበሉ ፣ የመጀመሪው CH340 እንደተገኘ ፎር-ሉፕ ይሰብራል።

ለፒ ውስጥ በራስ. COMPortsList: p "1 ውስጥ ከሆነ CH340" ከሆነ # Arduino Clone self በመፈለግ ላይ ።COMPort = p [0] ሌላ መስበር ሌላውን ማለፍ - ራስን ማለፍ - ሰር = ተከታታይ - ተከታታይ (ራስ. COMPort ፣ 57600)

ተከታታይ ግንኙነቱ ከ 57600 ባውድ ጋር ከኮም-ወደብ ጋር ተቋቋመ።

እና የአርዱዲኖ ኮድ ምን ያደርጋል? ደህና ፣ አርዱዲኖ አንድ ኮም-ወደብ ብቻ ስላለው ፣ ተከታታይ ግንኙነቱ አንድ መስመር ብቻ ነው-

Serial.begin (57600);

አሁን ለመገናኘት ሁለቱንም ወደቦች መጠቀም እንችላለን። በዚህ ሁኔታ ፣ ከፓይዘን እስከ አርዱinoኖ ያሉ መልእክቶች ብቻ። መልእክቶች እዚህ የተላኩት ከፓይዘን ነው። ተከታታይ ግንኙነት ባይት እንደ ነባሪ ያስተላልፋል። ያ ውሂብን ለመላክ ፈጣኑ መንገድ ነው እና እኔ እስከማውቀው ድረስ አሁንም በጣም የተስፋፋ ነው። ስለዚህ ለሴሩ ቁጥር (ለምሳሌ አርዱinoኖ የትኛው servo እንደሚንቀሳቀስ ያውቃል) እና በማይክሮ ሰከንዶች ውስጥ ያለው ቦታ ወደ ባይት ይቀየራል።

ትዕዛዝ = struct.pack ('> B' ፣ self. Place) # ውስጠ-ተለዋዋጭ "self. Place" ወደ ባይት ይቀየራል

self. Ser.write (ትዕዛዝ) # ባይት በ Serial-Port Command = int (self. ServoPos.get ()) ላይ መጻፍ/ > ለ '፣ ትዕዛዝ) # ውስጡን በባይት ራስን ማዞር። Ser.write (Command) # ባይት በ Serial-Port ላይ መጻፍ

እንዲሁም የመተንተን ውሂብ ጊዜን ይወስዳል (ለምሳሌ አራት ባይት “1” ፣ “2” ፣ “3” እና “0” ን እንደ int 1230 ፣ እንደ አራት የተለያዩ ቻርጆች መተርጎም) እና በአርዱዲኖ ላይ ካልሆነ ያንን ማድረጉ የተሻለ ነው።

በአርዱዲኖ ጎን በኩል የተላከው መረጃ እንደሚከተለው ይወሰዳል።

ከሆነ (Serial.available ()> 1) {// ተከታታይ ውሂብ የሚገኝ ከሆነ ፣ loop ገብቷል c = Serial.read (); // የመጀመሪያው ባይት (የ servo ቁጥር) ወደ ተለዋዋጭ ማይክሮስ = Serial.read () ይቀመጣል። // የ servo ቦታ እዚህ ተቀምጧል ማይክሮስ = ማይክሮስ * 10; }

የሚመከር: