Orodha ya maudhui:

Alexa Sauti Iliyodhibitiwa Raspberry Pi Drone Na IoT na AWS: 6 Hatua (na Picha)
Alexa Sauti Iliyodhibitiwa Raspberry Pi Drone Na IoT na AWS: 6 Hatua (na Picha)

Video: Alexa Sauti Iliyodhibitiwa Raspberry Pi Drone Na IoT na AWS: 6 Hatua (na Picha)

Video: Alexa Sauti Iliyodhibitiwa Raspberry Pi Drone Na IoT na AWS: 6 Hatua (na Picha)
Video: CS50 2013 - Week 10, continued 2024, Novemba
Anonim
Image
Image
Alexa Sauti Iliyodhibitiwa Raspberry Pi Drone Na IoT na AWS
Alexa Sauti Iliyodhibitiwa Raspberry Pi Drone Na IoT na AWS
Alexa Sauti Iliyodhibitiwa Raspberry Pi Drone Na IoT na AWS
Alexa Sauti Iliyodhibitiwa Raspberry Pi Drone Na IoT na AWS

Halo! Jina langu ni Armaan. Mimi ni mvulana wa miaka 13 kutoka Massachusetts. Mafunzo haya yanaonyesha, kama unaweza kutaja kutoka kichwa, jinsi ya kujenga Rone ya Raspberry Pi. Mfano huu unaonyesha jinsi ndege zisizo na rubani zinabadilika na pia sehemu kubwa wanayoweza kucheza baadaye. Ninaweza kujiona nikiamka katika miaka 10 na kuuliza drone anipatie kiamsha kinywa. Drone hutumia Amazon Alexa, Huduma za Wavuti za Amazon, IoT (Mtandao wa Vitu), na muhimu zaidi Raspberry Pi kuendesha. Inamaanisha kuonyesha na kuarifu juu ya drones na jinsi wanavyoboresha kila siku. Tunatumahi umefanikiwa na ujifunze juu ya drones katika mchakato. Bahati nzuri na asante kwa kusoma. -Armaan

Vifaa

Ili kujenga mfano kuna vifaa anuwai na mahitaji ya programu. Nilitumia mafunzo ya mkondoni na Drone Dojo kujenga drone na kuunganisha teknolojia zilizoorodheshwa. Kwa drone unaweza kupata orodha ya sehemu hapa:

Orodha ya Sehemu za Drone

Mahitaji ya Programu:

  • Huduma za Wavuti za Amazon
  • Laptop
  • Programu ya Mpangaji wa Ujumbe
  • Balena Etcher
  • Kadi ya MicroSD na Faili ya Raspbian inapatikana hapa
  • Amazon Alexa, halisi au halisi

Hatua ya 1: Kukusanya na Kuelewa Sehemu

Kukusanya na Kuelewa Sehemu
Kukusanya na Kuelewa Sehemu

Kila sehemu iliyotajwa katika orodha ya usambazaji ni muhimu, na ndivyo ilivyo uelewa wazi wa kila sehemu. Unaweza kupata sehemu hizo mkondoni na mara moja zikakusanywa, endelea kusoma. Orodha ya kucheza na Drone Dojo kwa uelewa kamili wa sehemu zinaweza kupatikana hapa. Maelezo ya dakika 4 kwenye kituo changu cha youtube yanaweza kupatikana hapa. Linapokuja suala la drones sehemu pekee, licha ya kile watu wengi wanafikiria, sio tu motors na propellers. Chini ni malengo ya msingi ya kila sehemu.

Raspberry Pi na Emlid Navio2

Sehemu hii ni processor kuu na hatua kuu ya drone. Raspberry Pi hufanya kama CPU ya kompyuta ambayo hutuma amri kwa Navio2 kutekeleza kupitia PWM (Ishara za Kupanua Upana wa Pulse) kwa sehemu zingine za drone

2. ESC (Wadhibiti Kasi za Kielektroniki)

Sehemu hizi za manjano hupatikana chini ya fremu. Zimefungwa 4 kwa Navio, moja kwa kila motor. Baada ya kupokea ishara za PWM, huzunguka motors na kuanza kukimbia.

3. Motors

Motors hazihitaji maelezo mengi kwa sababu labda unawajua. Wanazunguka na kuzunguka viboreshaji ili kuunda msukumo.

4. Vinjari

Propellers huunda msukumo kwa drone kuruka. Wanazunguka kwa mwelekeo sawa na motors kuinua gari.

