INHOUDSOPGAWE:

Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook): 6 stappe (met foto's)
Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook): 6 stappe (met foto's)

Video: Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook): 6 stappe (met foto's)

Video: Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook): 6 stappe (met foto's)
Video: Irene-Louise van Wyk - Maak 'n Plan 2024, Desember
Anonim
Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook)
Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook)
Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook)
Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook)
Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook)
Maak 'n webverbinde robot (vir ongeveer $ 500) (met behulp van 'n Arduino en Netbook)

Hierdie instruksies sal jou wys hoe om jou eie Web Connected Robot te bou (met behulp van 'n Arduino mikrobeheerder en Asus eee pc). Waarom sou jy 'n Web Connected Robot wil hê? Om mee te speel natuurlik. Ry u robot dwarsdeur die kamer of regoor die land, met slegs Skype en 'n webblaaier (niks om op die bedieningsrekenaar te installeer nie). Na dit? Delf in die sagteware en pas dit aan soos u wil, voeg 'n GPS by sodat u kan kyk waar u op 'n kaart ry, temperatuursensors byvoeg om temperatuurgradiënte in u huis te kaart, of sonarsensors om kontroles by te voeg op die internet bestuurders kan en kan nie raakloop nie. Kenmerke:

  • Goedkoop - (~ $ 500 as u alle onderdele nuut koop en aansienlik goedkoper as u in u onderdelehouer grawe)
  • Sodra u die robot beheer het, benodig u slegs 'n webblaaier - (en Skype as u wil sien waarheen u ry)
  • Open Source en maklik aanpasbaar - (gebruik 'n Arduino -mikrobeheerder, verwerking vir die webbediener en alle sagteware kan op Linux uitgevoer word (daar word ook sterk kommentaar gelewer op al die kode om in te spring en dinge maklik te verander))
  • Modulêre ontwerp (nie 'n volledig geïntegreerde stelsel nie, as u 'n ander videokonferensiediens wil gebruik, hoef u nie bekommerd te wees nie, of as u 'n basiese stempel in plaas van 'n Arduino net 'n klein stukkie kode het en dit inskakel)

Hier is 'n vinnige video van my Web Connected Robot wat uit die kombuis verdryf word.

Stap 1: Onderdele en gereedskap

Onderdele en gereedskap
Onderdele en gereedskap

Slegs 'n paar dele is nodig: Robot: Arduino Controlled Servo Robot - (SERB) ($ 175 @ oomlout.com) of (maak u eie)

'N Oopbron-robot wat 'n Arduino-mikrobeheerder as die brein gebruik

(enige dubbele servo -robotplatform met 'n arduino kan gebruik word (opsie 1) (stuur 'n boodskap as u ander opsies ontdek) Rekenaar: Asus eee PC 4G ($ 280) (@Best Buy)

'N Klein, goedkoop skootrekenaar wat ideaal is vir hierdie doel

(enige skootrekenaar (of lessenaar as u met 'n akkoord wil hardloop) kan gebruik word Sketse kan verwerk word) Skootrekenaar: Laser Cut Acryl ($ 25 (@ oomlout)) of (bou u eie stap 3)

'N Paar ekstra akrielstukke wat aan 'n (SERB) vasgemaak word om 'n lessenaar waarop die skootrekenaar kan sit, te sit

Nuts and Bols: (beskikbaar by die huisdepot)

  • 3 mm x 10 mm bout (x4)
  • 3 mm x 15 mm bout (x4)
  • 3 mm moer (x8)

Stap 2: Sny stukke en samestelling

Snystukke en montering
Snystukke en montering
Snystukke en montering
Snystukke en montering
Snystukke en montering
Snystukke en montering
Snystukke en montering
Snystukke en montering

Daar is drie opsies om stukke vir u skootrekenaar te kry. Opsie 1: (Koop by oomlout.com)

lasergesnyde lessenaarstukke en die nodige hardeware is beskikbaar by oomlout vir $ 25 (hier)

Opsie 2: (Sny op u eie lasersnyer of Ponoko.com)

  • Laai die onderstaande lêer af (03-WEBB-Acrylic Parts.cdr of 03-WEBB-Acrylic Parts (Ponoko P2).eps)
  • Sny dit uit 3 mm (1/8 ") akriel

Opsie 3: (Scroll Saw)

  • Laai die blaai-saagpatroon van onder af af (03-WEBB-ScrollSaw-patroon (A4).pdf (vir papierformaat A4) of 03-WEBB-ScrollSaw-patroon (letter).pdf (vir papier in lettergrootte))
  • Kontroleer of dit nie afgeskaal is tydens die druk nie (deur die gedrukte liniale te meet)
  • Plak 'n stuk 3 mm (1/8 ") akriel vas en sny die stukke uit.

Montering: Laai die monteergids (04-WEBB-samestellingsgids.pdf) hieronder af en sit die skootrekenaar bymekaar.

Stap 3: Sagteware - (Arduino)

Sagteware - (Arduino)
Sagteware - (Arduino)

Vir diegene wat nuut is by Arduino, kyk na die wonderlike aanvangsgids by Arduino.cc Eerstens die sagteware wat op die Arduino werk. Dit is 'n baie eenvoudige program, wat die Arduino doen, is om die seriële poort vir data te monitor.

  • Byte 1-3 (kontroleer grepe "AAA")
  • Byte 4 -opdrag (vertel die arduino wat om te doen) (Ondersteunde opdragte 'F' - vorentoe, 'B' - agteruit, 'L' - links, 'R' - regs, 'S' - spoed, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Stop)
  • Byte 5 parameter - vir die skuifopdragte word dit geïnterpreteer as 'n tydsinterval (parameter * 100 ms), en vir die spoedopdragte 'n persentasie van 0-100

Daar word deeglik kommentaar gelewer op die kode en in hierdie raamwerk moet byvoeging van opdragte maklik wees.

  • Laai die aangehegte zip -lêer af. (05-WEBB-Arduino Code.zip)
  • Pak uit na u Arduino Sketch -gids. (standaard: My dokumente / Arduino)
  • Maak u arduino -ontwikkelingsomgewing oop en laai dit op na u Arduino.

Om te kopieer en te plak

  • Kopieer die kode van onder af.
  • Plak in die Arduino -ontwikkelingsomgewing.
  • Laai op na jou Arduino.

Bylaag: Die Arduino -program

/ * * Arduino Controlled Web Connected Robot (WEBB) - Serial Host * Vir meer besonderhede besoek: https://www.oomlout.com/serb * * Gedrag: Die Arduino luister na die seriële poort vir 'n opdrag * in formaat 254, 88, 88, (OPDRAG), (TYD) * Ondersteunde opdragte - & apos F & apos - 70 - Vorentoe * & apos B & apos - 66 - Agteruit * & aposL & apos - 76 - Links * & aposR & apos - 82 - Regs * & aposS & apos - 83 - Speed * & aposX & apos - 88 - SetSpeedL * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Ondersteunde tye - 0 - 255 (0 tot 25,5 sekondes) waarde * 100 millisekondes * sp * Bedrading: regter servosignaal - pen 9 * linker servosignaal - pen 10 * * lisensie: Hierdie werk is gelisensieer onder die Creative Commons * Attribution-Share Alike 3.0 Unported License. Om * 'n afskrif van hierdie lisensie te sien, besoek * https://creativecommons.org/licenses/by-sa/3.0/ * of stuur 'n brief aan Creative Commons, 171 Second * Street, Suite 300, San Francisco, Kalifornië 94105, * VSA. * */// ----------------------------------------------------- ---------------------------- // BEGIN VAN ARDUINO SERIAL SERVER PREAMBEL // Definieer konstantes wat ooreenstem met elke opdrag (ook die ascii-kode nommer) #define FORWARD 70 // F#definieer BACKWARD 66 // B#definieer LINKS 76 // L#definieer REGS 82 // R#definieer SETSPEED 83 // S#definieer STOP 67 // C#definieer SETSPEEDLEFT 88 // X #define SETSPEEDRIGHT 89 // Y/ *Die drie tjekbytes (wat gebruik word om te keer dat die robot reageer op willekeurige seriële *data) tans "AAA" */#definieer checkByte1 65 // "A" #define checkByte2 65 // "A "#define checkByte3 65 //" A "// -------------------------------------- ------------------------------------ // BEGIN VAN ARDUINO BEHEERDE SERVO ROBOT (SERB) PREAMBEL#sluit in #define LEFTSERVOPIN 10 // Die pen waarmee die linker servo gekoppel is aan#definieer RIGHTSERVOPIN 9 // Die pen waarmee die regter servo gekoppel is aanServo leftServo; Servo regs Servo; int leftSpeed = 50; // hou die snelheid van die robotte linksServo // 'n persentasie tussen 0 en 100int rightSpeed = 100; // hou die snelheid van die robotte reg Servo // 'n persentasie tussen 0 en 100 // EINDE VAN ARDUINO BEHEERDE SERVO ROBOT (SERB) PREAMBEL // ------------------- -------------------------------------------------- ----- // Kry alles in werking en stel die geldige opstelling () {Serial.begin (9600) in werking; // Begin die seriële poort serbSetup (); // stel die toestand van alle nodige // penne in en voeg servo's by jou skets} // Die hoofprogram loopvoid loop () {serbPollSerialPort (); // kyk voortdurend na die reekspoort // as daar data is wat dit verwerk} // ------------------------------ ---------------------------------------- // BEGIN VAN ARDUINO SERIAL SERVER ROUTINES/ * * Verwerk opdragte wat by die arduino & aposs seriële poort */void serbPollSerialPort () {int dta; // veranderlike om die seriële byte te hou as (Serial.available ()> = 5) {// as 5 grepe in die buffer is (lengte pf 'n volledige versoek) dta = Serial.read (); if (dta = checkByte1) {// Kontroleer of die eerste tjekgreep dta = Serial.read (); if (dta = checkByte2) {// Kontroleer of tweede tjekgreep dta = Serial.read (); if (dta = checkByte3) {// Kontroleer of derde tjek byte int command = Serial.read (); // Vierde greep is die opdrag int param1 = Serial.read (); // Vyfde greep is param1 interpretCommand (command, param1); // stuur die ontleedde versoek na dit toe en stuur hanteerder}}}}}/ * * Neem die opdrag en parameter en stuur dit na die robot */void interpretCommand (int command, int param1) {if (command == FORWARD) {goForward (); vertraging (param1 * 100); goStop ();} // indien vorentoe anders as (command == BACKWARD) {goBackward (); vertraging (param1 * 100); goStop ();} // as agteruit anders as (command == LEFT) {goLeft (); vertraging (param1 * 100); goStop ();} // as dit anders gelaat word as (command == RIGHT) {goRight (); vertraging (param1 * 100); goStop ();} // indien reg anders as (command == SETSPEED) {setSpeed (param1);} // as spoed anders gestel word as (command == STOP) {goStop ();} // as stop anders as (command == SETSPEEDLEFT) {setSpeedLeft (param1);} // as u die linker spoed anders stel as (command == SETSPEEDRIGHT) {setSpeedRight (param1);} // as u die regte spoed anders stel {// as 'n onbekende opdrag 'n bietjie skelm is goLeft (); vertraging (150); gaan regs(); vertraging (150); goStop (); }} // ---------------------------------------------- -------------------------- // BEGIN VAN ARDUINO BEHEERDE SERVO ROBOT (SERB) ROUTINES/ * * stel u arduino op om u SERB aan te spreek met behulp van die ingesluit roetines*/void serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, OUTPUT); // stel die linker servosignaalpen // in om pinMode uit te voer (RIGHTSERVOPIN, OUTPUT); // stel die regter servosignaalpen // om linksServo.attach (LEFTSERVOPIN) uit te voer; // heg linker servo regsServo.aanhegsel (RIGHTSERVOPIN) aan; // heg regs servo goStop ();}/ * * stel die snelheid van die robot in tussen 0- (gestop) en 100- (volspoed) * LET WEL: spoed verander nie die huidige spoed nie, u moet spoed verander * bel dan een van die go -metodes voordat veranderinge plaasvind.*/ void setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // stel linker spoed setSpeedRight (newSpeed); // stel die regte spoed in}/ * * Stel die spoed van die linkerwiel in */void setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // as die spoed groter is as 100 // 100 as (newSpeed = 100) {newSpeed = 100;} // as die spoed groter is as 100 // maak dit 100 as (newSpeed <= 0) {newSpeed = 0;} // as die spoed laer is as 0, maak // dit 0 rightSpeed = newSpeed * 0,9; // skaal die spoed om te wees}/ * * stuur die robot vorentoe */void goForward () {leftServo.write (90 + leftSpeed); rightServo.write (90 - rightSpeed);} / * * stuur die robot agteruit * /void goBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * stuur die robot regs * /void goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);}/ * * stuur die robot links */void goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);}/ * * stop die robot */void goStop () {leftServo.write (90); rightServo.write (90);} // EINDE VAN ARDUINO BEHEERDE SERVO ROBOT (SERB) ROUTINES // ---------------------------- -----------------------------------------------

Stap 4: Sagteware - Robot -skootrekenaar (WebServer)

Sagteware - Robot -skootrekenaar (WebServer)
Sagteware - Robot -skootrekenaar (WebServer)

(Verwerking is 'n open source programmeertaal en omgewing wat baie maklik is om mee te begin. Besoek Verwerking vir meer besonderhede) Die sagteware wat op die robotskootrekenaar werk, is ook redelik eenvoudig. Dit is 'n taamlik rudimentêre webbediener (luister na webbladversoeke vanaf 'n webblaaier), 'n klein gebruikerskoppelvlak (om dit op te stel) en fasiliteite om die opdragte wat van die webbediener ontvang is, na die Arduino oor te dra. (op vensters)

  • Laai die onderstaande zip-lêer af (06-WEBB-verwerkingswebbediener (windows exe).zip)
  • Pak dit uit en voer die.exe -lêer (_WEBB_WebServer_RobotComputer.exe) uit

Om tydens verwerking te wysig:

  • Laai die zip-lêer hieronder af (06-WEBB-verwerkingswebbediener (bronlêers).zip)
  • Pak die plek oral op u rekenaar uit.
  • Maak die verwerkingsomgewing oop en maak oop (_WEBB_WebServer_RobotComputer.pde)

Om te toets:

  • Begin die program.
  • In vak 1 sal daar 'n lys wees van die beskikbare comm -poorte op u rekenaar (klik op die een waarmee u Arduino gekoppel is. (U robot sal 'n paar keer ruk as die rekenaar verbind word, en 'n siaan -kol verskyn langs die gekose) kommissie hawe)
  • Toets in boks 2 om te sien of u Arduino gekoppel is. Klik op een van die pyle en hopelik beweeg u robot 'n halwe sekonde in die rigting waarin u klik.
  • Klik in boks 3 op die "Start" -knoppie om die webbediener te begin.
  • Maak 'n webblaaier oop (op die Robot -skootrekenaar) en besoek https://127.0.0.1:12345/ControlPage.html (hopelik verskyn die bedieningswebbladsy met knoppies daarop) -Besonderhede oor hoe u hierdie bladsy in die volgende stap kan gebruik -

Wat gebeur:

  • Die webbediener luister na poort 12345 vir http -versoeke (wat gestuur word as u 'n webbladadres invoer)
  • Daar is twee tipes versoeke waarop dit reageer.

1. Dit luister na "ControlPage.html" en stuur die bedieningswebbladsy 2. Dit luister na versoeke van die vorm "/request? Command = F & param1 = 100" (hierdie opdragte word ontleed en na die Arduino gestuur (hierdie voorbeeld sou lei) in die robot vir 10 sekondes vorentoe) Bylaag: (Die kode vir die WebServer)

/ * * Arduino Controlled Web Connected Robot (WEBB) - Webserver * Vir meer besonderhede besoek: https://www.oomlout.com/serb * * Gedrag: Die program luister na http (webbladsy) versoeke in die vorm * "/versoek ? command = F & param1 = 100 "en stuur dit dan na die * Arduino * Ondersteunde opdragte - & apos F & apos - 70 - Vorentoe * & apos B & apos - 66 - Agteruit * & aposL & apos - 76 - Links * & aposR & apos - 82 - Regs * & aposS & apos - 83 - Spoed * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * param1 & aposs - 0 - 255 (0 tot 25.5 Sekondes) waarde * 100 millisekondes * * bedien ook die beheerwebbladsy vir die blaaier as u ControlPage.html vra * * Bediening: 1. Klik op die Comm -poort waarmee u Arduino gekoppel is * 2. Gebruik die toetsknoppies om te sien of u arduino luister * (sal in die rigting klik waar u 'n halwe sekonde klik) * 3. Klik op Start en u webserver sal luister na versoeke * * * Lisensie: Hierdie werk is gelisensieer onder die Creative Commons * Attribu tion-Share Alike 3.0 Unported License. Om * 'n afskrif van hierdie lisensie te sien, besoek * https://creativecommons.org/licenses/by-sa/3.0/ * of stuur 'n brief aan Creative Commons, 171 Second * Street, Suite 300, San Francisco, Kalifornië 94105, * VSA. * */import processing.serial. *; // voer die reeksbiblioteek in om Serial (om met Arduino te praat) import processing.net.*; // voer die netbiblioteek in om Server te gebruik (om met die internet te praat)/ * Serial Port Related Variables */int serialPortIndex = -1; // die indeks van die reekspoort wat ons gebruik in die Serial.list () listString commOptions; // 'n Veranderlike om Serial.list () in te stoor, sodat dit nie nodig is om te poll nie // die seriële poorte elke keer as ons dit wil herhaal (peiling veroorsaak 'n // sprong in die arduino servo's) Serial serialPort; // Maak die seriële poort aanspreeklik in hierdie skets/ * Grafiese en leweringsverwante veranderlikes */PFont -lettertipe; // maak lettertipe openbaar sodat dit slegs een keer gelaai moet word (Arial-72)/ * Netwerkverwante veranderlikes */Server wServer; // Die bediener wat web versoeke port = 12345 hanteer; // Die poort waarna die bediener luister na cycleCount = 0; // Tel die aantal kere wat die treklus uitvoer (gebruik om die "lopende" teks te animeer)/ * Utility Variables */PImage bg; // Die agtergrondprent tans / WEBB-background.png/ * * Knoppieverwante veranderlikes * (knoppies word baie rof geïmplementeer, omringende blokkies word gestoor en grafika en teks word * op die agtergrondprent geteken) ie. veranderlike knoppie veranderlikes sal nie die voorkoms van knoppies */Knoppie comm1 beweeg nie; Knoppie komm2; Knoppie comm3; Knoppie komm4; // Die knoppies om die korrekte seriële poort te kies Knoppie op; Knoppie regs; Knoppie links; Knoppie; // Die rigtingknoppies om te toets of die robot reageer Button webServer; // Die knoppie om die webServer te begin/ * * stel alles op */leegstelling () {frameRate (5); // Vertraag die skets 'n bietjie sodat dit nie so belasend is op die stelsel nie bg = loadImage ("WEBB-background.png"); // Laai die agtergrondprent (gestoor in die sketsmap) grootte (700, 400); // Stel die grootte van die sketsvenster font = loadFont ("ArialMT-72.vlw") in; // Laai die lettertipe wat ons sal gebruik tydens hierdie skets commOptions = Serial.list (); // Ondervra die seriële poorte en kry 'n lys van beskikbare poorte // (dit word slegs een keer verhoed dat die robot ruk elke keer as dit & aposs // seriële poort ondervra word) defineButtons (); // Definieer die afgrensblokkies vir elke knoppie -agtergrond (bg); // Verf die agtergrondprent (hierdie prent bevat al die knoppie-grafika)}/ * Die sketse se hooflus */leegte-teken () {if (cycleCount == 0) {//- roetine vir roepstreke drawCommBox (); // Teken die emelemente in die Comm Box (raampie 1) drawTestBox (); // Teken al die elemente in die toetsvak (raampie 2) drawWebServerBox (); // Teken al die elemente in die WebServer Box (raam 3)} //- roep werkroetines pollWebServer (); // Poll die webbediener om te sien of daar versoeke via die netwerk ingekom het} // ------------------------------ ---------------------------------------------- // Begin van teken roetines (verdeel net om kode lekkerder te maak om te lees)/ * * Die tekenopdateringsroetine (uitgevoer elke siklus) vir items in die kommissie -boks (blokkie 1) */void drawCommBox () {fill (0, 0, 0); // Stel die vul in op black textFont (lettertipe, 15); // Stel die lettertipe in die regte grootte vir (int i = 0; i 0) {running = running + ".";} // die aantal kolletjies is gebaseer op cycleCount if ((cycleCount /1)> 1) { running = running + ".";} if ((cycleCount / 1)> 2) {running = running + ".";} if ((cycleCount / 1)> 3) {cycleCount = 0;} text (running, 520, 210); } cycleCount ++; // Elke keer deur cycleCount word toegeneem met een} // End of Draw routines // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // Begin van diensroetines/ * * mousePressed word elke keer as die muis ingedruk word genoem * kontroleer of die muis in een van die knoppiegrense is * en of dit die regte roetine is */void mousePressed () {if (comm1.pressed ()) { updateSerialPort (0);} // Veranderinge aan die comm -poort by indeks 0 in Serial.list () anders as (comm2.pressed ()) {updateSerialPort (1);} // Veranderinge aan die comm -poort by indeks 1 in Serial.list () anders as (comm3.pressed ()) {updateSerialPort (2);} // Veranderinge aan die comm -poort by indeks 2 in Serial.list () anders as (comm4.pressed ()) {updateSerialPort (3);} // Veranderinge aan die comm -poort by indeks 3 in Serial.list () anders as (up.pressed ()) {sendRobotCommand ("F", 5);} // Stuur 'n opdrag om die robot vorentoe te skuif vir 0.5 sekondes anders as (links.gedruk ()) {sendRobotCommand ("L", 5);} / /Stuur 'n opdrag om die robot vir 0,5 sekondes links te skuif, anders as (regs ingedruk ()) {sendRobotCommand ("R", 5);} // Stuur 'n opdrag om die robot vir 0,5 sekondes na regs te skuif, anders as (af. ingedruk ()) {sendRobotCommand ("B", 5);} // Stuur 'n opdrag om die robot vir 0,5 sekondes agteruit te skuif anders as (webServer.pressed ()) {startWebServer ();} // Begin die webServer cycleCount = 0; agtergrond (bg); // Verf die agtergrondprent (hierdie prent bevat al die knoppie -grafika daarop) teken ();}/ * * Na 'n uitvoering word dit na die bediener gekyk om te sien of daar verbindings is wat wag * as daar 'n wagende verbinding is stuur die versoek en stuur dit na die parseRequest (String) * -roetine om ekstra teks weg te neem. Dit word dan na die interpretRequest (String) roetine gestuur om die toepaslike aksieroutine te roep (dws instruksies na robot stuur).* * 'N Versoek word deurgegee deur die adres van die rekenaar en poort in 'n webblaaier in te voer * Vir plaaslike masjien "https://127.0.0.1:12345/request?command=F&param1=100" * * Voorbeeldversoek: * KRY/versoek? command = F & param1 = 100 HTTP/1.1 * User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, soos Gecko) * Aanvaar: * // * * Aanvaar-taal: en-US, en * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Host: 127.0.0.1:12345 * Connection: Keep-Alive * * Voorbeeld antwoord (vir verwerkte versoek) * HTTP/1.1 200 OK * Verbinding: sluit * Inhoudstipe: teks/html * * opdrag: F param1: 100 */void pollWebServer () {if (wServer! = null) {// As die webbediener loop kliëntversoek = wServer.available (); // Laai die volgende kliënt in die ry in die // bediener (nul indien geen versoeke wag nie) as (versoek! = Nul) {// as daar 'n versoekproses is, teken dit String fullRequest = request.readString (); // Stoor versoekinhoud as 'n string String ip = request.ip (); // Stoor die kliënt se ip -adres as 'n string String requestString = parseRequest (fullRequest.toUpperCase ()); // Verwyder al die ekstra // inligting en laat slegs die versoekstring (teks na GET) // (skuif na hoofletters om snertoetse makliker te maak) if (requestString.indexOf ("REQUEST?")! = -1) { // Kontroleer of die versoek 'AANVRAAG' het? Stringantwoord = interpretRequest (requestString); // Stuur die versoek na die versoektolk request.write ("HTTP/1.1 200 OK / nKonneksie: sluit / nInhoudstipe: teks/html / n / n" + antwoord); // Stuur die antwoord 'n 200 om te sê dat die versoek // hanteer is en die "antwoord" string as die antwoord wServer.disconnect (versoek); // Ontkoppel die kliënt} anders as (requestString.indexOf ("CONTROLPAGE")! = -1) {// As die versoek vir die beheerwebblad is String webPageArray = loadStrings ("WEBB -ControlPage.html"); // Laai die beheerwebblad van / data / WEBB-ControlPage.html // (gelaai as 'n reeks lyne) String webPage = ""; // Om die redigering makliker te maak, het die webbladsy // reëls gebreek, sodat hierdie vir lus die lyne uitskakel vir (int i = 0; i portIndex) {// as die geslaagde portIndex 'n geldige indeks in Serial.list is () // (dit wil sê, nie opsie drie in 'n lys van twee nie) serialPortIndex = portIndex; // stel die serialPortIndex -veranderlike op die nuwe serialport -indeks // (dit word gebruik om die kol langs die aktiewe poort te vertoon)} if (serialPortIndex! = -1) {// kyk of 'n vorige poort gekies is (serialPort! = null) {serialPort.stop ();} // as 'n seriële poort reeds gebruik word, stop dit voordat u 'n nuwe een laai serialPort = new Serial (hierdie, Serial.list () [serialPortIndex], 9600); // Skep 'n nuwe reeksvoorwerp om met die Arduino 9600 Baud}} * * * * 'n versoekstring te neem (byvoorbeeld: "request? Command = F & param1 = 100") en verwyder die opdrag * en param1 en stuur dit na die arduino (byvoeging van ekstra parameters of nie -arduino -opdragte word hier gedoen) */String interpretRequest (String requestString) {String returnValue = "OK"; // Berei 'n returnValue -veranderlike String -opdrag voor; // Volgende drie reëls onttrek die waarde na "command =" // (die ekstra reël is ingeval die opdragparameter aan die // einde van die versoek is en nie gevolg deur 'n & if (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 (" & "));} else {command = command;} String param1String; // Volgende drie reëls onttrek die waarde na" param1 = "// (die ekstra reël is ingeval die opdragparameter aan // aan die einde van die versoek is en nie gevolg word deur 'n & as (requestString.indexOf (" PARAM1 = ")! = -1) {param1String = requestString.substring (requestString.indexOf ("PARAM1 =") + "PARAM1 =". length ());} anders {param1String = "0";} if (param1String.indexOf ("&")! = -1) {param1String = param1String.substring (0, param1String.indexOf ("&"));} else {param1String = param1String;} int param1 = Integer.parseInt (param1String); // Verander die param1 String in 'n heelgetal sendRobotCommand (opdrag, param1); // Stuur die opdrag na die roetine wat dit na die Arduino returnValue = "command:" + command + "param1:" + param1; // op die oomblik net die ontledingsopdrag, maar stuur // as html sodat formatering ingesluit kan word return returnValue;}/ * * Neem 'n opdrag (tans een letter) en 'n parameter (een greep 0-255) en stuur dit na die arduino * wat luister en opneem * Huidige opdragte wat tans ondersteun word * F - */void sendRobotCommand (String -opdrag, int param1) {println ("command:" + command + "time:" + param1); String checkString = "AAA"; as (serialPort! = null) {serialPort.write (checkString + opdrag); serialPort.write (byte (param1)); }} // Einde van die opstelling/roetines word nie gereeld genoem nie // ----------------------------------- -------------------------------------------------- // Voorbeeldknoppie en RectButton-kode van processing.org-voorbeeld met enkele veranderinge // meestal gemaak om animasie te vereenvoudig en te verwyder // https://processing.org/learning/topics/buttons.html (2008-09-23) klas Knoppie {int x, y; int breedte, hoogte; Knoppie (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; breedte = breedte; hoogte = hoogte; } booleaans gedruk () {if (overRect ()) {return true; } anders {return false;}} boolean overRect () {if (mouseX> = x && mouseX = y && mouseY <= y+height) {return true; } anders {return false; }}}

Stap 5: Sagteware - (Webblad)

Sagteware - (Webblad)
Sagteware - (Webblad)
Sagteware - (Webblad)
Sagteware - (Webblad)
Sagteware - (Webblad)
Sagteware - (Webblad)

Ons is amper klaar, al wat oorbly, is om met u robot te praat. Om aan die praat te kom: (via 'n plaaslike netwerk -op vensters -)

  • Ontdek die plaaslike ip -adres van die skootrekenaar. Om dit te doen, gaan na "Start / Programs / Accesories / Command Prompt" en tik "ipconfig" wanneer die terminale venster oopmaak. Skryf "IP -adres" neer en gaan na 'n ander rekenaar op u plaaslike netwerk.
  • Maak 'n webblaaier oop, tik "https:// (robot computer ip): 12345/ControlPage.html
  • Die beheerwebblad moet laai, in die "IP -adres" boks, tik die robotrekenaars ip.
  • Begin om u robot te beheer.

Om aan die praat te raak: (via die internet) Noudat u dit lokaal aan die werk het, is dit net 'n paar tree weg.

  • (die moeilikste stap) Stel port forwarding op - u rekenaar moet eerder na die internet luister as na net die plaaslike netwerk. Om dit te kan doen, moet u u router vertel om sekere versoeke deur te stuur na die rekenaar wat die robot beheer. Dit is 'n bietjie kompleks en gaan veel verder as die omvang van hierdie instruksies. As u egter PortForward.com besoek, gee hulle u alles wat u moet weet oor die opstel van u router (u moet poort 12345 na u robotskootrekenaar stuur)
  • Ontdek vervolgens u internet -IP (besoek WhatIsMyIP.com)
  • Uiteindelik moet Skype 'n video -oproep opstel en met wie u praat, besoek 'https:// (internet IP): 12345/ControlPage.html'
  • Tik die internet -IP in die boks "IP -adres" op die beheerwebblad en u Web Connected Robot word van ver af gery.

Stap 6: klaar

Klaar
Klaar

Wel, dit is dit. Ek hoop dat u dit baie geniet om u robot van ver af te bestuur. As u probleme ondervind met die sagteware of hardeware, kan u 'n opmerking lewer, en ek sal u probeer help. As u meer netjiese projekte wil besoek, besoek gerus: oomlout.com

Aanbeveel: