Sisällysluettelo:
- Vaihe 1: Osat ja työkalut
- Vaihe 2: Kappaleiden leikkaaminen ja kokoaminen
- Vaihe 3: Ohjelmisto - (Arduino)
- Vaihe 4: Ohjelmisto - Robot Laptop (WebServer)
- Vaihe 5: Ohjelmisto - (verkkosivu)
- Vaihe 6: Valmis
Video: Tee verkkoyhteydessä oleva robotti (noin 500 dollaria) (käyttämällä Arduinoa ja Netbookia): 6 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:04
Tämä opas näyttää, kuinka voit rakentaa oman Web Connected Robotin (käyttämällä Arduino-mikro-ohjainta ja Asus eee -tietokonetta). Tietenkin leikkimään. Aja robottiasi huoneen eri puolilta tai eri puolilta maata käyttämällä vain Skypeä ja verkkoselainta (ei mitään asennettavaa ohjaustietokoneeseen). Sen jälkeen? Tutustu ohjelmistoon ja muokkaa sitä haluamallasi tavalla, lisää GPS, jotta voit katsella, missä olet ajamassa, kartalla, lisää lämpötila -antureita kartoittaaksesi talosi lämpötilagradientteja tai luotainantureita, joilla voit hallita verkkoasi kuljettajat voivat ja eivät voi törmätä. Ominaisuudet:
- Halpa - (~ 500 dollaria, jos ostat kaikki osat uusina ja huomattavasti halvemmalla, jos kaivaa ympärilläsi osastossa)
- Kun robotti on otettu käyttöön, se tarvitsee vain verkkoselaimen - (ja Skypen, jos haluat nähdä, missä olet ajamassa)
- Avoin lähdekoodi ja helposti mukautettavissa - (käyttää Arduino -mikro -ohjainta, prosessointi verkkopalvelimelle ja kaikki ohjelmistot voidaan suorittaa Linuxilla (kaikki koodit on myös kommentoitu voimakkaasti hyppäämisen ja asioiden muuttamisen helpottamiseksi))
- Modulaarinen muotoilu (ei täysin integroitu järjestelmä, jos haluat käyttää eri videoneuvottelupalvelua huoletta, tai jos sinulla on perusleima Arduinon sijasta vain pieni pala koodia ja työnnä se sisään)
Tässä on nopea video Web Connected Robotini ajamisesta ulos keittiöstä.
Vaihe 1: Osat ja työkalut
Vain muutamia osia tarvitaan: Robotti: Arduino -ohjattu servobotti - (SERB) (175 dollaria @ oomlout.com) tai (tee oma)
Avoimen lähdekoodin robotti, joka käyttää Arduinon mikro-ohjainta aivoina
(mitä tahansa kaksoisservorobotialustaa, jossa on arduino, voidaan käyttää (vaihtoehto 1) (lähetä minulle viesti, jos huomaat muita vaihtoehtoja) Tietokone: Asus eee PC 4G (280 dollaria) (@Best Buy)
Pieni edullinen kannettava tietokone, joka on täydellinen tähän tarkoitukseen
(mitä tahansa kannettavaa tietokonetta (tai työpöytää, jos haluat käyttää sointua), joka pystyy suorittamaan luonnoksia.) Kannettavan tietokoneen työpöytä: Laserleikattu akryyli (25 dollaria (@ oomlout)) tai (rakenna oma vaihe 3)
Muutama ylimääräinen akryylikappale, jotka kiinnittyvät (SERB) -laitteeseen, jolloin se tarjoaa kannettavan tietokoneen pöydän
Pähkinät ja pultit: (saatavilla kotivarastossa)
- 3 mm x 10 mm pultti (x4)
- 3 mm x 15 mm pultti (x4)
- 3 mm mutteri (x8)
Vaihe 2: Kappaleiden leikkaaminen ja kokoaminen
Leikkausvaihtoehto 1: (Osto osoitteesta oomlout.com)
laserleikatut työpöytäpalat ja tarvittavat laitteet ovat saatavilla oomloutista 25 dollarilla (tässä)
Vaihtoehto 2: (Leikkaus omalla laserleikkurilla tai Ponoko.com -sivustolla)
- Lataa alla oleva tiedosto (03-WEBB-akryyliosat. Cdr tai 03-WEBB-akryyliosat (Ponoko P2). Eps)
- Leikkaa ne 3 mm (1/8 ") akryylistä
Vaihtoehto 3: (vierityssaha)
- Lataa vieritysahakuvio alta (03-WEBB-ScrollSaw Pattern (A4).pdf (A4-kokoiselle paperille) tai 03-WEBB-ScrollSaw Pattern (letter).pdf (letter-kokoiselle paperille))
- Tarkista vielä kerran, ettei sitä ole skaalattu tulostettaessa (mittaamalla tulostetut viivaimet)
- Liimaa 3 mm: n (1/8 ") akryylipalaan ja leikkaa palat irti.
Kokoonpano: Lataa alla oleva asennusopas (04-WEBB-Assembly Guide.pdf) ja laita kannettavan tietokoneen työpöytä yhteen.
Vaihe 3: Ohjelmisto - (Arduino)
Niille, jotka ovat uusia Arduinolle, tutustu Arduino -sivuston loistavaan aloitusoppaaseen. Se on hyvin yksinkertainen ohjelma, jota Arduino valvoo sen sarjaporttia varten. Se etsii 5 tavun pituista keskustelua.
- Tavu 1-3 (tarkista tavut "AAA")
- Tavu 4 -komento (kertoo arduinolle, mitä tehdä) (Tuetut komennot 'F' - eteenpäin, 'B' - taaksepäin, 'L' - vasen, 'R' - oikea, 'S' - nopeus, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Stop)
- Tavu 5 Parametri - siirtokomennoille tämä tulkitaan aikaväleksi (parametri * 100 ms) ja nopeuskomennoille prosenttiosuus 0-100
Koodi kommentoidaan perusteellisesti ja tämän kehyksen perusteella lisäkomentojen lisäämisen pitäisi olla helppoa.
- Lataa liitteenä oleva zip -tiedosto. (05-WEBB-Arduino Code.zip)
- Pura Arduino Sketch -hakemistoosi. (oletus: Omat asiakirjat / Arduino)
- Avaa arduino -kehitysympäristösi ja lataa se Arduinoosi.
Kopioida ja liittää
- Kopioi koodi alhaalta.
- Liitä Arduinon kehitysympäristöön.
- Lataa Arduinoosi.
Liite: Arduino -ohjelma
/ * * Arduino -ohjattu web -yhdistetty robotti (WEBB) - sarjapalvelin * Lisätietoja on osoitteessa: https://www.oomlout.com/serb * * Käyttäytyminen: Arduino kuuntelee sarjaporttia komennolla * muodossa 254, 88, 88, (KOMMENTTI), (TIME) * Tuetut komennot - & aposF & apos - 70 - Eteenpäin * & aposB & apos - 66 - Taaksepäin * & aposL & apos - 76 - Vasen * & aposR & apos - 82 - Oikea * & aposS & apos - 83 - Nopeus * & aposX & apos - 88ft SET * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Tuetut ajat - 0-255 (0-25,5 sekuntia) arvo * 100 millisekuntia * sp * Johdotus: Oikea servosignaali - nasta 9 * Vasen servosignaali - nasta 10 * * Lisenssi: Tämä teos on lisensoitu Creative Commons * Attribution-Share Alike 3.0 Unported License -lisenssillä. Jos haluat * nähdä kopion tästä lisenssistä, käy osoitteessa * https://creativecommons.org/licenses/by-sa/3.0/ * tai lähetä kirje osoitteeseen Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * Yhdysvallat. * */// --------------------------------------------- ---------------------------- // ARDUINO-SARJAPALVELUN ESITTELY // Kunkin komennon vastaavien vakioiden määrittäminen (myös ascii-koodinumero) #define FORWARD 70 // F#define BACKWARD 66 // B#define LEFT 76 // L#define OIKEA 82 // R#define SETSPEED 83 // S#define STOP 67 // C#define SETSPEEDLEFT 88 // X #define SETSPEEDRIGHT 89 // Y/ *Kolme tarkistus tavua (käytetään estämään robotti vastaamasta satunnaisiin sarjatietoihin) tällä hetkellä "AAA" */#define checkByte1 65 // "A" #define checkByte2 65 // "A "#define checkByte3 65 // //" A "// -------------------------------------- ------------------------------------ // ARDUINO-OHJAIMEN SERVO-ROBOTIN (SERB) ALOITUSOHJE#sisältää #define LEFTSERVOPIN 10 // Vasemman servon nasta on yhdistetty#define RIGHTSERVOPIN 9 // Oikean servon nasta on liitettyServo leftServo; Servo oikeaServo; int leftSpeed = 50; // pitää robotin nopeuden leftServo // prosenttiosuus välillä 0-100int rightSpeed = 100; // pitää robottien nopeuden oikealla Servo // prosenttiosuus välillä 0-100 // ARDUINO-OHJAAMAN SERVO-ROBOTIN (SERB) ESITTELY // ------------------- -------------------------------------------------- ----- // Saa kaiken valmiiksi ja käynnissävoid setup () {Serial.begin (9600); // Käynnistää sarjaportin serbSetup (); // asettaa kaikkien tarvittavien // nastojen tilan ja lisää servot luonnokseesi} // Pääohjelma loopvoid loop () {serbPollSerialPort (); // etsii jatkuvasti sarjaporttia // jos tietoja on, se käsittelee sitä} // ------------------------------ ---------------------------------------- // ARDUINO-SERIAL PALVELIN RUTININ ALOITUS/ * * Käsittelee komennot, jotka on toimitettu arduino & aposs -sarjaporttiin */void serbPollSerialPort () {int dta; // muuttuja sarjatavun säilyttämiseksi, jos (Serial.available ()> = 5) {// jos 5 tavua puskurissa (pituus pf koko pyynnöstä) dta = Serial.read (); if (dta = checkByte1) {// Tarkistaa ensimmäisen tarkistustavun dta = Serial.read (); if (dta = checkByte2) {// Tarkistaa toisen tarkistustavuun dta = Serial.read (); if (dta = checkByte3) {// Tarkistaa kolmannen tarkistus tavun int komento = Serial.read (); // Neljäs tavu on komento int param1 = Serial.read (); // Viides tavu on param1 interpretCommand (komento, param1); // lähettää jäsennetyn pyynnön sille & aposs handler}}}}}}/ * * Ottaa komennon ja parametrin ja välittää sen robotille */void interpretCommand (int -komento, int param1) {if (command == FORWARD) {goForward (); viive (param1 * 100); goStop ();} // jos eteenpäin muut if (komento == TAKAISIN) {goBackward (); viive (param1 * 100); goStop ();} // jos taaksepäin muuten if (komento == VASEN) {goLeft (); viive (param1 * 100); goStop ();} // jos jätetään muualle if (komento == OIKEA) {goRight (); viive (param1 * 100); goStop ();} // jos oikeassa muuten if (command == SETSPEED) {setSpeed (param1);} // jos asetat nopeuden muuten if (command == STOP) {goStop ();} // jos stop else if (command == SETSPEEDLEFT) {setSpeedLeft (param1);} // jos asetat vasemman nopeuden muuten if (command == SETSPEEDRIGHT) {setSpeedRight (param1);} // jos asetat oikean nopeuden muuten {// jos tuntematon komento tee vähän shimmey mene vasemmalle(); viive (150); käänny oikealle(); viive (150); goStop (); }} // ---------------------------------------------- -------------------------- // ARDUINO-OHJAAMAN SERVO-ROBOTIN (SERB) ROUTINES-KÄYNNISTYS/ * * asettaa arduinosi osoittamaan SERBisi käyttämällä mukana tulevat rutiinit*/void serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, OUTPUT); // asettaa vasemman servosignaalin nasta // ulostulotapiksiMM (RIGHTSERVOPIN, OUTPUT); // asettaa oikean servosignaalin nastan // lähtöön leftServo.attach (LEFTSERVOPIN); // kiinnittää vasen servo rightServo.attach (RIGHTSERVOPIN); // kiinnittää oikean servo goStop ();}/ * * asettaa robotin nopeuden välille 0- (pysäytetty)-100- (täysi nopeus) * HUOMAUTUS: nopeus ei muuta nykyistä nopeutta, sinun on muutettava nopeutta * ja soita sitten go -menetelmistä ennen muutoksia.*/ void setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // asettaa vasen nopeus setSpeedRight (newSpeed); // asettaa oikean nopeuden}/ * * Asettaa vasemman pyörän nopeuden */void setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // jos nopeus on yli 100 // tee se 100 if (newSpeed = 100) {newSpeed = 100;} // jos nopeus on suurempi kuin 100 // tee siitä 100 if (newSpeed <= 0) {newSpeed = 0;} // jos nopeus on pienempi kuin 0 make // se 0 oikeaNopeus = uusi nopeus * 0,9; // skaalaa nopeuden olevan}/ * * lähettää robotin eteenpäin */void goForward () {leftServo.write (90 + leftSpeed); rightServo.write (90 - rightSpeed);} / * * lähettää robotin taaksepäin * /void goBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * lähettää robotin oikealle * /void goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);}/ * * lähettää robotin vasemmalle */void goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);}/ * * pysäyttää robotin */void goStop () {leftServo.write (90); rightServo.write (90);} // ARDUINON OHJAAMAN SERVO-ROBOTIN (SERB) RUTININ LOPPU // ---------------------------- -----------------------------------------------
Vaihe 4: Ohjelmisto - Robot Laptop (WebServer)
(Käsittely on avoimen lähdekoodin ohjelmointikieli ja -ympäristö, jolla on erittäin helppo päästä alkuun. Lisätietoja on kohdassa Käsittely) Robottikannettavalla toimiva ohjelmisto on myös melko yksinkertainen. Se on melko alkeellinen verkkopalvelin (web-sivupyyntöjen kuunteleminen verkkoselaimesta), pieni käyttöliittymä (sen määrittämiseksi) ja tilat Web-palvelimelta vastaanotettujen komentojen välittämiseksi Arduinolle. (ikkunoissa)
- Lataa alla oleva zip-tiedosto (06-WEBB-Processing Webserver (Windows exe).zip)
- Pura se ja suorita.exe -tiedosto (_WEBB_WebServer_RobotComputer.exe)
Muokattava käsittelyssä:
- Lataa alla oleva zip-tiedosto (06-WEBB-Processing Webserver (lähdetiedostot).zip)
- Pura missä tahansa tietokoneessa.
- Avaa Käsittely -ympäristö ja avaa (_WEBB_WebServer_RobotComputer.pde)
Testata:
- Suorita ohjelma.
- Laatikossa 1 on luettelo tietokoneesi käytettävissä olevista tietoliikenneporteista (napsauta sitä, johon Arduino on kytketty. (Robotti nykäisee muutaman kerran, kun tietokone muodostaa yhteyden, ja syaani piste ilmestyy valitun viereen komm -portti)
- Laatikossa 2 testaa, onko Arduino kytketty. Napsauta yhtä nuolista ja toivottavasti robotti liikkuu napsautetussa suunnassa puoli sekuntia.
- Napsauta ruudussa 3 Käynnistä -painiketta käynnistääksesi verkkopalvelimen.
- Avaa verkkoselain (Robot Laptop -laitteella) ja käy osoitteessa https://127.0.0.1:12345/ControlPage.html (toivottavasti näkyviin tulee ohjausobjekti, jossa on painikkeet) -Tietoja tämän sivun käytöstä seuraavassa vaiheessa -
Mitä tapahtuu:
- Web -palvelin kuuntelee porttia 12345 http -pyyntöjä varten (mitä lähetetään, kun kirjoitat verkkosivun osoitteen)
- On olemassa kahdenlaisia pyyntöjä, joihin se vastaa.
1. Se kuuntelee "ControlPage.html" ja lähettää ohjausobjektin verkkosivun. 2. Se kuuntelee lomakkeen "/request? Command = F & param1 = 100" pyyntöjä (nämä komennot jäsennetään ja lähetetään Arduinolle (tämä esimerkki johtaa robotti kulkee eteenpäin 10 sekuntia) Liite: (Web -palvelimen koodi)
/ * * Arduino -ohjattu Web Connected Robot (WEBB) - Web -palvelin ? command = F & param1 = 100 "ja välittää ne sitten * Arduinolle * Tuetut komennot - & aposF & apos - 70 - Eteenpäin * & aposB & apos - 66 - Taaksepäin * & apLL & apos - 76 - Vasen * & aposR & apos - 82 - Oikea * & aposS & apos - 83 - Nopeus * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * param1 & aposs - 0-255 (0–25,5 sekunnin) arvo * 100 millisekuntia * * palvelee myös ohjaussivua selaimelle, jos kysyt ControlPage.html * * Käyttö: 1. Napsauta Arduinoosi yhdistettyä tietoliikenneporttia * 2. Tarkista testinäppäimillä, kuuleeko arduinoasi * (liikkuu puolen sekunnin ajan) * 3. Napsauta Käynnistä ja verkkopalvelimesi kuuntele pyyntöjä * * * Lisenssi: Tämä teos on lisensoitu Creative Commons * -attribuutin alla osio Share Alike 3.0 Unported License. Jos haluat * nähdä kopion tästä lisenssistä, käy osoitteessa * https://creativecommons.org/licenses/by-sa/3.0/ * tai lähetä kirje osoitteeseen Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * Yhdysvallat. * */tuonti käsittely. sarja. *; // tuo sarjakirjasto käyttääksesi Serialia (Arduinolle puhumiseen) import processing.net.*; // tuo verkkokirjasto käytettäväksi palvelimella (Internetiin puhumiseen)/ * Sarjaporttiin liittyvät muuttujat */int serialPortIndex = -1; // käyttämämme sarjaportin hakemisto Serial.list () listString commOptions; // Muuttuja Serial.list (): n tallentamiseen, joten sarjaportteja ei tarvitse polkaista // aina kun haluamme palauttaa sen (pollaus aiheuttaa // hyppyn arduino -servoissa) Serial serialPort; // Tekee sarjaportin osoitetuksi koko luonnoksessa/ * Graafiset ja renderöintiin liittyvät muuttujat */PFont -fontti; // tekee fontista julkisen, joten se on ladattava vain kerran (Arial-72)/ * Verkkoon liittyvät muuttujat */Server wServer; // Palvelin, joka käsittelee verkkopyyntöjäint port = 12345; // Portti, jota palvelin kuuntelee, on ciklCount = 0; // Laskee, kuinka monta kertaa piirtosilmukka suoritetaan (käytetään "animoimaan" käynnissä oleva "teksti)/ * Apuohjelman muuttujat */PImage bg; // Taustakuva tällä hetkellä / WEBB-background.png/ * * Painikkeeseen liittyvät muuttujat * (painikkeet on toteutettu hyvin karkeasti, rajauslaatikot tallennetaan ja grafiikka ja teksti * piirretään taustakuvaan) eli. painikkeiden muuttujien siirtäminen ei siirrä painikkeiden ulkonäköä */Button comm1; Painike comm2; Painike comm3; Painike comm4; // Oikean sarjaportin valitsemisen painikkeetButton up; Painike oikealla; Painike vasemmalle; Painike alas; // Suuntapainikkeet, joilla testataan, vastaako robotti Button webServer; // WebServer/ * * -painike käynnistää kaiken */void setup () {frameRate (5); // Hidasta luonnosta hieman, joten se ei ole yhtä rasittava järjestelmä bg = loadImage ("WEBB-background.png"); // Lataa taustakuvan (tallennettu luonnoskansioon) koon (700, 400); // Asettaa luonnosikkunan koon font = loadFont ("ArialMT-72.vlw"); // Lataa käyttämämme fontin tämän luonnoksen kautta commOptions = Serial.list (); // Kyselee sarjaportteja ja saa luettelon käytettävissä olevista porteista // (tämä tehdään vain kerran, jolloin robotti ei nykäile aina, kun se & aposs // sarjaporttia pollataan) defineButtons (); // Määrittää rajausruudut kullekin painikkeen taustalle (bg); // Maalaa taustakuvan (tässä kuvassa on kaikki painikkeiden grafiikat)}/ * Luontelee pääsilmukan */void draw () {if (cycleCount == 0) {//- call draw rutines drawCommBox (); // Piirrä korotukset Comm -ruutuun (laatikko 1) drawTestBox (); // Piirrä kaikki testiruudun (laatikko 2) elementit drawWebServerBox (); // Piirtää kaikki WebServer-ruudun elementit (laatikko 3)} //- kutsua työrutiineja pollWebServer (); // Kyselee verkkopalvelimelta, onko verkon kautta tullut pyyntöjä} // ------------------------------ ----------------------------------------------//Alku piirtorutiinit (jakautuvat vain, jotta koodi on mukavampaa lukea)/ * * Piirustuspäivitysrutiini (suoritetaan joka sykli) kohteille komm -ruudussa (laatikko 1) */void drawCommBox () {fill (0, 0, 0); // Aseta täyttö mustaksi tekstiksiFontti (fontti, 15); // Aseta fontti oikeaan kokoon (int i = 0; i 0) {running = running + ".";} // pisteiden määrä perustuu cycCount -määritykseen, jos ((cycleCount /1)> 1) { käynnissä = käynnissä + ".";} if ((cycleCount / 1)> 2) {running = running + ".";} if ((cycleCount / 1)> 3) {cycleCount = 0;} text (running, 520, 210); } cycleCount ++; // Joka kerta syklin aikana lukua lisätään yhdellä} // Tasapeli rutiineilla // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // Palvelurutiinien alku/ * * mousePressed kutsutaan aina, kun hiirtä painetaan. updateSerialPort (0);} // Muutokset Comm -porttiin indeksissä 0 Serial.list () else if (comm2.pressed ()) {updateSerialPort (1);} // Muutokset Comm -porttiin indeksin 1 sarjassa.list () else if (comm3.pressed ()) {updateSerialPort (2);} // Muutokset comm -porttiin hakemistossa 2 Serial.list () else if (comm4.pressed ()) {updateSerialPort (3);} // Muutokset Commport -porttiin hakemistossa 3 Serial.list () else if (up.pressed ()) {sendRobotCommand ("F", 5);} // Lähettää komennon siirtää robotti eteenpäin 0,5 sekuntia muu jos (left.pressed ()) {sendRobotCommand ("L", 5);} / /Lähettää komennon robotin siirtämiseksi vasemmalle 0,5 sekuntia, jos (oikea. Painettu ()) {sendRobotCommand ("R", 5);} // Lähettää komennon siirtää robotti oikealle 0,5 sekunniksi, jos (alas). painettu ()) {sendRobotCommand ("B", 5);} // Lähettää komennon robotin siirtämiseksi taaksepäin 0,5 sekuntia, jos (webServer.pressed ()) {startWebServer ();} // Käynnistää webServer cycleCount = 0; tausta (bg); // maalaa taustakuvan uudelleen (tässä kuvassa on kaikki painikkeiden grafiikat) draw ();}/ * * Kutsutaan suorituksen jälkeen ja se tarkistaa palvelimen, onko odottavia yhteyksiä * onko odottava yhteys, jonka se vetää pyyntö ulos ja välittää sen parseRequest (String) * -rutiinille ylimääräisen tekstin poistamiseksi. Tämä lähetetään sitten interpretRequest (String) -rutiinille * kutsumaan sopiva toimintarutiini (eli lähettämään ohjeet robotille).* * Pyyntö välitetään syöttämällä tietokoneen osoite ja portti verkkoselaimeen. * Paikalliselle koneelle "https://127.0.0.1:12345/request?command=F¶m1=100" * * Esimerkki pyynnöstä: * SAA/pyyntö? command = F & param1 = 100 HTTP/1.1 * User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fi-US) AppleWebKit/525.19 (KHTML, kuten Gecko) * Accept: * // * * Accept-Language: fi-US, fi * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Host: 127.0.0.1:12345 * Yhteys: Keep-Alive * * Esimerkki vastauksesta (* HTTP/1.1 200 OK * Yhteys: sulje * Content-Type: text/html * * -komento: F param1: 100 */void pollWebServer () {if (wServer! = null) {// Jos web-palvelin käynnissä Asiakaspyyntö = wServer.available (); // Lataa seuraava asiakas riville // -palvelimeen (null, jos pyyntöjä ei odoteta) if (request! = Null) {// jos on pyyntöprosessi, se String fullRequest = request.readString (); // Tallenna pyynnön sisältö merkkijonona Merkkijono ip = request.ip (); // Tallenna asiakkaiden IP -osoite merkkijonoksi Merkkijono requestString = parseRequest (fullRequest.toUpperCase ()); // Poista kaikki ylimääräiset // tiedot jättäen vain pyyntömerkkijono (teksti GET: n jälkeen) // (siirtyy isoihin kirjaimiin merkkijonon testaamisen helpottamiseksi), jos (requestString.indexOf ("REQUEST?")! = -1) { // Tarkistaa, onko pyynnössä "REQUEST?" Merkkijonovastaus = interpretRequest (requestString); // Lähettää pyynnön pyynnön tulkille request.write ("HTTP/1.1 200 OK / nYhteys: sulje / nContent-Type: text/html / n / n" + vastaus); // lähettää vastaukselle 200 sanomalla, että pyyntö on käsitelty ja "vastaus" -merkkijono vastauksena wServer.disconnect (request); // Katkaisee asiakkaan yhteyden} else if (requestString.indexOf ("CONTROLPAGE")! = -1) {// Jos pyyntö koskee ohjaussivua String webPageArray = loadStrings ("WEBB -ControlPage.html"); // Lataa web-verkkosivun osoitteesta / data / WEBB-ControlPage.html // (ladattu rivinä) String webPage = ""; // Muokkaamisen helpottamiseksi verkkosivulle on jätetty // rivinvaihdot, joten silmukka lopettaa kyseiset rivit (int i = 0; i portIndex) {// jos välitetty portIndex on kelvollinen hakemisto Serial.list () // (eli ei vaihtoehtoa kahden luettelossa) serialPortIndex = portIndex; // aseta serialPortIndex -muuttuja uuteen serialport -indeksiin // (tätä käytetään näyttämään piste aktiivisen portin vieressä)} if (serialPortIndex! = -1) {// tarkista, että portti on valittu joskus aiemmin, jos (serialPort! = null) {serialPort.stop ();} // jos sarjaportti on jo käytössä, lopeta se ennen uuden sarjan lataamista serialPort = new Serial (this, Serial.list () [serialPortIndex], 9600); // Luo uusi sarjaobjekti kommunikoidaksesi Arduino 9600 Baud}}/ * * Ottaa pyyntömerkkijonon (esim. "Request? Command = F & param1 = 100") ja poistaa komennon * ja param1 ja välittää ne arduino (lisäparametrien tai muiden kuin arduino -komentojen lisääminen tehdään täällä) */String interpretRequest (String requestString) {String returnValue = "OK"; // Valmistele returnValue -muuttuja String -komento; // Seuraavat kolme riviä poimivat arvon "command =" // jälkeen (ylimääräinen rivi on siinä tapauksessa, että komentoparametri on pyynnön // lopussa eikä sitä seuraa & jos (requestString.indexOf ("COMMAND =")! = -1) {command = requestString.substring (requestString.indexOf ("COMMAND =") + "COMMAND =". Length ());} else {command = "Z";} if (command.indexOf (" & ")! = -1) {command = command.substring (0, command.indexOf (" & "));}} {command = command;} String param1String; // Seuraavat kolme riviä poimivat arvon" param1 = "jälkeen // (requestString.indexOf ("PARAM1 =") + "PARAM1 =". length ());} else {param1String = "0";} if (param1String.indexOf ("&")! = -1) {param1String = param1String.substring (0, param1String.indexOf ("&"));} else {param1String = param1String;} int param1 = Integer.parseInt (param1String); // Muuttaa param1 -merkkijonon kokonaisluku sendRobotCommand (komento, param1); // Lähettää komennon rutiinille, joka lähettää sen Arduinolle returnValue = "komento:" + komento + "param1:" + param1; // tällä hetkellä vain jäsennetty komento, mutta lähetetään // html-muodossa, jotta muotoilu voidaan sisällyttää return returnValue;}/ * * Ottaa komennon (tällä hetkellä yksi kirjain) ja parametrin (yksi tavu 0-255) ja lähettää sen arduino * joka kuuntelee ja uudistaa * Tällä hetkellä tuetut komennot * F - */void sendRobotCommand (Jono -komento, int param1) {println ("command:" + command + "time:" + param1); String checkString = "AAA"; if (serialPort! = null) {serialPort.write (checkString + -komento); serialPort.write (tavu (param1)); }} // Asennuksen loppu/rutiinit, joita ei kovin yleisesti kutsuta // ----------------------------------- -------------------------------------------------- // Esimerkki-painike ja RectButton-koodi osoitteesta processing.org esimerkki, jossa on joitain muutoksia // tehdään lähinnä animaation yksinkertaistamiseksi ja poistamiseksi // https://processing.org/learning/topics/buttons.html (23.9.2008) luokka -painike {int x, y; int leveys, korkeus; Painike (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; leveys = leveys; korkeus = korkeus; } boolean painettu () {if (overRect ()) {return true; } else {return false;}} boolean overRect () {if (mouseX> = x && mouseX = y && mouseY <= y+height) {return true; } else {return false; }}}
Vaihe 5: Ohjelmisto - (verkkosivu)
No, olemme melkein valmiit, kaikki mitä on jäljellä, on puhua robotillesi. Aloita puhuminen: (paikallisen verkon kautta -ikkunoissa-)
- Tutustu kannettavan tietokoneen paikalliseen IP -osoitteeseen. Voit tehdä tämän siirtymällä kohtaan "Käynnistä / Ohjelmat / Tarvikkeet / Komentokehote" ja kirjoittamalla pääteikkunaan "ipconfig". Kirjoita "IP -osoite" muistiin ja siirry toiseen paikallisverkon tietokoneeseen.
- Avaa verkkoselain, kirjoita "https:// (robottitietokoneen IP): 12345/ControlPage.html
- Ohjaussivun pitäisi ladata, kirjoita "IP -osoite" -ruutuun robottitietokoneet ip.
- Aloita robotin hallinta.
Aloita puhuminen: (Internetin välityksellä) Nyt kun se toimii paikallisesti, sen puhuminen Internetin välityksellä on vain muutaman askeleen päässä.
- (vaikein vaihe) Portin edelleenlähetyksen määrittäminen - Tietokoneen on kuunneltava Internetiä eikä vain paikallista verkkoa. Tätä varten sinun on kehotettava reititintä välittämään tietyt pyynnöt robottia ohjaavalle tietokoneelle. Tämä on hieman monimutkainen ja ylittää paljon tämän ohjeen soveltamisalan. Kuitenkin, jos vierailet PortForward.com -sivustolla, he antavat sinulle kaiken, mitä sinun tarvitsee tietää reitittimen määrittämisestä (sinun on välitettävä portti 12345 robotti -kannettavaasi)
- Seuraavaksi löydä Internet -IP -osoitteesi (käy WhatIsMyIP.com)
- Lopuksi käynnistä skype -videopuhelu ja pyydä puhujasi käymään osoitteessa "https:// (Internet IP): 12345/ControlPage.html"
- Kirjoita Internet -IP -osoite ohjausverkkosivun "IP -osoite" -kenttään ja Web Connected -robotti ajetaan kaukaa.
Vaihe 6: Valmis
No siinäpä se. Toivottavasti sinulla on hauskaa ajaa robottiasi kaukaa. Jos sinulla on ongelmia ohjelmiston tai laitteiston kanssa, jätä kommentti, niin yritän auttaa sinua.
Suositeltava:
Rakenna ensimmäinen IOT käyttämällä Arduinoa ilman lisämoduuleja: 5 vaihetta (kuvilla)
Rakenna ensimmäinen IOT käyttämällä Arduinoa ilman lisämoduuleja: Maailma muuttuu älykkäämmäksi joka päivä, ja suurin syy tähän on älykkään tekniikan kehitys. Tekniikan harrastajana olet varmasti kuullut termistä IOT, joka tarkoittaa esineiden Internetiä. Esineiden internet tarkoittaa valvoa ja ruokkia
55 tuumaa, 4K -digitaalinen valokuvakehyksen näyttö noin 400 dollaria: 7 vaihetta (kuvilla)
55 tuumaa, 4K -digitaalinen valokuvakehyksen näyttö noin 400 dollarilla: on olemassa paljon opetusohjelmia mahtavan digitaalisen valokuvakehyksen tekemiseksi vadelmapi. Valitettavasti rpi ei tue 4K -resoluutiota. Odroid C2 pystyy helposti käsittelemään 4K -tarkkuutta, mutta mikään näistä rpi -opetusohjelmista ei toimi C2 -yksikössä. se otti
Tee oma mukava huopa EeePC / Netbook -pussi noin 8 dollarilla (ja säästä 91 dollaria Redmaloon ostamisen sijasta): 5 vaihetta (kuvilla)
Tee oma mukava huopa EeePC / Netbook -pussi noin 8 dollarilla (ja säästä 91 dollaria Redmaloon ostamisen sijasta): Tämä opas näyttää sinulle, kuinka tehdä oma, erittäin mukava ja hyvännäköinen kannettava tietokone tai vielä parempi netbook -pussi. Se tallentaa netbookisi, antaa sinulle hiirimaton, tunteen käyttää jotain ainutlaatuista, mukavaa ja käsintehtyä ja
Kaksi AAA LED-kirjavaloa noin 10 dollaria: 7 askelta
Kaksi AAA-LED-kirjavaloa noin 10 dollaria: Haluatko lukea, mutta et halua maksaa liikaa LED-kirjavaloista? Halvemmat tuntuvat juuri sellaisilta ja käyttävät yleensä kalliita pyöreitä paristoja. Tässä näytän sinulle, miten voit tehdä kaksi AAA-LED-kirkasvaloa noin 10 dollarilla ja noin puolet
Rakenna hyvin pieni robotti: Tee maailman pienimmästä pyörillä varustettu robotti tarttumalla: 9 vaihetta (kuvilla)
Rakenna hyvin pieni robotti: Tee maailman pienimmästä pyörillä varustettu robotti tarttumalla: Rakenna 1/20 kuutiometrin robotti, jossa on tarttuja, joka voi poimia ja siirtää pieniä esineitä. Sitä ohjaa Picaxe -mikrokontrolleri. Uskon, että tällä hetkellä tämä voi olla maailman pienin pyörillä varustettu robotti, jossa on tarttuja. Se epäilemättä ch