Turinys:
- Prekės
- 1 žingsnis: dalių surinkimas ir supratimas
- 2 žingsnis: drono surinkimas
- 3 veiksmas: Raspberry Pi ir GCS konfigūravimas (misijos planavimo priemonė)
- 4 žingsnis: užprogramuokite droną skristi naudojant „Python“
- 5 veiksmas: „Amazon Alexa“ir „Amazon Web Services“naudojimas balso valdymui integruoti
Video: „Alexa“balsu valdomas „Raspberry Pi“dronas su IoT ir AWS: 6 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Sveiki! Mano vardas Armaanas. Aš esu 13 metų berniukas iš Masačusetso. Ši pamoka parodo, kaip galite daryti išvadą iš pavadinimo, kaip sukurti „Raspberry Pi“droną. Šis prototipas parodo, kaip bepiločiai orlaiviai vystosi, ir kokį didelį vaidmenį jie gali atlikti ateityje. Aš tikrai matau save pabudusį po 10 metų ir prašau drono, kad jis man parūpintų pusryčių. Dronas paleidžia „Amazon Alexa“, „Amazon Web Services“, „IoT“(daiktų internetas) ir, svarbiausia, „Raspberry Pi“. Jis skirtas demonstruoti ir informuoti apie dronus ir kaip jie tobulėja kiekvieną dieną. Tikimės, kad jums pasiseks ir sužinosite apie dronus. Sėkmės ir ačiū, kad skaitote. -Armanas
Prekės
Norint sukurti prototipą, reikia įvairių aparatinės ir programinės įrangos poreikių. Aš panaudojau „The Drone Dojo“internetinę pamoką, kad galėčiau sukurti droną ir integruoti išvardytas technologijas. Drono dalių sąrašą rasite čia:
Drono dalių sąrašas
Programinės įrangos reikalavimai:
- „Amazon“žiniatinklio paslaugos
- Nešiojamasis kompiuteris
- Misijos planavimo programinė įranga
- Balena Etcher
- „MicroSD“kortelę su „Raspbian“failu rasite čia
- „Amazon Alexa“, fizinė ar virtuali
1 žingsnis: dalių surinkimas ir supratimas
Kiekviena tiekimo sąraše paminėta dalis yra būtina, taip pat aiškus kiekvienos dalies supratimas. Galite rasti dalių internete ir surinkę tęsti skaitymą. „Drone Dojo“grojaraštį, skirtą visapusiškai suprasti dalis, rasite čia. 4 minučių paaiškinimą mano „YouTube“kanale rasite čia. Kalbant apie dronus, vienintelės dalys, nepaisant to, ką dauguma žmonių galvoja, yra ne tik varikliai ir sraigtai. Žemiau yra pagrindiniai kiekvienos dalies tikslai.
„Raspberry Pi“su „Emlid Navio2“
Ši dalis yra beveik centrinis procesorius ir pagrindinis drono taškas. „Raspberry Pi“veikia kaip kompiuterio centrinis procesorius, kuris siunčia komandas „Navio2“, kad jos būtų vykdomos per PWM (impulso pločio moduliacijos signalus) į kitas drono dalis.
2. ESC (elektroniniai greičio reguliatoriai)
Šios geltonos dalys yra po rėmu. Jie yra 4 prijungti prie „Navio“, po vieną kiekvienam varikliui. Gavę PWM signalus, jie sukasi varikliais ir pradeda skristi.
3. Varikliai
Varikliams nereikia per daug aiškinti, nes tikriausiai esate su jais susipažinę. Jie sukioja ir suka sraigtus, kad sukurtų trauką.
4. Sraigtai
Sraigtai sukuria trauką dronui skristi. Jie sukasi ta pačia kryptimi kaip ir varikliai, kad pakeltų transporto priemonę.
5. Baterijos ir maitinimo modulis
„LiPo“baterija maitina visą droną per rėmą, naudodama maitinimo modulį. Tai suteikia maždaug 15-20 minučių skrydžio laiko ir veikia kaip energijos šaltinis.
6. GPS
GPS palaiko ryšį su palydovais, kad nustatytų drono padėtį. Jis nustato aukštį, platumą ir ilgumą. Jis gali būti naudojamas geografinei tvorai, kelio taškams, taip pat judėti į tam tikras pozicijas ar kryptis.
7. Telemetrijos modulis
Telemetrijos modulis jungia mūsų droną prie antžeminio valdymo stoties, mūsų atveju - misijos planavimo priemonės, kuri turi būti stebima.
8. RC valdiklis ir modulis kartu su PPM koduotuvu
RC valdiklis naudoja radiją signalams ir komandoms perduoti į RC modulį, kad rankiniu būdu valdytų droną. PPM kodavimo priemonė išverčia šiuos signalus, kad „Navio + RPI“galėtų juos apdoroti ir vykdyti.
9. Rėmas
Šis raudonas ir baltas rėmas veikia kaip pagrindas ar platforma kitoms dalims, kurias reikia įdėti. Rėmas yra aerodinaminis ir lengvas, todėl puikiai tinka mūsų bepiločiams orlaiviams.
Dabar, žinodami kiekvieną dalį, pagaliau galime sukurti droną! Pirmyn prie kito žingsnio!
2 žingsnis: drono surinkimas
Šis žingsnis turbūt yra pats sunkiausias fizinių pastangų požiūriu. Aš rekomenduoju turėti kitą asmenį pagalbos arba pabandyti pasinaudoti pagalbos ranka dalių sąraše. Procesas yra per ilgas, kad jį būtų galima parodyti, todėl pateiksiu kitą nuorodą, kurią naudoju „The Drone Dojo“.
„Raspberry Pi“drono kūrimas
Vėlgi, nesileisiu per daug į detales, tik pabrėšiu kiekvieno žingsnio pagrindus.
1. Sutvarkykite savo reikmenis - surinkite mūsų medžiagas ir įsitikinkite, kad jos yra lengvai prieinamos
2. Suplanuokite savo konstrukciją - sutvarkykite savo dalis ant rėmo, kad suplanuotumėte tai, ką sukursite
3. Litavimo darbai - tai darbas, kurį šiek tiek sunku atlikti vienam. Turite lituoti auksines kulkos jungtis, pridedamas prie variklių, prie ESC. Tada turite paimti apatinę rėmo dalį ir lituoti ESC prie apatinio rėmo arba maitinimo paskirstymo plokštės. Akumuliatoriaus modulis taip pat bus prilituotas prie maitinimo paskirstymo plokštės
4. Rėmo nustatymas - Tada turite prisukti viršutinę rėmo dalį kartu su rankomis. Tada galite pritvirtinti „Raspberry Pi“ant viršaus bet kokiu būdu. (Aš naudoju lipnią juostą). Tada galite pritvirtinti ESC prie rankų užtrauktukais. Dabar mes beveik baigėme.
5. RC valdiklio susiejimas su imtuvu - Pabandykite sekti aukščiau esančio grojaraščio instrukcijas, kad susietumėte RC valdiklį naudodami ESC.
6. Galutinės rėmo dalys - telemetrijos modulio lipni juosta arba dirželis ant rėmo. Taip pat priklijuokite PPM koduotuvą prie rankos. Dabar galite prijungti ESC ir PPM kodavimo įrenginį prie „Navio“.
7. GPS laikiklis + baterija - Surinkite GPS laikiklį su įvairiais varžtais ir detalėmis. Naudodami užtrauktukus, pritvirtinkite GPS prie rėmo. Aš nebūtinai naudoju GPS laikiklį dėl jo trapumo, bet tai priklauso nuo jūsų. Tada galite įdėti bateriją tarp „Power Dist. Lenta. Pririšau ir priklijavau maitinimo modulį prie rėmo. Dabar jūsų aparatinė įranga yra beveik paruošta. Dabar apie dalį, kurios laukėme!
8. Propelerių montavimas !!! - Priveržkite sraigtus naudodami grojaraštyje nurodytą diagramą. Tada galite prijungti ESC prie variklių ir mes pagaliau baigėme kurti droną.
Toliau programinė įranga, todėl pirmyn!
3 veiksmas: Raspberry Pi ir GCS konfigūravimas (misijos planavimo priemonė)
Vėlgi, išsamesnių instrukcijų galite rasti grojaraštyje nuo paskutinio veiksmo. Tačiau tikriausiai žinote, kaip nustatyti „RasPi“. Bet šį kartą tai darome be galvos. Naudokite „Balena Etcher“, kad įrašytumėte OS iš „Navio OS“svetainės į „MicroSD“kortelę. Kol jis prijungtas prie kompiuterio, eikite į „wpa“prašytoją naudodami užrašų knygelę ++. Po to įveskite ssid ir slaptažodį, kad „Raspberry Pi“prisijungtų prie „WiFi“. Tada turite pridėti failą, pavadintą SSH. Tai galima padaryti naudojant komandinę eilutę arba kitą metodą. Dabar galime SSH. Galite naudoti komandų eilutę arba „Putty“. Aš naudoju komandų eilutę ir įvedžiau „ssh pi@navio“, kad prisijungčiau savo atveju, arba taip galite rasti IP adresą ir ssh. Prisijungę naudokite šį vaizdo įrašą „Navio“nustatymui ir konfigūravimui. Norėdami nustatyti telemetriją, pirmiausia turite redaguoti „Raspberry Pi“. Atlikite tai, kad redaguotumėte, ir pabandykite prisijungti prie „Mission Planner“. Jei telemetrija neveikia, galite anuliuoti redagavimą ir prisijungti naudodami UDB ryšį, įvesdami savo GCS (Ground Control Station, pavyzdžiui, nešiojamojo kompiuterio) IP. Prisijungę prie „Mission Planner“, galite naudoti sąrankos vedlį, kad sukalibruotumėte visas drono dalis. Jei jums reikia pagalbos, dar kartą peržiūrėkite grojaraštį. Paprastai, kai nustatote, beveik visada būna klaida. Trikčių šalinimas yra viena didžiausių šio projekto dalių. Aš tikrai negaliu jums padėti, nes nežinau jūsų klaidų, tačiau daugumą klaidų galima ištaisyti naudojant internetą. Kai viskas bus paruošta, tada dronas bus paruoštas skristi! RC valdiklį ir skrydžio režimus galite nustatyti naudodami „Mission Planner“. Pabandykite penkias sekundes laikyti kairę lazdą apačioje dešinėje, kad įjungtumėte droną. Nerekomenduoju skristi nežiūrėjus į vadovėlį, nes dronas yra labai trapus ir lengvai sulaužomas. Man pirmą kartą skrendant, sulaužiau GPS laikiklį ir kai kuriuos sraigtus. Jei jums nereikia valdymo balsu, galite sustoti čia. Norėdami sužinoti apie AWS ir drono programavimą, tęskite!
4 žingsnis: užprogramuokite droną skristi naudojant „Python“
Prieš pradėdami naudotis AWS, pirmiausia turėtume suprasti, kaip užprogramuoti droną skristi. Po pradinės sąrankos valdymo balsu integravimas neturėtų būti per sunkus. Pirmas dalykas, kurį galime pabandyti suvokti, yra paprastos kilimo ir nusileidimo programos sudarymas. Nustatę „Raspberry Pi“, vėl galime į jį įjungti SSH. Galite dar kartą pažvelgti į grojaraštį arba vykdyti mano nurodymus.
1. Pirmiausia atsisiųskime „ArduPilot“šaltinio kodą „Raspberry Pi“kataloge
mkdir src
Tada gaukite failus iš „GitHub“naudodami „git“kloną
git clone -b Copter -3.6.11
Dabar pereikime prie /src /ardupilot
cd src
cd ardupilot
Dabar inicijuokime šaltinio failus
git submodulio atnaujinimas -init -rekursyvus
2. Toliau turime surinkti „Raspberry Pi“programinę įrangą
Prieš atlikdami kitus veiksmus, būtinai eikite į/src/ardupilot/su cd
Tada konfigūruoti specialiai „Navio“naudojant
./waf configure -lenta = navio2
Tada galite sudaryti su
./waf -nukreipia į šiukšliadėžę/arducopterį
3. Dabar galime įdiegti „Navio“šaltinio kodą
Pirmiausia leiskite pereiti į tinkamą katalogą.
cd/etc/systemd/system
Tada redaguokite failą
sudo vi arducopter.paslauga
Ten, kur sakoma „ExecStart“, vietoj to, kas jau yra, įterpkite šį
ExecStart =/bin/sh -c "/home/pi/src/arducopter/build/navio2/bin/arducopter $ {ARDUPILOT_OPTS}"
Dabar, norėdami įgyvendinti ardupilot šaltinio kodą, galime naudoti
sudo systemctl demonas iš naujo
Tada galime pradėti iš naujo
sudo systemctl iš naujo paleiskite arducopterį
Paskutiniame etape mes pagaliau baigėme „ArduPilot“nustatymą mūsų drone
4. „DroneKit“diegimas
„DroneKit“yra programinė įranga, kurią naudosime užprogramuodami droną skristi. Norėdami suprasti kai kuriuos kodus, dokumentus rasite čia. Prieš rašydami scenarijų, pirmiausia turime įdiegti paketą savo drone.
Python paketą galime įdiegti su
pip install dronekit == 2.9.1
Tai gali būti naujausia versija, bet ne ta, kurią naudojau, kad galėčiau padėti išspręsti triktis.
Norėdami patikrinti, ar įdiegta, galime atlikti a
pip užšaldyti | grep dronekit
Dabar pagaliau esame pasiruošę sukurti savo pirmąjį „python“scenarijų
5. kilimas_ir_land.py
ĮSPĖJIMAS! Siūlau sukurti pagrindinį „python“supratimą, kad galėtumėte išmokti ir suprasti kodą. Jei norite patys parašyti programą, sekite šį vaizdo įrašą.
## Pirmiausia nesukurkime katalogo, kuriame būtų saugomas šis kodas
cd dk ## Jei norite tai padaryti patys, naudokite vi takeoff_and_land.py ##, kad sukurtumėte programą
Priešingu atveju galite pažvelgti arba naudoti pridėtą failą ir naudoti failų perdavimo protokolą. Vėliau galime išbandyti šią programą. Pirmiausia reikia paaiškinti, kad tai yra „python“failas, kurį turime naudoti
chmod +x kilimas_ir_land.py
Tada paleiskite naudodami šį kodą
python takeoff_and_land.py -Connect 127.0.0.1:14550
Pirmą kartą man taip pat nepavyko. Jei yra nuorodos skirtasis laikas, nesijaudinkite, kad galite ką nors padaryti. Atidarykite kitą raginimą ir ssh. Galite pabandyti įdiegti „mavproxy“ir paleisti. Po to galite paleisti abu vienu metu. Tai turėtų padėti prijungti droną. Kai tai bus padaryta, turiu jums iššūkį. Pabandykite išsiaiškinti, ką daro kita programa (set_velocity_body.py) ir kaip priversti ją veikti. Jei darai, geras darbas.
6. Pirmyn!
Dabar mes galime panaudoti šias žinias, kad mūsų dronas būtų valdomas balsu. „Alexa“bepiločių orlaivių valdymas naudoja daug šių funkcijų ir dar daugiau. Sėkmės ir pirmyn!
5 veiksmas: „Amazon Alexa“ir „Amazon Web Services“naudojimas balso valdymui integruoti
Šis žingsnis yra vienas iš mažiau dokumentuotų. Tai reiškia, kad ją pašalinti bus sunkiausia. Tik pradėjus dirbti man prireikė maždaug mėnesio, o gal ir daugiau. Svarbiausia čia būti kantriam. Ši funkcija, jei ji įgyvendinama realiame gyvenime, gali pakeisti gyvenimą. Galite tiesiog pasakyti „Alexa“, kad ji pirktų jums maisto produktus, o ne eitų pati. Įsivaizduok tai! Taigi, nesivaržydami, įsitraukime į tai!
1. Raspberry Pi registravimas kaip dalykas AWS IoT
Norint naudotis daiktų internetu (daiktų internetu), mums reikia kažko. Taigi, norėdami pirmiausia naudoti „AWS IoT“, turime prisijungti prie „AWS Console“. Tada eikite į „IoT Core“. Kai būsite ten, turėtumėte spustelėti Tvarkyti ir tada sukurti daiktą. Pridėjus pavadinimą, norint prisijungti, mums reikia sertifikato. Rekomenduočiau spustelėti vieno paspaudimo sertifikatą. Tada, pamatę sertifikato ekraną, būtinai atsisiųskite kiekvieną raktą, įskaitant pagrindinę CA. Tada galite eiti ir užbaigti daikto kūrimą. Toliau turime sukurti politiką. Grįžkite į „IoT Core“. Tada spustelėkite saugų ir spustelėkite politiką. Tada spustelėkite „Sukurti politiką“. Tada galite sukurti pavadinimą ir pridėti išteklių. Atlikdami veiksmą, įveskite iot * ir * pagal išteklių ir paspauskite leisti efektą. Tada grįžkite prie savo daikto ir eikite į savo pažymėjimą. Kai būsite čia, spustelėkite politiką. Tada galite pridėti savo politiką ir viskas yra paruošta!
2. „Raspberry Pi“kodo nustatymas ir sąveika su „IoT“
Šiai daliai failų perkėlimui jums reikės SFTP kliento (aš naudojau „WinSCP“). Prisijungę prie „Raspberry Pi“, turėsime turėti sertifikato raktus. Pagrindinius failus turite perkelti į „Raspberry Pi“. Taip pat turėtumėte įdiegti „AWSIoTPythonSDK“į „Raspberry Pi“. Tada eikite į „Raspberry Pi“katalogą „dk“. Jūs naudojate „Alexa Drone Control“failą, kurį daviau bendravimui su „IoT“. Norėdami naudoti šį failą, pradėjau naudoti „Shell“scenarijų. Toliau parodysiu kodą, nes dėl kokių nors priežasčių negaliu įkelti failo. Jei bandydama programa nepriima pranešimų iš AWS IoT, nesijaudinkite! Tai gali būti mano kaltė, nes „Alexa“drono valdymo failas gali neatitikti jūsų. Taigi, norėdami tai išspręsti, grįžkite į „AWS IoT“ir kairiajame skydelyje spustelėkite „Mokytis“. Vykdykite instrukcijas ir gali tekti paleisti iš naujo. Atsiprašau dėl to. Kai jūsų „IoT“pradės dirbti su „RasPi“programa, galite integruoti „dronekit“kodą iš mano duoto „Alexa Drone Control“failo. Po to naudokite „Shell“scenarijų, kurį daviau su savo sertifikatais ir „Rest API Endpoint“iš „IoT“.
# stop scenarijus klaidų rinkinyje -e # Patikrinkite, ar egzistuoja šakninis CA failas, atsisiųskite, jei ne, jei [! -f./root-CA.crt]; tada printf "\ nAWS IoT Root CA sertifikato atsisiuntimas iš AWS … / n" curl https://www.amazontrust.com/repository/AmazonRoot…>> root-CA.crt fi # įdiegti „AWS Device SDK for Python“, jei dar neįdiegta jei [! -d./aws-iot-device-sdk-python]; tada printf "\ nAWS SDK diegimas … / n" git klonas https://www.amazontrust.com/repository/AmazonRoot…> pushd aws-iot-device-sdk-python python setup.py įdiegti popd fi
# paleiskite pub/sub mėginio programą naudodami pakete atsisiųstus sertifikatus
printf "\ nVykdoma pub/sub pavyzdinė programa… / n" python dk/AlexaDroneControl.py -connect 127.0.0.1:14550 -e "Your IoT ARN" -r root -CA.crt -c PiGroundStation01.cert.pem -k „PiGroundStation01.private.key“
Tai neveiks jums visiems, nes vardai yra skirtingi. Perkeldami failą, vietoj naudojamų raktų pakeiskite raktų pavadinimais. Prieš perkeldami failą būtinai išeikite iš dk! Tai turėtų būti viskas, ką turite padaryti dabar.
3. „Alexa Skill“kūrimas
Šis žingsnis atrodo daug sunkesnis, nei yra iš tikrųjų. Pirmiausia turime prisijungti prie „Alexa Developer“pulto. Tada tiesiog paspauskite sukurti įgūdžius. Kai jis prašo pasirinkti savo įgūdžių modelį, tiesiog paspauskite pasirinktinį. Kai jis prašo pasirinkti metodą, paspauskite nuostatą savo. Galite jį pavadinti, kaip norite. Šablono nereikia, todėl pasirinkite pradėti nuo nulio. Tada, sukūrę savo įgūdžius, turėtumėte patekti į įgūdžių kūrėjo ekraną su kontroliniu sąrašu dešinėje. Nuo čia mes galime pradėti tobulinti savo įgūdžius. Pirmasis kontroliniame sąraše yra pašaukimo pavadinimas. Štai ką jūs liepsite Alexai remtis jūsų įgūdžiais. Aš tiesiog įvedžiau savo šaukimo vardą kaip droną. Dabar galime pereiti prie savo ketinimų, posakių ir laiko tarpsnių. Čia galite atlikti bepiločio orlaivio komandas, pvz., Pakilti 1 metrą aukštyn arba eiti dešinėn arba žemyn. Manasis iš tikrųjų veikia tik su vienu metru. Galite spustelėti JSON redaktorių kairiojo skydelio apačioje. Tada į jį galite įklijuoti šį kodą.
Įklijavę kodą į JSON redaktorių, galite spustelėti trečiąjį kontrolinio sąrašo veiksmą ir jis sukurs jūsų sąveikos modelį. Šiuo žingsniu jūs būsite baigtas. Galutinio taško angą kol kas galite palikti tuščią!
4 žingsnis: sukurkite „Lambda“funkciją
Dabar šis žingsnis yra tas, kurį turėsite išsiaiškinti patys. Aš jums pasakysiu, kaip jį prijungti prie „Alexa Skill“, tačiau turėsite jį koduoti patys. Taigi, pirmiausia eikite į AWS valdymo pultą. Tada eikite į „Lambda“. Tada galite sukurti funkciją, pavadindami ją kuo tik norite. Būtinai parašykite jį nuo nulio ir vykdykite bet kokią norimą programavimo kalbą. Naudojau Node.js. Norėdami pridėti „Alexa Skill“, pridėkite aktyviklį ir pasirinkite „Alexa Skills Kit“(ASK). Nukopijuokite „Lambda ARN“ir grįžkite prie „Alexa Skill“. Dabar eikite į galutinį tašką. Galite įklijuoti savo ARN, išsaugoti ir sukurti naują modelį. Tada paimkite „Alexa Skill“ID ir įklijuokite jį į trigerio skiltį, kurioje jūsų prašoma „Lambda“. Tada slinkite žemyn „Lambda“ir suraskite pagrindinius nustatymus ir nustatykite skirtąjį laiką 10 sekundžių. Dabar jūs turite išsiaiškinti kodą. Norėdami gauti patarimų, galite apsilankyti žemiau esančiose svetainėse.
github.com/aws/aws-iot-device-sdk-js
www.hackster.io/veggiebenz/voice-controlle…
ir jūs galite naudoti mano pridėtą failą, tačiau jis yra neišsamus ir neveiks.
/ *** Valdykite savo APM / Pixhawk kvadrakopterį balsu naudodami „Amazon Alexa“, „Lambda“, 2 metrikos MQTT.*/ var awsIot = reikalauti ('aws-iot-device-sdk'); var config = reikalauti ("./ config"); var deviceName = "EchoDroneControl"; // šis įrenginys tikrai yra valdiklis var mqtt_config = {"keyPath": config.privateKey, "certPath": config.certificate, "caPath": config.rootCA, "host": config.host, "port": 8883, "clientId": "Lambda-" + deviceName, // + "-Lambda-" + (nauja data (). getTime ()), "region": "us-east-1", "debug": true}; var ctx = null; var klientas = null; // Maršrutuokite gaunamą užklausą pagal tipą (LaunchRequest, IntentRequest ir kt.) JSON užklausos turinys pateikiamas įvykio parametre. export.handler = funkcija (įvykis, kontekstas) {try {console.log ("event.session.application.applicationId =" + event.session.application.applicationId); ctx = kontekstas; if (event.session.application.applicationId! == app_id) {ctx.fail („Netinkamas programos ID“); } klientas = awsIot.device (mqtt_config); client.on ("connect", function () {console.log ("Prisijungta prie AWS IoT"); // callback ();});
if (event.session.new) {
onSessionStarted ({requestId: event.request.requestId}, event.session); } if (event.request.type === "LaunchRequest") {onLaunch (event.request, event.session); } else if (event.request.type === "IntentRequest") {onIntent (event.request, event.session); } else if (event.request.type === "SessionEndedRequest") {onSessionEnded (event.request, event.session); ctx.sėkmė (); }} catch (e) {console.log ("EXCEPTION in handler:" + e); ctx.fail ("Išimtis:" + e); }}; /*** Skambinama prasidėjus sesijai. */ function onSessionStarted (sessionStartedRequest, session) {console.log ("onSessionStarted requestId =" + sessionStartedRequest.requestId + ", sessionId =" + session.sessionId); }
/**
* Skambinama, kai vartotojas įgyja įgūdžių nenurodydamas, ko nori. */ function onLaunch (launchRequest, session, callback) {console.log ("onLaunch requestId =" + launchRequest.requestId + ", sessionId =" + session.sessionId); // Išsiuntimas į jūsų įgūdžių paleidimą. getWelcomeResponse (atgalinis skambutis); } /*** Skambinama, kai vartotojas nurodo šio įgūdžio tikslą. */function onIntent (intentRequest, session) {//, callback) {console.log ("onIntent requestId =" + aimRequest.requestId + ", sessionId =" + session.sessionId); var intencija = ketinimų prašymas.intentas, ketinimų pavadinimas = ketinimų užklausa.intentų_pavadinimas; console.log ("REQUEST to string =" + JSON.stringify (aimRequest)); var callback = null; // Nusiųskite savo įgūdžių ketinimų tvarkytojams, jei ("GoIntent" === ketinimų pavadinimas) {doGoIntent (ketinimas, sesija); } else if ("CommandIntent" === aimName) {doCommandIntent (ketinimas, seansas); } else if ("TurnIntent" === aimName) {doTurnIntent (ketinimas, seansas); } else if ("HelpIntent" === aimName) {getWelcomeResponse (); } else {thro "Netinkamas ketinimas"; }} /*** Skambinama, kai vartotojas baigia seansą. * Nešaukiamas, kai įgūdis grįžta shouldEndSession = true. */ function onSessionEnded (sessionEndedRequest, session) {console.log ("onSessionEnded requestId =" + sessionEndedRequest.requestId + ", sessionId =" + session.sessionId); // Čia pridėkite valymo logiką} // --------------- Funkcijos, valdančios įgūdžių elgesį -------------------- --- function getWelcomeResponse () {// Jei norėtume inicijuoti seansą, kad būtų keletas atributų, galėtume juos pridėti čia. var sessionAttributes = {}; var cardTitle = "Sveiki atvykę"; var speechOutput = "Sveiki atvykę į DRONE CONTROL". // TODO: ar dronas yra prisijungęs ar neprisijungęs? Jei prisijungęs, ar jis yra ginkluotas? var repromptText = "Dronas paruoštas komandai."; var shouldEndSession = false; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } /*** tvarko GO ketinimą. */ function doGoIntent (ketinimas, seansas, atgalinis skambutis) {// var cardTitle = "Drone GO …"; var repromptText = ""; var sessionAttributes = {}; var shouldEndSession = false; var speechOutput = ""; var kryptis = ketinimas.slots. Direction.value; var atstumas = ketinimas.slots. Distance.value; var vienetas = ketinimų.slots. Unit.value; var validDirections = ["pirmyn", "pirmyn", "atgal", "atgal", "dešinėn", "kairėn", "aukštyn", "žemyn", "tiesiai", "pirmyn", "tiesiai pirmyn"]; var validUnits = ["pėda", "pėdos", "metras", "metrai", "kiemas", "jardai"]; repromptText = "Pasakyk man, kiek toli eiti ir kokia kryptimi."; var fail = false; // patvirtinti įvestis, jei (! (parseInt (distance)> = 1)) {speechOutput = "Aš negalėjau suprasti atstumo, kurį norite, kad aš nueisiu."; nesėkmė = tiesa; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (validDirections.indexOf (direction) == -1) {speechOutput = "Aš negalėjau suprasti krypties, kuria norite man keliauti."; nesėkmė = tiesa; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (validUnits.indexOf (unit) == -1) {speechOutput = "Aš negalėjau suprasti vieneto, kuriuo norite, kad aš keliautų."; nesėkmė = tiesa; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } jei (! nepavyksta) {var cardTitle = "Dronas važiuoja" + kryptis + "" + atstumas + "" + vienetas; speechOutput = "Eina" + kryptis + "" + atstumas + "" + vienetas; mqttPublish (ketinimas, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}
function doCommandIntent (ketinimas, seansas, atgalinis skambutis) {
// var cardTitle = "Drone COMMAND …"; var repromptText = null; var sessionAttributes = {}; var shouldEndSession = false; var speechOutput = ""; repromptText = "Pasakyk man, kokia yra drono komanda."; var užduotis = ketinimas.slots. Task.value; var validTasks = ["paleisti", "nusileisti", "r. t. l.", "sulaikyti", "likti", "sustabdyti", "grįžti į paleidimą", "nutraukti"]; if (validTasks.indexOf (task) == -1) {speechOutput = "Aš negalėjau suprasti komandos."; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } else {var cardTitle = "Vykdoma drono komanda" + užduotis; speechOutput = "Vykdoma komanda" + užduotis; mqttPublish (ketinimas, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}
function doTurnIntent (ketinimas, seansas, atgalinis skambutis) {
// var cardTitle = "Drono posūkis …"; var repromptText = null; var sessionAttributes = {}; var shouldEndSession = false; var speechOutput = ""; repromptText = "Pasakyk man, kaip nori pasukti droną."; var kryptis = ketinimas.slots. Direction.value; var validDirections = ["dešinė", "kairė", "aplink"]; if (validDirections.indexOf (direction) == -1) {speechOutput = "Aš negalėjau suprasti posūkio krypties."; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } else {var cardTitle = "Drono posūkis" + kryptis; speechOutput = "Pasukimas" + kryptis; mqttPublish (ketinimas, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}
funkcija mqttPublish (ketinimas, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession)
{var strIntent = JSON.stringify (ketinimas); console.log ("mqttPublish: INTENT text =" + strIntent); // client.publish ("ikw1zr46p50f81z/drone/echo", strIntent, false); client.publish (config.topic, strIntent, false); client.end (); client.on ("close", (function () {console.log ("MQTT CLIENT CLOSE - mano, kad tai padaryta sėkmingai."); ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession)));})); client.on ("klaida", (funkcija (klaida, suteikta) {console.log ("MQTT CLIENT ERROR !!" + err);})); }
// --------------- Pagalbininkai, kuriantys visus atsakymus -----------------------
function buildSpeechletResponse (title, output, repromptText, shouldEndSession) {return {outputSpeech: {type: "PlainText", text: output}, kortelė: {type: "Simple", title: title, content: output}, reprompt: {outputSpeech: {type: "PlainText";
Rekomenduojamas:
„Arduino“balsu valdomas IOT relės jungiklis (palaikomas „Google Home“ir „Alexa“): 11 žingsnių
„Arduino“balsu valdomas IOT relės jungiklis (palaikomas „Google Home“ir „Alexa“): Šiame projekte aprašoma, kaip sukurti „Arduino“pagrindu valdomą balsu valdomą IOT relės jungiklį. Tai relė, kurią galite įjungti ir išjungti nuotoliniu būdu, naudodami „iOS“ir „Android“skirtą programą, taip pat susieti ją su IFTTT ir valdyti balsu naudodami „Google“
Valdomas balsu jungiklis naudojant „Alexa“ir „Arduino“: 10 žingsnių (su paveikslėliais)
Valdomas balsu jungiklis naudojant „Alexa“ir „Arduino“: Pagrindinis šio projekto tikslas yra naudoti temperatūros jutiklį, norint valdyti jungiklį (relę), kad įjungtumėte arba išjungtumėte įrenginį. Medžiagų sąrašas 12 V relės modulis == > 4,2 USD „Arduino uno“== > 8 USD DHT11 temperatūros jutiklis == > 3 USD ESP8266 modulis
Namai/Laboratorinis balsu valdomas asistentas: 14 žingsnių (su nuotraukomis)
Pradžia/Laboratorius balsu valdomas asistentas: Apie mane Sveiki! Tai pirmas pamokymas, man 17 metų. Aš esu iš Graikijos, todėl mano anglų kalba gali būti ne tobula, bet aš padarysiu viską. Taigi, aš pirmiausia sukūriau šią programą prieš 2 metus ir radau šį konkursą galimybę atnaujinti savo seną projektą
Paprastas balsu valdomas durų užraktas: 5 žingsniai (su nuotraukomis)
Paprasta balsu valdoma durų spyna: Taigi nusprendžiau, kad noriu savo namuose pastatyti knygų lentynos duris. Dabar yra daug pastabų, paaiškinančių, kaip sukurti tokio tipo daiktus. Mano problema kilo dėl to, kaip išvengti vaikų iš mano biuro. Turiu mažų vaikų ir jie bus laimingi
Valdomas balsu RGB LED: 5 žingsniai (su nuotraukomis)
Šiandien balsu valdomas RGB LED: Sveiki, vaikinai