Indholdsfortegnelse:

Lav en internetforbundet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook): 6 trin (med billeder)
Lav en internetforbundet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook): 6 trin (med billeder)

Video: Lav en internetforbundet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook): 6 trin (med billeder)

Video: Lav en internetforbundet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook): 6 trin (med billeder)
Video: Самая дешевая аккумуляторная цепная пила с Алиэкспресс. Тест. Разборка. Стоит ли покупать из Китая? 2024, Juli
Anonim
Lav en webtilsluttet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook)
Lav en webtilsluttet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook)
Lav en webtilsluttet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook)
Lav en webtilsluttet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook)
Lav en webtilsluttet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook)
Lav en webtilsluttet robot (for omkring $ 500) (ved hjælp af en Arduino og Netbook)

Denne instruktion viser dig, hvordan du opbygger din egen Web Connected Robot (ved hjælp af en Arduino mikro-controller og Asus eee pc). Hvorfor ville du have en Web Connected Robot? At lege med selvfølgelig. Kør din robot fra hele rummet eller fra hele landet ved hjælp af andet end Skype og en webbrowser (intet at installere på den styrende computer). Efter det? Grav ind i softwaren, og tilpas den, som du vil, tilføj en GPS, så du kan se, hvor du kører på et kort, tilføj temperatursensorer til at kortlægge temperaturgradienter i dit hus eller sonarsensorer for at tilføje kontroller på det, du er på nettet chauffører kan og kan ikke støde på. Funktioner:

  • Billig - (~ $ 500, hvis du køber alle dele nye og betydeligt billigere, hvis du graver rundt i din reservedelsbeholder)
  • Når kontrollen med robotten først er i gang, kræver det kun en webbrowser - (og Skype, hvis du vil se, hvor du kører)
  • Open Source og let tilpasselig - (bruger en Arduino mikro -controller, behandling til webserveren og al software kan køres på Linux (al koden er også stærkt kommenteret for at gøre det let at hoppe ind og ændre ting))
  • Modulært design (ikke et fuldstændigt integreret system, hvis du ikke vil bekymre dig om at bruge en anden videokonferencetjeneste, eller hvis du har et grundlæggende stempel frem for en Arduino lige et lille stykke kode og gemmer det)

Her er en hurtig video af min Web Connected Robot, der bliver kørt ud af køkkenet.

Trin 1: Dele og værktøjer

Dele og værktøjer
Dele og værktøjer

Der kræves kun få dele: Robot: Arduino -kontrolleret servobot - (SERB) ($ 175 @ oomlout.com) eller (lav din egen)

En open source-robot, der bruger en Arduino mikrokontroller som hjernen

(enhver dobbelt servo robotplatform med en arduino kan bruges (mulighed 1) (send mig en besked, hvis du opdager andre muligheder) Computer: Asus eee PC 4G ($ 280) (@Best Buy)

En lille billig bærbar computer, der er perfekt til dette formål

(enhver bærbar computer (eller stationær computer, hvis du vil køre med en akkord), der er i stand til at køre Behandlingskitser kan bruges) Laptop -skrivebord: Laserskåret akryl ($ 25 (@ oomlout)) eller (byg dit eget trin 3)

Et par ekstra akrylstykker, der boltes på en (SERB) for at give den et skrivebord, hvor den bærbare computer kan sidde

Nuts and Bols: (fås hjemme depot)

  • 3 mm x 10 mm bolt (x4)
  • 3 mm x 15 mm bolt (x4)
  • 3 mm møtrik (x8)

Trin 2: Skærestykker og samling

Skærestykker og samling
Skærestykker og samling
Skærestykker og samling
Skærestykker og samling
Skærestykker og samling
Skærestykker og samling
Skærestykker og samling
Skærestykker og samling

Der er tre muligheder for at få brikker til dit bærbare skrivebord. Skæreindstilling 1: (Køb fra oomlout.com)

laserskårne skrivebordstykker og den nødvendige hardware fås fra oomlout for $ 25 (her)

Mulighed 2: (Skæring på din egen laserskærer eller Ponoko.com)

  • Download filen herunder (03-WEBB-akryldele. Cdr eller 03-WEBB-akryldele (Ponoko P2).eps)
  • Skær dem af 3 mm (1/8 ") akryl

Mulighed 3: (Rullesav)

  • Download rullesavmønsteret nedenunder (03-WEBB-ScrollSaw Pattern (A4).pdf (for papir i A4-størrelse) eller 03-WEBB-ScrollSaw Pattern (letter).pdf (for papir i letterformat))
  • Dobbelttjek, at det ikke er blevet skaleret ved udskrivning (ved at måle de trykte linealer)
  • Lim til et stykke 3 mm (1/8 ") akryl og skær stykkerne ud.

Montering: Download samlevejledningen (04-WEBB-Monteringsguide.pdf) herunder, og sæt det bærbare skrivebord sammen.

Trin 3: Software - (Arduino)

Software - (Arduino)
Software - (Arduino)

For de nye til Arduino, tjek den gode startguide på Arduino.cc Først fra softwaren, der kører på Arduino. Det er et meget simpelt program, hvad Arduino gør er at overvåge sin serielle port for data. Hvad den leder efter er en samtale på 5 bytes lang.

  • Byte 1-3 (Kontroller bytes "AAA")
  • Byte 4 -kommando (fortæller arduinoen, hvad de skal gøre) (Understøttede kommandoer 'F' - Fremad, 'B' - Bagud, 'L' - Venstre, 'R' - Højre, 'S' - Hastighed, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Stop)
  • Byte 5 parameter - For flyttekommandoerne tolkes dette som et tidsinterval (parameter * 100 ms) og for hastighedskommandoer en procentdel fra 0-100

Koden kommenteres grundigt, og i betragtning af denne ramme skal tilføjelse af yderligere kommandoer være let.

  • Download den vedhæftede zip -fil. (05-WEBB-Arduino Code.zip)
  • Pak ud til dit Arduino Sketch -bibliotek. (standard: Mine dokumenter / Arduino)
  • Åbn dit arduino -udviklingsmiljø, og upload til dit Arduino.

At kopiere og indsætte

  • Kopiér koden nedenunder.
  • Indsæt i Arduino -udviklingsmiljøet.
  • Upload til din Arduino.

Tillæg: Arduino -programmet

/ * * Arduino Controlled Web Connected Robot (WEBB) - Serial Host * For flere detaljer besøg: https://www.oomlout.com/serb * * Adfærd: Arduino lytter til sin serielle port for en kommando * i format 254, 88, 88, (KOMMANDO), (TID) * Understøttede kommandoer - & aposF & apos - 70 - Frem * & aposB & apos - 66 - Tilbage * & aposL & apos - 76 - Venstre * & aposR & apos - 82 - Højre * & aposS & apos - 83 - Hastighed * & aposX & apos - 88 - SetSpeedL * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Understøttede tider - 0 - 255 (0 til 25,5 sekunder) værdi * 100 millisekunder * sp * Ledninger: Højre servosignal - pin 9 * Venstre servosignal - pin 10 * * Licens: Dette værk er licenseret under Creative Commons * Attribution-Share Alike 3.0 Unported License. For at * se en kopi af denne licens skal du besøge * https://creativecommons.org/licenses/by-sa/3.0/ * eller sende et brev til Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * USA. * */// ----------------------------------------------------- ---------------------------- // START AF ARDUINO SERIAL SERVER PREAMBEL // Definer konstanter, der svarer til hver kommando (også ascii-kodenummeret) #define FREM 70 // F#definere BACKWARD 66 // B#definere LEFT 76 // L#definere HØJRE 82 // R#definere SETSPEED 83 // S#definere STOP 67 // C#definere SETSPEEDLEFT 88 // X #define SETSPEEDRIGHT 89 // Y/ *De tre kontrolbytes (bruges til at forhindre robotten i at reagere på tilfældige serielle *data) i øjeblikket "AAA" */#definerer checkByte1 65 // "A" #define checkByte2 65 // "A "#define checkByte3 65 //" A "// -------------------------------------- ------------------------------------ // START AF ARDUINO KONTROLLERET SERVO ROBOT (SERB) PREAMBEL#inkluderer #define LEFTSERVOPIN 10 // Den pin, den venstre servo er forbundet til#definere RIGHTSERVOPIN 9 // Den pin, den højre servo er forbundet tilServo leftServo; Servo højreServo; int leftSpeed = 50; // holder roboternes hastighed leftServo // en procentdel mellem 0 og 100int rightSpeed = 100; // holder robotternes hastighed til højreServo // en procentdel mellem 0 og 100 // END OF ARDUINO CONTROLLED SERVO ROBOT (SERB) PREAMBLE // ------------------- -------------------------------------------------- ----- // Får alt i gang og konfigurerer void setup () {Serial.begin (9600); // Starter den serielle port serbSetup (); // indstiller tilstanden for alle nødvendige // pins og tilføjer servoer til din skitse} // Hovedprogrammet loopvoid loop () {serbPollSerialPort (); // ser kontinuerligt til den serielle port // hvis der er data, behandler den det} // ------------------------------ ----------------------------------------- // START AF ARDUINO SERIAL SERVER RUTINER/ * * Behandler kommandoer leveret til arduino & aposs serielle port */void serbPollSerialPort () {int dta; // variabel til at holde den serielle byte hvis (Serial.available ()> = 5) {// hvis 5 bytes er i bufferen (længde pf en fuld anmodning) dta = Serial.read (); if (dta = checkByte1) {// Kontrollerer for første checkbyte dta = Serial.read (); if (dta = checkByte2) {// Kontrollerer efter anden checkbyte dta = Serial.read (); if (dta = checkByte3) {// Kontrollerer tredje kontrolbyte int kommando = Serial.read (); // Fjerde byte er kommandoen int param1 = Serial.read (); // Femte byte er param1 interpretCommand (kommando, param1); // sender den analyserede anmodning til den & aposs handler}}}}}/ * * Tager kommandoen og parameteren og videregiver den til robotten */void interpretCommand (int kommando, int param1) {if (command == FORWARD) {goForward (); forsinkelse (param1 * 100); goStop ();} // hvis fremad ellers hvis (kommando == BACKWARD) {goBackward (); forsinkelse (param1 * 100); goStop ();} // hvis baglæns ellers hvis (kommando == LEFT) {goLeft (); forsinkelse (param1 * 100); goStop ();} // hvis venstre ellers hvis (kommando == HØJRE) {goRight (); forsinkelse (param1 * 100); goStop ();} // hvis ret ellers hvis (kommando == SETSPEED) {setSpeed (param1);} // hvis du indstiller hastighed ellers hvis (kommando == STOP) {goStop ();} // hvis stop ellers hvis (kommando == SETSPEEDLEFT) {setSpeedLeft (param1);} // hvis du indstiller venstre hastighed ellers hvis (kommando == SETSPEEDRIGHT) {setSpeedRight (param1);} // hvis du indstiller den rigtige hastighed ellers {// hvis ikke -genkendt kommando gør lidt shimmy gå til venstre(); forsinkelse (150); gå til højre(); forsinkelse (150); goStop (); }} // ---------------------------------------------- -------------------------- // START AF ARDUINO CONTROLLED SERVO ROBOT (SERB) ROUTINES/ * * konfigurerer din arduino til at adressere din SERB vha. de medfølgende rutiner*/void serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, OUTPUT); // indstiller venstre servosignalstift // til output pinMode (RIGHTSERVOPIN, OUTPUT); // indstiller den højre servosignalstift // til at sende venstreServo.attach (LEFTSERVOPIN); // vedhæfter venstre servo rightServo.attach (RIGHTSERVOPIN); // fastgør højre servo goStop ();}/ * * indstiller robotens hastighed mellem 0- (stoppet) og 100- (fuld hastighed) * BEMÆRK: hastighed ændrer ikke den aktuelle hastighed, du skal ændre hastighed * ring derefter til en af go -metoderne, før der sker ændringer.*/ void setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // sætter venstre hastighed setSpeedRight (newSpeed); // indstiller højre hastighed}/ * * Indstiller hastigheden på det venstre hjul */void setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // hvis hastigheden er større end 100 // gør det 100 hvis (newSpeed = 100) {newSpeed = 100;} // hvis hastigheden er større end 100 // gør det til 100 if (newSpeed <= 0) {newSpeed = 0;} // hvis hastigheden er mindre end 0 make // det 0 rightSpeed = newSpeed * 0,9; // skalerer hastigheden for at være}/ * * sender robotten frem */void goForward () {leftServo.write (90 + leftSpeed); rightServo.write (90 - rightSpeed);} / * * sender robotten baglæns * /void goBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * sender robotten til højre * /void goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);}/ * * sender robotten til venstre */void goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);}/ * * stopper robotten */void goStop () {leftServo.write (90); rightServo.write (90);} // END OF ARDUINO CONTROLLED SERVO ROBOT (SERB) ROUTINES // ---------------------------- ------------------------------------------------

Trin 4: Software - Robot bærbar computer (WebServer)

Software - Robot bærbar computer (WebServer)
Software - Robot bærbar computer (WebServer)

(Processing er et open source programmeringssprog og miljø, som er super let at komme i gang med. For flere detaljer besøg Processing) Softwaren, der kører på robot -bærbar computer, er også ganske enkel. Det er en temmelig rudimentær webserver (lytter til websideanmodninger fra en webbrowser), en lille brugergrænseflade (for at konfigurere den) og faciliteter til at videregive kommandoer modtaget fra webserveren til Arduino. Sådan installeres hurtigt: (på vinduer)

  • Download zip-filen herunder (06-WEBB-Processing Webserver (windows exe).zip)
  • Pak den ud, og kør.exe -filen (_WEBB_WebServer_RobotComputer.exe)

Sådan redigeres under behandling:

  • Download zip-filen herunder (06-WEBB-Processing Webserver (kildefiler).zip)
  • Pak ud hvor som helst på din computer.
  • Åbn behandlingsmiljøet, og åbn (_WEBB_WebServer_RobotComputer.pde)

At teste:

  • Kør programmet.
  • I boks nr. 1 vil der være en liste over de tilgængelige kommaporte på din computer (klik på den, din Arduino er forbundet til. (Din robot rykker et par gange, når computeren opretter forbindelse, og der vises en cyan prik ved siden af den valgte komm havn)
  • I boks #2 test for at se, om din Arduino er tilsluttet. Klik på en af pilene, og forhåbentlig vil din robot bevæge sig i den klikkede retning i et halvt sekund.
  • I boks nr. 3 skal du klikke på knappen "Start" for at starte webserveren.
  • Åbn en webbrowser (på Robot -bærbar computer), og besøg https://127.0.0.1:12345/ControlPage.html (forhåbentlig vises kontrolwebsiden med knapper på) -Detaljer om, hvordan du bruger denne side i det næste trin -

Hvad sker der:

  • Webserveren lytter til port 12345 for http -anmodninger (hvad der sendes, når du indtaster en webside -adresse)
  • Der er to typer anmodninger, den reagerer på.

1. Den lytter efter "ControlPage.html" og sender kontrolwebstedet 2. Den lytter efter anmodninger om formularen "/request? Command = F & param1 = 100" (disse kommandoer analyseres og sendes til Arduino (dette eksempel ville resultere i i robotten gå fremad i 10 sekunder) Tillæg: (Koden til WebServer)

/ * * Arduino Controlled Web Connected Robot (WEBB) - Webserver * For flere detaljer besøg: https://www.oomlout.com/serb * * Adfærd: Programmet lytter efter http (webside) anmodninger i formularen ""/request ? command = F & param1 = 100 "og sender dem derefter til * Arduino * Understøttede kommandoer - & aposF & apos - 70 - Frem * & aposB & apos - 66 - Tilbage * & aposL & apos - 76 - Venstre * & aposR & apos - 82 - Højre * & aposS & apos - 83 - Hastighed * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * param1 & aposs - 0 - 255 (0 til 25,5 sekunder) værdi * 100 millisekunder * * betjener også kontrolwebsiden til browseren, hvis du beder om ControlPage.html * * Betjening: 1. Klik på Comm -porten, som din Arduino er forbundet til * 2. Brug testknapperne til at se, om din arduino lytter * (bevæger sig i den retning, der klikkes i et halvt sekund) * 3. Klik på Start, og din webserver vil lyt efter anmodninger * * * Licens: Dette værk er licenseret under Creative Commons * Attribu tion-Share Alike 3.0 Unported License. For at * se en kopi af denne licens skal du besøge * https://creativecommons.org/licenses/by-sa/3.0/ * eller sende et brev til Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * USA. * */import processing.serial. *; // importer det serielle bibliotek for at bruge Serial (til at tale med Arduino) import processing.net.*; // importer netbiblioteket for at bruge Server (til at tale med internettet)/ * Serial Port -relaterede variabler */int serialPortIndex = -1; // indekset over den serielle port, vi bruger i Serial.list () listString commOptions; // En variabel til at gemme Serial.list () i, så der ikke er behov for at polle // de serielle porte hver gang vi ønsker at refere den (polling forårsager et // spring i arduino servoer) Serial serialPort; // Gør den serielle port adresserbar i hele denne skitse/ * Grafiske og gengivelsesrelaterede variabler */PFont -skrifttype; // gør skrifttype offentlig, så den kun skal indlæses én gang (Arial-72)/ * Netværksrelaterede variabler */Server wServer; // Serveren, der håndterer web requestint port = 12345; // Porten, serveren lytter til, i cycleCount = 0; // Tæller antallet af gange draw loop udfører (bruges til // at animere den "kørende" tekst)/ * Utility Variables */PImage bg; // Baggrundsbilledet aktuelt / WEBB-background.png/ * * Knaprelaterede variabler * (knapper implementeres meget groft, afgrænsningsfelter gemmes, og grafik og tekst * tegnes på baggrundsbilledet) dvs. variabler i bevægelige knapper vil ikke flytte knapper */Knap komm1; Knap komm2; Knap comm3; Knap comm4; // Knapperne for at vælge den korrekte serielle portKnap op; Knap til højre; Knap til venstre; Knap ned; // Retningsknapperne for at teste, om robotten reagererButton webServer; // Knappen til at starte webServer/ * * indstiller alt */void setup () {frameRate (5); // Sænker skitsen lidt, så det ikke er lige så belastende for systemet bg = loadImage ("WEBB-background.png"); // Indlæser baggrundsbilledet (gemt i skitsemappen) størrelse (700, 400); // Indstiller størrelsen på skitsevinduets skrifttype = loadFont ("ArialMT-72.vlw"); // Indlæser den skrifttype, vi vil bruge gennem denne skitse commOptions = Serial.list (); // Afspørger de serielle porte og får en liste over tilgængelige porte // (gør dette kun én gang, forhindrer robotten i at rykke hver gang den & aposs // seriel port bliver undersøgt) defineButtons (); // Definerer afgrænsningsfelterne for hver knapbaggrund (bg); // Maler baggrundsbilledet (dette billede har alle knapgrafikerne på sig)}/ * Skitserne hovedløkke */void draw () {if (cycleCount == 0) {//- call draw routines drawCommBox (); // Tegner emelementerne i Comm Box (boks 1) drawTestBox (); // Tegner alle elementerne i testboksen (boks 2) drawWebServerBox (); // Tegner alle elementerne i WebServer-boksen (boks 3)} //- kald arbejdsrutiner pollWebServer (); // Afstemmer webserveren for at se, om der er kommet anmodninger via netværket} // ------------------------------ ---------------------------------------------- // Start af tegne rutiner (opdel bare for at gøre koden pænere at læse)/ * * Tegningsopdateringsrutinen (udført hver cyklus) for elementer i kommeboksen (boks 1) */void drawCommBox () {fill (0, 0, 0); // Indstil udfyldningen til sort textFont (skrifttype, 15); // Indstil skrifttypen til den rigtige størrelse for (int i = 0; i 0) {running = running + ".";} // antallet af prikker er baseret på cycleCount if ((cycleCount /1)> 1) { running = running + ".";} if ((cycleCount / 1)> 2) {running = running + ".";} if ((cycleCount / 1)> 3) {cycleCount = 0;} text (running, 520, 210); } cycleCount ++; // Hver gang gennem cycleCount øges med en} // Slut på tegningsrutiner // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // Start af servicerutiner/ * * mousePressed kaldes hver gang der trykkes på musen * kontrollerer om musen er inde i en af knappens afgrænsningsfelter * og om den er den rigtige rutine kaldes */void mousePressed () {if (comm1.pressed ()) { updateSerialPort (0);} // Ændringer i comm -porten ved indeks 0 i Serial.list () ellers hvis (comm2.pressed ()) {updateSerialPort (1);} // Ændringer i comm -porten ved index 1 i Serial.list () ellers hvis (comm3.pressed ()) {updateSerialPort (2);} // Ændringer til kommaporten ved indeks 2 i Serial.list () ellers hvis (comm4.pressed ()) {updateSerialPort (3);} // Ændringer til kommporten ved indeks 3 i Serial.list () ellers hvis (op.presset ()) {sendRobotCommand ("F", 5);} // Sender en kommando til at flytte robotten fremad for 0,5 sekunder ellers hvis (venstre.presset ()) {sendRobotCommand ("L", 5);} / /Sender en kommando om at flytte robotten til venstre i 0,5 sekunder ellers hvis (højre.presset ()) {sendRobotCommand ("R", 5);} // Sender en kommando til at flytte robotten til højre i 0,5 sekunder ellers hvis (ned. trykket ()) {sendRobotCommand ("B", 5);} // Sender en kommando for at flytte robotten baglæns i 0,5 sekunder, hvis (webServer.pressed ()) {startWebServer ();} // Starter webServer cycleCount = 0; baggrund (bg); // Ommaler baggrundsbilledet (dette billede har alle knappegrafikerne på det) tegner ();}/ * * Opkaldes, når det er udført, tjekker det serveren for at se, om der er ventende forbindelser *, hvis der er en ventende forbindelse, det trækker ud forespørgslen og sender den til parseRequest (String) * rutinen for at fjerne ekstra tekst. Dette sendes derefter til interpretRequest (streng) rutinen for at * kalde den relevante handlingsrutine (dvs. sende instruktioner til robotten).* * En anmodning sendes ved at indtaste computerens adresse og port i en webbrowser * For lokal maskine "https://127.0.0.1:12345/request?command=F&param1=100" * * Eksempelanmodning: * GET/request? command = F & param1 = 100 HTTP/1.1 * User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; da-US) AppleWebKit/525.19 (KHTML, ligesom Gecko) * Accept: * // * * Accept-sprog: da-DA, da * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Host: 127.0.0.1:12345 * Connection: Keep-Alive * * Eksempel Svar (for behandlet anmodning) * HTTP/1.1 200 OK * Forbindelse: luk * Indholdstype: tekst/html * * kommando: F param1: 100 */void pollWebServer () {if (wServer! = null) {// Hvis webserveren kører klientanmodning = wServer.available (); // Indlæs den næste klient i rækken i // serveren (null, hvis der ikke venter nogen anmodninger) hvis (anmodning! = Null) {// hvis der er en anmodningsproces, strings fullRequest = request.readString (); // Gem forespørgselens indhold som en streng String ip = request.ip (); // Gem klientens ip -adresse som en streng String requestString = parseRequest (fullRequest.toUpperCase ()); // Fjern alle de ekstra // oplysninger, der kun efterlader anmodningsstrengen (tekst efter GET) // (skifter til store bogstaver for at gøre strengprøvning lettere) hvis (requestString.indexOf ("ANMODNING?")! = -1) { // Kontrollerer, om anmodningen har "ANMODNING?" String svar = interpretRequest (requestString); // Sender anmodningen til anmodningstolkeren request.write ("HTTP/1.1 200 OK / nForbindelse: luk / nContent-Type: text/html / n / n" + svar); // Sender svaret til 200 for at sige, at anmodningen blev // håndteret og "svar" -strengen som svaret wServer.disconnect (anmodning); // Afbryder klienten} else if (requestString.indexOf ("CONTROLPAGE")! = -1) {// Hvis anmodningen er til kontrolwebsiden String webPageArray = loadStrings ("WEBB -ControlPage.html"); // Indlæser kontrolwebsiden fra / data / WEBB-ControlPage.html // (indlæses som en række linjer) String webPage = ""; // For at gøre redigeringen lettere blev websiden efterladt med // linjeskift, så denne for loop strækker disse linjer ud for (int i = 0; i portIndex) {// hvis den beståede portIndex er et gyldigt indeks i Serial.list () // (dvs. ikke mulighed tre i en liste over to) serialPortIndex = portIndex; // indstil serialPortIndex -variablen til det nye serialport -indeks // (dette bruges til at vise prikken ved siden af den aktive port)} if (serialPortIndex! = -1) {// kontrollere, om der er valgt en port engang tidligere, hvis (serialPort! = null) {serialPort.stop ();} // hvis en Serial port allerede bruges, stop den, før du indlæser en ny serialPort = ny Serial (denne, Serial.list () [serialPortIndex], 9600); // Opret et nyt serielt objekt til kommunikation med Arduino 9600 Baud}}/ * * Tager en anmodningsstreng (f.eks: "request? Command = F & param1 = 100") og fjerner kommandoen * og param1 og sender den til arduino (tilføjelse af ekstra parametre eller ikke -arduino -kommandoer ville blive udført her) */String interpretRequest (String requestString) {String returnValue = "OK"; // Forbereder en returnValue -variabel String -kommando; // Næste tre linjer udtrækker værdien efter "command =" // (den ekstra linje er, hvis kommandoparameteren er i // slutningen af anmodningen og ikke efterfulgt af en & 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; // Næste tre linjer udtrækker værdien efter" param1 = "// (den ekstra linje er, hvis kommandoparameteren er // i slutningen af anmodningen og ikke efterfulgt af en & if (requestString.indexOf (" PARAM1 = ")! = -1) {param1String = requestString.substring (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); // Gør param1 -strengen til en heltal sendRobotCommand (kommando, param1); // Sender kommandoen til rutinen, der sender den til Arduino returnValue = "kommando:" + kommando + "param1:" + param1; // i øjeblikket kun den analyserede kommando, men sender // som html, så formatering kan inkluderes return returnValue;}/ * * Tager en kommando (i øjeblikket et bogstav) og en parameter (en byte 0-255) og sender den til arduino *, der lytter og genlyser * Aktuelt understøttede kommandoer * F - */void sendRobotCommand (strengkommando, int param1) {println ("kommando:" + kommando + "tid:" + param1); String checkString = "AAA"; hvis (serialPort! = null) {serialPort.write (checkString + kommando); serialPort.write (byte (param1)); }} // Afslutning af opsætning/ikke meget almindeligt kaldet rutiner // ----------------------------------- -------------------------------------------------- // Eksempelsknap og RectButton-kode fra processing.org-eksempel med nogle ændringer // foretaget mest for at forenkle og fjerne roll-over-animation // https://processing.org/learning/topics/buttons.html (2008-09-23) klasse Knap {int x, y; int bredde, højde; Knap (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; bredde = iwidth; højde = højde; } boolsk presset () {if (overRect ()) {return true; } ellers {return false;}} boolsk overRect () {if (mouseX> = x && mouseX = y && mouseY <= y+height) {return true; } else {return false; }}}

Trin 5: Software - (webside)

Software - (webside)
Software - (webside)
Software - (webside)
Software - (webside)
Software - (webside)
Software - (webside)

Nå, vi er næsten færdige, alt der er tilbage er at tale med din robot. Sådan får du snakket: (via et lokalt netværk -på vinduer-)

  • Find den lokale ip -adresse på den bærbare computer. For at gøre dette skal du gå til "Start / Programs / Accesories / Command Prompt", og når terminalvinduet åbnes, skal du skrive "ipconfig". Skriv "IP -adresse" ned og gå til en anden computer på dit lokale netværk.
  • Åbn en webbrowser, skriv "https:// (robotcomputer ip): 12345/ControlPage.html
  • Kontrolwebsiden skal indlæses, i feltet "IP -adresse" skal du skrive robotcomputerne ip.
  • Begynd at kontrollere din robot.

At få tale: (over internettet) Nu hvor du har det til at fungere lokalt, er det kun få korte skridt væk at få det til at tale over internettet.

  • (vanskeligste trin) Opsætning af portvideresendelse - Din computer skal lytte til internettet i stedet for kun det lokale netværk. For at gøre dette skal du fortælle din router at sende bestemte anmodninger videre til computeren, der styrer robotten. Dette er lidt komplekst og går langt ud over omfanget af denne Instructable. Men hvis du besøger PortForward.com vil de give dig alt hvad du behøver at vide om konfiguration af din router (du skal videresende port 12345 til din robot -bærbare computer)
  • Opdag derefter din internet -IP (besøg WhatIsMyIP.com)
  • Til sidst skal du starte Skype med at oprette et videoopkald og få den, du taler med, til at besøge "https:// (internet IP): 12345/ControlPage.html"
  • Indtast internet -IP'en i feltet "IP -adresse" på kontrolwebstedet, og din Web Connected Robot køres langt væk.

Trin 6: Færdig

Færdig
Færdig

Det er det. Jeg håber, at du har det sjovt med at køre din robot langvejs fra. Hvis du har problemer med softwaren eller hardwaren, er du velkommen til at efterlade en kommentar, og jeg vil prøve at hjælpe dig. Hvis du gerne vil tjekke mere pæne projekter, kan du besøge: oomlout.com

Anbefalede: