ዝርዝር ሁኔታ:

የአሌክሳ ድምጽ ቁጥጥር የሚደረግበት Raspberry Pi Drone በአይኦት እና በ AWS 6 ደረጃዎች (ከስዕሎች ጋር)
የአሌክሳ ድምጽ ቁጥጥር የሚደረግበት Raspberry Pi Drone በአይኦት እና በ AWS 6 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የአሌክሳ ድምጽ ቁጥጥር የሚደረግበት Raspberry Pi Drone በአይኦት እና በ AWS 6 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የአሌክሳ ድምጽ ቁጥጥር የሚደረግበት Raspberry Pi Drone በአይኦት እና በ AWS 6 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: SKR 1.4 - A4988/DRV8825 configuration 2024, ሀምሌ
Anonim
Image
Image
የአሌክሳ ድምጽ ቁጥጥር የሚደረግበት Raspberry Pi Drone በአይኦቲ እና በ AWS
የአሌክሳ ድምጽ ቁጥጥር የሚደረግበት Raspberry Pi Drone በአይኦቲ እና በ AWS
የአሌክሳ ድምጽ ቁጥጥር የሚደረግበት Raspberry Pi Drone በአይኦቲ እና በ AWS
የአሌክሳ ድምጽ ቁጥጥር የሚደረግበት Raspberry Pi Drone በአይኦቲ እና በ AWS

ሃይ! ስሜ አርማን ይባላል። ከማሳቹሴትስ የ 13 ዓመት ልጅ ነኝ። ከርዕሱ መረዳት እንደምትችሉ ፣ ይህ Raspberry Pi Drone ን እንዴት እንደሚገነቡ ያሳያል። ይህ ተምሳሌት ድሮኖች እንዴት እንደሚሻሻሉ እና ለወደፊቱ ምን ያህል ትልቅ ሚና እንደሚጫወቱ ያሳያል። እኔ እራሴ በ 10 ዓመታት ውስጥ ከእንቅልፌ እንደነቃሁ እና ለእኔ አንድ ቁርስ እንድታገኝ ድሮን ስትጠይቅ ማየት እችላለሁ። አውሮፕላኑ የአማዞን አሌክሳንደርን ፣ የአማዞን ድር አገልግሎቶችን ፣ አይኦትን (የነገሮችን በይነመረብ) ፣ እና በጣም አስፈላጊው ለማሄድ Raspberry Pi ይጠቀማል። ስለ ድሮኖች እና በየቀኑ እንዴት እንደሚሻሻሉ ለማሳየት እና ለማሳወቅ ነው። እርስዎ ስኬታማ እንደሆኑ እና በሂደቱ ውስጥ ስለ ድሮኖች እንደሚማሩ ተስፋ እናደርጋለን። መልካም ዕድል እና ለንባብ እናመሰግናለን። -አርማን

አቅርቦቶች

ምሳሌውን ለመገንባት የተለያዩ የሃርድዌር እና የሶፍትዌር ፍላጎቶች አሉ። ድሮን ለመገንባት እና የተዘረዘሩትን ቴክኖሎጂዎች ለማዋሃድ በ ‹Drone Dojo ›የመስመር ላይ አጋዥ ስልጠና ተጠቅሜያለሁ። ለድሮው እዚህ ያሉትን ክፍሎች ዝርዝር ማግኘት ይችላሉ-

የድሮን ክፍሎች ዝርዝር

የሶፍትዌር መስፈርቶች

  • የአማዞን ድር አገልግሎቶች
  • ላፕቶፕ
  • ተልዕኮ ዕቅድ አውጪ ሶፍትዌር
  • ባሌና ኤተር
  • የማይክሮ ኤስዲ ካርድ ከ Raspbian ፋይል ጋር እዚህ ተገኝቷል
  • የአማዞን አሌክሳ ፣ አካላዊ ወይም ምናባዊ

ደረጃ 1 - ክፍሎችን መሰብሰብ እና መረዳት

ክፍሎችን መሰብሰብ እና መረዳት
ክፍሎችን መሰብሰብ እና መረዳት

በአቅርቦት ዝርዝር ውስጥ የተጠቀሰው እያንዳንዱ ክፍል አስፈላጊ ነው ፣ እና የእያንዳንዱ ክፍል ግልፅ ግንዛቤም እንዲሁ። ክፍሎቹን በመስመር ላይ ማግኘት እና አንዴ ከተሰበሰቡ ማንበብዎን ይቀጥሉ። ስለ ክፍሎቹ ሙሉ ግንዛቤ በ ‹Drone Dojo› አጫዋች ዝርዝር እዚህ ይገኛል። በዩቲዩብ ጣቢያዬ ላይ የ 4 ደቂቃ ማብራሪያ እዚህ ይገኛል። ወደ ድሮኖች ሲመጣ ፣ አብዛኛዎቹ ሰዎች የሚያስቡት ቢኖሩም ፣ ሞተሮች እና ፕሮፔክተሮች ብቻ አይደሉም። ከዚህ በታች የእያንዳንዱ ክፍል መሠረታዊ ዓላማዎች ናቸው።

Raspberry Pi ከ Emlid Navio2 ጋር

ይህ ክፍል በጣም ብዙ ማዕከላዊ አንጎለ ኮምፒውተር እና የድሮው ዋና ነጥብ ነው። Raspberry Pi በ PWM (Pulse Width Modulation Signals) በኩል ወደ ሌሎች የአውሮፕላኑ ክፍሎች እንዲፈጽም ለ Navio2 ትዕዛዞችን የሚልክ የኮምፒተር ሲፒዩ ሆኖ ይሠራል።

2. የኢሲሲ (የኤሌክትሮኒክ የፍጥነት መቆጣጠሪያዎች)

እነዚህ ቢጫ ክፍሎች በማዕቀፉ ስር ይገኛሉ። እነሱ በናቪዮ 4 ተጣብቀዋል ፣ ለእያንዳንዱ ሞተር አንድ። የ PWM ምልክቶችን ሲቀበሉ ፣ ሞተሮቹን ያሽከረክራሉ እና በረራ ይጀምራሉ።

3. ሞተሮች

ምናልባት እርስዎ በደንብ ስለሚያውቋቸው ሞተሮች ብዙ ማብራሪያ አያስፈልጋቸውም። ግፊትን ለመፍጠር እነሱ ይሽከረከራሉ እና ያሽከረክራሉ።

4. ፕሮፔለሮች