5. Moduli ya Betri na Nguvu

Batri ya LiPo inawezesha drone nzima kupitia fremu kutumia moduli ya nguvu. Inatoa kama dakika 15-20 ya wakati wa kukimbia na hufanya kama chanzo cha nguvu.

6. GPS

GPS inawasiliana na satelaiti ili kujua msimamo wa drone. Huamua urefu, latitudo, na longitudo. Inaweza kutumika kwa Ufungaji geofting, njia za njia, na pia kuhamia kwenye nafasi au mwelekeo fulani.

7. Moduli ya Telemetry

Moduli ya telemetry inaunganisha drone yetu na kituo cha kudhibiti ardhi, kwa upande wetu Mpangaji wa Ujumbe, kufuatiliwa.

8. Mdhibiti wa RC na Moduli pamoja na Encoder ya PPM

Mdhibiti wa RC hutumia redio kupitisha ishara na maagizo kwa Moduli ya RC kujaribu rubani kwa mikono. Encoder ya PPM hutafsiri ishara hizi kwa Navio + RPI kushughulikia na kutekeleza.

9. Sura

Sura hii nyekundu na nyeupe hufanya kama msingi au jukwaa la sehemu zingine kuwekwa. Sura hiyo ni ya aerodynamic na nyepesi, kwa hivyo inafaa kwa ujenzi wetu wa drone.

Sasa kwa maarifa ya kila sehemu, mwishowe tunaweza kujenga drone! Endelea kwa hatua inayofuata!

Hatua ya 2: Kukusanya Drone

Kukusanya Drone
Kukusanya Drone

Hatua hii labda ni ngumu zaidi kwa suala la juhudi za mwili. Ninapendekeza kuwa na mtu mwingine kwa msaada au jaribu kutumia mkono wa kusaidia katika orodha ya sehemu. Mchakato ni mrefu sana kuonyesha hapa, kwa hivyo nitatoa kiunga kingine nilichotumia na Drone Dojo.

Kujenga Drone ya Raspberry Pi

Tena, kwani sitaenda kwa undani sana, nitaangazia tu misingi ya kila hatua.

1. Panga Vifaa vyako - Kusanya vifaa vyetu na uhakikishe vinapatikana kwa urahisi

2. Panga Ujenzi Wako - Panga sehemu zako kwenye fremu kutengeneza ramani ya kile utakachojenga

3. Kazi ya Soldering - Hii ndio kazi ambayo ni ngumu kuifanya peke yako. Lazima uunganishe viunganisho vya risasi vya dhahabu ambavyo huja na motors kwa ESC's. Ifuatayo, lazima uchukue sehemu ya chini ya fremu na usambaze ESC kwa fremu ya chini au Bodi ya Usambazaji wa Nguvu. Moduli ya Betri pia itauzwa kwa Bodi ya Usambazaji wa Umeme

4. Kuweka Sura - Lazima kisha unganisha sehemu ya juu ya fremu pamoja na mikono. Kisha unaweza kushikamana na Raspberry Pi juu kwa njia yoyote unayotaka. (Nilitumia mkanda wa bomba). Basi unaweza salama ESC kwa mikono na zip-ties. Sasa tumekaribia kumaliza.

5. Kumfunga Mdhibiti wa RC kwa Mpokeaji - Jaribu kufuata maagizo kwenye orodha ya kucheza hapo juu ili kumfunga Mdhibiti wa RC ukitumia ESC.

6. Kukamilisha Sehemu kwenye Sura - Mkanda wa bomba au kamba kwenye moduli ya telemetry kwenye fremu. Tengeneza mkanda wa Encoder ya PPM kwa mkono pia. Sasa unaweza kupiga waya ya ESC na PPM Encoder kwa Navio.

7. Mlima wa GPS + Betri - Unganisha Mlima wa GPS na visu na vipande anuwai. Kutumia uhusiano wa zip, ambatanisha GPS kwenye fremu. Sikutumia Mlima GPS kwa sababu ya udhaifu wake, lakini ni juu yako. Ifuatayo, unaweza kuingiza betri kati ya Power Dist. Bodi. Nilifunga kamba na kugonga moduli ya nguvu kwenye fremu pia. Sasa vifaa vyako vimewekwa vizuri. Sasa kwa sehemu ambayo tunasubiri!

8. Kufunga Propellers !!! - Unaweza kukaza vinjari kwa kutumia chati iliyotajwa kwenye orodha ya kucheza. Basi unaweza kuziba ESC kwa motors na mwishowe tumemaliza kujenga drone.

Programu ijayo, kwa hivyo kuendelea!

Hatua ya 3: Kusanidi Raspberry Pi na GCS (Mpangaji wa Ujumbe)

Kusanidi Raspberry Pi na GCS (Mpangaji wa Ujumbe)
Kusanidi Raspberry Pi na GCS (Mpangaji wa Ujumbe)

Tena, unaweza kupata maagizo ya kina katika orodha ya kucheza kutoka hatua ya mwisho. Walakini, labda unajua jinsi ya kusanidi RasPi. Lakini wakati huu, tunafanya bila kichwa. Tumia Balena Etcher kuchoma OS kutoka kwa wavuti ya Navio OS kwenye kadi ya MicroSD. Wakati imeingia kwenye kompyuta yako, nenda kwenye dua ya wpa ukitumia notepad ++. Baada ya hapo, ingiza ssid na nywila kwa Raspberry Pi kuungana na WiFi yako. Basi lazima uongeze faili inayoitwa SSH. Hii inaweza kuwa kupitia Amri ya Amri au njia nyingine. Sasa tunaweza SSH. Unaweza kutumia haraka ya amri au Putty. Nilitumia amri ya haraka na kuandika "ssh pi @ navio" kuungana na kesi yangu, au unaweza kupata anwani ya IP na ssh kwa njia hiyo. Baada ya kuunganisha, tumia video hii kuanzisha na kusanidi Navio. Ili kuanzisha telemetry lazima kwanza ufanye hariri kwenye Raspberry Pi. Fuata hii ili kuhariri na ujaribu kuungana na Mpangaji wa Ujumbe. Ikiwa telemetry haifanyi kazi, unaweza kutengua uhariri na unganisha kwa kutumia unganisho la UDB kwa kuingia GCS yako (Kituo cha Udhibiti wa chini kama vile Laptop) IP. Mara baada ya kushikamana na Mpangaji wa Ujumbe, unaweza kutumia mchawi wa usanidi kusawazisha sehemu zote za drone. Ikiwa unahitaji msaada rejea tena kwenye orodha ya kucheza. Kawaida, wakati wowote unapoanzisha, karibu kila mara kuna hitilafu. Utatuzi ni moja wapo ya sehemu kubwa za mradi huu. Siwezi kukusaidia hapo kwani sijui makosa yako, lakini makosa mengi yanaweza kurekebishwa kwa msaada kutoka kwa wavuti. Baada ya kila kitu kuwa tayari, basi drone iko tayari kuruka! Unaweza kuanzisha mtawala wako wa RC na njia za kukimbia kwenye Mpangaji wa Ujumbe. Jaribu kushikilia fimbo ya kushoto chini kabisa-kulia kwa sekunde tano ili kutoa drone. Sipendekezi kuruka bila kuangalia mafunzo kwa sababu drone ni dhaifu sana na ni rahisi kuivunja. Kwangu, mara ya kwanza kuiruka, nilivunja Mlima wa GPS na vichocheo vingine. Ikiwa hauitaji udhibiti wa sauti, basi unaweza kuacha hapa. Ili kujifunza kuhusu AWS na programu ya drone endelea!

Hatua ya 4: Kupanga programu ya Drone kuruka na chatu

Kupanga programu ya Drone kuruka na chatu
Kupanga programu ya Drone kuruka na chatu

Kabla ya kuingia kwenye AWS, tunapaswa kwanza kuelewa jinsi ya kupanga drone kuruka. Baada ya usanidi wa kwanza, ujumuishaji wa kudhibiti sauti haipaswi kuwa ngumu sana. Jambo la kwanza tunaweza kujaribu kupata maana ni kufanya mpango rahisi wa kuondoka na ardhi. Baada ya kuanzisha Pi ya Raspberry, tunaweza SSH ndani yake tena. Unaweza kuangalia orodha ya kucheza tena au ufuate maagizo yangu.

1. Kwanza hebu tupakue Nambari ya Chanzo ya ArduPilot katika saraka kwenye Raspberry Pi

mkdir src

Kisha, pata faili kutoka kwa GitHub ukitumia clone ya git

git clone -b Copter-3.6.11

Sasa, wacha tuende kwa / src / ardupilot

cd src

cd ardupilot

Sasa, wacha tuanzishe faili za chanzo

sasisho la git submodule --init --recursive

2. Ifuatayo, lazima tukusanye firmware kwenye Raspberry Pi

Hakikisha kusafiri hadi / src / ardupilot / na cd kabla ya kufanya hatua zifuatazo

Halafu kujifurahisha haswa kwa Navio ukitumia

./waf sanidi -board = navio2

Basi unaweza kukusanya na

./waf - malengo bin / arducopter

3. Sasa tunaweza kufunga nambari ya chanzo kwa Navio

Kwanza hebu nenda kwenye saraka sahihi.

cd / nk / systemd / mfumo

Kisha hariri faili

sudo vi arducopter.huduma

Ambapo inasema ExecStart, ingiza yafuatayo badala ya ambayo tayari iko

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

Sasa, kuweka nambari ya chanzo ya ardupilot, tunaweza kutumia

Sudo systemctl daemon-reload

Basi tunaweza kuanza tena na

Sudo systemctl kuanzisha arducopter

Kwa hatua ya mwisho, mwishowe tumemaliza kuanzisha ArduPilot kwenye drone yetu

4. Kuweka DroneKit

DroneKit ni programu ambayo tutatumia kupanga drone kuruka. Ili kuelewa nambari zingine unaweza kupata nyaraka hapa. Kwanza lazima tusakinishe kifurushi kwenye drone yetu kabla ya kuandika hati.

Tunaweza kusanikisha kifurushi cha chatu na

bomba funga dronekit == 2.9.1

Hii inaweza kuwa, au inaweza kuwa sio toleo jipya zaidi, lakini ndio niliyotumia ili nisaidie kusuluhisha.

Kuangalia ikiwa imewekwa, tunaweza kufanya

bomba kufungia | grep dronekit

Sasa tuko tayari kutengeneza hati yetu ya kwanza ya chatu

5. kuondoka_na_nchi.py

ONYO! Ninashauri kuanzisha uelewa wa kimsingi wa chatu, ili uweze kujifunza na kuelewa nambari hiyo. Ikiwa unataka kuandika programu mwenyewe fuata video hii.

## Kwanza hebu tuunde saraka ya kuhifadhi nambari hii

cd dk ## Ikiwa unataka kuifanya mwenyewe basi tumia vi takeoff_and_land.py ## kuunda mpango

Vinginevyo, unaweza kuangalia au kutumia faili iliyoambatishwa na utumie itifaki ya kuhamisha faili. Tunaweza kujaribu programu hii baadaye. Kwanza kufafanua kuwa ni faili ya chatu ambayo lazima tutumie

chmod + x kuondoka_na_land.py

Kisha, kujaribu kutumia nambari ifuatayo kukimbia

chatu kuchukua_na_land.py - unganisha 127.0.0.1.1: 1550

Mara ya kwanza haikufanya kazi kwangu pia. Ikiwa kuna muda wa kiungo, basi usijali kuna kitu unaweza kufanya. Fungua haraka nyingine na ssh. Unaweza kujaribu kusanikisha kitu kinachoitwa mavproxy na ujaribu kuiendesha. Baada ya hapo, unaweza kukimbia zote mbili wakati huo huo. Hii inapaswa kusaidia kuunganisha drone. Mara baada ya kumaliza, nina changamoto kwako. Jaribu kujua mpango mwingine (set_velocity_body.py) unafanya nini na jinsi ya kuifanya ifanye kazi. Ukifanya hivyo, kazi nzuri.

6. mbele!

Sasa tunaweza kutumia maarifa haya kufanya sauti yetu isiyodhibitiwa kudhibitiwa. Udhibiti wa drone ya Alexa hutumia huduma hizi nyingi na zaidi. Bahati nzuri na kuendelea!

Hatua ya 5: Kutumia Huduma za Wavuti za Amazon na Amazon Kuunganisha Udhibiti wa Sauti

Kutumia Huduma za Wavuti za Amazon Alexa na Amazon Kuunganisha Udhibiti wa Sauti
Kutumia Huduma za Wavuti za Amazon Alexa na Amazon Kuunganisha Udhibiti wa Sauti
Kutumia Huduma za Wavuti za Amazon Alexa na Amazon Kuunganisha Udhibiti wa Sauti
Kutumia Huduma za Wavuti za Amazon Alexa na Amazon Kuunganisha Udhibiti wa Sauti

Hatua hii ni moja wapo ya kumbukumbu zilizo chini. Hii inamaanisha kuwa itakuwa ngumu zaidi kusuluhisha. Kupata kazi tu ilinichukua kama mwezi, labda zaidi. Jambo muhimu zaidi hapa ni kuwa na subira. Kipengele hiki, ikiwa kinatekelezwa katika maisha halisi, kinaweza kubadilisha maisha. Unaweza tu kumwambia Alexa akupatie vyakula vyako badala ya kwenda mwenyewe. Fikiria hilo! Kwa hivyo bila kuchelewesha zaidi tuingie ndani!

1. Kusajili Raspberry Pi kama kitu kwenye AWS IoT

Kutumia IoT (Mtandao wa Vitu), tunahitaji kitu. Kwa hivyo lazima tuingie kwenye Dashibodi ya AWS kutumia AWS IoT kwanza. Kisha nenda kwa IoT Core. Mara moja huko, unapaswa kubofya Dhibiti na kisha uunda kitu. Baada ya kuongeza jina, kwa kuunganisha, tunahitaji cheti. Napenda kupendekeza kubonyeza udhibitisho wa mbofyo mmoja. Halafu baada ya kuona skrini ya cheti, hakikisha kupakua kila ufunguo ikiwa ni pamoja na mzizi CA. Basi unaweza kwenda kumaliza uumbaji wa kitu hicho. Ifuatayo lazima tuunde sera. Rudi nje kwenye IoT Core. Kisha bonyeza sera salama na bonyeza. Kisha piga sera ya kuunda. Basi unaweza kuunda jina na kuongeza rasilimali. Chini ya hatua, andika iot * na andika * chini ya rasilimali na hit kuruhusu athari. Kisha rudi kwenye kitu chako na nenda kwenye cheti chako. Mara moja hapa, bonyeza sera. Basi unaweza kushikamana na sera yako kwa jambo hilo na yote yamewekwa!

2. Kuweka Msimbo kwenye Raspberry Pi na kushirikiana na IoT

Kwa sehemu hii, utahitaji Mteja wa SFTP (nilitumia WinSCP) kwa uhamishaji wa faili. Baada ya kuunganisha kwenye Raspberry Pi yetu, tutahitaji kuwa na funguo za cheti mkononi. Lazima uhamishe faili muhimu kwenye Raspberry Pi. Lazima pia uweke bomba AWSIoTPythonSDK kwenye Raspberry Pi. Kisha nenda kwenye saraka ya dk kwenye Raspberry Pi. Unatumia faili ya Udhibiti wa Drone ya Alexa niliyotoa kwa kuwasiliana na IoT. Kutumia faili hii nilitumia Hati ya Shell kuanza. Nitaonyesha nambari hapa chini kwani siwezi kupakia faili hiyo kwa sababu fulani. Ikiwa mpango hauchukua ujumbe kutoka kwa AWS IoT wakati wa kujaribu, usijali! Hii inaweza kuwa kosa langu kwani Faili ya Udhibiti wa Drone ya Alexa haiwezi kutoshea Jambo lako. Kwa hivyo, kuirekebisha, rudi kwa AWS IoT na ugonge kujifunza kwenye jopo la kushoto. Fuata maagizo na itakubidi uanze tena. Samahani kuhusu hilo. Mara tu IoT yako inapoanza kufanya kazi na programu kwenye RasPi, unaweza kujumuisha nambari ya dronekit kutoka kwa faili ya Udhibiti wa Drone ya Alexa niliyotoa. Baada ya hapo, tumia Hati ya Shell niliyotoa na vyeti vyako na Pumziko la Mwisho wa API kutoka IoT.

# simama hati kwenye makosa -e # Angalia ikiwa faili ya mizizi ya CA ipo, pakua ikiwa sivyo ikiwa [! -f./root-CA.crt]; kisha chapa kama [! -d./aws-iot-device-sdk-python]; kisha printf "\ nKusakinisha AWS SDK… / n" git clone https://www.amazontrust.com/repository/AmazonRoot…> pushd aws-iot-device-sdk-chatu chatu setup.py install popd fi

# run programu ya sampuli ndogo / ndogo kwa kutumia vyeti vilivyopakuliwa kwenye kifurushi

printf "\ nKutumia programu ndogo ya uchapishaji / sampuli ndogo … / n" python dk / AlexaDroneControl.py --connect 127.0.0.1.1:14550 -e "Yako Io ARN" -r mzizi-CA.crt -c PiGroundStation01.cert.pem -k Nambari ya PiGroundStation01

