Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Osien kerääminen ja ymmärtäminen
- Vaihe 2: Dronin kokoaminen
- Vaihe 3: Raspberry Pi: n ja GCS: n määrittäminen (Mission Planner)
- Vaihe 4: Dronin ohjelmointi lentämään Pythonilla
- Vaihe 5: Amazon Alexan ja Amazon Web Services -palvelun käyttäminen ääniohjauksen integroimiseksi
Video: Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: 6 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Hei! Nimeni on Armaan. Olen 13-vuotias Massachusettsin poika. Tämä opetusohjelma näyttää, kuten voit päätellä otsikosta, kuinka rakentaa Raspberry Pi Drone. Tämä prototyyppi osoittaa, kuinka dronit kehittyvät ja kuinka suuri rooli niillä voi olla tulevaisuudessa. Voin ehdottomasti nähdä itseni heräämässä 10 vuoden kuluttua ja pyytämällä dronea hankkimaan aamiaisen minulle. Drone käyttää Amazon Alexaa, Amazon Web Services, IoT (esineiden internet) ja ennen kaikkea Raspberry Pi. Sen tarkoitus on osoittaa ja tiedottaa droneista ja siitä, miten ne paranevat päivittäin. Toivottavasti olet onnistunut ja opit droneista prosessin aikana. Onnea ja kiitos lukemisesta. -Armaan
Tarvikkeet
Prototyypin rakentamiseen tarvitaan erilaisia laitteistoja ja ohjelmistoja. Käytin The Drone Dojon online -opetusohjelmaa droonin rakentamiseen ja lueteltujen tekniikoiden integrointiin.
Drone -osaluettelo
Ohjelmistovaatimukset:
- Amazonin verkkopalvelut
- Läppäri
- Mission Planer -ohjelmisto
- Balena Etcher
- MicroSD -kortti Raspbian -tiedostolla löytyy täältä
- Amazon Alexa, fyysinen tai virtuaalinen
Vaihe 1: Osien kerääminen ja ymmärtäminen
Kaikki tavaraluettelossa mainitut osat ovat välttämättömiä, samoin kuin kaikkien osien selkeä ymmärtäminen. Löydät osat verkosta ja keräämisen jälkeen voit jatkaa lukemista. The Drone Dojon soittolista osien täydelliseen ymmärtämiseen löytyy täältä. Neljän minuutin selitys youtube-kanavallani löytyy täältä. Mitä tulee droneihin, ainoat osat, huolimatta siitä, mitä useimmat ihmiset ajattelevat, eivät ole vain moottoreita ja potkureita. Alla on kunkin osan perimmäiset tarkoitukset.
Raspberry Pi ja Emlid Navio2
Tämä osa on melko paljon keskusprosessori ja droonin pääkohta. Raspberry Pi toimii kuin tietokoneen keskusyksikkö, joka lähettää Navio2: lle komentoja suoritettavaksi PWM: n (Pulse Width Modulation Signals) kautta muihin dronin osiin
2. ESC: t (elektroniset nopeudensäätimet)
Nämä keltaiset osat löytyvät kehyksen alta. Ne on kytketty 4 Navioon, yksi kullekin moottorille. Vastaanotettuaan PWM -signaaleja ne pyörivät moottoreita ja aloittavat lennon.
3. Moottorit
Moottorit eivät tarvitse liikaa selityksiä, koska olet todennäköisesti tuttu niihin. Ne pyörivät ja pyörivät potkureita työntövoiman luomiseksi.
4. Potkurit
Potkurit luovat työntövoiman dronin lentämiseen. Ne pyörivät samaan suuntaan kuin moottorit ajoneuvon nostamiseksi.
5. Akku- ja virtamoduuli
LiPo -akku käyttää koko dronea kehyksen läpi virtamoduulin avulla. Se antaa noin 15-20 minuuttia lentoaikaa ja toimii virtalähteenä.
6. GPS
GPS kommunikoi satelliittien kanssa määrittääkseen dronin sijainnin. Se määrittää korkeuden, leveys- ja pituusasteen. Sitä voidaan käyttää maantieteelliseen aitaukseen, reittipisteisiin ja myös siirtymiseen tiettyihin paikkoihin tai suuntiin.
7. Telemetriamoduuli
Telemetriamoduuli yhdistää dronin maaohjausasemaan, meidän tapauksessamme Mission Planner, seurattavaksi.
8. RC -ohjain ja -moduuli sekä PPM -kooderi
RC -ohjain lähettää radion avulla signaaleja ja komentoja RC -moduuliin ohjaamaan dronea manuaalisesti. PPM -kooderi kääntää nämä signaalit Navio + RPI: n käsiteltäväksi ja suoritettavaksi.
9. Kehys
Tämä punainen ja valkoinen kehys toimii pohjana tai alustana muille sijoitettaville osille. Runko on aerodynaaminen ja kevyt, joten se sopii täydellisesti drone -rakenteeseemme.
Nyt kun tiedämme kaikki osat, voimme vihdoin rakentaa dronin! Siirry seuraavaan vaiheeseen!
Vaihe 2: Dronin kokoaminen
Tämä vaihe on luultavasti vaikein fyysisen rasituksen kannalta. Suosittelen, että otat toisen henkilön avuksi tai yrität käyttää osaluettelon apua. Prosessi on liian pitkä esittelemään täällä, joten annan toisen linkin, jota käytin The Drone Dojo.
Raspberry Pi -droonin rakentaminen
Jälleen, koska en mene liikaa yksityiskohtiin, korostan vain jokaisen vaiheen perusasiat.
1. Järjestä tarvikkeesi - Kerää materiaalimme ja varmista, että ne ovat helposti saatavilla
2. Suunnittele rakentaminen - Järjestä osat runkoon ja tee suunnitelma siitä, mitä rakennat
3. Juototyö - Tämä on työtä, jota on hieman vaikea tehdä yksin. Sinun on juotettava moottorien mukana tulevat kultaiset luodinliittimet ESC: ille. Seuraavaksi sinun on otettava rungon alaosa ja juotettava ESC: t alakehykseen tai virtalähteeseen. Akkumoduuli juotetaan myös virranjakelukorttiin
4. Kehyksen asentaminen - Sitten sinun on ruuvattava rungon yläosa sisään käsivarsien kanssa. Voit sitten kiinnittää Raspberry Pi: n päälle haluamallasi tavalla (käytin teippiä). Sitten voit kiinnittää ESC: t käsivarsiin vetoketjuilla. Nyt olemme melkein valmiita.
5. RC -ohjaimen sitominen vastaanottimeen - Yritä sitoa RC -ohjain ESC: n avulla noudattamalla yllä olevan soittolistan ohjeita.
6. Osien viimeistely kehykseen - Telemetriamoduulin teippi tai hihna runkoon. Kiinnitä PPM -kooderi myös käsivarteen. Nyt voit liittää ESC: n ja PPM -kooderin Navioon.
7. GPS -kiinnike + akku - Kokoa GPS -kiinnike eri ruuveilla ja kappaleilla. Kiinnitä GPS runkoon vetoketjuilla. En välttämättä käyttänyt GPS -kiinnitystä sen haurauden vuoksi, mutta se on sinun tehtäväsi. Seuraavaksi voit asettaa pariston Power Dist. Hallitus. Kiinnitin ja teipasin myös virtamoduulin kehykseen. Nyt laitteisto on melko valmiina. Nyt osa, jota odotamme!
8. Potkurien asennus !!! - Voit kiristää potkurit soittolistassa mainitun kaavion avulla. Sitten voit kytkeä ESC: t moottoriin ja olemme vihdoin valmiit rakentamaan dronin.
Ohjelmisto on seuraava, joten eteenpäin!
Vaihe 3: Raspberry Pi: n ja GCS: n määrittäminen (Mission Planner)
Jälleen löydät tarkemmat ohjeet soittolistasta viimeisestä vaiheesta. Luultavasti kuitenkin tiedät, miten RasPi asennetaan. Mutta tällä kertaa teemme sen päätön. Käytä Balena Etcheriä polttaaksesi käyttöjärjestelmän Navio OS -verkkosivustolta MicroSD -kortille. Kun se on kytketty tietokoneeseen, siirry wpa -anomiseen käyttämällä muistilehteä ++. Kirjoita sen jälkeen ssid ja salasana, jotta Raspberry Pi muodostaa yhteyden WiFi -verkkoon. Sitten sinun on lisättävä tiedosto nimeltä SSH. Tämä voi tapahtua komentorivillä tai muulla menetelmällä. Nyt voimme SSH. Voit käyttää komentokehotetta tai Puttyä. Käytin komentokehotetta ja kirjoitin "ssh pi@navio" yhteyden muodostamiseen tapauksessani, tai löydät IP -osoitteen ja ssh: n tällä tavalla. Kun muodostat yhteyden, käytä tätä videota Navion asentamiseen ja määrittämiseen. Telemetrian asettamiseksi sinun on ensin tehtävä muokkaus Raspberry Pi -laitteeseen. Muokkaa tätä ja yritä muodostaa yhteys Mission Planneriin. Jos telemetria ei toimi, voit kumota muokkauksen ja muodostaa yhteyden UDB -yhteydellä kirjoittamalla GCS (Ground Control Station, kuten kannettava) IP -osoitteen. Kun yhteys Mission Planneriin on muodostettu, voit ohjatun asennustoiminnon avulla kalibroida dronin kaikki osat. Jos tarvitset apua, katso soittolista uudelleen. Yleensä aina, kun asennat, melkein aina on virhe. Vianetsintä on yksi tämän projektin suurimmista osista. En voi auttaa sinua siellä, koska en ole tietoinen virheistäsi, mutta useimmat virheet voidaan korjata Internetin avulla. Kun kaikki on valmista, drone on valmis lentämään! Voit määrittää RC -ohjaimen ja lentotilat Mission Plannerissa. Yritä pitää vasen sauva alhaalla oikealla viiden sekunnin ajan droonin virittämiseksi. En suosittele lentämistä katsomatta opetusohjelmaa, koska drone on erittäin hauras ja helppo murtaa. Ensimmäistä kertaa lentäessäni rikkoin GPS -kiinnityksen ja jotkin potkurit. Jos et tarvitse ääniohjausta, voit pysähtyä tähän. Jos haluat oppia AWS: stä ja droonin ohjelmoinnista, jatka!
Vaihe 4: Dronin ohjelmointi lentämään Pythonilla
Ennen kuin pääsemme AWS: ään, meidän pitäisi ensin ymmärtää, kuinka ohjelmoida drone lentämään. Alkuasetusten jälkeen ääniohjauksen integroinnin ei pitäisi olla liian vaikeaa. Ensimmäinen asia, jonka voimme yrittää ymmärtää, on yksinkertaisen lentoonlähtö- ja laskeutumisohjelman tekeminen. Kun Raspberry Pi on asennettu, voimme SSH: n siihen uudelleen. Voit katsoa soittolistaa uudelleen tai seurata ohjeita.
1. Lataa ensin ArduPilot -lähdekoodi Raspberry Pi -hakemistosta
mkdir src
Hanki sitten tiedostot GitHubista git -kloonin avulla
git klooni -b Copter -3.6.11
Siirrytään nyt kohteeseen /src /ardupilot
cd src
cd ardupilot
Alustetaan nyt lähdetiedostot
git -alimoduulin päivitys -init -rekursiivinen
2. Seuraavaksi meidän on koottava Raspberry Pi: n laiteohjelmisto
Muista navigoida kansioon/src/ardupilot/cd: llä ennen kuin teet seuraavat vaiheet
Tämän jälkeen voit määrittää ne Navion avulla
./waf configure --board = navio2
Sitten voit kääntää
./waf -kohdistaa roskakoriin/arducopteriin
3. Nyt voimme asentaa lähdekoodin Navioon
Ensin annetaan navigoida oikeaan hakemistoon.
cd/etc/systemd/system
Muokkaa sitten tiedostoa
sudo vi arducopter.service
Jos se sanoo ExecStart, lisää seuraava jo olemassa olevan sijaan
ExecStart =/bin/sh -c "/home/pi/src/arducopter/build/navio2/bin/arducopter $ {ARDUPILOT_OPTS}"
Nyt voimme käyttää ardupilot -lähdekoodia toimintaan
sudo systemctl daemon-reload
Sitten voimme aloittaa uudelleen
sudo systemctl käynnistä arducopter uudelleen
Viimeisessä vaiheessa olemme vihdoin saaneet ArduPilotin käyttöön dronellamme
4. DroneKitin asentaminen
DroneKit on ohjelmisto, jonka avulla ohjelmoimme dronin lentämään. Jos haluat ymmärtää osan koodista, löydät asiakirjat täältä. Ensin meidän on asennettava paketti droonillemme ennen komentosarjan kirjoittamista.
Voimme asentaa python -paketin
pip install dronekit == 2.9.1
Tämä saattaa olla uusin versio tai ei, mutta olen käyttänyt sitä, jotta voin auttaa vianetsinnässä.
Tarkistaaksemme, onko se asennettu, voimme tehdä a
pip jäädyttää | grep dronekit
Nyt olemme vihdoin valmiita tekemään ensimmäisen python -skriptimme
5. lentoonlähtö_ja_maa.py
VAROITUS! Suosittelen perustavanlaatuisen ymmärryksen luomista pythonista, jotta voit oppia ja ymmärtää koodin. Jos haluat kirjoittaa ohjelman itse, seuraa tätä videota.
## Ensin luodaan hakemisto tämän koodin tallentamiseksi
cd dk ## Jos haluat tehdä sen itse, luo ohjelma käyttämällä ohjelmaa vi takeoff_and_land.py ##
Muussa tapauksessa voit katsoa tai käyttää liitteenä olevaa tiedostoa ja käyttää tiedostonsiirtoprotokollaa. Voimme kokeilla tätä ohjelmaa myöhemmin. Selvennetään ensin, että se on python -tiedosto, jota meidän on käytettävä
chmod +x lentoonlähtö_ja_maa.py
Yritä sitten käyttää seuraavaa koodia suorittamiseen
python takeoff_and_land.py -connect 127.0.0.1:14550
Ensimmäisellä kerralla se ei toiminut minullakaan. Jos linkin aikakatkaisu on olemassa, älä huoli, voit tehdä jotain. Avaa toinen kehote ja ssh. Voit yrittää asentaa jotain nimeltä mavproxy ja yrittää suorittaa sen. Tämän jälkeen voit suorittaa molemmat samanaikaisesti. Tämän pitäisi auttaa dronin yhdistämisessä. Kun tämä on tehty, minulla on haaste sinulle. Yritä selvittää, mitä toinen ohjelma (set_velocity_body.py) tekee ja miten se toimii. Jos teet, hyvä työ.
6. Eteenpäin!
Voimme nyt käyttää tätä tietämystä droonimme ääniohjaukseen. Alexa -drone -ohjaus käyttää paljon näitä ominaisuuksia ja paljon muuta. Onnea ja jatkoa!
Vaihe 5: Amazon Alexan ja Amazon Web Services -palvelun käyttäminen ääniohjauksen integroimiseksi
Tämä vaihe on yksi vähemmän dokumentoiduista. Tämä tarkoittaa, että vianetsintä on vaikeinta. Sen saaminen töihin kesti noin kuukauden, ehkä enemmän. Tärkeintä tässä on olla kärsivällinen. Tämä ominaisuus, jos se otetaan käyttöön todellisessa elämässä, voi muuttaa elämää. Voit vain pyytää Alexaa hankkimaan ruokaostoksesi sinulle sen sijaan, että menisit itse. Kuvittele sitä! Joten ilman lisäpuhelua mennään asiaan!
1. Raspberry Pi: n rekisteröiminen AWS IoT: n asiaksi
Jotta voimme käyttää esineiden Internetiä (Internet of Things), tarvitsemme jotain. Joten meidän on kirjauduttava AWS -konsoliin, jotta voimme käyttää AWS IoT: ta ensin. Siirry sitten IoT Coreen. Kun olet siellä, napsauta Hallitse ja luo sitten asia. Nimen lisäämisen jälkeen tarvitsemme varmenteen yhdistämistä varten. Suosittelen napsauttamaan yhden napsautuksen sertifikaattia. Kun olet nähnyt varmenneikkunan, muista ladata jokainen avain, mukaan lukien pääkäyttäjä. Sitten voit mennä ja viimeistellä asian luomisen. Seuraavaksi meidän on luotava politiikka. Palaa takaisin IoT Coreen. Napsauta sitten suojattua ja käytäntöjä. Napsauta sitten Luo käytäntö. Voit sitten luoda nimen ja lisätä resursseja. Kirjoita toiminnon alla iot * ja * resurssin alle ja napsauta salli vaikutus. Palaa sitten asiaan ja mene todistukseesi. Kun olet täällä, napsauta käytäntöjä. Voit sitten liittää asiaan liittyvän käytännön ja kaikki on valmista!
2. Koodin määrittäminen Raspberry Pi: lle ja vuorovaikutus IoT: n kanssa
Tässä osassa tarvitset SFTP -asiakkaan (käytin WinSCP: tä) tiedostonsiirtoon. Kun muodostamme yhteyden Raspberry Pi -laitteeseemme, meillä on oltava varmenneavaimet käsillä. Sinun on siirrettävä avaintiedostot Raspberry Pi -laitteeseen. Asenna myös AWSIoTPythonSDK pipillä Raspberry Pi -laitteeseen. Siirry sitten Raspberry Pi: n dk -hakemistoon. Käytät antamaani Alexa Drone Control -tiedostoa kommunikointiin IoT: n kanssa. Käyttääkseni tätä tiedostoa käytin Shell Scriptia käynnistyksessä. Näytän alla olevan koodin, koska jostain syystä en voi ladata tiedostoa. Jos ohjelma ei noudata AWS IoT: n viestejä testauksen aikana, älä huoli! Tämä voi olla minun vikani, koska Alexa Drone Control File ei ehkä sovi asiaasi. Joten korjaa se palaamalla AWS IoT -palveluun ja napsauttamalla vasemman paneelin oppia. Noudata ohjeita ja saatat joutua käynnistämään sen uudelleen. Anteeksi tuosta. Kun IoT -laitteesi alkaa toimia RasPi -ohjelman kanssa, voit integroida dronekit -koodin antamastani Alexa Drone Control -tiedostosta. Käytä sen jälkeen Shell -skriptiä, jonka annoin varmenteidesi ja IoT: n Rest API -päätepisteen kanssa.
# stop script on erroret -e # Tarkista onko CA -juuritiedosto olemassa, lataa jos ei jos [! -f./root-CA.crt]; sitten printf "\ nAWS IoT Root CA -varmenteen lataaminen AWS: stä … / n" curl https://www.amazontrust.com/repository/AmazonRoot…>> root-CA.crt fi # install AWS Device SDK for Python, jos sitä ei ole jo asennettu jos [! -d./aws-iot-device-sdk-python]; sitten printf "\ nAWS SDK: n asentaminen … / n" git-klooni https://www.amazontrust.com/repository/AmazonRoot…> pushd aws-iot-device-sdk-python python setup.py install popd fi
# suorita pubi-/alinäytesovellus käyttämällä paketissa ladattuja varmenteita
printf "\ nKäynnistetään pubi/alinäytesovellus… / 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
Tämä ei toimi kaikille, koska nimet ovat erilaisia. Korvaa käyttämistäni avaimilla avainten nimet, kun siirrät tiedoston. Muista poistua dk: stä ennen tiedoston siirtämistä! Sen pitäisi olla kaikki mitä sinun tarvitsee tehdä toistaiseksi.
3. Alexa -taitosi kehittäminen
Tämä vaihe tuntuu paljon vaikeammalta kuin se todellisuudessa on. Ensin meidän on kirjauduttava sisään Alexa -kehittäjäkonsoliin. Napsauta sitten vain luo taito. Kun se pyytää valitsemaan taidoillesi sopivan mallin, paina vain mukautettua. Kun se pyytää valita menetelmän, valitse Provision your own. Voit nimetä sen mitä haluat. Mallia ei tarvita, joten aloita alusta. Seuraavaksi, kun olet luonut taitosi, sinun tulee saapua Taitojen rakentaja -näyttöön ja tarkistuslista oikealla. Tästä voimme aloittaa taitojemme kehittämisen. Ensimmäinen tarkistuslistalla on kutsun nimi. Tämä on mitä kerrot Alexalle vedota taitoosi. Minulle laitoin vain kutsunimeni droneksi. Nyt voimme siirtyä aikeisiimme, ilmaisiimme ja lähtöpaikkoihimme. Täällä voit antaa droonille komentoja, kuten nousta 1 metri ylös tai mennä oikealle tai alas. Omani toimii tällä hetkellä vain yhdellä metrillä. Voit napsauttaa JSON Editoria vasemman paneelin alaosassa. Voit sitten liittää siihen seuraavan koodin.
Kun olet liittänyt koodin JSON -editoriin, voit napsauttaa tarkistuslistan kolmatta vaihetta ja se luo vuorovaikutusmallisi puolestasi. Tämän vaiheen avulla olet valmis toistaiseksi. Voit jättää päätepisteen tyhjäksi toistaiseksi!
Vaihe 4: Lambda -toiminnon rakentaminen
Tämä vaihe on nyt se, joka sinun on selvitettävä itse. Kerron sinulle, kuinka liittää se Alexa Skilliin, mutta sinun on koodattava se itse. Siirry siis ensin AWS -hallintakonsoliin. Siirry sitten Lambdaan. Voit sitten luoda funktion, joka nimeää sen haluamallasi tavalla. Varmista, että kirjoitat sen tyhjästä ja tee ajonaika haluamallasi ohjelmointikielellä. Käytin Node.js. Jos haluat lisätä Alexa Skillin, lisää liipaisin ja valitse Alexa Skills Kit (ASK). Kopioi Lambda ARN ja palaa Alexa Skilliin. Siirry nyt päätepisteeseen. Voit liittää ARN: n, tallentaa ja rakentaa uuden mallin. Ota sitten Alexa Skill ID ja liitä se liipaisinosaan, jossa se pyytää sinua Lambdassa. Vieritä seuraavaksi Lambdalla alas ja etsi perusasetukset ja tee aikakatkaisu 10 sekuntia. Nyt sinun on selvitettävä koodi. Saat vinkkejä alla olevista verkkosivustoista.
github.com/aws/aws-iot-device-sdk-js
www.hackster.io/veggiebenz/voice-controlle…
ja voit käyttää liittämääni tiedostoa, mutta se on epätäydellinen eikä toimi.
/ *** Ohjaa APM / Pixhawk -nelikopteriasi äänelläsi Amazon Alexan, Lambdan ja 2 -metrisen MQTT: n avulla.*/ var awsIot = vaatia ('aws-iot-device-sdk'); var config = vaatii ("./ config"); var deviceName = "EchoDroneControl"; // tämä laite on todella ohjain var mqtt_config = {"keyPath": config.privateKey, "certPath": config.certificate, "caPath": config.rootCA, "host": config.host, "port": 8883, "clientId": "Lambda-" + laitteenNimi, // + "-Lambda-" + (uusi päivämäärä (). getTime ()), "region": "us-east-1", "debug": true}; var ctx = null; var asiakas = null; // Reititä saapuva pyyntö tyypin (LaunchRequest, IntentRequest jne.) Perusteella. Pyynnön JSON -teksti annetaan tapahtumaparametrissa. export.handler = toiminto (tapahtuma, konteksti) {try {console.log ("event.session.application.applicationId =" + event.session.application.applicationId); ctx = asiayhteys; if (event.session.application.applicationId! == app_id) {ctx.fail ("Virheellinen sovellustunnus"); } asiakas = awsIot.device (mqtt_config); client.on ("connect", function () {console.log ("Connected to AWS IoT"); // callback ();});
if (event.session.new) {
onSessionStarted ({requestId: event.request.requestId}, event.session); } if (event.request.type === "LaunchRequest") {onLaunch (event.request, event.session); } muu if (event.request.type === "IntentRequest") {onIntent (event.request, event.session); } else if (event.request.type === "SessionEndedRequest") {onSessionEnded (event.request, event.session); ctx.suorita (); }} catch (e) {console.log ("EXCEPTION in handler:" + e); ctx.fail ("Poikkeus:" + e); }}; /*** Soitetaan, kun istunto alkaa. */ function onSessionStarted (sessionStartedRequest, session) {console.log ("onSessionStarted requestId =" + sessionStartedRequest.requestId + ", sessionId =" + session.sessionId); }
/**
* Soitetaan, kun käyttäjä käynnistää taidon määrittelemättä mitä haluaa. */ function onLaunch (launchRequest, session, callback) {console.log ("onLaunch requestId =" + launchRequest.requestId + ", sessionId =" + session.sessionId); // Lähetä taitosi lanseeraukseen. getWelcomeResponse (takaisinsoitto); } /*** Soitetaan, kun käyttäjä määrittää tämän taidon tarkoituksen. */function onIntent (aimRequest, session) {//, callback) {console.log ("onIntent requestId =" + aimRequest.requestId + ", sessionId =" + session.sessionId); var aikomus = aikomuksenpyyntö.intentti, aikomuksen_nimi = aikomuksenpyyntö.tarkoituksen nimi; console.log ("REQUEST to string =" + JSON.stringify (aimRequest)); var callback = null; // Lähetä taitosi aikomusten käsittelijöille, jos ("GoIntent" === aimName) {doGoIntent (tarkoitus, istunto); } else if ("CommandIntent" === aimName) {doCommandIntent (tarkoitus, istunto); } else if ("TurnIntent" === aimName) {doTurnIntent (aikomus, istunto); } else if ("HelpIntent" === aimName) {getWelcomeResponse (); } else {heittää "Virheellinen tarkoitus"; }} /*** Soitetaan, kun käyttäjä lopettaa istunnon. * Ei kutsuta, kun taito palaa shouldEndSession = true. */ function onSessionEnded (sessionEndedRequest, session) {console.log ("onSessionEnded requestId =" + sessionEndedRequest.requestId + ", sessionId =" + session.sessionId); // Lisää puhdistuslogiikka tähän} // --------------- Toiminnot, jotka ohjaavat taitojen käyttäytymistä -------------------- --- function getWelcomeResponse () {// Jos haluaisimme alustaa istunnon, jotta sillä olisi joitain määritteitä, voisimme lisätä ne tähän. var sessionAttributes = {}; var cardTitle = "Tervetuloa"; var speechOutput = "Tervetuloa DRONE CONTROL -laitteeseen."; // TODO: onko drone online vai offline? Jos verkossa, onko se ARMED? var repromptText = "Drone valmis komentoon."; var shouldEndSession = epätosi; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } /*** hoitaa GO -tarkoituksen. */ toiminto doGoIntent (tarkoitus, istunto, takaisinsoitto) {// var cardTitle = "Drone GO…"; var repromptText = ""; var sessionAttributes = {}; var shouldEndSession = epätosi; var speechOutput = ""; var suunta = tarkoitus.paikat.suunta.arvo; var etäisyys = tarkoitus.paikat. Etäisyys.arvo; var -yksikkö = tarkoitus.paikat. Yksikköarvo; var validDirections = ["eteenpäin", "eteenpäin", "taaksepäin", "taakse", "oikealle", "vasemmalle", "ylös", "alas", "suoraan", "eteenpäin", "suoraan eteenpäin"]; var validUnits = ["jalka", "jalat", "metri", "metrit", "piha", "jaardit"]; repromptText = "Kerro kuinka pitkälle ja mihin suuntaan."; var fail = false; // vahvista syötteet, jos (! (parseInt (distance)> = 1)) {speechOutput = "En voinut ymmärtää etäisyyttä, jonka haluat minun kulkevan."; epäonnistua = totta; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (validDirections.indexOf (direction) == -1) {speechOutput = "En voinut ymmärtää suuntaa, jonka haluat minun kulkevan."; epäonnistua = totta; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (validUnits.indexOf (unit) == -1) {speechOutput = "En voinut ymmärtää yksikköä, jonka haluat minun matkustavan."; epäonnistua = totta; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } jos (! epäonnistua) {var cardTitle = "Drone menossa" + suunta + "" + etäisyys + "" + yksikkö; speechOutput = "Menossa" + suunta + "" + etäisyys + "" + yksikkö; mqttPublish (tarkoitus, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}
function doCommandIntent (tarkoitus, istunto, takaisinsoitto) {
// var cardTitle = "Drone COMMAND…"; var repromptText = null; var sessionAttributes = {}; var shouldEndSession = epätosi; var speechOutput = ""; repromptText = "Kerro minulle, mikä on dronin komento."; var task = aim.slots. Task.value; var validTasks = ["käynnistää", "laskeutua", "r. t. l.", "hold", "stay", "stop", "return to launch", "abort"]; if (validTasks.indexOf (task) == -1) {speechOutput = "En voinut ymmärtää komentoa."; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } else {var cardTitle = "Drone -komennon suorittaminen" + tehtävä; speechOutput = "Suorittaa komentoa" + tehtävä; mqttPublish (tarkoitus, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}
function doTurnIntent (tarkoitus, istunto, takaisinsoitto) {
// var cardTitle = "Drone Turn…"; var repromptText = null; var sessionAttributes = {}; var shouldEndSession = epätosi; var speechOutput = ""; repromptText = "Kerro minulle, miten haluat kääntää dronin."; var suunta = tarkoitus.paikat.suunta.arvo; var validDirections = ["oikea", "vasen", "ympärillä"]; if (validDirections.indexOf (suunta) == -1) {speechOutput = "En voinut ymmärtää käännöksen suuntaa."; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } else {var cardTitle = "Drone -kääntyminen" + suunta; speechOutput = "Kääntyminen" + suunta; mqttPublish (tarkoitus, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}
function mqttPublish (tarkoitus, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession)
{var strIntent = JSON.stringify (tarkoitus); 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 - luulee, että se on tehty, onnistuneesti."); ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession)));})); client.on ("virhe", (toiminto (virhe, myönnetty) {console.log ("MQTT CLIENT ERROR !!" + err);})); }
// --------------- Auttajat, jotka rakentavat kaikki vastaukset -----------------------
function buildSpeechletResponse (title, output, repromptText, shouldEndSession) {return {outputSpeech: {type: "PlainText", text: output}, kortti: {type: "Simple", title: title, content: output}, repompt: {outputSpeech: {type: "PlainText", text: repromptText}}, shouldEndSession: shouldEndSession}} funktion buildResponse (sessionAttributes, speechletResponse) {return {version: "1.0", sessionAttributes: sessionAttributes, response: speechletResponse}}
Suositeltava:
Alexa -pohjainen ääniohjattu raketinheitin: 9 vaihetta (kuvilla)
Alexa -pohjainen ääniohjattu raketinheitin: Talvikauden lähestyessä; tulee se aika vuodesta, jolloin valon juhlaa vietetään. Kyllä, puhumme Diwalista, joka on todellinen intialainen festivaali, jota vietetään ympäri maailmaa. Tänä vuonna Diwali on jo ohi ja nähdään ihmisiä
Arduino-pohjainen ääniohjattu IOT-relekytkin (Google Home & Alexa -tuki): 11 vaihetta
Arduinopohjainen ääniohjattu IOT-relekytkin (Google Home & Alexa -tuki): Tässä projektissa kuvataan, miten tehdään Arduino-pohjainen, ääniohjattu IOT-relekytkin. Tämä on rele, jonka voit kytkeä päälle ja pois päältä etäsovelluksella iOS- ja Android -sovelluksella sekä yhdistää sen IFTTT: hen ja ohjata sitä äänelläsi Googin avulla
Ääniohjattu kotiautomaatio (kuten Alexa tai Google Home, ei tarvita Wifiä tai Ethernetiä): 4 vaihetta
Ääniohjattu kotiautomaatio (kuten Alexa tai Google Home, ei tarvita Wifiä tai Ethernetiä): Se on pohjimmiltaan tekstiviestipohjaisia arduino -ohjattuja releitä, joissa on Google Assistant -asetus viestien lähettämiseksi ääniohjeilla. Se on erittäin helppoa ja halpaa ja toimii kuten Alexa -mainokset olemassa olevat sähkölaitteet (jos sinulla on Moto -X smartp
Ääniohjattu älyavaimen pidike: 3 vaihetta (kuvilla)
Ääniohjattu älyavaimen haltija: Oletko sellainen henkilö, joka ei osaa hallita avaimia ja joutuu aina kokeilemaan jokaista avainta jokaista muuta lukkoa varten? aivan oma ääniohjattu älykäs avaimenpidike
Ääniohjattu 3D -tulostettu kolmikopteri: 23 vaihetta (kuvilla)
Ääniohjattu 3D -painettu trikopteri: Tämä on täysin 3D -painettu Tricopter -drone, jota voidaan lentää ja ohjata ääniohjauksella Amazonin Alexan avulla Raspberry Pi: n ohjaaman maa -aseman kautta. Tämä ääniohjattu trikopteri tunnetaan myös nimellä Oliver the Tri.A Tricopter