Sisukord:
- Samm: osad ja tööriistad
- Samm: tükkide lõikamine ja kokkupanek
- 3. samm: tarkvara - (Arduino)
- Samm: tarkvara - sülearvuti robot (WebServer)
- 5. samm: tarkvara - (veebisait)
- 6. samm: lõpetatud
Video: Tehke veebiga ühendatud robot (umbes 500 dollari eest) (Arduino ja Netbooki abil): 6 sammu (koos piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:51
See juhend annab teile teada, kuidas luua oma veebiga ühendatud robot (kasutades Arduino mikrokontrollerit ja Asus eee arvutit). Miks soovite veebiga ühendatud robotit? Muidugi mängida. Sõitke oma robotiga üle kogu toa või kogu riigi, kasutades selleks ainult Skype'i ja veebibrauserit (mitte midagi juhtimisarvutisse installimiseks). Pärast seda? Uurige tarkvara ja kohandage seda oma äranägemise järgi, lisage GPS, et saaksite kaardil vaadata, kuhu sõidate, lisage temperatuuriandureid oma maja temperatuurigradientide kaardistamiseks või kajaloodi andureid, et lisada veebis juhtnuppe autojuhid võivad kokku puutuda ja mitte. Funktsioonid:
- Odav - (~ 500 dollarit, kui ostate kõik osad uuena ja tunduvalt odavamalt, kui kaevate oma osade prügikasti)
- Roboti juhtimiseks on vaja ainult veebibrauserit (ja Skype'i, kui soovite näha, kuhu sõidate)
- Avatud lähtekoodiga ja hõlpsasti kohandatav - (kasutab Arduino mikrokontrollerit, veebiserveri töötlemist ja kogu tarkvara saab käitada Linuxis (kogu koodi on samuti tugevalt kommenteeritud, et hõlbustada sissehüppamist ja asjade muutmist))
- Modulaarne disain (pole täielikult integreeritud süsteem, kui soovite muretult kasutada mõnda muud videokonverentsiteenust või kui teil on põhitempel, mitte Arduino, väike kooditükk ja sisestage see)
Siin on kiire video minu veebiga ühendatud roboti köögist välja ajamisest.
Samm: osad ja tööriistad
Vaja on ainult mõnda osa: Robot: Arduino juhitav servorobot - (SERB) (175 dollarit @ oomlout.com) või (tehke ise)
Avatud lähtekoodiga robot, mis kasutab ajuna Arduino mikrokontrollerit
(kasutada saab kõiki arduinoga kahekordseid servorobotiplatvorme (1. valik) (palun saatke mulle sõnum, kui avastate muid võimalusi) Arvuti: Asus eee PC 4G (280 dollarit) (@Best Buy)
Väike odav sülearvuti, mis on selleks otstarbeks ideaalne
(saab kasutada mis tahes sülearvutit (või lauaarvutit, kui soovite akordiga töötada), mis on võimeline töötlema visandeid. Sülearvuti laud: laserlõigatud akrüül (25 dollarit (@ oomlout)) või (ehitage oma samm 3)
Mõned täiendavad akrüüldetailid, mis kinnituvad (SERB) külge, et anda sellele laud sülearvuti istumiseks
Pähklid ja bols: (saadaval kodus depoos)
- 3 mm x 10 mm polt (x4)
- 3 mm x 15 mm polt (x4)
- 3 mm mutter (x8)
Samm: tükkide lõikamine ja kokkupanek
Sülearvuti lauale tükkide hankimiseks on kolm võimalust. Lõikamisvõimalus 1: (ostmine saidilt oomlout.com)
laseriga lõigatud lauaosad ja vajalik riistvara on oomloutist saadaval 25 dollariga (siin)
Variant 2: (oma laserlõikuri või Ponoko.com lõikamine)
- Laadige alla järgmine fail (03-WEBB-akrüülosad.cdr või 03-WEBB-akrüülosad (Ponoko P2). Eps)
- Lõika need 3 mm (1/8 ") akrüülist
Valik 3: (kerimissaag)
- Laadige rullsae muster alla (03-WEBB-ScrollSaw muster (A4).pdf (A4-formaadis paberile) või 03-WEBB-ScrollSaw muster (kiri).pdf (kirja suurusega paberile))
- Kontrollige uuesti, kas see pole printimisel skaleeritud (mõõtes trükitud joonlaudu)
- Liimige 3 mm (1/8 ") akrüülitükile ja lõigake tükid välja.
Kokkupanek: laadige alla kokkupaneku juhend (04-WEBB-Assembly Guide.pdf) ja pange sülearvuti laud kokku.
3. samm: tarkvara - (Arduino)
Neile, kes on Arduinoga tutvunud, vaadake suurepärast alustamisjuhendit aadressil Arduino.cc. Esiteks Arduino tarkvara. See on väga lihtne programm, mida Arduino teeb, jälgib andmete jadaporti. See otsib 5 baiti pikkust vestlust.
- Bait 1-3 (kontrollige baite "AAA")
- Bait 4 Käsk (ütleb arduinole, mida teha) (Toetatud käsud „F” - edasi, „B” - tagasi, „L” - vasak, „R” - parem, „S” - kiirus, „X” - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Stop)
- Bait 5 Parameeter - teisaldamiskäskude jaoks tõlgendatakse seda ajavahemikuna (parameeter * 100 ms) ja kiiruse käskude puhul protsent 0–100
Koodi kommenteeritakse põhjalikult ja seda raamistikku arvestades peaks lisakäskude lisamine olema lihtne. Allalaadimine:
- Laadige alla lisatud zip -fail. (05-WEBB-Arduino Code.zip)
- Pakkige oma Arduino Sketchi kataloogi lahti. (vaikimisi: Minu dokumendid / Arduino)
- Avage oma arduino arenduskeskkond ja laadige üles oma Arduino.
Kopeerimiseks ja kleepimiseks
- Kopeerige kood altpoolt.
- Kleepige Arduino arenduskeskkonda.
- Laadige üles oma Arduino.
Lisa: Arduino programm
/ * * Arduino juhitud veebipõhine ühendatud robot (WEBB) - jadamajutaja * Lisateabe saamiseks külastage: https://www.oomlout.com/serb * * Käitumine: Arduino kuulab oma jadapordist käsku * vormingus 254, 88, 88, (KÄSK), (TIME) * Toetatud käsud - & aposF & apos - 70 - edasi * & apB & apos - 66 - tagurpidi * & aposL & apos - 76 - vasak * ja apRR apos - 82 - parem * ja aposS & apos - 83 - kiirus * & aposX & apos - 88ft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stopp * Toetatud ajad - 0 - 255 (0 kuni 25,5 sekundit) väärtus * 100 millisekundit * sp * Juhtmed: parem servosignaal - tihvt 9 * vasak servosignaal - tihvt 10 * * Litsents: See teos on litsentsitud Creative Commons * Attribution-Share Alike 3.0 Unported License alusel. Selle litsentsi koopia vaatamiseks külastage aadressi * https://creativecommons.org/licenses/by-sa/3.0/ * või saatke kiri aadressile Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * USA. * */// --------------------------------------------- ---------------------------- // ARDUINO SERIAL SERVER PREAMBLE START // Igale käsule vastavate konstantide määratlemine (ka ascii koodinumber) #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/ *Kolm kontrollbaiti (kasutatakse selleks, et robot ei reageeriks juhuslikele jadaandmetele) on praegu "AAA" */#define checkByte1 65 // "A" #define checkByte2 65 // "A "#define checkByte3 65 // //" A "// -------------------------------------- ------------------------------------ // ARDUINO KONTROLLITAVA SERVO ROBOTI (SERB) PRAMBLEERI START #define LEFTSERVOPIN 10 // Vasaku servo tihvt on ühendatud#define RIGHTSERVOPIN 9 // Parema servo tihvt on ühendatudServo leftServo; Servo paremalServo; int leftSpeed = 50; // hoiab robotite kiirust leftServo // protsent vahemikus 0 kuni 100int rightSpeed = 100; // hoiab robotite kiirust õigestiServo // protsent vahemikus 0 kuni 100 // ARDUINO KONTROLLITUD SERVO ROBOTI (SERB) PRAMBLEHT LÕPP // ------------------- -------------------------------------------------- ----- // Saab kõik valmis ja töötabvoid setup () {Serial.begin (9600); // Käivitab jadapordi serbSetup (); // määrab kõigi vajalike // tihvtide oleku ja lisab teie visandile servod} // Põhiprogramm loopvoid loop () {serbPollSerialPort (); // otsib pidevalt jadaporti // kui on andmeid, töötleb see seda} // ------------------------------ ---------------------------------------- // ARDUINO SERIAL SERVER ROUTINES START/ * * Töötleb arduino & aposs jadapordile edastatud käske */void serbPollSerialPort () {int dta; // muutuja seeriabaidi hoidmiseks, kui (Serial.available ()> = 5) {// kui 5 baiti on puhvris (pikkus pf täispäringu korral) dta = Serial.read (); if (dta = checkByte1) {// Esimese kontrollibaidi kontroll dta = Serial.read (); if (dta = checkByte2) {// Teise kontrollbaidi kontroll dta = Serial.read (); if (dta = checkByte3) {// Kontrollib kolmanda kontrollbaidi int käsku = Serial.read (); // Neljas bait on käsk int param1 = Serial.read (); // Viies bait on param1 interpretCommand (käsk, param1); // saadab sellele parsitud päringu & aposs handler}}}}}/ * * Võtab käsu ja parameetri ning edastab selle robotile */void interpretCommand (int käsk, int param1) {if (command == FORWARD) {goForward (); viivitus (param1 * 100); goStop ();} // kui edasi, siis if (käsk == BACKWARD) {goBackward (); viivitus (param1 * 100); goStop ();} // kui tagurpidi muidu if (käsk == VASAK) {goLeft (); viivitus (param1 * 100); goStop ();} // kui jäetakse muidu if (käsk == PAREM) {goRight (); viivitus (param1 * 100); goStop ();} // kui õigus on teisiti, kui (käsk == SETSPEED) {setSpeed (param1);} // kui määrad kiiruse muul juhul, kui (käsk == STOP) {goStop ();} // kui peatus muul juhul, kui (käsk == SETSPEEDLEFT) {setSpeedLeft (param1);} // kui seadistate vasakkiiruse muul juhul, kui (käsk == SETSPEEDRIGHT) {setSpeedRight (param1);} // kui seadistate õige kiiruse muul viisil {// kui tundmatu käsk teeb natuke hämarat mine vasakule(); viivitus (150); mine paremale(); viivitus (150); goStop (); }} // ---------------------------------------------- -------------------------- // ARDUINO KONTROLLITAVA SERVO ROBOTI (SERB) ROUTINES START/ * * seadistab teie arduino teie SERB-i aadressiks lisatud rutiinid*/void serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, VÄLJUND); // seab vasakpoolse servosignaali tihvti // väljundpinnaleMood (RIGHTSERVOPIN, OUTPUT); // määrab parema servosignaali tihvti // väljundi vasakuleServo.attach (LEFTSERVOPIN); // lisab vasakpoolse servo paremaleServo.attach (RIGHTSERVOPIN); // lisab parema servo goStop ();}/ * * seab roboti kiiruse vahemikku 0- (peatatud) kuni 100- (täiskiirus) * MÄRKUS: kiirus ei muuda praegust kiirust, peate kiirust muutma * seejärel helistage ühele go meetoditest enne muudatuste toimumist.*/ void setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // määrab vasakpoolse kiiruse setSpeedRight (newSpeed); // määrab õige kiiruse}/ * * Määrab vasaku ratta kiiruse */void setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // kui kiirus on suurem kui 100 // tehke see 100 if (newSpeed = 100) {newSpeed = 100;} // kui kiirus on suurem kui 100 // tehke see 100 -ks, kui (newSpeed <= 0) {newSpeed = 0;} // kui kiirus on väiksem kui 0 make // see 0 õige kiirus = uus kiirus * 0,9; // skaleerib kiiruse olema}/ * * saadab roboti edasi */void goForward () {leftServo.write (90 + leftSpeed); rightServo.write (90 - rightSpeed);} / * * saadab roboti tagurpidi * /void goBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * saadab roboti paremale * /void goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);}/ * * saadab roboti vasakule */void goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);}/ * * peatab roboti */void goStop () {leftServo.write (90); rightServo.write (90);} // ARDUINO KONTROLLITUD SERVO ROBOTI (SERB) MÄRKUSTE LÕPP // ---------------------------- -----------------------------------------------
Samm: tarkvara - sülearvuti robot (WebServer)
(Töötlemine on avatud lähtekoodiga programmeerimiskeel ja keskkond, millega on ülilihtne alustada. Lisateabe saamiseks külastage jaotist Töötlemine) Robot -sülearvutil töötav tarkvara on samuti üsna lihtne. See on üsna algeline veebiserver (veebibrauseri veebilehtede päringute kuulamine), väike kasutajaliides (selle seadistamiseks) ja võimalused veebiserverilt saadud käskude edastamiseks Arduinole. Kiire installimine: (akendel)
- Laadige alla zip-fail (06-WEBB-töötlev veebiserver (Windows exe).zip)
- Pakkige see lahti ja käivitage.exe -fail (_WEBB_WebServer_RobotComputer.exe)
Töötlemisel muutmiseks tehke järgmist.
- Laadige alla zip-fail (06-WEBB-töötlev veebiserver (lähtefailid).zip)
- Pakkige oma arvuti kõikjal lahti.
- Avage töötlemiskeskkond ja avage (_WEBB_WebServer_RobotComputer.pde)
Testimiseks:
- Käivitage programm.
- Kastis nr 1 on teie arvutis saadaolevate ühisportide loend (klõpsake seda, millega teie Arduino on ühendatud. (Teie robot tõmbub arvuti ühendamisel paar korda ja valitud kõrval kuvatakse tsüaanipunkt) ühissadam)
- Kastis nr 2 kontrollige, kas teie Arduino on ühendatud. Klõpsake ühte noolt ja loodetavasti liigub teie robot pooleks sekundiks klõpsatud suunas.
- Kastis nr 3 klõpsake veebiserveri käivitamiseks nuppu "Start".
- Avage veebibrauser (robot -sülearvutis) ja külastage https://127.0.0.1:12345/ControlPage.html (loodetavasti kuvatakse juhtnupp, millel on nupud) -Üksikasjad selle lehe kasutamise kohta järgmises etapis -
Mis toimub:
- Veebiserver kuulab porti 12345 http -päringute jaoks (mis saadetakse veebilehe aadressi sisestamisel)
- Sellele vastab kahte tüüpi päringuid.
1. See kuulab "ControlPage.html" ja saadab kontrollveebilehe 2. Ta kuulab vormi "/request? Command = F & param1 = 100" (neid käske parsitakse ja saadetakse Arduinole (see näide tooks kaasa) taotlusi robot läheb 10 sekundiks edasi) Lisa: (veebiserveri kood)
/ * * Arduino juhitud veebiga ühendatud robot (WEBB) - veebiserver * Lisateabe saamiseks külastage: https://www.oomlout.com/serb * * Käitumine: programm kuulab http (veebilehe) päringuid vormis * "/request ? command = F & param1 = 100 "ja edastab need seejärel * Arduino * toetatud käskudele - & aposF & apos - 70 - edasi * & aposB & apos - 66 - tagurpidi * & apLL & apos - 76 - vasakule * & aposR & apos - 82 - paremale * & aposS & apos - 83 - Speed * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stopp * param1 & aposs - 0–255 (0–25,5 sekundit) väärtus * 100 millisekundit * * teenindab brauseris ka kontroll -veebilehte, kui küsite ControlPage.html * * Kasutamine: 1. Klõpsake ühenduse pordil, millega teie Arduino on ühendatud * 2. Kasutage testnuppe, et näha, kas teie arduino kuulab * (liigub poole sekundi jooksul klõpsatud suunas) * 3. Klõpsake nuppu Start ja teie veebiserver kuvab kuulake päringuid * * * Litsents: see teos on litsentsitud Creative Commons * atribuudi alusel cion-Share Alike 3.0 Unported License. Selle litsentsi koopia vaatamiseks külastage aadressi * https://creativecommons.org/licenses/by-sa/3.0/ * või saatke kiri aadressile Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * USA. * */impordi töötlemine.seriaalne. *; // importige jadakogu Serial kasutamiseks (Arduinoga rääkimiseks) import processing.net.*; // importige võrguteek serveri kasutamiseks (Internetiga rääkimiseks)/ * jadapordiga seotud muutujad */int serialPortIndex = -1; // selle jadapordi indeks, mida me kasutame loendis Serial.list () listString commOptions; // Muutuja Serial.list () salvestamiseks, nii et pole vaja jadaporte küsitleda // iga kord, kui soovime seda korrata (küsitlus põhjustab arduino servos // hüppe) Serial serialPort; // Muudab jadaporti selle eskiisi jooksul adresseeritavaks/ * Graafika ja renderdamisega seotud muutujad */PFont font; // muudab fondi avalikuks, nii et seda tuleb laadida ainult üks kord (Arial-72)/ * Võrguga seotud muutujad */Server wServer; // Server, mis tegeleb veebipäringutega port = 12345; // Port, mida server kuulab, toint cycleCount = 0; // Loendab, kui palju kordi joonistusahelat täidetakse (kasutatakse "jooksva" teksti animeerimiseks)/ * Utiliidimuutujad */PImage bg; // Taustapilt on praegu / WEBB-background.png/ * * Nupuga seotud muutujad * (nupud on rakendatud väga umbkaudselt, piirangukastid salvestatakse ning taustpildile joonistatakse * graafika ja tekst) st. nuppude muutujate liigutamine ei muuda nuppude välimust */Button comm1; Nupp comm2; Nupp comm3; Nupp comm4; // Nupud õige jadapordi valimiseksButton up; Nupp paremal; Nupp vasakul; Nupp alla; // Suunanupud, et kontrollida, kas robot reageeribButton webServer; // Nupp veebiserveri käivitamiseks/ * * paneb kõik paika */void setup () {frameRate (5); // Aeglustab visandit veidi, nii et see ei ole süsteemi maksustamine bg = loadImage ("WEBB-background.png"); // Laeb taustapildi (salvestatud eskiisikausta) suuruse (700, 400); // Määrab visandiakna suuruse font = loadFont ("ArialMT-72.vlw"); // Laadib selle visandi kaudu kasutatava fondi commOptions = Serial.list (); // Küsib jadaporte ja saab nimekirja saadaolevatest pordidest // (seda tehes ainult üks kord, et robot ei tõmbleks iga kord, kui & aposs // jadaporti küsitletakse) defineButtons (); // Määrab piirangukastid iga nupu tausta jaoks (bg); // Maalib taustpildi (sellel pildil on kogu nupuvajutis)}/ * Visandab põhisilmuse */void draw () {if (cycleCount == 0) {//- call draw rutiinid drawCommBox (); // Joonistab tõsted Comm Boxi (lahter 1) drawTestBox (); // Joonistab kõik Test Boxi (kast 2) elemendid drawWebServerBox (); // Joonistab kõik WebServeri kasti elemendid (kast 3)} //- helista töörutiinid pollWebServer (); // Küsib veebiserverit, et näha, kas võrgu kaudu on päringuid tulnud} // ------------------------------ ---------------------------------------------- // Algus joonistamisrutiinid (jagatakse lihtsalt selleks, et koodi oleks mõnusam lugeda)/ * * joonistusvärskendusrutiin (täidetakse iga tsükli jooksul) kommikastis olevate üksuste jaoks (lahter 1) */void drawCommBox () {fill (0, 0, 0); // Määra täitmiseks must tekstFont (font, 15); // Määrake font õige suuruse jaoks (int i = 0; i 0) {running = running + ".";} // punktide arv põhineb cycCount -l, kui ((cycleCount /1)> 1) { running = running + ".";} if ((cycleCount / 1)> 2) {running = running + ".";} if ((cycleCount / 1)> 3) {cycleCount = 0;} tekst (töötab, 520, 210); } cycleCount ++; // Iga kord, kui tsüklit loendatakse ühe võrra} // Joonistamisrutiinide lõpp // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // Teenindusrutiinide algus/ * * mousePressed kutsutakse iga kord, kui hiirele vajutatakse, see kontrollib, * kas hiir on mõne nupu piirangukasti sees * ja kas see on sobiv rutiin, nimetatakse */void mousePressed () {if (comm1.pressed ()) { updateSerialPort (0);} // Muudatused Serial.list () indeksis 0 olevas kommpordipordis else if (comm2.pressed ()) {updateSerialPort (1);} // Muutused kommunaalportis indeksi 1 seerias.list () else if (comm3.pressed ()) {updateSerialPort (2);} // Muudatused Serial.list () indeksi 2 komm pordis;} // Muudatused Serial.list () indeksi 3 kommipordis, kui (up.pressed ()) {sendRobotCommand ("F", 5);} // saadab käsu roboti edasiliikumiseks 0,5 sekundit muidu, kui (left.pressed ()) {sendRobotCommand ("L", 5);} / /Saadab käsu robotit vasakule nihutada 0,5 sekundiks muidu, kui (paremal.vajutatud ()) {sendRobotCommand ("R", 5);} // Saadab käsu robotit paremale nihutada 0,5 sekundiks muidu, kui (alla. pressitud ()) {sendRobotCommand ("B", 5);} // saadab käsu roboti tagurpidi nihutamiseks 0,5 sekundiks muidu, kui (webServer.pressed ()) {startWebServer ();} // Käivitab webServer cycleCount = 0; taust (bg); // Maalib taustapildi uuesti (sellel pildil on kogu nuppude graafika) draw ();}/ * * Kutsutakse pärast käivitamist kontrollitakse serverit, et näha, kas on ootel ühendusi * kui see ootab ühendust taotluse välja ja edastab selle lisateksti eemaldamiseks rutiinile parseRequest (String) *. Seejärel saadetakse see rutiinile interpretRequest (String), et * helistada sobivale tegevusrutiinile (st saata robotile juhiseid).* * Taotlus edastatakse, sisestades veebibrauserisse arvuti aadressi ja pordi. * Kohaliku masina jaoks "https://127.0.0.1:12345/request?command=F¶m1=100" * * Näidistaotlus: * GET/request? käsk = F & param1 = 100 HTTP/1.1 * User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; et-USA) AppleWebKit/525.19 (KHTML, nagu Gecko) * Nõustu: * // * * Nõustu-keel: et-US, et * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Host: 127.0.0.1:12345 * Ühendus: Keep-Alive * * Näide vastusest (töödeldud päringu jaoks) * HTTP/1.1 200 OK * Ühendus: sulge * Sisu-tüüp: tekst/html * * käsk: F param1: 100 */void pollWebServer () {if (wServer! = null) {// Kui veebiserver töötab kliendi päring = wServer.available (); // Laadige järgmine klient reale // serverisse (null, kui ühtegi taotlust ei oota) if (päring! = Null) {// kui taotlusprotsess on olemas, siis see String fullRequest = request.readString (); // Salvesta päringu sisu stringina String ip = request.ip (); // Salvesta klientide IP -aadress stringina String requestString = parseRequest (fullRequest.toUpperCase ()); // Eemaldage kogu täiendav // teave, jättes ainult päringustringi (tekst pärast GET -i) // (liigub stringide testimise hõlbustamiseks suurtähtedele), kui (requestString.indexOf ("REQUEST?")! = -1) { // Kontrollib, kas taotlusel on "REQUEST?" Stringi vastus = interpretRequest (requestString); // saadab päringu päringutõlgile request.write ("HTTP/1.1 200 OK / nühendus: sulgemine / nSisutüüp: tekst/html / n / n" + vastus); // saadab vastuseks 200, et öelda, et päring on käsitletud ja string "vastus" vastusena wServer.disconnect (päring); // Katkestab kliendi ühenduse} else if (requestString.indexOf ("CONTROLPAGE")! = -1) {// Kui päring on juhtveebilehe jaoks String webPageArray = loadStrings ("WEBB -ControlPage.html"); // Laeb juhtelemendi veebilehe / data / WEBB-ControlPage.html // (laaditakse ridade massiivina) String webPage = ""; // Redigeerimise hõlbustamiseks on veebilehele jäetud // reavahed, nii et silmus peatab need read (int i = 0; i portIndex) {// kui edastatud portIndex on Serial.listis kehtiv indeks () // (st mitte valikuvõimalus kahe loendis) serialPortIndex = portIndex; // määrake muutuja serialPortIndex uuele seeriaporti indeksile // (seda kasutatakse aktiivse pordi kõrval oleva punkti kuvamiseks)} if (serialPortIndex! = -1) {// kontrollige, kas mõni aeg varem on valitud port, kui (serialPort! = null) {serialPort.stop ();} // kui jadaporti juba kasutatakse, peata see enne uue laadimist serialPort = new Serial (this, Serial.list () [serialPortIndex], 9600); // Loo uus seeriaobjekt Arduino 9600 Baudiga suhtlemiseks}}/ * * Võtab päringustringi (nt: "request? Command = F & param1 = 100") ja eemaldab käsu * ja param1 ning edastab selle arduino (siin tehtaks lisaparameetreid või mitte -arduino käske) */String interpretRequest (String requestString) {String returnValue = "OK"; // valmistab ette returnValue muutuja String käsk; // Järgmised kolm rida eraldavad väärtuse pärast "command =" // (lisarida on juhuks, kui käsu parameeter asub päringu // lõpus ja sellele ei järgne & 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 (" & "));}} {{command = command;} String param1String; // Järgmised kolm rida eraldavad väärtuse pärast" param1 = "// (lisarida on juhuks, kui käsu parameeter asub päringu lõpus // ja sellele ei järgne & 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); // Muudab param1 stringi täisarv sendRobotCommand (käsk, param1); // Saadab käsu rutiinile, mis saadab selle Arduino returnValue = "käsule:" + käsk + "param1:" + param1; // hetkel ainult sõelutud käsk, kuid // saatmine // html-na, nii et vormindamist saab lisada return returnValue;}/ * * Võtab käsu (praegu üks täht) ja parameetri (üks bait 0-255) ja saadab selle arduino *, kes kuulab ja reasts * Praegu toetatud käsud * F - */void sendRobotCommand (String käsk, int param1) {println ("command:" + command + "time:" + param1); String checkString = "AAA"; if (serialPort! = null) {serialPort.write (checkString + käsk); serialPort.write (bait (param1)); }} // Seadistamise lõpp/rutiinid, mida tavaliselt ei nimetata // ----------------------------------- -------------------------------------------------- // Näidisnupp ja RectButtoni kood saidilt processing.org, mõned muudatused klass Nupp {int x, y; int laius, kõrgus; Nupp (int ix, int iy, int iwidth, int iheight) {x = ix; y = ei; laius = ilaius; kõrgus = kõrgus; } Boolean pressitud () {if (overRect ()) {return true; } else {return false;}} boolean overRect () {if (mouseX> = x && mouseX = y && mouseY <= y+kõrgus) {return true; } else {return false; }}}
5. samm: tarkvara - (veebisait)
Noh, me oleme peaaegu valmis, kõik, mis on jäänud, on teie robotiga rääkimine. Rääkimise alustamiseks: (kohaliku võrgu kaudu -akendel)
- Avastage sülearvuti kohalik IP -aadress. Selleks minge "Start / Programs / Accesories / Command Prompt" ja kui terminali aken avaneb, tippige "ipconfig". Kirjutage üles "IP -aadress" ja minge teise kohaliku võrgu arvuti juurde.
- Avage veebibrauser, tippige "https:// (robotarvuti IP): 12345/ControlPage.html
- Juhtlehekülg peaks laadima, tippige väljale "IP -aadress" robotarvutite ip.
- Alustage oma roboti juhtimist.
Rääkimiseks: (Interneti kaudu) Nüüd, kui see töötab kohapeal, on Interneti kaudu rääkimine vaid mõne sammu kaugusel.
- (kõige raskem samm) Pordi edastamise seadistamine - teie arvuti peab kuulama Internetti, mitte ainult kohalikku võrku. Selleks peate ütlema oma ruuterile, et see edastaks teatud taotlused robotit juhtivale arvutile. See on natuke keeruline ja läheb palju kaugemale selle juhendi reguleerimisalast. Kui aga külastate portaali PortForward.com, annavad nad teile kõik, mida peate oma ruuteri seadistamise kohta teadma (peate pordi 12345 oma robot -sülearvutile edastama)
- Seejärel avastage oma Interneti -IP (külastage WhatIsMyIP.com)
- Lõpuks käivitage Skype'i videokõne seadistamine ja hankige see, kellega te räägite, "https:// (Interneti IP): 12345/ControlPage.html"
- Sisestage juhtimise veebisaidi väljale "IP -aadress" Interneti -IP ja teie veebiga ühendatud robotit juhitakse kaugelt.
6. samm: lõpetatud
No see ongi. Loodan, et teil on robotiga kaugelt sõitmine lõbus. Kui teil on tarkvara või riistvaraga probleeme, jätke julgelt kommentaar ja ma proovin teid aidata. Kui soovite vaadata rohkem korralikke projekte, proovige külastada: oomlout.com
Soovitan:
Tehke veebiraadio vähem kui 15 dollari eest: 4 sammu (piltidega)
Tehke veebiraadio vähem kui 15 dollari eest: otsustasin teha projekti, mille olen juba mõnda aega edasi lükanud: omatehtud täisfunktsionaalne veebiraadio koos võimendi ja kõlariga alla 15 euro eest!. Saate muuta ühe nupuvajutusega eelmääratud voogesituse raadiojaamade vahel ja te
55 tolli, 4K digitaalse pildiraami ekraan umbes 400 dollari eest: 7 sammu (koos piltidega)
55 tolli, 4K digitaalse pildiraami ekraan umbes 400 dollari eest: seal on palju õpetusi selle kohta, kuidas teha vaarika pi abil vinge digitaalne pildiraam. kahjuks ei toeta rpi 4K eraldusvõimet. Odroid C2 saab hõlpsasti hakkama 4K eraldusvõimega, kuid ükski neist rpi õpetustest ei tööta C2 seadme jaoks. see võttis
Teisendage Bose QC25 juhtmevabaks koos mikrofoniga vähem kui 15 dollari eest!: 4 sammu (koos piltidega)
Teisendage Bose QC25 juhtmevabaks, kaasa arvatud mikrofoniks vähem kui 15 dollari eest !: See pole küll kõige ilusam häkk, kuid see on odavaim ja väljamõeldud viis, kuidas muuta suurepärased Bose kõrvaklapid QC25 juhtmevabaks isegi siis, kui mikrofon töötab! Peame ostma ainult kaks odavat tükki ja midagi lihvima: 1: nokia adapter teisendamiseks
Tehke oma kena vildist EeePC / Netbooki kott umbes 8 dollari eest (ja säästke Redmaloost ostmise asemel 91 dollarit): 5 sammu (koos piltidega)
Tehke oma kena vildist EeePC / Netbooki kott umbes 8 dollari eest (ja säästke Redmaloost ostmise asemel 91 dollarit): see juhend annab teile teada, kuidas teha oma väga kena ja hea välimusega sülearvuti või veelgi parem netbooki kott. See salvestab teie netbooki, annab teile hiiremati, tunde, et kasutate midagi ainulaadset, kena ja käsitsi valmistatud, ja imelik tunne
Kaks AAA LED-raamatutuld umbes 10 dollari eest: 7 sammu
Kaks AAA LED-raamatutuld umbes 10 dollari eest: meeldib lugeda, kuid ei tahaks LED-raamatutulede eest liiga palju maksta? Odavamad tunduvad just nii ja võtavad tavaliselt kallid ümmargused patareid. Siin näitan teile, kuidas teha kaks AAA LED-raamatutuld umbes 10 dollari ja umbes poole tunni eest