Hii haitafanya kazi kwenu nyote kwani majina ni tofauti. Badala ya funguo ambazo nilitumia kuchukua nafasi na majina yako muhimu wakati unahamisha faili. Hakikisha kutoka dk kabla ya kuhamisha faili! Hiyo inapaswa kuwa yote unayotakiwa kufanya kwa sasa.

3. Kujenga Ujuzi wako wa Alexa

Hatua hii inaonekana kuwa ngumu sana kuliko ilivyo kweli. Kwanza, lazima tuingie kwenye kiweko cha Msanidi Programu wa Alexa. Basi, tu hit kujenga ujuzi. Wakati inauliza kuchagua mfano wa ustadi wako, gonga tu desturi. Wakati inauliza kuchagua njia, gonga utoaji wako mwenyewe. Unaweza kutaja chochote unachotaka. Hakuna kiolezo kinachohitajika, kwa hivyo chagua kuanza kutoka mwanzo. Ifuatayo, baada ya kuunda ustadi wako, unapaswa kufika kwenye skrini ya Ujenzi wa Ustadi na orodha ya kulia upande wa kulia. Kutoka hapa, tunaweza kuanza kujenga ustadi wetu. Kwanza kwenye orodha ni jina la kuomba. Hivi ndivyo utakavyowaambia Alexa waombe ujuzi wako. Kwa mimi, niliweka tu jina langu la kuomba kama drone. Sasa tunaweza kwenda kwa nia yetu, matamshi, na nafasi. Hapa, unaweza kufanya maagizo kwa drone kama vile kwenda juu mita 1 au kwenda kulia au chini. Yangu inafanya kazi kweli na mita moja kwa sasa. Unaweza kubofya Mhariri wa JSON chini ya jopo la kushoto. Kisha unaweza kubandika nambari ifuatayo ndani yake.

Baada ya kubandika nambari hiyo kwa Mhariri wa JSON, unaweza kubofya kwenye hatua ya tatu ya orodha hiyo na itakujengea mfano wa mwingiliano. Kwa hatua hii, utafanywa kwa sasa. Unaweza kuacha nafasi ya mwisho ya mwisho kwa sasa!

Hatua ya 4: Kuunda Kazi yako ya Lambda

Sasa, hatua hii ni moja ambayo itabidi ujitambue mwenyewe. Nitakuambia jinsi ya kuiunganisha na Ustadi wa Alexa, lakini itabidi uiandike mwenyewe. Kwa hivyo, kwanza nenda kwenye dashibodi ya usimamizi wa AWS. Kisha, nenda kwa Lambda. Basi unaweza kuunda kazi kuiita jina lolote unalotaka. Hakikisha kuiandika kutoka mwanzo na ufanye wakati wa kukimbia lugha yoyote ya programu unayotaka. Nilitumia Node.js. Ili kuongeza Ustadi wa Alexa, ongeza kichocheo na uchague Kitanda cha Ujuzi cha Alexa (ASK). Nakili Lambda ARN yako na urudi kwenye Ustadi wa Alexa. Sasa, nenda mwisho. Unaweza kubandika ARN yako, kuokoa, na kuunda mtindo mpya. Kisha, chukua kitambulisho cha Ujuzi cha Alexa, na ubandike kwenye sehemu ya kuchochea ambapo inakuuliza kwenye Lambda. Ifuatayo, songa chini kwenye Lambda na upate mipangilio ya msingi na ufanye muda wa kuisha sekunde 10. Sasa, ni juu yako kujua nambari hiyo. Kwa vidokezo, unaweza tovuti zilizo chini.

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

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

na unaweza kutumia faili niliyoambatanisha, lakini haijakamilika na haitafanya kazi.

/ ** * Dhibiti APM / Pixhawk quadcopter yako na sauti yako, ukitumia Amazon Alexa, Lambda, 2lemetry MQTT.* / var awsIot = zinahitaji ('aws-iot-device-sdk'); var config = zinahitaji ("./ config"); var deviceName = "EchoDroneControl"; // kifaa hiki kweli ni mdhibiti var mqtt_config = {"keyPath": config.privateKey, "certPath": config.certificate, "caPath": config.rootCA, "host": config.host, "port": 8883, "mtejaId": "Lambda-" + kifaaName, // + "-Lambda-" + (Tarehe mpya (). GetTime ()), "mkoa": "us-east-1", "debug": true}; var ctx = batili; mteja wa var = batili; // Peleka ombi linaloingia kulingana na aina (LaunchRequest, IntentRequest, n.k.) Mwili wa JSON wa ombi hutolewa katika parameter ya tukio. exports.handler = kazi (tukio, muktadha) {jaribu {console.log ("event.session.application.applicationId =" + event.session.application.applicationId); ctx = muktadha; ikiwa (event.session.application.applicationId! == app_id) {ctx.fail ("ID batili ya Maombi"); } mteja = awsIot.device (mqtt_config); mteja.on ("unganisha", fanya kazi () {console.log ("Imeunganishwa na AWS IoT"); // kupigiwa simu ();});