ፕሮፔለሮች ለድሮው መብረር ግፊት ይፈጥራሉ። ተሽከርካሪውን ለማንሳት እንደ ሞተሮች በተመሳሳይ አቅጣጫ ይሽከረከራሉ።

5. የባትሪ እና የኃይል ሞጁል

የ LiPo ባትሪ የኃይል ሞጁሉን በመጠቀም ሙሉውን ድሮን በፍሬም በኩል ኃይል ይሰጣል። ለ 15-20 ደቂቃዎች የበረራ ጊዜን ይሰጣል እና እንደ የኃይል ምንጭ ሆኖ ይሠራል።

6. ጂፒኤስ

ጂፒኤስ ከሳተላይቶች ጋር ይገናኛል የድሮውን ቦታ ለማወቅ። ከፍታ ፣ ኬክሮስ እና ኬንትሮስ ይወስናል። ለጂኦፊዚንግ ፣ ለመንገድ ነጥቦች እና እንዲሁም ወደ የተወሰኑ ቦታዎች ወይም አቅጣጫዎች ለመንቀሳቀስ ሊያገለግል ይችላል።

7. የቴሌሜትሪ ሞዱል

የቴሌሜትሪ ሞጁል የእኛን ድሮን ከመሬት መቆጣጠሪያ ጣቢያ ጋር ያገናኛል ፣ በእኛ ሁኔታ ውስጥ ተልእኮ ዕቅድ አውጪ ፣ ክትትል ይደረግበታል።

8. የ RC መቆጣጠሪያ እና ሞጁል ከ PPM ኢንኮደር ጋር

የአርሲአይ ተቆጣጣሪው አውሮፕላኑን በእጅ ለመብረር ምልክቶችን እና ትዕዛዞችን ወደ አርሲ ሞጁል ለማስተላለፍ ሬዲዮን ይጠቀማል። የ PPM ኢንኮደር እነዚህን ምልክቶች ለናቪዮ + አርፒአይ ለማስኬድ እና ለመተግበር ይተረጉመዋል።

9. ፍሬም

ይህ ቀይ እና ነጭ ክፈፍ ለሌሎች ክፍሎች እንዲቀመጡ እንደ መሠረት ወይም መድረክ ሆኖ ይሠራል። ክፈፉ ኤሮዳይናሚክ እና ክብደቱ ቀላል ነው ፣ ስለሆነም ለድሮን ግንባታችን ፍጹም ነው።

አሁን በእያንዳንዱ ክፍል እውቀት ፣ በመጨረሻ ድሮን መገንባት እንችላለን! ወደ ቀጣዩ ደረጃ ይቀጥሉ!

ደረጃ 2 - ድሮን መሰብሰብ

ድሮን መሰብሰብ
ድሮን መሰብሰብ

ይህ እርምጃ በአካላዊ ጥረት ረገድ በጣም ከባድ ሊሆን ይችላል። ሌላ ሰው ለእርዳታ እንዲኖር እመክራለሁ ወይም በክፍሎች ዝርዝር ውስጥ የእገዛ እጅን ለመጠቀም ይሞክሩ። እዚህ ለማሳየት ሂደቱ በጣም ረጅም ነው ፣ ስለዚህ እኔ በ Drone Dojo የተጠቀምኩበትን ሌላ አገናኝ አቀርባለሁ።

Raspberry Pi Drone መገንባት

እንደገና ፣ በጣም ብዙ ዝርዝር ውስጥ ስለማልገባ ፣ የእያንዳንዱን ደረጃ መሠረታዊ ነገሮች ብቻ አጉላለሁ።

1. አቅርቦቶችዎን ያደራጁ - የእኛን ቁሳቁሶች ይሰብስቡ እና በቀላሉ ተደራሽ መሆናቸውን ያረጋግጡ

2. ግንባታዎን ያቅዱ - እርስዎ የሚገነቡትን ንድፍ ለማዘጋጀት በክፈፉ ላይ ክፍሎችዎን ያደራጁ

3. የሽያጭ ሥራ - ይህ ብቻውን ለመሥራት ትንሽ ከባድ ሥራ ነው። ከኤን.ሲ.ሲዎች ጋር ከሞተር ጋር የሚመጡትን የወርቅ ጥይት ማያያዣዎች መሸጥ አለብዎት። በመቀጠልም የክፈፉን የታችኛው ክፍል ወስደው የኢሲሲዎቹን ወደ ታችኛው ክፈፍ ወይም የኃይል ማከፋፈያ ቦርድ መሸጥ አለብዎት። የባትሪ ሞጁል እንዲሁ ለኃይል ማከፋፈያ ቦርድ ይሸጣል

4. ፍሬሙን ማቀናበር - ከዚያ የክፈፉን የላይኛው ክፍል ከእጆቹ ጋር ማያያዝ አለብዎት። ከዚያ በፈለጉት መንገድ Raspberry Pi ን በላዩ ላይ ማያያዝ ይችላሉ። (የተጣራ ቴፕ እጠቀም ነበር)። ከዚያ የ ESC ን ከዚፕ-ትስስሮች ጋር በእጆቹ ላይ ማስጠበቅ ይችላሉ። አሁን ጨርሰናል ማለት ይቻላል።

5. የ RC መቆጣጠሪያን ወደ ተቀባዩ ማሰር - ESC ን በመጠቀም የ RC መቆጣጠሪያውን ለማሰር ከላይ ባለው የአጫዋች ዝርዝር ውስጥ ያሉትን መመሪያዎች ለመከተል ይሞክሩ።

6. በፍሬም ላይ ያሉትን ክፍሎች ማጠናቀቅ - በቴፕሜትሪ ሞጁል ላይ የተጣጣመ ቴፕ ወይም ማሰሪያ ወደ ክፈፉ ላይ። የፒኤምፒኤም ኢንኮደርን እንዲሁ በእጁ ላይ ያያይዙት። አሁን የ ESC ን እና PPM ኢንኮደርን ወደ ናቪዮ ማገናኘት ይችላሉ።

7. የጂፒኤስ ተራራ + ባትሪ - የጂፒኤስ ተራራውን ከተለያዩ ብሎኖች እና ቁርጥራጮች ጋር ያሰባስቡ። ዚፕ ማያያዣዎችን በመጠቀም ፣ ጂፒኤስን ወደ ፍሬም ያያይዙ። በጂፒኤስ ተራራ ላይ በግዴለሽነቱ ምክንያት አልጠቀምኩም ፣ ግን የእርስዎ ነው። በመቀጠል ባትሪውን በሃይል ዲስት መካከል ማስገባት ይችላሉ። ቦርድ። እኔ በኃይል ሞዱል ላይ ወደ ክፈፉም ታጠቅኩ እና እቀዳለሁ። አሁን የእርስዎ ሃርድዌር በጣም የተዋቀረ ነው። አሁን ለጠበቅነው ክፍል!

