Obsah:
- Krok 1: Diely a nástroje
- Krok 2: Rezanie kusov a montáž
- Krok 3: Softvér - (Arduino)
- Krok 4: Softvér - Robot Laptop (WebServer)
- Krok 5: Software - (webová stránka)
- Krok 6: Hotovo
Video: Vytvorte robota pripojeného k webu (za približne 500 dolárov) (pomocou Arduina a netbooku): 6 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Tento návod vám ukáže, ako si vytvoriť vlastného robota pripojeného k webu (pomocou mikrokontroléra Arduino a počítača Asus eee). Prečo by ste chceli robota prepojeného s webom? Samozrejme hrať sa. Jazdite so svojim robotom z celej miestnosti alebo z celej krajiny iba pomocou programu Skype a webového prehliadača (na riadiaci počítač nie je potrebné nič inštalovať). Potom? Ponorte sa do softvéru a upravte ho, ako sa vám páči, pridajte GPS, aby ste na mape mohli sledovať, kde idete, pridajte teplotné senzory na mapovanie teplotných gradientov vo vašom dome alebo sonarové senzory a pridajte ovládacie prvky toho, čo ste na webe. vodiči môžu a nemôžu naraziť. Vlastnosti:
- Lacné - (~ 500 dolárov, ak si kúpite všetky diely nové a výrazne lacnejšie, ak sa prehrabete v koši na diely)
- Ovládanie robota po spustení vyžaduje iba webový prehliadač - (a Skype, ak chcete vidieť, kam idete)
- Open Source a ľahko prispôsobiteľné - (používa mikrokontrolér Arduino, spracovanie pre webový server a všetok softvér je možné spustiť v systéme Linux (všetok kód je tiež silne komentovaný, aby bolo jednoduché skákať a meniť veci))
- Modulárny dizajn (nie je to úplne integrovaný systém, ak chcete použiť inú službu videokonferencií bez obáv, alebo ak máte základnú pečiatku a nie Arduino, stačí vložiť malý kúsok kódu a vložiť ho)
Tu je stručné video, ako môjho robota pripojeného cez web vyhnali z kuchyne.
Krok 1: Diely a nástroje
Vyžaduje sa iba niekoľko častí: Robot: Servo robot riadený Arduino - (SERB) (175 dolárov @ oomlout.com) alebo (vytvorte si vlastný)
Robot s otvoreným zdrojovým kódom, ktorý používa ako mozog mikrokontrolér Arduino
(Je možné použiť akúkoľvek platformu s dvojitým servo robotom s arduinom (možnosť 1) (ak objavíte ďalšie možnosti, kontaktujte ma prosím správou) Počítač: Asus eee PC 4G (280 dolárov) (@Najlepší nákup)
Malý lacný prenosný počítač, ktorý je na tento účel ideálny
(Možno použiť ľubovoľný prenosný počítač (alebo stolný počítač, ak chcete spustiť s akordom), ktorý môže používať náčrty spracovania.) Notebook Desk: laserom rezaný akryl (25 dolárov (@ oomlout)) alebo (vytvorte si vlastný krok 3)
Niekoľko ďalších akrylových kúskov, ktoré sú priskrutkované k (SERB), aby mali stôl, na ktorom môže sedieť prenosný počítač
Orechy a bols: (k dispozícii v domácom depe)
- Skrutka 3 mm x 10 mm (x4)
- Skrutka 3 mm x 15 mm (x4)
- Matica 3 mm (x 8)
Krok 2: Rezanie kusov a montáž
Existujú tri možnosti získania dielov na stôl pre prenosný počítač. Možnosť rezania 1: (nákup z oomlout.com)
laserom rezané diely stola a potrebný hardvér sú k dispozícii od oomlout za 25 dolárov (tu)
Možnosť 2: (Rezanie na vlastnej laserovej rezačke alebo na serveri Ponoko.com)
- Stiahnite si súbor nižšie (03-WEBB-Akrylové diely. Cdr alebo 03-WEBB-Akrylové diely (Ponoko P2).eps)
- Vystrihnite ich z 3 mm (1/8 ") akrylu
Možnosť 3: (Rolovacia píla)
- Stiahnite si vzor špirálovej píly zdola (03-WEBB-ScrollSaw Pattern (A4).pdf (pre papier veľkosti A4) alebo 03-WEBB-ScrollSaw Pattern (letter).pdf (pre papier veľkosti Letter))
- Pri tlači dvakrát skontrolujte, či nebol zmenšený (meraním vytlačených pravítok)
- Prilepte na kúsok 3 mm (1/8 ") akrylu a vystrihnite kúsky.
Zostavenie: Stiahnite si nižšie uvedenú príručku montáže (04-WEBB-Assembly Guide.pdf) a sklopte stôl prenosného počítača.
Krok 3: Softvér - (Arduino)
Pre tých, ktorí sú v Arduine noví, pozrite sa na skvelého sprievodcu Začíname na Arduino.cc Najprv softvér spustený na Arduine. Je to veľmi jednoduchý program, Arduino monitoruje sériový port a hľadá údaje. To, čo hľadá, je konverzácia dlhá 5 bajtov.
- Bajt 1-3 (Skontrolujte bajty „AAA“)
- Príkaz Byte 4 (informuje arduina, čo má robiť) (podporované príkazy „F“- dopredu, „B“- dozadu, „L“- vľavo, „R“- vpravo, „S“- rýchlosť, „X“- SetSpeedLeft, „Y“- SetSpeedRight, „C“- zastavenie)
- Parameter bajt 5 - pre príkazy na presun je to interpretované ako časový interval (parameter * 100 ms) a pre príkazy rýchlosti percento od 0 do 100
Kód je dôkladne okomentovaný a vzhľadom na tento rámec by pridanie ďalších príkazov malo byť jednoduché. Na stiahnutie:
- Stiahnite si priložený súbor zip. (05-WEBB-Arduino Code.zip)
- Rozbaľte do adresára Arduino Sketch. (predvolené: Moje dokumenty / Arduino )
- Otvorte svoje vývojové prostredie arduino a nahrajte ho do svojho Arduina.
Skopírujte a prilepte
- Skopírujte kód zospodu.
- Prilepte do vývojového prostredia Arduino.
- Nahrajte do svojho Arduina.
Príloha: Program Arduino
/ * * Arduino Controlled Web Connected Robot (WEBB) - Serial Host * Bližšie informácie nájdete na: https://www.oomlout.com/serb * * Správanie: Arduino počúva svoj sériový port na príkaz * vo formáte 254, 88, 88, (PRÍKAZ), (ČAS) * Podporované príkazy - & aposF & apos - 70 - Vpred * & aposB & apos - 66 - Späť * & aposL & apos - 76 - Vľavo * & aposR & apos - 82 - Vpravo * & aposS & apos - 83 - Rýchlosť * & aposX & apos - 88 - SetSpeedLe * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Podporované časy - 0 - 255 (0 až 25,5 sekúnd) hodnota * 100 milisekúnd * sp * Zapojenie: pravý servo signál - pin 9 * ľavý servo signál - pin 10 * * licencia: Toto dielo je chránené licenciou Creative Commons * Attribution-Share Alike 3.0 Unported License. Ak si chcete * pozrieť kópiu tejto licencie, navštívte * https://creativecommons.org/licenses/by-sa/3.0/ * alebo pošlite list na adresu Creative Commons, 171 Second * Street, Suite 300, San Francisco, Kalifornia 94105, * USA. * */// --------------------------------------------- ---------------------------- // ZAČIATOK PREAMBULY SÉRIOVÉHO SERVERU ARDUINO // Definovanie konštánt zodpovedajúcich každému príkazu (tiež kódové číslo ascii) #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/ *Tri kontrolné bajty (slúžia na to, aby robot nereagoval na náhodné sériové *údaje) aktuálne „AAA“*/#define checkByte1 65 // „A“#define checkByte2 65 // "A "#define checkByte3 65 //" A "// -------------------------------------- ------------------------------------ // ZAČIATOK ARDUINO RIADENÉHO SERVO ROBOTA (SERB) PREAMBLE#include #define LEFTSERVOPIN 10 // Kolík, na ktorý je pripojené ľavé servo,#definovať RIGHTSERVOPIN 9 // Kolík, na ktorý je pripojené pravé servo, Servo leftServo; Servo vpravoServo; int leftSpeed = 50; // drží rýchlosť robotov leftServo // percento medzi 0 a 100int rightSpeed = 100; // drží rýchlosť robotov vpravoServo // percento medzi 0 a 100 // KONIEC ARDUINO OVLÁDANÉHO SERVO ROBOTA (SERB) PREAMBULE // ------------------- ---------------------------------------------------------- ----- // Zistí všetko a beží, vyhnite sa setup () {Serial.begin (9600); // Spustí sériový port serbSetup (); // nastaví stav všetkých potrebných // pinov a pridá do vašej skice servá} // Hlavný program loopvoid loop () {serbPollSerialPort (); // nepretržite hľadá sériový port // ak existujú údaje, ktoré spracováva} // ------------------------------ ----------------------------------------- // ZAČIATOK RUČNÝCH SLUŽIEB ARDUINO/ * * Spracováva príkazy dodávané na sériový port arduino & aposs */void serbPollSerialPort () {int dta; // premenná na uchovanie sériového bajtu, ak (Serial.available ()> = 5) {// ak je vo vyrovnávacej pamäti 5 bajtov (dĺžka pf úplná požiadavka) dta = Serial.read (); if (dta = checkByte1) {// Skontroluje prvý kontrolný bajt dta = Serial.read (); if (dta = checkByte2) {// Skontroluje druhý kontrolný bajt dta = Serial.read (); if (dta = checkByte3) {// Skontroluje tretí kontrolný bajt int príkaz = Serial.read (); // Štvrtý bajt je príkaz int param1 = Serial.read (); // Piaty bajt je param1 interpretCommand (príkaz, param1); // pošle doňho analyzovanú požiadavku & aposs handler}}}}}/ * * Prevezme príkaz a parameter a pošle ich robotovi */void interpretCommand (int príkaz, int param1) {if (príkaz == Vpred) {goForward (); oneskorenie (param1 * 100); goStop ();} // if forward else if (command == BACKWARD) {goBackward (); oneskorenie (param1 * 100); goStop ();} // ak dozadu inak if (príkaz == VLEVO) {goLeft (); oneskorenie (param1 * 100); goStop ();} // ak zostane inak, ak (príkaz == VPRAVO) {goRight (); oneskorenie (param1 * 100); goStop ();} // if right else if (command == SETSPEED) {setSpeed (param1);} // // if setting speed else if (command == STOP) {goStop ();}}} // if if stop else if (príkaz == SETSPEEDLEFT) {setSpeedLeft (param1);} // ak nastavíte ľavú rýchlosť else if (príkaz == SETSPEEDRIGHT) {setSpeedRight (param1);} // // ak nastavíte správnu rýchlosť inak {// ak nerozpoznaný príkaz urobte trochu shimmey goLeft (); oneskorenie (150); Choď vpravo(); oneskorenie (150); goStop (); }} // ---------------------------------------------- -------------------------- // ZAČIATOK ARDUINO RIADENÝCH SERVO ROBOTOV (SERB) RUTINY/ * * nastaví vaše arduino tak, aby oslovilo vášho SERBA pomocou zahrnuté rutiny*/void serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, VÝSTUP); // nastaví ľavý signál signálu servo // na výstupný pinMode (RIGHTSERVOPIN, OUTPUT); // nastaví pravý signálny pin servo // na výstup leftServo.attach (LEFTSERVOPIN); // pripája ľavé servo rightServo.attach (RIGHTSERVOPIN); // pripája pravé servo goStop ();}/ * * nastavuje rýchlosť robota medzi 0- (zastavené) a 100- (plná rýchlosť) * POZNÁMKA: rýchlosť nezmení aktuálnu rýchlosť, musíte zmeniť rýchlosť * potom zavolajte metód go, než nastanú zmeny.*/ void setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // nastaví ľavú rýchlosť setSpeedRight (newSpeed); // nastavuje správnu rýchlosť}/ * * Nastavuje rýchlosť ľavého kolesa */void setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // if speed is greater than 100 // make it it 100 if (newSpeed = 100) {newSpeed = 100;} // if speed is greater than 100 // // make it 100 if (newSpeed <= 0) {newSpeed = 0;} // if speed is less than 0 make // it 0 rightSpeed = newSpeed * 0,9; // zmenší rýchlosť na}/ * * pošle robota dopredu */void goForward () {leftServo.write (90 + leftSpeed); rightServo.write (90 - rightSpeed);} / * * pošle robota dozadu * /void goBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * pošle robota doprava * /void goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);}/ * * pošle robota doľava */void goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);}/ * * zastaví robota */void goStop () {leftServo.write (90); rightServo.write (90);} // KONEC ARDUINO RIADENÝCH SERVO ROBOTOV (SERBOVÝCH) CESTÁCH // ---------------------------- ------------------------------------------------
Krok 4: Softvér - Robot Laptop (WebServer)
(Processing je programovací jazyk a prostredie s otvoreným zdrojovým kódom, s ktorým je veľmi jednoduché začať. Bližšie informácie nájdete v časti Processing) Softvér, ktorý beží na prenosnom počítači robota, je tiež celkom jednoduchý. Jedná sa o pomerne základný webový server (počúvajúci žiadosti o webové stránky z webového prehliadača), malé používateľské rozhranie (na jeho nastavenie) a zariadenia na odosielanie príkazov prijatých z webového servera do Arduina. Rýchla inštalácia: (na oknách)
- Stiahnite si súbor zip nižšie (06-WEBB-Processing Webserver (Windows exe).zip)
- Rozbaľte ho a spustite súbor.exe (_WEBB_WebServer_RobotComputer.exe)
Úpravy v procese spracovania:
- Stiahnite si súbor zip nižšie (06-WEBB-Processing Webserver (zdrojové súbory).zip)
- Rozbaľte kdekoľvek na počítači.
- Otvorte prostredie Processing a otvorte (_WEBB_WebServer_RobotComputer.pde)
Testovať:
- Spustite program.
- V rámčeku č. 1 bude zoznam dostupných komunikačných portov vo vašom počítači (kliknite na ten, ku ktorému je pripojené vaše Arduino. (Váš robot sa pri pripojení počítača niekoľkokrát šklbe a vedľa zvoleného sa zobrazí azúrová bodka) komunikačný port)
- V poli č. 2 otestujte, či je vaše Arduino pripojené. Kliknite na jednu zo šípok a dúfajme, že sa váš robot bude pol sekundy pohybovať v smere kliknutia.
- V poli č. 3 spustite webový server kliknutím na tlačidlo „Štart“.
- Otvorte webový prehliadač (na prenosnom počítači Robot) a navštívte stránku https://127.0.0.1:12345/ControlPage.html (dúfajme, že sa zobrazí kontrolná webová stránka s tlačidlami) -Podrobnosti o tom, ako túto stránku použiť v nasledujúcom kroku -
Čo sa deje:
- Webový server počúva port 12345 pre požiadavky http (čo sa odošle pri zadaní adresy webovej stránky)
- Existujú dva typy žiadostí, na ktoré reaguje.
1. Počúva „ControlPage.html“a odošle riadiacu webovú stránku 2. Počúva požiadavky vo formáte „/request? Command = F & param1 = 100“(tieto príkazy sú analyzované a odoslané do Arduina (tento príklad by mal za následok v robote, ktorý ide dopredu 10 sekúnd) Príloha: (Kód pre webový server)
/ * * Arduino Controlled Web Connected Robot (WEBB) - Webserver * Bližšie informácie nájdete na: https://www.oomlout.com/serb * * Správanie: Program počúva požiadavky http (webové stránky) vo forme * "/žiadosť ? command = F & param1 = 100 "a potom ich pošle do * Arduina * Podporované príkazy - & aposF & apos - 70 - Vpred * & aposB & apos - 66 - Späť * & aposL & apos - 76 - Vľavo * & aposR & apos - 82 - Vpravo * & aposS & apos - 83 - Rýchlosť * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Zastavenie * hodnota param1 & aposs - 0 - 255 (0 až 25,5 sekundy) * 100 milisekúnd * * slúži aj na ovládanie webovej stránky v prehliadači, ak požaduje ControlPage.html * * * Obsluha: 1. Kliknite na komunikačný port, ku ktorému je pripojené vaše Arduino * 2. Pomocou testovacích tlačidiel zistíte, či váš arduino počúva * (bude sa pohybovať v smere, na ktorý ste klikli pol sekundy) * 3. Kliknite na tlačidlo Štart a váš webový server sa počúvajte žiadosti * * * Licencia: Toto dielo je chránené licenciou Creative Commons * Attribu tion-Share Alike 3.0 Unported License. Ak si chcete * pozrieť kópiu tejto licencie, navštívte * https://creativecommons.org/licenses/by-sa/3.0/ * alebo pošlite list na adresu Creative Commons, 171 Second * Street, Suite 300, San Francisco, Kalifornia 94105, * USA. * */spracovanie importu.sériové. *; // importujte sériovú knižnicu, aby ste mohli použiť sériový (na rozhovor s Arduinom) import processing.net.*; // import knižnice siete na použitie so serverom (na rozhovor s internetom)/ * Premenné súvisiace so sériovým portom */int serialPortIndex = -1; // index sériového portu, ktorý používame v zozname Serial.list () listString commOptions; // Premenná na uloženie Serial.list (), takže nie je potrebné dotazovať // sériové porty zakaždým, keď ho chceme opakovať (polling spôsobí // skok v servo arduino) Serial serialPort; // Nastaví v tomto náčrte adresovateľnosť sériového portu/ * Premenné súvisiace s grafikou a vykresľovaním */Písmo PFont; // robí písmo verejným, takže sa musí načítať iba raz (Arial-72)/ * premenné súvisiace so sieťou */server wServer; // Server, ktorý spracováva webové požiadavkyintport = 12345; // Port, na ktorý server počúva, aby cycleCount = 0; // Spočítava, koľkokrát sa kresliaca slučka spustí (používa sa na // animáciu „bežiaceho“textu)/ * Pomôcky obslužného programu */PImage bg; // Aktuálny obrázok na pozadí / WEBB-background.png/ * * Premenné súvisiace s tlačidlami * (tlačidlá sú implementované veľmi zhruba, ohraničujúce polia sú uložené a grafika a text sú * nakreslené na obrázku na pozadí), tj. presúvaním premenných tlačidiel sa nepohybuje vzhľad tlačidiel */Button comm1; Tlačidlo comm2; Tlačidlo comm3; Tlačidlo comm4; // Tlačidlá na výber správneho sériového portu Tlačidlo hore; Tlačidlo vpravo; Tlačidlo vľavo; Tlačidlo nadol; // Smerové tlačidlá na otestovanie, či robot reagujeButton webServer; // Tlačidlo na spustenie webServeru/ * * nastaví všetko ostatné */void setup () {frameRate (5); // Trochu spomalí náčrt, aby nebol tak zaťažujúci systém bg = loadImage ("WEBB-background.png"); // Načíta obrázok na pozadí (uložený v priečinku skici) (700, 400); // Nastaví veľkosť okna náčrtu font = loadFont ("ArialMT-72.vlw"); // Načíta písmo, ktoré použijeme, prostredníctvom tohto náčrtu commOptions = Serial.list (); // Dotazovanie sériových portov a získanie zoznamu dostupných portov // (robí to iba raz, aby sa robot netrhal vždy, keď sa pýta na sériový port) defineButtons (); // Definuje ohraničujúce polia pre každé pozadie tlačidla (bg); // Maľuje obrázok na pozadí (tento obrázok má všetku tlačidlovú grafiku)}/ * Načrtáva hlavnú slučku */void draw () {if (cycleCount == 0) {//- rutiny vyvolávania drawCommBox (); // Nakreslí emelmenty do komunikačného poľa (rámček 1) drawTestBox (); // Nakreslí všetky prvky do testovacieho poľa (rámček 2) drawWebServerBox (); // Nakreslí všetky prvky v poli WebServer Box (rámček 3)} //- zavolajte pracovné rutiny pollWebServer (); // Anketa webového servera, aby sa zistilo, či prišli nejaké požiadavky prostredníctvom siete} // ------------------------------ ---------------------------------------------- // Začiatok rutiny kreslenia (rozdelené, aby bol kód lepšie čitateľný)/ * * rutina aktualizácie kreslenia (spustená v každom cykle) pre položky v komunikačnom poli (pole 1) */void drawCommBox () {fill (0, 0, 0); // Nastaviť výplň na čierny textFont (písmo, 15); // Nastavte písmo na správnu veľkosť (int i = 0; i 0) {running = running + ".";} // počet bodov je založený na cycleCount if ((cycleCount /1)> 1) { running = running + ".";} if ((cycleCount / 1)> 2) {running = running + ".";} if ((cycleCount / 1)> 3) {cycleCount = 0;} text (running, 520, 210); } cycleCount ++; // Zakaždým sa cycleCount zvýši o jednu} // Rutiny konca kreslenia // ------------------------------- ------------------------------ // ------------------ ------------------------------------------ // // Spustenie servisných rutín/ * * mousePressed sa volá pri každom stlačení myši * skontroluje, či sa myš nachádza v niektorom z ohraničujúcich políčok tlačidiel * a či je vhodná rutina, sa nazýva */void mousePressed () {if (comm1.pressed ()) { updateSerialPort (0);} // Zmeny komunikačného portu na indexe 0 v Serial.list () else if (comm2.pressed ()) {updateSerialPort (1);} // Zmeny komunikačného portu na indexe 1 v sériovom čísle.list () else if (comm3.pressed ()) {updateSerialPort (2);} // Zmeny komunikačného portu na indexe 2 v Serial.list () else if (comm4.pressed ()) {updateSerialPort (3);} // Zmeny komunikačného portu v indexe 3 v Serial.list () else if (up.pressed ()) {sendRobotCommand ("F", 5);} // Odošle príkaz na posunutie robota dopredu o 0,5 sekundy inak, ak (left.pressed ()) {sendRobotCommand ("L", 5);} / /Pošle príkaz na posunutie robota doľava na 0,5 sekundy inak, ak (right.pressed ()) {sendRobotCommand ("R", 5);} // Pošle príkaz na pohyb robota doprava na 0,5 sekundy, ak (dole. press ()) {sendRobotCommand ("B", 5);} // Odošle príkaz na posunutie robota o 0,5 sekundy dozadu, ak (webServer.pressed ()) {startWebServer ();} // Spustí cyklus webServer = 0; pozadie (bg); // Prekreslí obrázok na pozadí (tento obrázok obsahuje všetku tlačidlovú grafiku) draw ();}/ * * Volá sa po spustení a skontroluje server, aby zistil, či existujú čakajúce pripojenia * Ak existuje čakajúce pripojenie, natiahne ho. požiadavku odošle a odošle ju do rutiny parseRequest (String) * na odstránenie extra textu. Ten sa potom odošle do rutiny interpretRequest (String), aby * zavolala príslušnú akčnú rutinu (tj. Poslala pokyny robotovi).* * Požiadavka sa zadáva zadaním adresy a portu počítača do webového prehliadača * Pre lokálny počítač „https://127.0.0.1:12345/request?command=F¶m1=100“* * Príklad žiadosti: * ZÍSKAŤ/požiadavka? command = F & param1 = 100 HTTP/1.1 * User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) * Accept: * // * * Accept-Language: en-US, en * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Host: 127.0.0.1:12345 * Connection: Keep-Alive * * Example Reply (pre spracovanú požiadavku) * HTTP/1,1 200 OK * Pripojenie: zavrieť * Typ obsahu: text/html * * príkaz: F param1: 100 */void pollWebServer () {if (wServer! = null) {// If the webServer je spustená požiadavka klienta = wServer.available (); // Načítanie ďalšieho klienta do radu na // server (null, ak nečakajú žiadne požiadavky) if (request! = Null) {// ak prebieha požiadavkový proces String fullRequest = request.readString (); // Uložiť obsah požiadavky ako reťazec Reťazec ip = request.ip (); // Uložte adresu IP klientov ako reťazec Reťazec requestString = parseRequest (fullRequest.toUpperCase ()); // Odstráňte všetky nadbytočné // informácie a ponechajte iba reťazec požiadavky (text po GET) // (posunie sa na veľké písmená, aby bolo testovanie reťazcov jednoduchšie) if (requestString.indexOf ("REQUEST?")! = -1) { // Skontroluje, či má žiadosť „REQUEST?“Odpoveď reťazca = interpretRequest (requestString); // Odošle požiadavku na prekladač požiadaviek request.write ("HTTP/1,1 200 OK / nPripojenie: zatvorenie / nContent-type: text/html / n / n" + odpoveď); // Pošle odpoveď 200, aby oznámil, že požiadavka bola // spracovaná a reťazec „odpoveď“ako odpoveď wServer.disconnect (požiadavka); // Odpojí klienta} else if (requestString.indexOf ("CONTROLPAGE")! = -1) {// Ak je požiadavka na riadiacu webovú stránku String webPageArray = loadStrings ("WEBB -ControlPage.html"); // Načíta riadiacu webovú stránku z / data / WEBB-ControlPage.html // (načítaná ako pole riadkov) String webPage = ""; // Aby bola úprava jednoduchšia, na webovej stránke boli ponechané // riadkové zlomy, takže pre slučky striopsujú tieto riadky (int i = 0; i portIndex) {// ak odovzdaný portIndex je platný index v Serial.list () // (tj. nie možnosť tri v zozname dvoch) serialPortIndex = portIndex; // nastavte premennú serialPortIndex na nový index serialport // (slúži na zobrazenie bodky vedľa aktívneho portu)} if (serialPortIndex! = -1) {// skontrolujte, či bol port vybratý niekedy predtým, ak (serialPort! = null) {serialPort.stop ();}} // ak sa už používa sériový port, zastavte ho pred načítaním nového serialPort = new Serial (this, Serial.list () [serialPortIndex], 9600); // Vytvorte nový sériový objekt na komunikáciu s Arduino 9600 Baud}}/ * * Zoberie reťazec požiadavky (napr.: „request? Command = F & param1 = 100“) a odstráni príkaz * a param1 a pošle ho arduino (tu by sa vykonalo pridanie ďalších parametrov alebo príkazov, ktoré nie sú arduino) */String interpretRequest (String requestString) {String returnValue = "OK"; // Príprava premennej returnValue Reťazec príkazu; // Nasledujúce tri riadky extrahujú hodnotu za "príkaz =" // (ďalší riadok je v prípade, ak je parameter príkazu na // konci požiadavky a za ním nie je znak & if (requestString.indexOf ("COMMAND ="))! = -1) {príkaz = requestString.substring (requestString.indexOf ("COMMAND =") + "COMMAND =". Length ());} else {command = "Z";} if (command.indexOf (" & ")! = -1) {príkaz = príkaz.substring (0, command.indexOf (" & "));} else {príkaz = príkaz;} Reťazec param1String; // Nasledujúce tri riadky extrahujú hodnotu za" param1 = "// (ďalší riadok je v prípade, ak je parameter príkazu na // konci požiadavky a za ním nie je & 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); // Premení reťazec param1 na integer sendRobotCommand (príkaz, param1); // Odošle príkaz do rutiny, ktorá ho odošle do Arduino returnValue = "príkaz:" + príkaz + "param1:" + param1; // v súčasnosti iba analyzovaný príkaz, ale odoslanie // ako html, takže je možné zahrnúť aj formátovanie return returnValue;}/ * * Prevezme príkaz (aktuálne jedno písmeno) a parameter (jeden bajt 0-255) a odošle ho do arduino *, ktoré počúva a číta * Aktuálne podporované príkazy * F - */void sendRobotCommand (príkaz String, int param1) {println ("príkaz:" + príkaz + "čas:" + param1); String checkString = "AAA"; if (serialPort! = null) {serialPort.write (príkaz checkString +); serialPort.write (byte (param1)); }} // Koniec nastavenia/nie veľmi bežne nazývané rutiny // ----------------------------------- ---------------------------------------------------------- // Tlačidlo príkladu a kód RectButton z príkladu processing.org s niektorými zmenami // vykonané väčšinou kvôli zjednodušeniu a odstráneniu animácie pri prevrátení // https://processing.org/learning/topics/buttons.html (2008-09-23) trieda Button {int x, y; vnútorná šírka, výška; Button (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; width = iwidth; výška = výška; } booleanPress () {if (overRect ()) {return true; } else {return false;}} boolean overRect () {if (mouseX> = x && mouseX = y && mouseY <= y+výška) {return true; } else {return false; }}}
Krok 5: Software - (webová stránka)
Sme takmer hotoví, všetko, čo zostáva, je hovoriť s vašim robotom. Ak chcete hovoriť: (cez miestnu sieť -na oknách -)
- Zistite miestnu adresu IP prenosného počítača. Ak to chcete urobiť, prejdite na „Štart / Programy / Príslušenstvo / Príkazový riadok“a keď sa otvorí okno terminálu, zadajte „ipconfig“. Zapíšte si „IP adresu“a prejdite na iný počítač v miestnej sieti.
- Otvorte webový prehliadač a zadajte „https:// (adresa IP robotického počítača): 12345/ControlPage.html
- Mala by sa načítať kontrolná webová stránka, do poľa „IP adresa“zadajte IP adresu robotického počítača.
- Začnite ovládať svojho robota.
Hovoriť: (cez internet) Teraz, keď to funguješ na miestnej úrovni, je už len pár krokov od vás, aby ste hovorili cez internet.
- (najťažší krok) Nastavte presmerovanie portov - počítač musí počúvať internet, nie iba miestnu sieť. Aby ste to urobili, musíte svojmu smerovaču povedať, aby postúpil určité požiadavky počítaču riadiacemu robota. Toto je trochu zložité a ďaleko presahuje rámec tohto pokynu. Ak však navštívite PortForward.com, poskytnú vám všetko, čo potrebujete vedieť o konfigurácii smerovača (port 12345 musíte presmerovať na prenosný počítač s robotom)
- Ďalej zistite svoju internetovú adresu IP (navštívte stránku WhatIsMyIP.com)
- Nakoniec spustite videohovor cez skype a oslovte kohokoľvek, s kým hovoríte, „https:// (internetová adresa IP): 12345/ControlPage.html“
- Zadajte internetovú IP do poľa „IP adresa“na riadiacej webovej stránke a váš robot s webovým pripojením bude jazdiť z diaľky.
Krok 6: Hotovo
Tak to je všetko. Dúfam, že sa zabavíte pri šoférovaní svojho robota zďaleka. Ak máte akékoľvek problémy so softvérom alebo hardvérom, neváhajte zanechať komentár a ja sa vám pokúsim pomôcť. Ak by ste sa chceli pozrieť na úhľadnejšie projekty, navštívte: oomlout.com
Odporúča:
Vytvorte si vlastné inteligentné zrkadlo za menej ako 80 dolárov - pomocou Raspberry Pi: 6 krokov (s obrázkami)
Vytvorte si vlastné inteligentné zrkadlo za menej ako 80 dolárov - pomocou Raspberry Pi: V tomto projekte budeme stavať inteligentné zrkadlo, ktoré vám ukáže užitočné informácie, keď sa ráno chystáte. Celá vec by mala stáť menej ako 80 dolárov, aby bola pre väčšinu ľudí slušne dostupná. Táto príručka vás naučí iba
55 palcový displej s digitálnym fotorámčekom 4K za približne 400 dolárov: 7 krokov (s obrázkami)
55 palcový displej s digitálnym fotorámčekom 4K za približne 400 dolárov: existuje veľa návodov, ako vytvoriť úžasný digitálny fotorámček s malinovým obrázkom. rpi bohužiaľ nepodporuje rozlíšenie 4K. Odroid C2 ľahko zvládne rozlíšenie 4K, ale žiadny z týchto tutoriálov rpi nefunguje pre jednotku C2. trvalo to
Vytvorte si vlastný profesionálny čistiaci stroj na záznamy za menej ako 80 dolárov a ušetrite až 3 000 dolárov a viac: 6 krokov (s obrázkami)
Vyrobte si svoj vlastný profesionálny čistiaci stroj na nahrávky za menej ako 80 dolárov a ušetrite až 3 000 dolárov a viac: Ospravedlňte moju angličtinu. Potom, čo som sa vrátil k zvuku starého dobrého vinylu, som mal problém, ktorý má každý milovník platní. Ako správne čistiť záznamy!? Na internete je veľa spôsobov. Lacnejšie spôsoby ako Knosti alebo Discofilm, ale aj
Vytvorte si vlastnú peknú plstenú tašku EeePC / netbook za približne 8 dolárov (a ušetrite 91 dolárov namiesto nákupu z Redmaloo): 5 krokov (s obrázkami)
Vytvorte si svoj vlastný pekný plstený vak EeePC / netbook za približne 8 dolárov (a ušetrite 91 dolárov namiesto nákupu z Redmaloo): Tento návod vám ukáže, ako si vyrobiť vlastný, veľmi pekný a dobre vyzerajúci prenosný počítač alebo ešte lepšie vrecko na netbook. Uloží váš netbook, poskytne vám podložku pod myš, pocit používania niečoho jedinečného, pekného a ručne vyrobeného a bláznivý pocit
Dve knižné svetlá AAA LED za približne 10 dolárov: 7 krokov
Dve knižné svetlá AAA LED za približne 10 dolárov: Radi čítate, ale nemáte chuť platiť príliš veľa za LED knižné svetlá? Lacnejšie to tak jednoducho vyzerá a zvyčajne si vezmú drahé kruhové batérie. Tu vám ukážem, ako vyrobiť dve knižné svetlá AAA LED za približne 10 dolárov a zhruba polovicu