ikiwa (event.session.new) {

onSessionStarted ({requestId: event.request.requestId}, tukio.session); } ikiwa (event.request.type === "LaunchRequest") {onLaunch (event.request, event.session); } mwingine ikiwa (event.request.type === "IntentRequest") {onIntent (event.request, event.session); } mwingine ikiwa (event.request.type === "SessionEndedRequest") {onSessionEnded (event.request, event.session); ctx.fanikiwa (); }} kamata (e) {console.log ("ISIPOKUWA katika kishikaji:" + e); ctx.fail ("Isipokuwa:" + e); }}}; / ** * Inayoitwa wakati kikao kinaanza. * / function onSessionStarted (sessionStartedRequest, kikao) {console.log ("onSessionStarted requestId =" + sessionStartedRequest.requestId + ", sessionId =" + session.sessionId); }

/**

* Inayoitwa wakati mtumiaji anazindua ufundi bila kubainisha wanataka nini. * / function onLaunch (launchRequest, session, callback) {console.log ("onLaunch requestId =" + launchRequest.requestId + ", sessionId =" + session.sessionId); // Peleka kwenye uzinduzi wa ustadi wako. getWelcomeResponse (kupiga tena simu); } / ** * Inayoitwa wakati mtumiaji anabainisha dhamira ya ustadi huu. * / kazi onIntent (dhamiraRequest, kikao) {//, kupiga tena simu) {console.log ("onIntent requestId =" + aimRequest.requestId + ", sessionId =" + session.sessionId); var dhamira = dhamiraRequest.intent, dhamiraName = dhamiraRequest.intent.name; console.log ("OMBI kwa kamba =" + JSON.stringify (aimRequest)); var callback = batili; // Peleka kwa washughulikiaji wa ustadi wako ikiwa ("GoIntent" === dhamaniName) {doGoIntent (dhamira, kikao); } mwingine ikiwa ("CommandIntent" === dhamaruName) {doCommandIntent (dhamira, kikao); } mwingine ikiwa ("TurnIntent" === dhamaruName) {doTurnIntent (dhamira, kikao); } mwingine ikiwa ("HelpIntent" === dhamaruName) {getWelcomeResponse (); } mwingine {tupa "dhamira batili"; }} / ** * Inayoitwa wakati mtumiaji anamaliza kikao. * Haiitwi wakati ujuzi unarudi lazimaEndSession = kweli. * / function onSessionEnded (sessionEndedRequest, kikao) {console.log ("onSessionEnded requestId =" + sessionEndedRequest.requestId + ", kikaoId =" + kikao.sessionId); // Ongeza mantiki ya kusafisha hapa} // --------------- Kazi zinazodhibiti tabia ya ustadi -------------------- - kazi getWelcomeResponse () {// Ikiwa tunataka kuanzisha kikao kuwa na sifa kadhaa tunaweza kuongeza hizo hapa. var kikaoAttributes = {}; var cardTitle = "Karibu"; var speechOutput = "Karibu kwenye UDHIBITI WA DRONE."; // TODO: ni drone mkondoni au nje ya mtandao? Ikiwa iko mkondoni, Je! Ni ARMED? var repromptText = "Drone tayari kwa amri."; var shouldEndSession = uwongo; ctx.fanikiwa (buildResponse (kikaoAttribute, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } / ** * hushughulikia GO nia. * / function doGoIntent (dhamira, kikao, kupiga tena simu) {// var cardTitle = "Drone GO…"; var repromptText = ""; var kikaoAttributes = {}; var shouldEndSession = uwongo; var speechOutput = ""; mwelekeo wa var = dhamira. mwelekeo.thamani; umbali wa var = dhamira. Upungufu. Uthamani.thamani; kitengo cha var = dhamira. Sehemu ya Thamani; var validDirections = ["mbele", "mbele", "nyuma", "nyuma", "kulia", "kushoto", "juu", "chini", "sawa", "mbele", "sawa mbele"]; var validUnits = ["mguu", "miguu", "mita", "mita", "yadi", "yadi"]; repromptText = "Niambie ni umbali gani wa kwenda na kwa mwelekeo gani."; var kushindwa = uongo; // thibitisha pembejeo ikiwa (! (parseInt (umbali)> = 1)) {speechOutput = "Sikuweza kuelewa umbali unayotaka nisafiri."; kushindwa = kweli; ctx.fanikiwa (buildResponse (kikaoAttribute, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } ikiwa (validDirections.indexOf (direction) == -1) {speechOutput = "Sikuweza kuelewa mwelekeo unayotaka nisafiri."; kushindwa = kweli; ctx.fanikiwa (buildResponse (kikaoAttribute, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } ikiwa (validUnits.indexOf (unit) == -1) {speechOutput = "Sikuweza kuelewa kitengo unachotaka nisafiri."; kushindwa = kweli; ctx.fanikiwa (buildResponse (kikaoAttribute, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } ikiwa (! shindwa) {var cardTitle = "Drone going" + mwelekeo + "" + umbali + "" + kitengo; speechOutput = "Kwenda" + mwelekeo + "" + umbali + "" + kitengo; mqttPublish (dhamira, kikao Sifa, kadiTitle, speechOutput, repromptText, shouldEndSession); }}

kazi doCommandIntent (dhamira, kikao, kupiga tena simu) {

// var cardTitle = "Drone AMRI …"; var repromptText = batili; var kikaoAttributes = {}; var shouldEndSession = uwongo; var speechOutput = ""; repromptText = "Niambie amri ya drone ni nini."; kazi ya var = dhamira. Kazi.thamani. var validTasks = ["uzinduzi", "ardhi", "r. t. l.", "shikilia", "kaa", "simama", "rudi kuzindua", "toa mimba"]; ikiwa (validTasks.indexOf (task) == -1) {speechOutput = "Sikuweza kuelewa amri."; ctx.fanikiwa (buildResponse (kikaoAttribute, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } mwingine {var cardTitle = "utekelezaji wa amri ya Drone" + kazi; speechOutput = "kutekeleza amri" + kazi; mqttPublish (dhamira, kikao Sifa, kadiTitle, speechOutput, repromptText, shouldEndSession); }}

kazi doTurnIntent (dhamira, kikao, kupiga tena simu) {

// var cardTitle = "Drone Turn…"; var repromptText = batili; var kikaoAttributes = {}; var shouldEndSession = uwongo; var speechOutput = ""; repromptText = "Niambie ni jinsi gani unataka kugeuza rubani."; mwelekeo wa var = dhamira. mwelekeo.thamani; var validDirections = ["kulia", "kushoto", "karibu"]; ikiwa (validDirections.indexOf (direction) == -1) {speechOutput = "Sikuweza kuelewa mwelekeo wa zamu."; ctx.fanikiwa (buildResponse (kikaoAttribute, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } mwingine {var cardTitle = "Drone kugeuka" + mwelekeo; speechOutput = "Kugeuza" + mwelekeo; mqttPublish (dhamira, kikao Sifa, kadiTitle, speechOutput, repromptText, shouldEndSession); }}

kazi mqttChapisha (dhamira, kikao Sifa, kadiTitle, hotubaOutput, repromptText, shouldEndSession)

{var strIntent = JSON.stringify (dhamira); console.log ("mqttPublish: INTENT text =" + strIntent); // mteja.chapisha ("ikw1zr46p50f81z / drone / echo", strIntent, false); mteja.chapisha (usanidi. mada, strIntent, uwongo); mteja.end (); mteja.on ("karibu", (kazi () {console.log ("MQTT CLIENT CLOSE - anafikiria imekamilika, imefanikiwa."););}))); mteja.on ("kosa", (kazi (kosa, iliyopewa) {console.log ("MGTT CLIENT ERROR !!" + err);})); }

// --------------- Wasaidizi ambao huunda majibu yote -----------------------

kazi buildSpeechletResponse (kichwa, pato, repromptText, shouldEndSession) {kurudi {outputSpeech: {aina: "PlainText", maandishi: pato}, kadi: {aina: "Rahisi", kichwa: kichwa, yaliyomo: pato}, rejea tena: {outputSpeech: {aina: "Nakala Plain", maandishi: repromptText}}, lazimaEndSession: shouldEndSession}} kazi buildResponse (kikaoAttribute, speechletResponse) {return {version: "1.0", kikaoAttribute: kikaoAttributes, majibu: speechletResponse}}

Ilipendekeza: