Tartalomjegyzék:

Készítsen internetes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával): 6 lépés (képekkel)
Készítsen internetes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával): 6 lépés (képekkel)

Videó: Készítsen internetes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával): 6 lépés (képekkel)

Videó: Készítsen internetes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával): 6 lépés (képekkel)
Videó: 10 лучших маркетинговых инструментов AI (сравнение инструментов AI — ChatGPT, Jasper AI и еще 8!) 2024, November
Anonim
Készítsen webes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával)
Készítsen webes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával)
Készítsen webes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával)
Készítsen webes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával)
Készítsen webes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával)
Készítsen webes robotot (körülbelül 500 dollárért) (Arduino és Netbook használatával)

Ez az utasítás bemutatja, hogyan kell saját Web Connected Robotot létrehozni (Arduino mikrovezérlő és Asus eee PC használatával). Miért szeretne Web Connected Robotot? Természetesen játszani vele. Vezesse robotját a helyiségből vagy az egész országból, csak Skype -ot és webböngészőt használva (semmit nem kell telepíteni a vezérlő számítógépre). Utána? Vájjon bele a szoftverbe és alakítsa azt tetszése szerint, adjon hozzá GPS -t, hogy megtekintse a térképen, hogy éppen merre jár, hőmérséklet -érzékelőket adhat hozzá a ház hőmérsékleti gradienseinek feltérképezéséhez, vagy szonár -érzékelőket, hogy vezérelje az internetet a sofőrök összefuthatnak és nem. Jellemzők:

  • Olcsó - (~ 500 dollár, ha minden alkatrészt újonnan vásárol, és lényegesen olcsóbb, ha az alkatrésztartóban ás körül)
  • A robot üzembe helyezése után csak webböngészőre van szükség (és Skype -ra, ha látni szeretné, hol vezet)
  • Nyílt forráskódú és könnyen adaptálható - (Arduino mikrovezérlőt használ, a webszerver feldolgozását és minden szoftvert Linuxon lehet futtatni (az összes kódot erősen megjegyzik, hogy megkönnyítsék az ugrást és a dolgok megváltoztatását))
  • Moduláris kialakítás (nem teljesen integrált rendszer, ha más videokonferencia -szolgáltatást szeretne használni, nem kell aggódnia, vagy ha alapvető bélyegzője van, nem pedig Arduino, csak egy kis kódrészlet, és helyezze be)

Itt egy gyors videó arról, hogy a Web Connected Robotomat kiszorítják a konyhából.

1. lépés: Alkatrészek és eszközök

Alkatrészek és eszközök
Alkatrészek és eszközök

Csak néhány alkatrészre van szükség: Robot: Arduino vezérelt szervorobot - (SERB) (175 USD @ oomlout.com) vagy (készítse el saját)

Nyílt forráskódú robot, amely agyként egy Arduino mikrovezérlőt használ

(bármely kettős szervo robotplatform arduino -val használható (1. opció) (kérjük, írjon nekem üzenetet, ha más lehetőségeket fedez fel) Számítógép: Asus eee PC 4G (280 USD) (@Best Buy)

Egy kis olcsó laptop, amely tökéletes erre a célra

(bármilyen laptop (vagy asztali számítógép, ha akkorddal szeretne futni), amely képes a vázlatok feldolgozására) Laptop asztal: lézervágott akril ($ 25 (@ oomlout)) vagy (készítse el saját 3. lépését)

Néhány további akrildarab, amely egy (SERB) csavarral rögzül, hogy íróasztalt kapjon a laptop számára

Dió és bols: (otthoni raktárban kapható)

  • 3mm x 10mm csavar (x4)
  • 3mm x 15mm csavar (x4)
  • 3 mm -es anya (x8)

2. lépés: Darabok vágása és összeszerelése

Vágódarabok és összeszerelés
Vágódarabok és összeszerelés
Vágódarabok és összeszerelés
Vágódarabok és összeszerelés
Vágódarabok és összeszerelés
Vágódarabok és összeszerelés
Vágódarabok és összeszerelés
Vágódarabok és összeszerelés

Három lehetőség van a laptop asztalához való darabok beszerzésére. 1. vágási lehetőség: (vásárlás az oomlout.com webhelyről)

a lézerrel vágott asztaldarabok és a szükséges hardver 25 dollárért (itt) kaphatók az oomlout -tól

2. lehetőség: (Vágás saját lézervágón vagy a Ponoko.com -on)

  • Töltse le az alábbi fájlt (03-WEBB-akril alkatrészek. Cdr vagy 03-WEBB-akril alkatrészek (Ponoko P2). Eps)
  • Vágja le őket 3 mm (1/8 ") akrilból

3. lehetőség: (görgetőfűrész)

  • Töltse le a görgetőfűrész mintáját alulról (03-WEBB-ScrollSaw Pattern (A4).pdf (A4 méretű papírhoz) vagy 03-WEBB-ScrollSaw Pattern (levél).pdf (levél méretű papírhoz))
  • Ellenőrizze, hogy nyomtatáskor nem lett -e méretezve (a nyomtatott vonalzók mérésével)
  • Ragasszon egy darab 3 mm -es (1/8 ") akrilra, és vágja ki a darabokat.

Összeszerelés: Töltse le az alábbi szerelési útmutatót (04-WEBB-Assembly Guide.pdf), és rakja össze a laptop asztalát.

3. lépés: Szoftver - (Arduino)

Szoftver - (Arduino)
Szoftver - (Arduino)

Azok számára, akik még nem ismerik az Arduino -t, nézze meg az Arduino.cc nagyszerű kezdési útmutatóját. Először is az Arduino -n futó szoftver. Ez egy nagyon egyszerű program, az Arduino figyeli a soros portját az adatok számára. Amit keres, egy 5 bájt hosszú beszélgetés.

  • 1-3. Bájt ("AAA" bájtok ellenőrzése)
  • 4. bájt parancs (Megmondja az arduino -nak, hogy mit kell tennie) (Támogatott parancsok: „F” - Előre, „B” - Vissza, „L” - Bal, „R” - Jobb, „S” - Sebesség, „X” - SetSpeedLeft, „Y” - SetSpeedRight, „C” - Stop)
  • 5. bájt paraméter - Az áthelyezési parancsoknál ezt időintervallumként értelmezik (Paraméter * 100 ms), a sebességparancsoknál pedig 0-100 százalékos értéket.

A kódot alaposan megjegyzik, és ennek a keretrendszernek köszönhetően a további parancsok hozzáadásának egyszerűnek kell lennie. Letöltés:

  • Töltse le a mellékelt zip fájlt. (05-WEBB-Arduino Code.zip)
  • Csomagolja ki az Arduino Sketch könyvtárába. (alapértelmezett: Saját dokumentumok / Arduino)
  • Nyissa meg az arduino fejlesztői környezetét, és töltse fel az Arduino -ra.

Másolás és beillesztés

  • Másolja a kódot alulról.
  • Illessze be az Arduino fejlesztői környezetbe.
  • Töltse fel az Arduino készülékére.

Függelék: Az Arduino program

/ * * Arduino által vezérelt, internethez csatlakoztatott robot (WEBB) - soros gazdagép * További részletekért látogasson el a következő weboldalra: https://www.oomlout.com/serb * * Viselkedés: Az Arduino hallgatja a soros portját egy parancsért * 254 formátumban, 88, 88, (COMMAND), (TIME) * Támogatott parancsok - & aposF & apos - 70 - Forward * & aposB & apos - 66 - Backward * & aposL & apos - 76 - Bal * * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Támogatott idők - 0 - 255 (0 - 25,5 másodperc) érték * 100 ezredmásodperc * sp * Kábelezés: Jobb szervo jel - 9 érintkező * Bal szervo jel - 10 tű * * Licenc: Ez a mű a Creative Commons * Attribution-Share Alike 3.0 Unported License alatt licencelt. A licenc egy példányának * megtekintéséhez látogasson el a * https://creativecommons.org/licenses/by-sa/3.0/ * címre, vagy küldjön levelet a Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105 címre, * USA. * */// --------------------------------------------- ---------------------------- // ARDUINO SERIAL SERVER PREAMBLE START // Az egyes parancsoknak megfelelő konstansok meghatározása (az ascii kódszám is) #define FORWARD 70 // F#define BACKWARD 66 // B#define LEFT 76 // L#define RIGHT 82 // R#define SETSPEED 83 // S#define STOP 67 // C#define SETSPEEDLEFT 88 // X #define SETSPEEDRIGHT 89 // Y/ *A három ellenőrző bájt (arra használják, hogy a robot ne válaszoljon a véletlen soros *adatokra) jelenleg "AAA" */#define checkByte1 65 // "A" #define checkByte2 65 // "A "#define checkByte3 65 //" A "// -------------------------------------- ------------------------------------ // ARDUINO VEZÉRLETT SZERVO ROBOT (SZERB) PREAMBLE#START #define LEFTSERVOPIN 10 // A bal szervó csapja#definícióhoz RIGHTSERVOPIN 9 // A jobb szervó csapja csatlakozikServo leftServo; Szervo jobbServo; int leftSpeed = 50; // a robotok sebességét tartja balraServo // 0 és 100 közötti százalékos arány jobbraSpeed = 100; // helyesen tartja a robotok sebességét -------------------------------------------------- ----- // Mindent beállít és futtat.void setup () {Serial.begin (9600); // Elindítja a soros portot serbSetup (); // beállítja az összes szükséges // csap állapotát és szervókat ad hozzá a vázlathoz} // A fő program loopvoid loop () {serbPollSerialPort (); // folyamatosan keresi a soros portot // ha van adat, feldolgozza azt} // ------------------------------ ---------------------------------------- // // ARDUINO SERIAL SERVER RUTINES INDÍTÁSA/ * * Feldolgozza az arduino & aposs soros portra küldött parancsokat */void serbPollSerialPort () {int dta; // változó a soros bájt tárolására, ha (Serial.available ()> = 5) {// ha 5 bájt van a pufferben (hossza pf a teljes kérésnél) dta = Serial.read (); if (dta = checkByte1) {// Az első ellenőrzési bájt ellenőrzése dta = Serial.read (); if (dta = checkByte2) {// Második ellenőrzési bájt ellenőrzése dta = Serial.read (); if (dta = checkByte3) {// A harmadik ellenőrző bájt ellenőrzése int parancs = Serial.read (); // A negyedik bájt az int param1 parancs = Serial.read (); // Az ötödik bájt param1 interpretCommand (parancs, param1); // elküldi az elemzett kérést neki & aposs handler}}}}}/ * * Fogja a parancsot és a paramétert, és átadja a robotnak */void interpretCommand (int parancs, int param1) {if (parancs == ELŐRE) {goForward (); késleltetés (param1 * 100); goStop ();} // ha előre más, ha (parancs == VISSZA) {goBackward (); késleltetés (param1 * 100); goStop ();} // ha visszafelé más if (parancs == LEFT) {goLeft (); késleltetés (param1 * 100); goStop ();} // ha másra marad if (parancs == JOBB) {goRight (); késleltetés (param1 * 100); goStop ();} // ha másképp van, ha (parancs == BEÁLLÍTÁS) {setSpeed (param1);} // ha beállítja a sebességet egyébként, ha (parancs == STOP) {goStop ();} // ha megáll másként, ha (parancs == SETSPEEDLEFT) {setSpeedLeft (param1);} // ha a bal sebesség beállítása más, ha (parancs == SETSPEEDRIGHT) {setSpeedRight (param1);} // ha a megfelelő sebességet állítja be másképpen menj balra(); késleltetés (150); menj jobbra(); késleltetés (150); goStop (); }} // ---------------------------------------------- -------------------------- // Az ARDUINO VEZÉRLETT SERVO ROBOT (SZERB) ROUTINES KEZDÉSE/ * * beállítja az arduino-t, hogy a SERB-t használja a a mellékelt rutinok*/void serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, OUTPUT); // beállítja a bal szervo jel tűjét // kimeneti pinMode (RIGHTSERVOPIN, OUTPUT); // beállítja a jobb szervo jelcsapot // a leftServo.attach (LEFTSERVOPIN) kimenetre; // bal szervo jobbra csatoljaServo.attach (RIGHTSERVOPIN); // a jobb oldali szervo goStop () csatolását ();}/ * * a robot sebességét állítja 0- (leállított) és 100- (teljes sebesség) között * MEGJEGYZÉS: a sebesség nem változtatja meg az aktuális sebességet, meg kell változtatnia a sebességet *, majd hívjon egyet a go módszerek közül a változások előtt.*/ void setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // beállítja a bal oldali sebességet setSpeedRight (newSpeed); // beállítja a megfelelő sebességet}/ * * Beállítja a bal kerék sebességét */void setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // ha a sebesség nagyobb 100 -nál // 100 if (newSpeed = 100) {newSpeed = 100;} // ha a sebesség nagyobb, mint 100 // legyen 100, ha (newSpeed <= 0) {newSpeed = 0;} // ha a sebesség kisebb, mint 0 make // it 0 rightSpeed = newSpeed * 0,9; // beosztja a sebességet}/ * * előre küldi a robotot */void goForward () {leftServo.write (90 + leftSpeed); rightServo.write (90 - rightSpeed);} / * * visszafelé küldi a robotot * /void goBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * jobbra küldi a robotot * /void goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);}/ * * balra küldi a robotot */void goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);}/ * * leállítja a robotot */void goStop () {leftServo.write (90); rightServo.write (90);} // ARDUINO VEZÉRLETT SZERVO ROBOT (SZERB) RUTINOK VÉGE // ---------------------------- -----------------------------------------------

4. lépés: Szoftver - Robot laptop (WebServer)

Szoftver - Robot Laptop (WebServer)
Szoftver - Robot Laptop (WebServer)

(A Processing egy nyílt forráskódú programozási nyelv és környezet, amellyel rendkívül könnyű kezdeni. További részletekért olvassa el a Processing oldalt) A robot laptopon futó szoftver szintén nagyon egyszerű. Ez egy meglehetősen kezdetleges webkiszolgáló (weboldal-kérelmek hallgatása egy webböngészőből), egy kicsi felhasználói felület (annak beállításához), valamint a webszervertől kapott parancsok Arduino-hoz történő továbbítására szolgáló lehetőségek. Gyors telepítés: (az ablakokon)

  • Töltse le az alábbi zip fájlt (06-WEBB-feldolgozó webszerver (Windows exe).zip)
  • Csomagolja ki és futtassa az.exe fájlt (_WEBB_WebServer_RobotComputer.exe)

Szerkesztés a feldolgozás során:

  • Töltse le az alábbi zip fájlt (06-WEBB-feldolgozó webszerver (forrásfájlok).zip)
  • Csomagolja ki bárhol a számítógépen.
  • Nyissa meg a feldolgozó környezetet, és nyissa meg (_WEBB_WebServer_RobotComputer.pde)

Tesztelni:

  • Futtassa a programot.
  • Az 1. mezőben megjelenik a számítógépen elérhető kommunikációs portok listája (kattintson arra, amelyhez az Arduino csatlakozik. (A robot néhányszor megrándul, amikor a számítógép csatlakozik, és egy ciánkék pont jelenik meg a kiválasztott mellett) komm port)
  • A 2. mezőben tesztelje, hogy az Arduino csatlakoztatva van -e. Kattintson az egyik nyílra, és remélhetőleg robotja fél másodpercig a kattintott irányba mozog.
  • A 3. mezőben kattintson a "Start" gombra a webszerver elindításához.
  • Nyisson meg egy webböngészőt (a Robot Laptopon), és keresse fel a https://127.0.0.1:12345/ControlPage.html oldalt (remélhetőleg megjelenik a vezérlő weboldal gombokkal) -Részletek az oldal következő lépésben történő használatáról -

Mi történik:

  • A webszerver figyeli az 12345 -ös portot a http -kérésekhez (mit küld a weboldal címének begépelésekor)
  • Kétféle kérésre válaszol.

1. Meghallgatja a "ControlPage.html" parancsot, és elküldi a vezérlő weboldalt. 2. Meghallgatja a "/request? Command = F & param1 = 100" formátumú kéréseket (ezeket a parancsokat elemzi és elküldi az Arduino -nak (ez a példa azt eredményezi, hogy a robot 10 másodpercre előre halad) Függelék: (A webszerver kódja)

/ * * Arduino által vezérelt, internethez csatlakoztatott robot (WEBB) - webszerver * További részletekért látogasson el a https://www.oomlout.com/serb * * Viselkedésre: A program meghallgatja a http (weboldal) kéréseket * "/request formában ? command = F & param1 = 100 ", majd átadja őket az * Arduino * támogatott parancsoknak - & aposF & apos - 70 - Előre * & aposB & apos - 66 - Vissza * és aposL & apos - 76 - Balra * & aposR & apos - 82 - Jobb * & aposS & apos - 83 - Speed * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * param1 & aposs - 0 - 255 (0 - 25,5 másodperc) érték * 100 ezredmásodperc * * a vezérlő weblapját is szolgálja a böngészőnek, ha a ControlPage.html -t kéri * * Művelet: 1. Kattintson a Comm portra, amelyhez az Arduino csatlakozik * 2. A tesztgombokkal ellenőrizze, hogy az arduino hallgat -e * (fél másodpercig mozog a kattintott irányba) * 3. Kattintson a Start gombra, és a webszerver figyeljen a kérésekre * * * Licenc: Ez a mű a Creative Commons * Attribu licenc alatt van cion-Share Alike 3.0 Nemportált licenc. A licenc egy példányának * megtekintéséhez látogasson el a * https://creativecommons.org/licenses/by-sa/3.0/ * címre, vagy küldjön levelet a Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105 címre, * USA. * */import feldolgozás.sorozat. *; // importálja a soros könyvtárat a Serial használatához (az Arduino -val való beszélgetéshez) import processing.net.*; // importálja a netkönyvtárat a Szerver használatához (az internethez való beszélgetéshez)/ * Soros porthoz kapcsolódó változók */int serialPortIndex = -1; // az általunk használt soros port indexe a Serial.list () listString commOptions; // Változó a Serial.list () tárolására, így nincs szükség a soros portok lekérdezésére // minden alkalommal, amikor újra akarjuk adni (a lekérdezés // ugrást okoz az arduino szervókban) Serial serialPort; // A soros port címezhetővé válik ebben a vázlatban/ * Grafikus és megjelenítéshez kapcsolódó változók */PFont font; // nyilvánossá teszi a betűtípust, így csak egyszer kell betölteni (Arial-72)/ * Hálózathoz kapcsolódó változók */Server wServer; // A szerver, amely a webes kéréseket kezeliintport = 12345; // A kiszolgáló által hallgatott port ciklusszám = 0; // Számolja, hogy hányszor hajt végre a rajzolási ciklus (a "futó" szöveg animálására szolgál)/ * Utility Variables */PImage bg; // A háttérkép jelenleg / WEBB-background.png/ * * Gombokkal kapcsolatos változók * (a gombok nagyon durván vannak megvalósítva, a határoló dobozok tárolódnak, és a grafika és a szöveg * rajzolódik a háttérképre), pl. a gombok változóinak mozgatása nem mozgatja a gombok megjelenését */Button comm1; Gomb comm2; Gomb comm3; Gomb comm4; // A gombok a megfelelő soros port kiválasztásáhozButton up; Gomb jobbra; Gomb balra; Gomb le; // Az iránygombok annak ellenőrzésére, hogy a robot reagál -eButton webServer; // A webszerver elindításának gombja/ * * mindent beállít */void setup () {frameRate (5); // Kicsit lelassítja a vázlatot, így nem olyan megterhelő a rendszeren bg = loadImage ("WEBB-background.png"); // Betölti a háttérképet (a vázlatmappában tárolva) méret (700, 400); // Beállítja a vázlat ablak méretét font = loadFont ("ArialMT-72.vlw"); // Betölti a használni kívánt betűtípust ezen a vázlaton keresztül commOptions = Serial.list (); // Lekérdezi a soros portokat és megkapja a rendelkezésre álló portok listáját // (ezt csak egyszer teszi meg, hogy a robot ne rángjon minden alkalommal, amikor & aposs // a soros portot lekérdezi) defineButtons (); // Megadja a határoló dobozokat az egyes gombok hátteréhez (bg); // Festi a háttérképet (ezen a képen az összes gombgrafika látható)}/ * A fő hurkot vázolja fel */void draw () {if (cycleCount == 0) {//- felhívja a felhívási rutinokat drawCommBox (); // Rajzolja a kiemeléseket a Comm Boxban (1. doboz) drawTestBox (); // A Tesztdoboz (2. doboz) összes elemét lerajzolja drawWebServerBox (); // Megrajzolja a WebServer Box összes elemét (3. doboz)} //- hívja a munkaprogramokat pollWebServer (); // A webszervert lekérdezi, hogy érkezett-e kérés a hálózaton keresztül} // ------------------------------ ----------------------------------------------//Kezdete rajzolási rutinok (felosztás csak azért, hogy a kód szebb legyen az olvasáshoz)/ * * A rajzolási frissítési rutin (minden ciklusban végrehajtva) a komm mezőben lévő elemekhez (1. doboz) */void drawCommBox () {fill (0, 0, 0); // A kitöltés beállítása fekete textFont (betűtípus, 15); // Állítsa be a betűtípust a megfelelő méretre (int i = 0; i 0) {running = running + ".";} // a pontok száma a cycCount -on alapul, ha ((cycleCount /1)> 1) { fut = fut + ".";} if ((cycleCount / 1)> 2) {running = running + ".";} if ((cycleCount / 1)> 3) {cycleCount = 0;} szöveg (fut, 520, 210); } cycleCount ++; // A cikluson keresztül minden alkalommal eggyel növekszik} // A sorsolás vége // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // A szervizrutinok kezdete/ * * mousepressed hívás minden alkalommal, amikor megnyomja az egeret, ez * ellenőrzi, hogy az egér a gombhatároló dobozok valamelyikében van -e *, és hogy ez a megfelelő rutin, az úgynevezett */void mousePressed () {if (comm1.pressed ()) { updateSerialPort (0);} // Változások a Comm porton a 0 indexben a Serial.list () else -ban, ha (comm2.pressed ()) {updateSerialPort (1);} // A comm port változásai a Serial 1 indexben.list () else if (comm3.pressed ()) {updateSerialPort (2);} // Változások a Comm porton a 2. indexben a Serial.list () else if (comm4.pressed ()) {updateSerialPort (3);} // Változások a Comm porton a 3. indexben a Serial.list () else -ban, ha (up.pressed ()) {sendRobotCommand ("F", 5);} // Parancsot küld a robot előremozgatásához 0,5 -ig másodperc más, ha (left.pressed ()) {sendRobotCommand ("L", 5);} / /Parancsot küld a robot balra történő mozgatására 0,5 másodpercre, különben, ha (jobbra.nyomva ()) {sendRobotCommand ("R", 5);} // Parancsot küld a robot jobbra történő mozgatására, ha (le). megnyomva ()) {sendRobotCommand ("B", 5);} // Parancsot küld a robot visszafelé való mozgatásához 0,5 másodpercig, ha (webServer.pressed ()) {startWebServer ();} // Elindítja a webServer ciklust: 0; háttér (bg); // Átfesti a háttérképet (ezen a képen minden gombgrafika található) ki a kérést, és továbbítja azt a parseRequest (String) * rutinnak, hogy eltávolítsa az extra szöveget. Ezt azután az interpretRequest (String) rutinba küldi, hogy * meghívja a megfelelő műveletet (azaz utasításokat küldjön a robotnak).* * A kérelem úgy kerül átadásra, hogy a webböngészőbe beírja a számítógép címét és portját. * A helyi géphez "https://127.0.0.1:12345/request?command=F&param1=100" * * Példa kérésre: * GET/request? parancs = F & param1 = 100 HTTP/1.1 * User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, mint a Gecko) * Elfogad: * // * * Accept-Language: hu-US, hu * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Host: 127.0.0.1:12345 * Kapcsolat: Keep-Alive * * Példa válasz (* HTTP/1.1 200 OK * Kapcsolat: bezár * Tartalom-típus: text/html * * parancs: F param1: 100 */void pollWebServer () {if (wServer! = null) {// Ha a webszerver fut Ügyfélkérés = wServer.available (); // Töltse be a következő ügyfelet a sorba a // szerverre (null, ha nincs várakozás) if (kérés! = Null) {// ha van kérésfeldolgozás, akkor String fullRequest = request.readString (); // A kérés tartalmának tárolása karakterláncként String ip = request.ip (); // Tárolja az ügyfelek IP -címét karakterláncként String requestString = parseRequest (fullRequest.toUpperCase ()); // Törölje az összes extra // információt, és csak a kérési karakterláncot hagyja (szöveg a GET után) // (nagybetűre vált, hogy megkönnyítse a karakterlánc tesztelését), ha (requestString.indexOf ("REQUEST?")! = -1) { // Ellenőrzi, hogy a kérés "REQUEST?" Karakterlánc válasz = interpretRequest (requestString); // elküldi a kérést a kérés értelmezőjének request.write ("HTTP/1.1 200 OK / nConnection: close / nContent-Type: text/html / n / n" + válasz); // 200 -as választ küld a válasznak, hogy a kérést // kezelte, és a "válasz" karakterláncot válaszként wServer.disconnect (kérés); // Lekapcsolja az ügyfelet} else if (requestString.indexOf ("CONTROLPAGE")! = -1) {// Ha a kérés a vezérlő weboldalra vonatkozik String webPageArray = loadStrings ("WEBB -ControlPage.html"); // A vezérlő weboldal betöltése a / data / WEBB-ControlPage.html // könyvtárból (sorok tömbjeként betöltve) String webPage = ""; // A szerkesztés megkönnyítése érdekében a weboldalon maradt // sortörés, így ez a ciklus esetén megszakítja a sorokat (int i = 0; i portIndex) {// ha az átadott portIndex érvényes index a Serial.list () // (azaz nem a harmadik lehetőség a kettes listában) serialPortIndex = portIndex; // állítsa be a serialPortIndex változót az új serialport indexre // (ezzel jelenik meg az aktív port melletti pont)} if (serialPortIndex! = -1) {// ellenőrizze, hogy korábban kiválasztott -e egy portot, ha (serialPort! = null) {serialPort.stop ();} // ha már használnak soros portot, állítsa le, mielőtt betöltene egy újat serialPort = new Serial (this, Serial.list () [serialPortIndex], 9600); // Hozzon létre egy új soros objektumot az Arduino 9600 Baud kommunikációjához}}/ * * Elvesz egy kérési karakterláncot (például: "request? Command = F & param1 = 100"), és eltávolítja a * és param1 parancsot, és továbbítja a arduino (extra paraméterek vagy nem arduino parancsok hozzáadása itt történne) */String interpretRequest (String requestString) {String returnValue = "OK"; // ReturnValue változó előkészítése String parancs; // A következő három sor kivonja az értéket a "command =" // után (a további sor abban az esetben van, ha a parancsparaméter a kérés // végén van, és nem követi az & if (requestString.indexOf ("COMMAND =")! = -1) {parancs = requestString.substring (requestString.indexOf ("COMMAND =") + "COMMAND =". Length ());} else {command = "Z";} if (command.indexOf (" & ")! = -1) {command = command.substring (0, command.indexOf (" & "));}} {command = command;} String param1String; // A következő három sor kibontja az értéket a" param1 = // (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); // A param1 karakterláncot egész sendRobotCommand (parancs, param1); // Elküldi a parancsot a rutinnak, amely elküldi az Arduino returnValue = "parancsnak:" + parancs + "param1:" + param1; // pillanatnyilag csak az elemzett parancs, de // elküldve // html-ként, így a formázás szerepelhet return returnValue;}/ * * Elfogad egy parancsot (jelenleg egy betű) és egy paramétert (egy bájt 0-255), és elküldi a arduino *, amely hallgatja és átdolgozza * Jelenleg támogatott parancsok * F - */void sendRobotCommand (String parancs, int param1) {println ("parancs:" + parancs + "idő:" + param1); String checkString = "AAA"; if (serialPort! = null) {serialPort.write (checkString + parancs); serialPort.write (byte (param1)); }} // A beállítás vége/nem túl gyakran hívott rutinok // ----------------------------------- -------------------------------------------------- // Példa gomb és a RectButton kód a feldolgozás.org oldalról, néhány módosítással // főleg az animáció egyszerűsítése és eltávolítása érdekében // https://processing.org/learning/topics/buttons.html (2008-09-23) osztály Gomb {int x, y; int szélesség, magasság; Gomb (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; szélesség = iwidth; magasság = magasság; } logikai lenyomva () {if (overRect ()) {return true; } else {return false;}} logikai overRect () {if (mouseX> = x && mouseX = y && mouseY <= y+magasság) {return true; } else {return false; }}}

5. lépés: Szoftver - (Weboldal)

Szoftver - (Weboldal)
Szoftver - (Weboldal)
Szoftver - (Weboldal)
Szoftver - (Weboldal)
Szoftver - (Weboldal)
Szoftver - (Weboldal)

Nos, majdnem befejeztük, már csak a robotjával beszélünk. Beszélgetés: (helyi hálózaton keresztül -ablakokon-)

  • Fedezze fel a laptop helyi IP -címét. Ehhez lépjen a "Start / Programs / Accesories / Command Prompt" menübe, és amikor a terminál ablak megnyílik, írja be az "ipconfig" parancsot. Írja le az "IP -címet", és menjen egy másik számítógéphez a helyi hálózaton.
  • Nyisson meg egy webböngészőt, írja be: "https:// (robot számítógép ip): 12345/ControlPage.html
  • A vezérlő weboldalnak be kell töltődnie, az "IP -cím" mezőbe írja be a robot számítógépek ip -jét.
  • Kezdje el irányítani a robotját.

Beszélgetés: (az interneten keresztül) Most, hogy helyben működik, az interneten keresztül történő beszéd csak néhány lépésre van.

  • (legnehezebb lépés) A Porttovábbítás beállítása - A számítógépnek az internetet kell hallgatnia, nem csak a helyi hálózatot. Ehhez meg kell mondania az útválasztónak, hogy továbbítson bizonyos kéréseket a robotot irányító számítógéphez. Ez egy kicsit bonyolult, és messze túlmutat ezen utasítás utasításain. Ha azonban felkeresi a PortForward.com webhelyet, akkor mindent megad, amit az útválasztó beállításáról tudnia kell (továbbítani kell az 12345 -ös portot a robot laptopjához)
  • Ezután fedezze fel internetes IP -címét (látogasson el a WhatIsMyIP.com oldalra)
  • Végül indítsa el a skype beállítását egy videohíváshoz, és bárkihez fordulhat, látogassa meg a "https:// (internet IP): 12345/ControlPage.html" oldalt
  • Írja be az internetes IP -t a vezérlő weboldal "IP -cím" mezőjébe, és a Web Connected Robotot messziről hajtja.

6. lépés: Kész

Befejezett
Befejezett

Hát ennyi. Remélem, jól szórakozik, amikor messziről vezeti robotját. Ha bármilyen problémája van a szoftverrel vagy a hardverrel kapcsolatban, nyugodtan hagyjon megjegyzést, és megpróbálok segíteni. Ha további ügyes projekteket szeretne megnézni, látogasson el ide: oomlout.com

Ajánlott: