Tartalomjegyzék:
- 1. lépés: Alkatrészek és eszközök
- 2. lépés: Darabok vágása és összeszerelése
- 3. lépés: Szoftver - (Arduino)
- 4. lépés: Szoftver - Robot laptop (WebServer)
- 5. lépés: Szoftver - (Weboldal)
- 6. lépés: Kész
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)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:44
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
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
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)
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)
(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¶m1=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)
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
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:
Készítsen internetes rádiót kevesebb mint 15 dollárért: 4 lépés (képekkel)
Készítsen internetes rádiót kevesebb, mint 15 dollárért: Tehát úgy döntöttem, hogy egy projektet hajtok végre, amelyet egy ideje elhalasztottam: egy házi készítésű, teljesen működőképes internetes rádió, erősítővel és hangszóróval, 15 euró alatt!. az előre meghatározott streaming rádióállomások között egy gombnyomással, és
Internetes internetes bolt sztereóvá tétele: 6 lépés (képekkel)
Sztereó internetkapcsolat létrehozása: Amikor bekapcsolom a rádiót vezetés közben, a helyi egyetemi rádióállomáshoz fordulok, 90,7 KALX. Az évek során és a különböző helyeken, ahol éltem, mindig hallgattam az egyetemi rádióállomásokat. Az internet erejének köszönhetően most már hallgathatom
55 hüvelykes, 4K digitális képkeret -kijelző körülbelül 400 dollárért: 7 lépés (képekkel)
55 hüvelykes, 4K digitális képkeret -kijelző körülbelül 400 dollárért: rengeteg oktatóanyag található arról, hogyan lehet félelmetes digitális képkeretet készíteni málna pi -vel. Sajnos az rpi nem támogatja a 4K felbontást. az Odroid C2 könnyen képes kezelni a 4K felbontást, de ezek közül az rpi oktatóanyagok egyike sem működik a C2 egység számára. elvitte
Készítse el saját szép filc EeePC / Netbook tasakját körülbelül 8 dollárért (és 91 dollárt takarítson meg a Redmaloo vásárlása helyett): 5 lépés (képekkel)
Készítse el saját szép filc EeePC / Netbook tasakját körülbelül 8 dollárért (és 91 dollárt takarít meg a Redmaloo vásárlása helyett): Ez az oktatóanyag megmutatja, hogyan készítsen saját, nagyon szép és jól kinéző laptopot vagy még jobb netbook tasakot. Tárolja a netbookját, egérpadot ad neked, valami egyedi, szép és kézzel készített anyag érzését, és a gúnyos érzést
Két AAA LED-es könyvjelző lámpa körülbelül 10 dollárért: 7 lépés
Két AAA LED-es könyves lámpa körülbelül 10 dollárért: Szeretsz olvasni, de nincs kedved túl sokat fizetni a LED-es könyves lámpákért? Az olcsóbbak így érzik magukat, és általában a drága kör alakú elemeket veszik. Itt megmutatom, hogyan készíthetsz két AAA LED-es könyvlámpát körülbelül 10 dollárért, és körülbelül fél óráért