Sadržaj:
- Supplies
- Korak 1: Prikupljanje i razumijevanje dijelova
- Korak 2: Sastavljanje drona
- Korak 3: Konfiguriranje Raspberry Pi i GCS (Planer misija)
- Korak 4: Programiranje drona za letenje s Pythonom
- Korak 5: Korištenje Amazon Alexa i Amazon Web Services za integraciju glasovne kontrole
Video: Drop Raspberry Pi sa Alexa glasovnim upravljanjem sa IoT -om i AWS -om: 6 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Zdravo! Moje ime je Armaan. Ja sam 13-godišnji dječak iz Massachusettsa. Ovaj vodič prikazuje, kao što možete zaključiti iz naslova, kako izgraditi Raspberry Pi Drone. Ovaj prototip pokazuje kako se bespilotne letjelice razvijaju, kao i koliko bi veliku ulogu mogli odigrati u budućnosti. Definitivno mogu vidjeti sebe kako se budim za 10 godina i tražim od drona da mi doručkuje. Dron koristi Amazon Alexa, Amazon Web Services, IoT (Internet of Things) i najvažnije Raspberry Pi za pokretanje. Namijenjen je demonstraciji i informiranju o bespilotnim letjelicama i tome kako se svakodnevno poboljšavaju. Nadajmo se da ste uspješni i da ćete pritom naučiti o dronovima. Sretno i hvala na čitanju. -Armaan
Supplies
Za izradu prototipa postoje različiti hardverski i softverski zahtjevi. Koristio sam internetsko uputstvo kompanije The Drone Dojo za izradu drona i integrirao navedene tehnologije. Za bespilotnu letjelicu možete pronaći popis dijelova ovdje:
Lista dijelova dronova
Softverski zahtjevi:
- Amazon web usluge
- A Laptop
- Mission Planer softver
- Balena Etcher
- MicroSD kartica sa Raspbian datotekom nalazi se ovdje
- Amazon Alexa, fizički ili virtualni
Korak 1: Prikupljanje i razumijevanje dijelova
Svaki dio naveden u popisu zaliha je neophodan, pa je potrebno i jasno razumijevanje svakog dijela. Dijelove možete pronaći na internetu i nakon što ih prikupite, nastavite čitati. Plejlistu The Drone Dojo za potpuno razumijevanje dijelova možete pronaći ovdje. Objašnjenje od 4 minute na mom youtube kanalu možete pronaći ovdje. Što se tiče bespilotnih letjelica, jedini dijelovi, unatoč onome što većina misli, nisu samo motori i propeleri. U nastavku su navedene osnovne svrhe svakog dijela.
Raspberry Pi sa Emlid Navio2
Ovaj dio je prilično centralni procesor i glavna tačka drona. Raspberry Pi djeluje kao CPU računara koji šalje naredbe Navio2 da se izvrši putem PWM -a (Pulse Width Modulation Signals) do drugih dijelova drona
2. ESC -ovi (elektronski kontroleri brzine)
Ovi žuti dijelovi nalaze se ispod okvira. Na Navio su priključena 4, po jedan za svaki motor. Po prijemu PWM signala, oni okreću motore i započinju let.
3. Motori
Motori ne trebaju previše objašnjenja jer ste ih vjerojatno upoznali. Rotiraju i okreću propelere kako bi stvorili potisak.
4. Propeleri
Propeleri stvaraju potisak za let drona. Okreću se u istom smjeru kao i motori za podizanje vozila.
5. Baterija i modul napajanja
LiPo baterija napaja cijeli dron kroz okvir pomoću modula za napajanje. Daje oko 15-20 minuta leta i djeluje kao izvor energije.
6. GPS
GPS komunicira sa satelitima radi određivanja položaja drona. Određuje visinu, zemljopisnu širinu i dužinu. Može se koristiti za geografske ograde, međutočke, kao i za pomicanje na određene položaje ili smjerove.
7. Telemetrijski modul
Telemetrijski modul povezuje naš dron sa zemaljskom kontrolnom stanicom, u našem slučaju Planer misija, koja će se nadzirati.
8. RC kontroler i modul zajedno sa PPM enkoderom
RC kontroler koristi radio za prijenos signala i naredbi do RC modula za ručno upravljanje dronom. PPM koder prevodi ove signale za obradu i izvršavanje Navio + RPI.
9. Okvir
Ovaj crveno -bijeli okvir djeluje kao osnova ili platforma za postavljanje ostalih dijelova. Okvir je aerodinamičan i lagan, stoga savršen za izradu naših bespilotnih letjelica.
Sada sa znanjem o svakom dijelu, konačno možemo napraviti dron! Naprijed do sljedećeg koraka!
Korak 2: Sastavljanje drona
Ovaj korak je vjerovatno najteži u smislu fizičkog napora. Preporučujem pomoć druge osobe ili pokušajte upotrijebiti ruku pomoći na popisu dijelova. Proces je predug da bi se ovdje demonstrirao, pa ću navesti još jednu vezu koju sam koristio u The Drone Dojo.
Izrada Raspberry Pi drona
Opet, kako neću ulaziti u previše detalja, samo ću istaknuti osnove svakog koraka.
1. Organizirajte svoje zalihe - Prikupite naše materijale i pobrinite se da im bude lako dostupan
2. Planirajte svoju izgradnju - Organizirajte svoje dijelove na okviru kako biste napravili nacrt onoga što ćete izgraditi
3. Lemljenje - Ovo je posao koji je malo teško raditi sam. Morate lemiti konektore zlatnog metka koji dolaze s motorima na ESC -ove. Zatim morate uzeti donji dio okvira i lemiti ESC -ove na donji okvir ili ploču za distribuciju energije. Modul baterije također će biti lemljen na ploči za distribuciju energije
4. Postavljanje okvira - tada morate uvrnuti gornji dio okvira zajedno s rukama. Zatim možete pričvrstiti Raspberry Pi na vrh kako god želite. (Koristio sam ljepljivu traku). Tada možete ESC-ove pričvrstiti za ruke pomoću patentnih zatvarača. Sada smo skoro gotovi.
5. Vezivanje RC kontrolera za prijemnik - Pokušajte slijediti upute u gornjoj playlisti kako biste povezali RC kontroler pomoću ESC -a.
6. Dovršavanje dijelova na okviru - Ljepljiva traka ili traka na telemetrijskom modulu na okviru. Zalijepite PPM koder ljepljivom trakom na ruku. Sada možete spojiti ESC i PPM koder na Navio.
7. GPS nosač + baterija - sastavite GPS nosač s različitim vijcima i dijelovima. Koristeći patentne zatvarače, pričvrstite GPS na okvir. Nisam nužno koristio GPS nosač zbog njegove krhkosti, ali na vama je. Zatim možete umetnuti bateriju između Power Dist. Board. Zakačio sam i zalijepio modul za napajanje na okvir. Sada je vaš hardver prilično postavljen. Sada dio koji čekamo!
8. Ugradnja propelera !!! - Propelere možete zategnuti pomoću tablice navedene u popisu za reprodukciju. Zatim možete priključiti ESC na motore i konačno smo završili s izgradnjom drona.
Softver je na redu, pa naprijed!
Korak 3: Konfiguriranje Raspberry Pi i GCS (Planer misija)
Opet, detaljnije upute možete pronaći na popisu pjesama iz posljednjeg koraka. Međutim, vjerojatno znate kako postaviti RasPi. Ali ovaj put to radimo bez glave. Koristite Balena Etcher za snimanje operativnog sistema sa web stranice Navio OS na MicroSD karticu. Dok je priključen na vaš računar, idite u wpa molitelj koristeći notepad ++. Nakon toga unesite ssid i lozinku da se Raspberry Pi poveže na vaš WiFi. Zatim morate dodati datoteku koja se zove SSH. To može biti putem naredbenog retka ili na neki drugi način. Sada možemo SSH. Možete koristiti naredbeni redak ili Putty. Koristio sam komandnu liniju i otkucao "ssh pi@navio" za povezivanje u mom slučaju, ili možete pronaći IP adresu i ssh na taj način. Nakon povezivanja koristite ovaj video za postavljanje i konfiguriranje Navio -a. Da biste postavili telemetriju, prvo morate izvršiti izmjene na Raspberry Pi. Slijedite ovo za uređivanje i pokušajte se povezati s Planerom misija. Ako telemetrija ne radi, možete poništiti uređivanje i povezati se pomoću UDB veze unošenjem svoje GCS (zemaljske kontrolne stanice, poput prijenosnog računala) IP -a. Nakon što se povežete s planerom misija, pomoću čarobnjaka za postavljanje možete kalibrirati sve dijelove drona. Ako vam je potrebna pomoć, pogledajte ponovo listu za reprodukciju. Obično, kad god postavite, gotovo uvijek dolazi do greške. Rješavanje problema jedan je od najvećih dijelova ovog projekta. Ne mogu vam tu pomoći jer nisam svjestan vaših grešaka, ali većina grešaka može se ispraviti uz pomoć interneta. Nakon što je sve spremno, dron je spreman za let! Možete postaviti svoj RC kontroler i načine leta na planeru misije. Pokušajte držati lijevi štap pet sekundi do samog desnog dohvata da aktivirate bespilotnu letjelicu. Ne preporučujem let bez gledanja vodiča jer je dron vrlo krhak i lako se može slomiti. Za mene je prvi put kad sam letio slomio GPS nosač i neke propelere. Ako vam nije potrebna glasovna kontrola, ovdje možete stati. Nastavite s učenjem o AWS -u i programiranju drona!
Korak 4: Programiranje drona za letenje s Pythonom
Prije ulaska u AWS, prvo bismo trebali razumjeti kako programirati bespilotnu letjelicu da leti. Nakon početnog postavljanja, integriranje glasovne kontrole ne bi trebalo biti teško. Prva stvar koju možemo pokušati steći je jednostavni program uzlijetanja i slijetanja. Nakon postavljanja Raspberry Pi -a, možemo ponovo uključiti SSH u njega. Možete ponovo pogledati listu za reprodukciju ili slijediti moja uputstva.
1. Prvo preuzmite ArduPilot izvorni kod u direktorij na Raspberry Pi
mkdir src
Zatim preuzmite datoteke s GitHub -a koristeći git clone
git clone -b Copter -3.6.11
Idemo sada na /src /ardupilot
cd src
cd ardupilot
Sada, inicijaliziramo izvorne datoteke
git ažuriranje podmodula --init --recursive
2. Zatim moramo kompajlirati firmver na Raspberry Pi
Prije nego učinite sljedeće korake, svakako idite na/src/ardupilot/s cd -om
Zatim konfigurirati posebno za Navio koristeći
./waf configure --board = navio2
Zatim možete kompajlirati sa
./waf -ciljna kanta/ardukopter
3. Sada možemo instalirati izvorni kod na Navio
Prvo idemo do pravog direktorija.
cd/etc/systemd/system
Zatim uredite datoteku
sudo vi arducopter.service
Gdje piše ExecStart, umetnite sljedeće umjesto onoga što već postoji
ExecStart =/bin/sh -c "/home/pi/src/arducopter/build/navio2/bin/arducopter $ {ARDUPILOT_OPTS}"
Sada, za provođenje izvornog koda ardupilota u akciju, možemo koristiti
sudo systemctl daemon-reload
Zatim možemo ponovo početi sa
sudo systemctl ponovo pokrenite arducopter
Zadnjim korakom konačno smo dovršili postavljanje ArduPilota na naš dron
4. Instaliranje DroneKit -a
DroneKit je softver koji ćemo koristiti za programiranje drona na let. Da biste razumjeli neke kodove, dokumentaciju možete pronaći ovdje. Prvo moramo instalirati paket na naš dron prije pisanja skripte.
Python paket možemo instalirati sa
pip install dronekit == 2.9.1
Ovo može, ali i ne mora biti najnovija verzija, ali to je ona koju sam koristio pa mogu pomoći u rješavanju problema.
Da bismo provjerili je li instaliran, možemo učiniti sljedeće
pip freeze | grep dronekit
Sada smo konačno spremni za izradu našeg prvog python skripta
5. takeoff_and_land.py
UPOZORENJE! Predlažem da uspostavite osnovno razumijevanje pythona kako biste mogli naučiti i razumjeti kôd. Ako želite sami napisati program, slijedite ovaj video.
## Prvo nemojmo stvarati direktorij za pohranu ovog koda
cd dk ## Ako želite to učiniti sami, koristite vi takeoff_and_land.py ## za kreiranje programa
U suprotnom, možete pogledati ili koristiti priloženu datoteku i koristiti protokol za prijenos datoteka. Ovaj program možemo kasnije isprobati. Prvo da pojasnimo da je to python datoteka koju moramo koristiti
chmod +x takeoff_and_land.py
Zatim pokušajte upotrijebiti sljedeći kôd za pokretanje
python takeoff_and_land.py --connect 127.0.0.1:14550
Ni meni prvi put nije upalilo. Ako postoji vremensko ograničenje veze, ne brinite, postoji nešto što možete učiniti. Otvorite još jedan upit i ssh. Možete pokušati instalirati nešto što se zove mavproxy i pokušati ga pokrenuti. Nakon toga možete pokrenuti oboje istovremeno. Ovo bi trebalo pomoći pri povezivanju drona. Kad to učinite, imam izazov za vas. Pokušajte shvatiti šta drugi program (set_velocity_body.py) radi i kako ga natjerati da radi. Ako to učinite, dobar posao.
6. Napred!
Sada možemo koristiti ovo znanje kako bismo našim dronom upravljali glasom. Alexa kontrola bespilotnih letjelica koristi mnoge od ovih funkcija i više. Sretno i dalje!
Korak 5: Korištenje Amazon Alexa i Amazon Web Services za integraciju glasovne kontrole
Ovaj korak je jedan od manje dokumentiranih. To znači da će biti najteže otkloniti probleme. Za početak rada trebalo mi je oko mjesec dana, možda i više. Ovdje je najvažnije biti strpljiv. Ova funkcija, ako se implementira u stvarnom životu, može promijeniti život. Možete samo reći Alexa da vam nabavi namirnice umjesto da idete sami. Zamisli to! Dakle, bez daljnjih odlaganja, uđimo u to!
1. Registriranje Raspberry Pi -a kao stvari na AWS IoT -u
Da bismo koristili IoT (Internet of Things), potrebno nam je nešto. Stoga se moramo prijaviti na AWS konzolu da bismo prvo koristili AWS IoT. Zatim idite na IoT Core. Kad stignete tamo, trebate kliknuti Upravljanje, a zatim stvoriti stvar. Nakon dodavanja imena, za povezivanje nam je potreban certifikat. Preporučio bih da kliknete na certifikaciju jednim klikom. Zatim, nakon što vidite zaslon s certifikatom, svakako preuzmite svaki ključ uključujući i osnovni CA. Tada možete otići i završiti stvaranje stvari. Zatim moramo kreirati politiku. Vratite se na IoT Core. Zatim kliknite na siguran i kliknite politike. Zatim pritisnite kreiraj politiku. Zatim možete stvoriti ime i dodati resurse. Pod akcijom, upišite iot * i upišite * ispod resursa i pogodite za omogućavanje učinka. Zatim se vratite na svoju stvar i idite na svoj certifikat. Ovdje dođite do pravila. Zatim možete priložiti svoju politiku za stvar i sve je spremno!
2. Postavljanje koda na Raspberry Pi i interakcija s IoT -om
Za ovaj dio trebat će vam SFTP klijent (koristio sam WinSCP) za prijenos datoteka. Nakon povezivanja na naš Raspberry Pi, ključeve certifikata ćemo morati imati pri ruci. Morate prenijeti ključne datoteke na Raspberry Pi. Također biste trebali instalirati AWSIoTPythonSDK pip pipom na Raspberry Pi. Zatim idite u direktorij dk na Raspberry Pi. Za komunikaciju s IoT -om koristite Alexa Drone Control datoteku koju sam dao. Za korištenje ove datoteke koristio sam Shell Script za pokretanje. Prikazat ću donji kôd jer iz nekog razloga ne mogu otpremiti datoteku. Ne brinite ako program ne preuzima poruke s AWS IoT -a! Ovo je možda moja greška jer Alexa kontrolna datoteka drona možda ne odgovara vašoj stvari. Dakle, da biste to popravili, vratite se na AWS IoT i pritisnite lijevo na ploči za učenje. Slijedite upute i možda ćete morati ponovo pokrenuti. Izvini zbog toga. Kada vaš IoT počne raditi s programom na RasPi -u, možete integrirati dronekit kôd iz Alexa Drone Control datoteke koju sam dao. Nakon toga upotrijebite Shell Script koji sam dao s vašim certifikatima i Rest API Endpoint iz IoT -a.
# stop script on errorset -e # Provjerite postoji li root CA datoteka, preuzmite ako ne ako [! -f./root-CA.crt]; zatim printf "\ nPreuzimanje AWS IoT Root CA certifikata iz AWS … / n" curl https://www.amazontrust.com/repository/AmazonRoot…>> root-CA.crt fi # instalirajte SDK AWS uređaja za Python ako već nije instaliran ako [! -d./aws-iot-device-sdk-python]; zatim printf "\ nInstaliranje AWS SDK-a … / n" git klonirajte https://www.amazontrust.com/repository/AmazonRoot…> pushd aws-iot-device-sdk-python python setup.py instalirajte popd fi
# pokrenite pub/sub sample aplikaciju koristeći certifikate preuzete u paketu
printf "\ nPokretanje pub/sub uzorka aplikacije … / n" python dk/AlexaDroneControl.py --connect 127.0.0.1:14550 -e "Vaš IoT ARN" -r root -CA.crt -c PiGroundStation01.cert.pem -k PiGroundStation01.private.key
Ovo neće raditi za sve vas jer su imena različita. Umjesto ključeva koje sam koristio, prilikom prijenosa datoteke zamijenite ih vašim ključevima. Prije prijenosa datoteke obavezno izađite iz dk -a! To bi trebalo biti sve što trebate učiniti za sada.
3. Izgradnja vaše Alexa vještine
Ovaj korak izgleda mnogo teže nego što zaista jeste. Prvo se moramo prijaviti na Alexa Developer konzolu. Zatim samo pritisnite stvoriti vještinu. Kad traži da odaberete model za svoju vještinu, samo pritisnite custom. Kad traži da odaberete metodu, pritisnite svoju vlastitu. Možete ga nazvati kako god želite. Predložak nije potreban, pa odaberite početak od početka. Zatim, nakon što ste stvorili svoju vještinu, trebali biste doći na ekran za izradu vještina sa kontrolnom listom s desne strane. Odavde možemo početi razvijati svoju vještinu. Prvo na kontrolnoj listi je naziv poziva. Ovo ćete Aleksa reći da se pozove na vašu vještinu. Za mene, samo sam stavio svoj poziv na poziv kao dron. Sada možemo prijeći na naše namjere, izjave i slotove. Ovdje možete izvršiti komande za bespilotnu letjelicu, npr. Ići gore 1 metar ili ići desno ili dolje. Moj za sada radi samo s jednim metrom. Možete kliknuti na JSON Editor na dnu lijeve ploče. Zatim u njega možete zalijepiti sljedeći kôd.
Nakon lijepljenja koda u JSON Editor, možete kliknuti na treći korak kontrolne liste i on će za vas izgraditi vaš model interakcije. Ovim korakom ćete za sada biti gotovi. Za sada možete ostaviti prazno mesto za krajnju tačku!
Korak 4: Izgradnja vaše lambda funkcije
Ovaj korak ćete morati sami shvatiti. Reći ću vam kako ga spojiti na Alexa vještinu, ali to ćete morati sami kodirati. Dakle, prvo idite na AWS upravljačku konzolu. Zatim idite na Lambdu. Zatim možete stvoriti funkciju koja će joj dati ime kako god želite. Napišite ga od nule i napravite za vrijeme izvođenja programski jezik koji god želite. Koristio sam Node.js. Da biste dodali Alexa vještinu, dodajte okidač i odaberite Alexa Skills Kit (ASK). Kopirajte svoj Lambda ARN i vratite se do Alexa vještine. Sada idite na krajnju tačku. Možete zalijepiti svoj ARN, spremiti i izgraditi novi model. Zatim uzmite Alexa Alexa Skill ID i zalijepite ga u odjeljak okidača gdje vas pita na Lambdi. Zatim se pomaknite prema dolje na Lambdi i pronađite osnovne postavke i napravite vremensko ograničenje od 10 sekundi. Sada je na vama da shvatite kod. Za savjete možete posjetiti dolje navedene web stranice.
github.com/aws/aws-iot-device-sdk-js
www.hackster.io/veggiebenz/voice-controlle…
i možete koristiti datoteku koju sam priložio, ali je nepotpuna i neće raditi.
/ *** Upravljajte svojim APM / Pixhawk quadcopterom svojim glasom, koristeći Amazon Alexa, Lambda, 2lemetry MQTT.*/ var awsIot = require ('aws-iot-device-sdk'); var config = require ("./ config"); var deviceName = "EchoDroneControl"; // ovaj uređaj je zaista kontroler 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 = null; var client = null; // Usmjeravamo dolazni zahtjev na osnovu tipa (LaunchRequest, IntentRequest, itd.) JSON tijelo zahtjeva nalazi se u parametru događaja. export.handler = funkcija (događaj, kontekst) {probajte {console.log ("event.session.application.applicationId =" + event.session.application.applicationId); ctx = kontekst; if (event.session.application.applicationId! == app_id) {ctx.fail ("Nevažeći ID aplikacije"); } klijent = awsIot.device (mqtt_config); client.on ("connect", function () {console.log ("Povezano na AWS IoT"); // povratni poziv ();});
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.succeed (); }} catch (e) {console.log ("EXCEPTION in handler:" + e); ctx.fail ("Izuzetak:" + e); }}; /*** Poziva se kada počinje sesija. */ funkcija onSessionStarted (sessionStartedRequest, session) {console.log ("onSessionStarted requestId =" + sessionStartedRequest.requestId + ", sessionId =" + session.sessionId); }
/**
* Poziva se kada korisnik pokrene vještinu bez navođenja šta želi. */ funkcija onLaunch (launchRequest, session, callback) {console.log ("onLaunch requestId =" + launchRequest.requestId + ", sessionId =" + session.sessionId); // Slanje na lansiranje vaše vještine. getWelcomeResponse (povratni poziv); } /*** Poziva se kada korisnik navede namjeru ove vještine. */funkcija onIntent (intentRequest, session) {//, povratni poziv) {console.log ("onIntent requestId =" + intentRequest.requestId + ", sessionId =" + session.sessionId); var intent = intentRequest.intent, intentName = intentRequest.intent.name; console.log ("REQUEST to string =" + JSON.stringify (intentRequest)); var povratni poziv = null; // Slanje obrađivačima namjera vaše vještine if ("GoIntent" === intentName) {doGoIntent (intent, session); } else if ("CommandIntent" === intentName) {doCommandIntent (intent, session); } else if ("TurnIntent" === intentName) {doTurnIntent (intent, session); } else if ("HelpIntent" === intentName) {getWelcomeResponse (); } else {throw "Neispravna namera"; }} /*** Poziva se kada korisnik završi sesiju. * Ne poziva se kada se vještina vrati shouldEndSession = true. */ funkcija onSessionEnded (sessionEndedRequest, session) {console.log ("onSessionEnded requestId =" + sessionEndedRequest.requestId + ", sessionId =" + session.sessionId); // Ovdje dodajte logiku čišćenja} // --------------- Funkcije koje kontroliraju ponašanje vještine -------------------- --- funkcija getWelcomeResponse () {// Ako želimo inicijalizirati sesiju da bismo imali neke atribute, mogli bismo ih dodati ovdje. var sessionAttributes = {}; var cardTitle = "Dobro došli"; var speechOutput = "Dobro došli u DRONE CONTROL."; // TODO: je li dron online ili offline? Ako je na mreži, je li NAoružano? var repromptText = "Dron spreman za komandu."; var shouldEndSession = false; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } /*** upravlja GO namjerom. */ funkcija doGoIntent (namjera, sesija, povratni poziv) {// var cardTitle = "Drone GO…"; var repromptText = ""; var sessionAttributes = {}; var shouldEndSession = false; var speechOutput = ""; var direction = intent.slots. Direction.value; var distance = intent.slots. Distance.value; var unit = intent.slots. Unit.value; var validDirections = ["naprijed", "naprijed", "nazad", "natrag", "desno", "lijevo", "gore", "dolje", "ravno", "naprijed", "ravno naprijed"]; var validUnits = ["stopa", "stope", "metar", "metri", "dvorište", "jardi"]; repromptText = "Reci mi koliko daleko da idem i u kom pravcu."; var fail = false; // potvrđujemo unose if (! (parseInt (udaljenost)> = 1)) {govorOutput = "Nisam mogao razumjeti udaljenost koju želite da pređem."; fail = true; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (validDirections.indexOf (direction) == -1) {govorOutput = "Nisam mogao razumjeti smjer u kojem želite da putujem."; fail = true; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (validUnits.indexOf (unit) == -1) {speechOutput = "Nisam mogao razumjeti jedinicu kojom želite da putujem."; fail = true; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (! fail) {var cardTitle = "Dron ide" + pravac + "" + udaljenost + "" + jedinica; speechOutput = "Ide" + pravac + "" + udaljenost + "" + jedinica; mqttPublish (intent, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}
funkcija doCommandIntent (namjera, sesija, povratni poziv) {
// var cardTitle = "DROM COMMAND…"; var repromptText = null; var sessionAttributes = {}; var shouldEndSession = false; var speechOutput = ""; repromptText = "Reci mi koja je komanda za bespilotnu letjelicu."; var task = intent.slots. Task.value; var validTasks = ["launch", "land", "r. t. l.", "hold", "stay", "stop", "return to launch", "abort"]; if (validTasks.indexOf (task) == -1) {govorOutput = "Nisam mogao razumjeti naredbu."; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } else {var cardTitle = "Izvršavanje komande Drone" + zadatak; speechOutput = "Izvršavanje naredbe" + zadatak; mqttPublish (intent, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}
funkcija doTurnIntent (namjera, sesija, povratni poziv) {
// var cardTitle = "Skretanje drona …"; var repromptText = null; var sessionAttributes = {}; var shouldEndSession = false; var speechOutput = ""; repromptText = "Reci mi kako želiš okrenuti dron."; var direction = intent.slots. Direction.value; var validDirections = ["desno", "lijevo", "okolo"]; if (validDirections.indexOf (direction) == -1) {speechOutput = "Nisam mogao razumjeti smjer skretanja."; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } else {var cardTitle = "Okretanje drona" + smjer; speechOutput = "Okretanje" + smjer; mqttPublish (intent, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}
funkcija mqttPublish (intent, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession)
{var strIntent = JSON.stringify (namjera); 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 - misli da je uspješno obavljeno."); ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession)));})); client.on ("greška", (funkcija (greška, odobreno) {console.log ("MQTT KLIJENTSKA GREŠKA !!" + greška);})); }
// --------------- Pomagači koji sastavljaju sve odgovore -----------------------
funkcija buildSpeechletResponse (naslov, izlaz, repromptText, shouldEndSession) {return {outputSpeech: {tip: "PlainText", tekst: output}, kartica: {tip: "Jednostavno", naslov: naslov, sadržaj: izlaz}, ponovni upit: {outputSpeech: {type: "PlainText", text: repromptText}}, shouldEndSession: shouldEndSession}} funkcija buildResponse (sessionAttributes, speechletResponse) {return {verzija: "1.0", sessionAttributes: sessionAttributes, response: speechletResponse}}
Preporučuje se:
Robot s glasovnim upravljanjem pomoću V3 modula: 6 koraka
Robot kontroliran glasom pomoću V3 modula: Ovaj robot može lako napraviti bilo tko, samo slijedite postupak kako sam vam rekao. Ovo je robot s glasovnim upravljanjem i možete vidjeti demo mog robota. Možete ga koristiti na dva načina. daljinski, a drugi putem glasa
Robot s glasovnim upravljanjem pomoću 8051 mikrokontrolera: 4 koraka (sa slikama)
Robot s glasovnim upravljanjem pomoću mikrokontrolera 8051: Robot s glasovnim upravljanjem preuzima određenu naredbu u obliku glasa. Koja god se naredba daje putem govornog modula ili Bluetooth modula, dekodira je postojeći kontroler i stoga se zadana naredba izvršava. Ovdje u ovom projektu ja
3D štampani trikopter sa glasovnim upravljanjem: 23 koraka (sa slikama)
Glasovno kontrolisani 3D štampani trikopter: Ovo je potpuno 3D štampani bespilotni letjelica koja se može upravljati i upravljati glasovnom kontrolom pomoću Amazonove Alexa putem zemaljske stanice koju kontroliše Raspberry Pi. Ovaj trikopter s glasovnim upravljanjem poznat je i kao Oliver Tri.Trikopter
Kako napraviti robota s glasovnim upravljanjem: 3 koraka (sa slikama)
Kako napraviti robota s glasovnim upravljanjem: Jeste li ikada htjeli upravljati svojim glasom? Onda ste na pravom mjestu i možete kontrolirati sve pomoću arduina, samo morate povezati te stvari i morati to prijaviti u programu. Napravio sam jednostavan glas kontrolirani robot, ali možete ga povezati
Kućna automatizacija glasovnim upravljanjem: 8 koraka (sa slikama)
Kućna automatizacija s glasovnom kontrolom: Pozdrav, U ovom uputstvu naučit ću vas da napravite kućnu automatizaciju s glasovnom kontrolom. Jednostavno ćemo se uključiti u mobilni telefon i kontrolirati naše uređaje glasom. Vjerujte mi da to nije tako teško napraviti kako zvuči. Samo slijedite korake i y