8. ፕሮፔለሮችን መጫን !!! - በአጫዋች ዝርዝሩ ውስጥ የተጠቀሰውን ሰንጠረዥ በመጠቀም ፕሮፔለሮችን ማጠንከር ይችላሉ። ከዚያ የ ESC ን ወደ ሞተሮች መሰካት ይችላሉ እና በመጨረሻም ድሮን መገንባቱን ጨርሰናል።

የሶፍትዌሩ ቀጣይ ፣ ስለዚህ ይቀጥላል!

ደረጃ 3: Raspberry Pi እና GCS (Mission Planner) በማዋቀር ላይ

Raspberry Pi እና GCS (ተልዕኮ ዕቅድ አውጪ) በማዋቀር ላይ
Raspberry Pi እና GCS (ተልዕኮ ዕቅድ አውጪ) በማዋቀር ላይ

እንደገና ፣ ከመጨረሻው ደረጃ በአጫዋች ዝርዝሩ ውስጥ የበለጠ ዝርዝር መመሪያዎችን ማግኘት ይችላሉ። ሆኖም ፣ ምናልባት RasPi ን እንዴት እንደሚያዋቅሩ ያውቁ ይሆናል። ግን በዚህ ጊዜ እኛ ጭንቅላት አልባ እያደረግነው ነው። ስርዓቱን ከናቪዮ ስርዓተ ክወና ድር ጣቢያ ወደ ማይክሮ ኤስዲ ካርድ ለማቃጠል ባሌና ኤተርን ይጠቀሙ። እሱ ወደ ኮምፒተርዎ ሲሰካ ማስታወሻ ደብተር ++ ን በመጠቀም ወደ wpa supplicant ይሂዱ። ከዚያ በኋላ ከእርስዎ WiFi ጋር ለመገናኘት ለ Raspberry Pi ssid እና የይለፍ ቃል ያስገቡ። ከዚያ SSH የተባለ ፋይል ማከል አለብዎት። ይህ በትእዛዝ መስመር ወይም በሌላ ዘዴ በኩል ሊሆን ይችላል። አሁን SSH እንችላለን። የትእዛዝ መጠየቂያ ወይም tyቲ መጠቀም ይችላሉ። በእኔ ትዕዛዝ ውስጥ ለመገናኘት የትእዛዝ መጠየቂያ ተጠቀምኩ እና “ssh pi@navio” ን ተይቤያለሁ ፣ ወይም የአይፒ አድራሻውን እና በዚያ መንገድ ssh ማግኘት ይችላሉ። ሲገናኙ ናቪዮ ለማዋቀር እና ለማዋቀር ይህንን ቪዲዮ ይጠቀሙ። ቴሌሜትሪውን ለማቀናበር በመጀመሪያ በ Raspberry Pi ላይ አርትዕ ማድረግ አለብዎት። አርትዕ ለማድረግ ይህንን ይከተሉ እና ከሚስዮን ዕቅድ አውጪ ጋር ለመገናኘት ይሞክሩ። ቴሌሜትሪ ካልሰራ ፣ የእርስዎን GCS (የመሬት መቆጣጠሪያ ጣቢያ እንደ ላፕቶፕ) አይፒ ውስጥ በማስገባት የ UDB ግንኙነትን በመጠቀም አርትዕውን መቀልበስ እና ማገናኘት ይችላሉ። ከተልዕኮ ዕቅድ አውጪ ጋር ከተገናኙ በኋላ ሁሉንም የድሮውን ክፍሎች ለማስተካከል የማዋቀሪያ አዋቂን መጠቀም ይችላሉ። እገዛ ከፈለጉ እንደገና ወደ አጫዋች ዝርዝሩ ይመልከቱ። ብዙውን ጊዜ ፣ ባቀናበሩበት ጊዜ ሁል ጊዜ ስህተት አለ ማለት ይቻላል። መላ መፈለግ የዚህ ፕሮጀክት ትልቁ ክፍሎች አንዱ ነው። ስህተቶችዎን ስለማላውቅ እዚያ እዚያ ልረዳዎት አልችልም ፣ ግን አብዛኛዎቹ ስህተቶች ከበይነመረቡ እርዳታ ሊስተካከሉ ይችላሉ። ሁሉም ነገር ዝግጁ ከሆነ ፣ ከዚያ አውሮፕላኑ ለመብረር ዝግጁ ነው! በሚሲዮን ዕቅድ አውጪ ላይ የእርስዎን የ RC መቆጣጠሪያ እና የበረራ ሁነታዎች ማቀናበር ይችላሉ። አውሮፕላኑን ለማስታጠቅ የግራውን በትር ወደ ታች-ቀኝ-ቀኝ ለአምስት ሰከንዶች ለመያዝ ይሞክሩ። መማሪያውን ሳይመለከት መብረርን አልመክርም ምክንያቱም አውሮፕላኑ በጣም ተሰባሪ እና በቀላሉ ለመስበር ቀላል ነው። ለእኔ ፣ ለመጀመሪያ ጊዜ በበረራሁት ፣ የጂፒኤስ ተራራውን እና አንዳንድ ፕሮፔክተሮችን ሰብሬአለሁ። የድምፅ ቁጥጥር የማይፈልጉ ከሆነ ፣ እዚህ ማቆም ይችላሉ። ስለ AWS እና ስለ ፕሮግራሙ ለማወቅ ድሮን ቀጥል!

ደረጃ 4 - ድሮን ከፓይዘን ጋር ለመብረር ፕሮግራም ማድረግ

ከፓይዘን ጋር ለመብረር ድሮን ፕሮግራሚንግ ማድረግ
ከፓይዘን ጋር ለመብረር ድሮን ፕሮግራሚንግ ማድረግ

ወደ AWS ከመግባታችን በፊት በመጀመሪያ አውሮፕላኑን ለመብረር እንዴት መርሃ ግብር እንደምናደርግ መረዳት አለብን። ከመጀመሪያው ቅንብር በኋላ የድምፅ መቆጣጠሪያን ማዋሃድ በጣም ከባድ መሆን የለበትም። እኛ እሱን ለመረዳት መሞከር የምንችለው የመጀመሪያው ነገር ቀለል ያለ የመነሻ እና የመሬት መርሃ ግብር ማዘጋጀት ነው። Raspberry Pi ን ካዋቀሩ በኋላ እንደገና SSH ልንገባበት እንችላለን። የአጫዋች ዝርዝሩን እንደገና ማየት ወይም መመሪያዬን መከተል ይችላሉ።

1. በመጀመሪያ የ ArduPilot ምንጭ ኮድን በ Raspberry Pi ላይ ባለው ማውጫ ውስጥ እናውርድ

mkdir src

ከዚያ የ git clone ን በመጠቀም ፋይሎቹን ከ GitHub ያግኙ

git clone -b Copter -3.6.11

አሁን ወደ /src /ardupilot እንሂድ

ሲዲ ኤስ አር ሲ

ሲዲ አርዱፒሎት

አሁን የምንጭ ፋይሎችን እናስጀምር

git ንዑስ ሞዱል ዝመና --init -በተደጋጋሚ

2. በመቀጠል ፣ Raspberry Pi ላይ firmware ን ማጠናቀር አለብን

ቀጣዮቹን እርምጃዎች ከማድረግዎ በፊት ወደ/src/ardupilot/በሲዲ ማሰስዎን ያረጋግጡ

ከዚያ በመጠቀም ለናቪዮ በተለይ ለማዋሃድ

./waf ማዋቀር -ሰሌዳ = navio2

ከዚያ ማጠናቀር ይችላሉ

./waf -ዒላማዎች ቢን/አርዱኮፕተር

3. አሁን የምንጭ ኮዱን ወደ ናቪዮ መጫን እንችላለን

መጀመሪያ ወደ ትክክለኛው ማውጫ እንሂድ።

cd/etc/systemd/system

ከዚያ ፋይሉን ያርትዑ

sudo vi arducopter.service

ExecStart በሚባልበት ቦታ ፣ እዚያ ካለው ይልቅ የሚከተለውን ያስገቡ

ExecStart =/bin/sh -c "/home/pi/src/arducopter/build/navio2/bin/arducopter $ {ARDUPILOT_OPTS}"

አሁን ፣ የ ardupilot ምንጭ ኮዱን በተግባር ላይ ለማዋል ፣ እኛ ልንጠቀምበት እንችላለን

sudo systemctl ዴሞን-ዳግም ጫን

ከዚያ እንደገና ማስጀመር እንችላለን

sudo systemctl arducopter ን እንደገና ያስጀምሩ

በመጨረሻው እርምጃ በመጨረሻ አርዱፒሎትን በእኛ ድሮን ላይ ማዋቀሩን ጨርሰናል

4. DroneKit ን መጫን

DroneKit ድሮን ለመብረር ፕሮግራም የምንጠቀምበት ሶፍትዌር ነው። አንዳንድ ኮዱን ለመረዳት ሰነዱን እዚህ ማግኘት ይችላሉ። ስክሪፕት ከመፃፋችን በፊት በመጀመሪያ ጥቅሉን በእኛ ድሮን ላይ መጫን አለብን።

የ “ፓይዘን” ፓኬጅን ከ ጋር መጫን እንችላለን

pip install dronekit == 2.9.1

ይህ ምናልባት አዲሱ ስሪት ሊሆን ይችላል ወይም ላይሆን ይችላል ፣ ግን እኔ በመላ መፈለጊያ ላይ መርዳት እንድችል የተጠቀምኩት እሱ ነው።

ከተጫነ ለመፈተሽ ፣ እኛ ማድረግ እንችላለን

pipi ፍሪዝ | grep dronekit

አሁን በመጨረሻ የመጀመሪያውን የፓይዘን ስክሪፕታችንን ለማዘጋጀት ዝግጁ ነን

5. መነሳት_እና_ላንድ.ፒ

ማስጠንቀቂያ! የፒቶን መሰረታዊ ግንዛቤን ለማቋቋም ሀሳብ አቀርባለሁ ፣ ስለዚህ ኮዱን መማር እና መረዳት ይችላሉ። ፕሮግራሙን እራስዎ ለመፃፍ ከፈለጉ ይህንን ቪዲዮ ይከተሉ።

## በመጀመሪያ ይህንን ኮድ ለማከማቸት ማውጫ አይፍጠሩ

cd dk ## እርስዎ እራስዎ ማድረግ ከፈለጉ ፕሮግራም ለመፍጠር vi takeoff_and_land.py ## ን ይጠቀሙ።

ያለበለዚያ እርስዎ ማየት ወይም የተያያዘውን ፋይል መጠቀም እና የፋይል ማስተላለፍ ፕሮቶኮል መጠቀም ይችላሉ። ይህንን ፕሮግራም በኋላ ልንሞክረው እንችላለን። እኛ መጠቀም ያለብን የፓይዘን ፋይል መሆኑን ለማብራራት በመጀመሪያ

chmod +x takeoff_and_land.py

ከዚያ ለመሞከር የሚከተለውን ኮድ ለመጠቀም ይሞክሩ

python takeoff_and_land.py -127.0.0.1:14550 ን ያገናኙ

ለመጀመሪያ ጊዜ ለእኔም አልሰራም። የአገናኝ ጊዜ ማብቂያ ካለ ፣ ከዚያ እርስዎ ማድረግ የሚችሉት አንድ ነገር አለ ብለው አይጨነቁ። ሌላ ጥያቄን ይክፈቱ እና ssh። Mavproxy የሚባል ነገር ለመጫን መሞከር እና እሱን ለማሄድ መሞከር ይችላሉ። ከዚያ በኋላ ሁለቱንም በአንድ ጊዜ ማስኬድ ይችላሉ። ይህ ድሮን ለማገናኘት ሊያግዝ ይገባል። ያ አንዴ ከተጠናቀቀ እኔ ለእርስዎ ፈታኝ ጉዳይ አለኝ። ሌላኛው ፕሮግራም (set_velocity_body.py) ምን እንደሚሰራ እና እንዴት እንደሚሰራ ለማወቅ ይሞክሩ። ካደረጉ ፣ ጥሩ ሥራ።

6. ወደፊት!

አሁን ይህንን ዕውቀት ተጠቅመን የእኛ ድሮን በድምፅ ቁጥጥር እንዲደረግ ማድረግ እንችላለን። የአሌክሳ ድሮን መቆጣጠሪያ ብዙ እነዚህን ባህሪዎች እና ሌሎችን ይጠቀማል። መልካም ዕድል እና ወደፊት!

ደረጃ 5 የድምፅ ቁጥጥርን ለማዋሃድ የአማዞን አሌክሳ እና የአማዞን ድር አገልግሎቶችን በመጠቀም

የድምፅ ቁጥጥርን ለማዋሃድ የአማዞን አሌክሳ እና የአማዞን ድር አገልግሎቶችን በመጠቀም
የድምፅ ቁጥጥርን ለማዋሃድ የአማዞን አሌክሳ እና የአማዞን ድር አገልግሎቶችን በመጠቀም
የድምፅ ቁጥጥርን ለማዋሃድ የአማዞን አሌክሳ እና የአማዞን ድር አገልግሎቶችን በመጠቀም
የድምፅ ቁጥጥርን ለማዋሃድ የአማዞን አሌክሳ እና የአማዞን ድር አገልግሎቶችን በመጠቀም

ይህ ደረጃ በሰነድ ከሚመዘገቡት ውስጥ አንዱ ነው። ይህ ማለት መላ ለመፈለግ በጣም ከባድ ይሆናል ማለት ነው። ወደ ሥራ ማግኘት ብቻ አንድ ወር ገደማ ፣ ምናልባትም የበለጠ ወሰደኝ። እዚህ በጣም አስፈላጊው ነገር ታጋሽ መሆን ነው። ይህ ባህርይ ፣ በእውነተኛ ህይወት ውስጥ ከተተገበረ ፣ ሕይወትን ሊለውጥ ይችላል። እራስዎን ከመሄድ ይልቅ ግሮሰሪዎን ለእርስዎ እንዲያቀርብ ለአሌክሳ መናገር ይችላሉ። ያንን አስቡት! ስለዚህ ያለ ተጨማሪ አድናቆት እንግባበት!

1. Raspberry Pi ን በ AWS IoT ላይ እንደ አንድ ነገር መመዝገብ

IoT (የነገሮች በይነመረብ) ለመጠቀም ፣ አንድ ነገር ያስፈልገናል። ስለዚህ መጀመሪያ AWS IoT ን ለመጠቀም ወደ AWS ኮንሶል መግባት አለብን። ከዚያ ወደ IoT Core ይሂዱ። እዚያ እንደደረሱ አስተዳድር የሚለውን ጠቅ ማድረግ እና ከዚያ አንድ ነገር መፍጠር አለብዎት። ስም ካከሉ በኋላ ፣ ለማገናኘት ፣ የምስክር ወረቀት ያስፈልገናል። የአንድ ጠቅታ ማረጋገጫ ማረጋገጫ ጠቅ እንዲያደርጉ እመክራለሁ። ከዚያ የእውቅና ማረጋገጫ ማያ ገጹን ካዩ በኋላ ፣ ዋናውን CA ጨምሮ እያንዳንዱን እና እያንዳንዱን ቁልፍ ማውረዱን ያረጋግጡ። ከዚያ መሄድ እና የነገሩን ፈጠራ መጨረስ ይችላሉ። ቀጥሎ ፖሊሲ መፍጠር አለብን። ወደ IoT ኮር ይመለሱ። ከዚያ ደህንነቱ ላይ ጠቅ ያድርጉ እና ፖሊሲዎችን ጠቅ ያድርጉ። ከዚያ ፖሊሲ ፍጠር የሚለውን ይምቱ። ከዚያ ስም መፍጠር እና ሀብቶችን ማከል ይችላሉ። በድርጊት ስር iot * ን ይተይቡ እና በሀብት ስር ይተይቡ እና ለውጤት ይፍቀዱ። ከዚያ ወደ ነገርዎ ይመለሱ እና ወደ የምስክር ወረቀትዎ ይሂዱ። እዚህ ከደረሱ ፣ ፖሊሲዎች ላይ ጠቅ ያድርጉ። ከዚያ ፖሊሲዎን ለነገሩ ማያያዝ ይችላሉ እና ሁሉም ተዘጋጅቷል!

2. በ Raspberry Pi ላይ ኮድ ማቀናበር እና ከ IoT ጋር መስተጋብር መፍጠር

ለዚህ ክፍል ፣ ለፋይል ማስተላለፍ የ SFTP ደንበኛ (WinSCP ን እጠቀም ነበር) ያስፈልግዎታል። ከእራሳችን Raspberry Pi ጋር ስንገናኝ ፣ የእውቅና ማረጋገጫ ቁልፎቹን በእጅ መያዝ አለብን። ቁልፍ ፋይሎችን ወደ Raspberry Pi ማስተላለፍ አለብዎት። እንዲሁም በ Raspberry Pi ላይ AWSIoTPythonSDK ን መጫን አለብዎት። ከዚያ በ Raspberry Pi ላይ ወደ dk ማውጫ ይግቡ። ከ IoT ጋር ለመነጋገር የሰጠሁትን የ Alexa Drone መቆጣጠሪያ ፋይልን ይጠቀማሉ። ይህንን ፋይል ለመጠቀም ለመጀመር የ aል ስክሪፕት እጠቀም ነበር። በሆነ ምክንያት ፋይሉን መስቀል ስለማልችል ከዚህ በታች ያለውን ኮድ አሳያለሁ። በሚፈተኑበት ጊዜ ፕሮግራሙ ከ AWS IoT መልዕክቶችን ካልወሰደ አይጨነቁ! የአሌክሳ ድሮን መቆጣጠሪያ ፋይል ከእርስዎ ነገር ጋር ላይስማማ ስለሚችል ይህ የእኔ ጥፋት ሊሆን ይችላል። ስለዚህ ፣ ለማስተካከል ፣ ወደ AWS IoT ይመለሱ እና በግራ ፓነል ላይ ይማሩ የሚለውን ይምቱ። መመሪያዎቹን ይከተሉ እና እንደገና ማስጀመር ሊኖርብዎት ይችላል። ስለሆነው ሁሉ አዝናለሁ. የእርስዎ IoT ከ RasPi ላይ ከፕሮግራሙ ጋር መሥራት ከጀመረ በኋላ እኔ ከሰጠሁት የአሌክሳ ድሮን መቆጣጠሪያ ፋይል የ dronekit ኮድን ማዋሃድ ይችላሉ። ከዚያ በኋላ ፣ እኔ የሰጠሁትን የllል ስክሪፕት ከእርስዎ የምስክር ወረቀቶች እና የእረፍት ኤፒአይ መጨረሻ ነጥብ ከ IoT ይጠቀሙ።

በስህተትet ላይ # አቁም ስክሪፕት -e # የስር CA ፋይል ካለ ለማየት ያረጋግጡ ፣ ካልሆነ ካልሆነ ያውርዱ [! -f./root-CA.crt]; ከዚያ printf "\ n AWS IoT Root CA የምስክር ወረቀት ከ AWS በማውረድ ላይ… / n" curl https://www.amazontrust.com/repository/AmazonRoot…>> root-CA.crt fi # አስቀድሞ ካልተጫነ የ AWS መሣሪያ ኤስዲኬ ይጫኑ። ከሆነ [! -d./aws-iot-device-sdk-python]; ከዚያ printf "\ n AWS SDK ን በመጫን ላይ… / n" git clone https://www.amazontrust.com/repository/AmazonRoot…> pushd aws-iot-device-sdk-python python setup.py ጫን popd fi

በጥቅል የወረዱ የምስክር ወረቀቶችን በመጠቀም # የመጠጥ/ንዑስ ናሙና መተግበሪያን ያሂዱ

printf "\ n የመሮጫ/ንዑስ ናሙና ትግበራ… / n" Python dk/AlexaDroneControl.py -አገናኝ 127.0.0.1:14550 -e "የእርስዎ IoT ARN" -r root -CA.crt -c PiGroundStation01.cert.pem -k PiGroundStation01.private.key

ስሞቹ የተለያዩ ስለሆኑ ይህ ለሁላችሁም አይሰራም። እኔ ከተጠቀምኳቸው ቁልፎች ይልቅ ፋይሉን ሲያስተላልፉ በቁልፍ ስሞችዎ ይተኩ። ፋይሉን ከማስተላለፉ በፊት ከ dk መውጣቱን ያረጋግጡ! ለአሁን ማድረግ ያለብዎት ይህ ብቻ መሆን አለበት።

3. የአሌክሳ ችሎታዎን መገንባት

ይህ እርምጃ ከእውነቱ በጣም ከባድ ይመስላል። በመጀመሪያ ወደ አሌክሳ ገንቢ ኮንሶል መግባት አለብን። ከዚያ ችሎታን ብቻ ይፍጠሩ። ለችሎታዎ ሞዴል ለመምረጥ ሲጠይቅ ፣ ብጁ ይምቱ። ዘዴን ለመምረጥ ሲጠይቅ የራስዎን አቅርቦት ይምቱ። የፈለጉትን ሁሉ መሰየም ይችላሉ። አብነት አያስፈልግም ፣ ስለዚህ ከባዶ መጀመርን ይምረጡ። በመቀጠል ፣ ችሎታዎን ከፈጠሩ በኋላ ፣ በቀኝ በኩል ባለው የማረጋገጫ ዝርዝር ወደ የክህሎት ገንቢ ማያ ገጽ መድረስ አለብዎት። ከዚህ በመነሳት ክህሎታችንን መገንባት መጀመር እንችላለን። በማረጋገጫ ዝርዝሩ ላይ በመጀመሪያ የመጥሪያ ስም ነው። ችሎታዎን እንዲጠራ ለአሌክሳ ይነግሩታል። ለእኔ ፣ የመጥሪያዬን ስም ልክ እንደ ድሮን አድርጌዋለሁ። አሁን ወደ እኛ ዓላማዎች ፣ ንግግሮች እና ቦታዎች መሄድ እንችላለን። እዚህ ፣ ለድሮኑ ትዕዛዞችን ለምሳሌ 1 ሜትር መውጣት ወይም ወደ ቀኝ ወይም ወደ ታች መሄድ ይችላሉ። የእኔ በእውነቱ በአሁኑ ጊዜ ከአንድ ሜትር ጋር ብቻ ይሠራል። በግራ ፓነል ታችኛው ክፍል ላይ የ JSON አርታዒን ጠቅ ማድረግ ይችላሉ። ከዚያ የሚከተለውን ኮድ በእሱ ውስጥ መለጠፍ ይችላሉ።

ኮዱን በ JSON አርታኢ ውስጥ ከለጠፉ በኋላ ፣ በማረጋገጫ ዝርዝሩ ሦስተኛ ደረጃ ላይ ጠቅ ማድረግ ይችላሉ እና እርስዎን የግንኙነት ሞዴልዎን ይገነባል። በዚህ ደረጃ ፣ ለአሁን ይጨርሱዎታል። ለጊዜው የመጨረሻውን ነጥብ ባዶ መተው ይችላሉ!

ደረጃ 4 የ Lambda ተግባርዎን መገንባት

አሁን ይህ እርምጃ እርስዎ እራስዎ ማወቅ ያለብዎት አንዱ ነው። ከአሌክሳ ችሎታ ጋር እንዴት እንደሚገናኙ እነግርዎታለሁ ፣ ግን እርስዎ እራስዎ ኮድ ማድረግ አለብዎት። ስለዚህ ፣ መጀመሪያ ወደ AWS አስተዳደር መሥሪያ ይሂዱ። ከዚያ ወደ ላምባ ይሂዱ። ከዚያ የሚፈልጉትን የፈለጉትን የመሰየም ተግባር መፍጠር ይችላሉ። ከባዶ መፃፍዎን ያረጋግጡ እና የፈለጉትን የፕሮግራም ቋንቋ አሂድ ያድርጉ። Node.js ን እጠቀም ነበር። የአሌክሳ ችሎታን ለመጨመር ፣ ቀስቅሴ ያክሉ እና የአሌክሳ ችሎታዎች ኪት (ASK) ን ይምረጡ። የእርስዎን Lambda ARN ይቅዱ እና ወደ አሌክሳ ችሎታ ይመለሱ። አሁን ፣ ወደ መጨረሻው ነጥብ ይሂዱ። የእርስዎን አርኤን መለጠፍ ፣ ማስቀመጥ እና አዲስ ሞዴል መገንባት ይችላሉ። ከዚያ ፣ የአሌክሳ ችሎታ ችሎታ መታወቂያ ይውሰዱ ፣ እና Lambda ላይ በሚጠይቅዎት ቀስቅሴ ክፍል ውስጥ ይለጥፉት። በመቀጠል በላምዳ ላይ ወደ ታች ይሸብልሉ እና መሰረታዊ ቅንብሮችን ይፈልጉ እና የጊዜ ገደቡን 10 ሰከንዶች ያድርጉ። አሁን ኮዱን ማወቅ የእርስዎ ነው። ለጥቆማዎች ፣ ከዚህ በታች ያሉትን ድር ጣቢያዎች ማድረግ ይችላሉ።

github.com/aws/aws-iot-device-sdk-js

www.hackster.io/veggiebenz/voice-controlle…

እና እኔ ያያያዝኩትን ፋይል መጠቀም ይችላሉ ፣ ግን ያልተሟላ እና አይሰራም።

/ *** የአማዞን አሌክሳ ፣ ላምዳ ፣ 2 ሜትሪ ኤምኤችቲ በመጠቀም የእርስዎን APM / Pixhawk quadcopter በድምፅዎ ይቆጣጠሩ።*/ var awsIot = ይጠይቁ ('aws-iot-device-sdk'); var config = ይጠይቁ ("./ config"); var deviceName = "EchoDroneControl"; // ይህ መሣሪያ በእውነት ተቆጣጣሪ ነው var mqtt_config = {"keyPath": config.privateKey, "certPath": config.certificate, "caPath": config.rootCA, "host": config.host, "port": 8883, "clientId": "Lambda-" + deviceName, // + "-Lambda-" + (new Date (). getTime ()), "region": "us-east-1", "debug": true}; var ctx = ባዶ; var ደንበኛ = ባዶ; // በአይነት (LaunchRequest ፣ IntentRequest ፣ ወዘተ) ላይ በመመስረት የገቢ ጥያቄውን መስመር ላይ ያድርጉ የጥያቄው የ JSON አካል በዝግጅት ልኬት ውስጥ ይሰጣል። exports.handler = ተግባር (ክስተት ፣ አውድ) {ይሞክሩ {console.log (“event.session.application.applicationId =” + event.session.application.applicationId); ctx = አውድ; ከሆነ (ክስተት.session.application.applicationId! == app_id) {ctx.fail ("ልክ ያልሆነ የመተግበሪያ መታወቂያ"); } ደንበኛ = awsIot.device (mqtt_config); ደንበኛ።

ከሆነ (event.session.new) {

onSessionStarted ({requestId: event.request.requestId} ፣ event.session) ፤ } ከሆነ (event.request.type === "LaunchRequest") {onLaunch (event.request, event.session); } ሌላ ከሆነ (event.request.type === "IntentRequest") {onIntent (event.request, event.session); } ሌላ ከሆነ (event.request.type === "SessionEndedRequest") {onSessionEnded (event.request, event.session); ctx.succeed (); }} ያዝ (ሠ) {console.log (“ልዩ በአስተዳዳሪው” + ሠ) ፤ ctx.fail ("ልዩ:" + ሠ); }}; /*** ክፍለ -ጊዜው ሲጀመር ተጠርቷል። */ ተግባር በ ‹SessionStarted› (ክፍለ -ጊዜ -ተጀምሯል ፣ ክፍለ -ጊዜ) {console.log (“onSessionStarted requestId =” + sessionStartedRequest.requestId +”፣ sessionId =” + session.sessionId) ፤ }

/**

* ተጠቃሚው የሚፈልገውን ሳይገልጽ ክህሎቱን ሲጀምር ተጠርቷል። */ ተግባር onLaunch (launchRequest ፣ ክፍለ ጊዜ ፣ መልሶ ጥሪ) {console.log (“onLaunch requestId =” + launchRequest.requestId +”፣ sessionId =” + session.sessionId) ፤ // ወደ ችሎታዎ ማስጀመሪያ ይላኩ። GetWelcomeResponse (መልሶ መደወያ); } /*** ተጠቃሚው ለዚህ ክህሎት ዓላማ ሲገልጽ ተጠርቷል። */ተግባር onIntent (intentionRequest ፣ ክፍለ ጊዜ) {// ፣ ጥሪ መመለስ) {console.log (“onIntent requestId =” + intentionRequest.requestId +”፣ sessionId =” + session.sessionId) ፤ var intention = intentionRequest.intent, intentionName = intentionRequest.intent.name; console.log ("ወደ ሕብረቁምፊ ይጠይቁ =" + JSON.stringify (intentionRequest)); var callback = ባዶ; // (“GoIntent” === intentionName) {doGoIntent (ዓላማ ፣ ክፍለ -ጊዜ) ከሆነ/ ወደ ችሎታዎ ዓላማ ተቆጣጣሪዎች ይላኩ። } ሌላ ከሆነ ("CommandIntent" === intentionName) {doCommandIntent (ዓላማ ፣ ክፍለ -ጊዜ) ፤ } ሌላ ከሆነ ("TurnIntent" === intentionName) {doTurnIntent (ዓላማ ፣ ክፍለ -ጊዜ) ፤ } ሌላ ከሆነ ("HelpIntent" === intentionName) {getWelcomeResponse (); } ሌላ {«ልክ ያልሆነ ዓላማ» መጣል ፤ }} /*** ተጠቃሚው ክፍለ -ጊዜውን ሲያጠናቅቅ ተጠርቷል። * ክህሎቱ ሲመለስ አልተጠራም EndSession = እውነት። */ ተግባር onSessionEnded (sessionEndedRequest ፣ ክፍለ ጊዜ) {console.log (“onSessionEnded requestId =” + sessionEndedRequest.requestId +”፣ sessionId =” + session.sessionId) ፤ // የፅዳት አመክንዮ እዚህ ያክሉ} // --------------- የክህሎቱን ባህሪ የሚቆጣጠሩ ተግባራት -------------------- --- ተግባር getWelcomeResponse () {// አንዳንድ ባህሪዎች እንዲኖሩት ክፍለ-ጊዜውን ለመጀመር ከፈለግን እነዚያን እዚህ ማከል እንችላለን። var sessionAttributes = {}; var cardTitle = "እንኳን ደህና መጡ"; var speechOutput = "ወደ DRONE CONTROL እንኳን በደህና መጡ።"; // ቶዶ - ድሮን በመስመር ላይ ነው ወይስ ከመስመር ውጭ? መስመር ላይ ከሆነ ታጥቋል? var repromptText = "Drone ለትዕዛዝ ዝግጁ"; var shouldEndSession = ሐሰት; ctx.succeed (buildResponse (sessionAttributes ፣ buildSpeechletResponse (cardTitle ፣ speechOutput ፣ repromptText ፣ shouldEndSession))); } /*** የ GO ን ሀሳብ ያስተናግዳል። */ ተግባር doGoIntent (ዓላማ ፣ ክፍለ -ጊዜ ፣ መልሶ ጥሪ) {// var cardTitle = “Drone GO…”; var repromptText = ""; var sessionAttributes = {}; var shouldEndSession = ሐሰት; var speechOutput = ""; var አቅጣጫ = intention.slots. Direction.value; var ርቀት = intention.slots. Distance.value; var አሃድ = intention.slots. Unit.value; var validDirections = ["ወደፊት" ፣ "ወደፊት" ፣ "ወደ ኋላ" ፣ "ተመለስ" ፣ "ቀኝ" ፣ "ግራ" ፣ "ወደ ላይ" ፣ "ወደታች" ፣ "ቀጥታ" ፣ "ከፊት" ፣ "ቀጥታ ወደ ፊት"]; var validUnits = ["እግር" ፣ "እግሮች" ፣ "ሜትር" ፣ "ሜትር" ፣ "ያርድ" ፣ "ያርድ"]; repromptText = "ምን ያህል ርቀት መሄድ እንዳለበት እና በየትኛው አቅጣጫ ላይ ይንገሩኝ"። var ውድቀት = ሐሰት; // ((parseInt (ርቀት)> = 1)) {speechOutput = "እኔ እንድጓዝ የምትፈልገውን ርቀት መረዳት አልቻልኩም" ከሆነ ግብዓቶችን አረጋግጥ ፤ ውድቀት = እውነት; ctx.succeed (buildResponse (sessionAttributes ፣ buildSpeechletResponse (cardTitle ፣ speechOutput ፣ repromptText ፣ shouldEndSession))); } ከሆነ (validDirections.indexOf (አቅጣጫ) == -1) {speechOutput = "እኔ እንድጓዝ የምፈልገውን አቅጣጫ መረዳት አልቻልኩም" ፤ ውድቀት = እውነት; ctx.succeed (buildResponse (sessionAttributes ፣ buildSpeechletResponse (cardTitle ፣ speechOutput ፣ repromptText ፣ shouldEndSession))); } ከሆነ (validUnits.indexOf (unit) == -1) {speechOutput = "እኔ እንድጓዝ የፈለከውን ክፍል መረዳት አልቻልኩም" ውድቀት = እውነት; ctx.succeed (buildResponse (sessionAttributes ፣ buildSpeechletResponse (cardTitle ፣ speechOutput ፣ repromptText ፣ shouldEndSession))); } ከሆነ (! አልተሳካም) {var cardTitle = "Drone going" + direction + "" + distance + "" + unit; speechOutput = "መሄድ" + አቅጣጫ + "" + ርቀት + "" " + አሃድ; mqttPublish (ዓላማ ፣ የክፍለ -ጊዜ አስተዋፅዖዎች ፣ የካርድ ርዕስ ፣ የንግግር ውፅዓት ፣ እንደገና የተፃፈ ጽሑፍ ፣ መሆን ያለበት) }}

ተግባር doCommandIntent (ዓላማ ፣ ክፍለ -ጊዜ ፣ መልሶ ጥሪ) {

// var cardTitle = "Drone COMMAND …"; var repromptText = ባዶ; var sessionAttributes = {}; var shouldEndSession = ሐሰት; var speechOutput = ""; repromptText = "ለድሮው ትዕዛዝ ምን እንደሆነ ንገረኝ"። var ተግባር = intention.slots. Task.value; var validTasks = ["ማስነሳት" ፣ "መሬት" ፣ "አር. ኤል." ፣ "መያዝ" ፣ "መቆየት" ፣ "ማቆም" ፣ "ወደ ማስጀመሪያ መመለስ" ፣ "ፅንስ ማስወረድ"] ፤ ከሆነ (validTasks.indexOf (ተግባር) == -1) {speechOutput = "ትዕዛዙን መረዳት አልቻልኩም"; ctx.succeed (buildResponse (sessionAttributes ፣ buildSpeechletResponse (cardTitle ፣ speechOutput ፣ repromptText ፣ shouldEndSession))); } ሌላ {var cardTitle = "የ Drone ትዕዛዝ ማስፈጸም" + ተግባር; speechOutput = "ትዕዛዝን ማስፈጸም" + ተግባር; mqttPublish (ዓላማ ፣ የክፍለ -ጊዜ አስተዋፅዖዎች ፣ የካርድ ርዕስ ፣ የንግግር ውፅዓት ፣ እንደገና የተፃፈ ጽሑፍ ፣ መሆን ያለበት) }}

ተግባር doTurnIntent (ዓላማ ፣ ክፍለ ጊዜ ፣ መልሶ ጥሪ) {

// var cardTitle = "Drone Turn …"; var repromptText = ባዶ; var sessionAttributes = {}; var shouldEndSession = ሐሰት; var speechOutput = ""; repromptText = "ድሮን እንዴት ማዞር እንደምትፈልግ ንገረኝ"። var አቅጣጫ = intention.slots. Direction.value; var validDirections = ["ቀኝ" ፣ "ግራ" ፣ "ዙሪያ"]; ከሆነ (validDirections.indexOf (አቅጣጫ) == -1) {speechOutput = "የማዞሪያውን አቅጣጫ መረዳት አልቻልኩም" ፤ ctx.succeed (buildResponse (sessionAttributes ፣ buildSpeechletResponse (cardTitle ፣ speechOutput ፣ repromptText ፣ shouldEndSession))); } ሌላ {var cardTitle = "Drone turn" + አቅጣጫ; speechOutput = "ማዞር" + አቅጣጫ; mqttPublish (ዓላማ ፣ የክፍለ -ጊዜ አስተዋፅዖዎች ፣ የካርድ ርዕስ ፣ የንግግር ውፅዓት ፣ እንደገና የተፃፈ ጽሑፍ ፣ መሆን ያለበት) }}

ተግባር mqtt አትም (ዓላማ ፣ ክፍለ -ጊዜ አስተዋፅዖዎች ፣ የካርድ ርዕስ ፣ የንግግር ውፅዓት ፣ ተደጋጋሚ ጽሑፍ ፣ መሆን ያለበት መጨረሻ)

{var strIntent = JSON.stringify (ዓላማ); console.log ("mqttPublish: INTENT text =" + strIntent); // client.publish ("ikw1zr46p50f81z/drone/echo", strIntent, false); ደንበኛ. ህትመት (config.topic, strIntent, false); client.end (); ደንበኛ።);})); ደንበኛ። }

// --------------- ሁሉንም ምላሾች የሚገነቡ ረዳቶች -----------------------

ተግባር buildSpeechletResponse (ርዕስ ፣ ውጤት ፣ repromptText ፣ shouldEndSession) {return {outputSpeech: {type: “PlainText” ፣ text: output} ፣ card: {type: “Simple” ፣ title: title, content: output}, reprompt: {outputSpeech ፦ {type: «PlainText» ፣ text: repromptText}} ፣ shouldEndSession: shouldEndSession}} function buildResponse (sessionAttributes ፣ speechletResponse) {return {version: “1.0” ፣ sessionAtributes: sessionAtributes ፣ response: speechletResponse}}

የሚመከር: