Obsah:
- Krok 1: Díly a nástroje
- Krok 2: Řezání kusů a montáž
- Krok 3: Software - (Arduino)
- Krok 4: Software - Robot Laptop (WebServer)
- Krok 5: Software - (webová stránka)
- Krok 6: Hotovo
Video: Vytvořte robota připojeného k webu (za přibližně 500 USD) (pomocí Arduina a netbooku): 6 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
Tento instruktážní program vám ukáže, jak si vytvořit vlastního robota připojeného přes web (pomocí mikrokontroléru Arduino a počítače Asus eee). Proč byste chtěli robota připojeného přes web? Samozřejmě hrát. Řiďte svého robota z celé místnosti nebo po celé zemi, nepoužívejte nic jiného než Skype a webový prohlížeč (nic, co byste museli instalovat na řídicí počítač). Potom? Ponořte se do softwaru a přizpůsobte si ho, jak chcete, přidejte GPS, abyste mohli na mapě sledovat, kam jedete, přidejte teplotní senzory pro mapování teplotních gradientů ve vašem domě nebo sonarové senzory pro přidání ovládacích prvků na vašem webu řidiči mohou a nemohou narazit. Funkce:
- Levný - (~ 500 $, pokud si koupíte všechny díly nové a podstatně levnější, když se budete hrabat v zásobníku na díly)
- Jakmile je robot spuštěn, vyžaduje pouze webový prohlížeč - (a Skype, pokud chcete vidět, kam jedete)
- Open Source a snadno přizpůsobitelné - (používá mikrokontrolér Arduino, zpracování pro webový server a veškerý software lze spustit na Linuxu (veškerý kód je také silně komentován, aby bylo snadné skákat a měnit věci))
- Modulární design (není to zcela integrovaný systém, pokud chcete použít jinou videokonferenční službu bez obav, nebo pokud máte základní razítko spíše než Arduino, stačí malý kousek kódu a zasuňte jej)
Zde je krátké video, jak mého webového připojeného robota vyhánějí z kuchyně.
Krok 1: Díly a nástroje
Je požadováno pouze několik částí: Robot: Servo robot řízený Arduino - (SERB) (175 $ @ oomlout.com) nebo (vytvořte si vlastní)
Robot s otevřeným zdrojovým kódem, který jako mozek používá mikrořadič Arduino
(Lze použít jakoukoli platformu s dvojitým servo robotem s arduino (možnost 1) (pokud objevíte další možnosti, napište mi prosím zprávu) Počítač: Asus eee PC 4G (280 $) (@Nejlepší nákup)
Malý levný notebook, který je pro tento účel ideální
(Lze použít jakýkoli notebook (nebo stolní počítač, pokud chcete spustit s akordem), který je schopen spouštět náčrty zpracování.
Několik dalších akrylových kusů, které se přišroubují na (SERB), aby poskytly stůl pro notebook, na kterém bude sedět
Ořechy a bols: (k dispozici v domácím depu)
- Šroub 3 mm x 10 mm (x4)
- Šroub 3 mm x 15 mm (x4)
- 3mm matice (x8)
Krok 2: Řezání kusů a montáž
Existují tři možnosti, jak získat kousky na stůl notebooku. Možnost řezání 1: (nákup z oomlout.com)
laserem řezané kusy stolu a potřebný hardware jsou k dispozici od oomlout za 25 $ (zde)
Možnost 2: (Řezání na vlastní laserové řezačce nebo Ponoko.com)
- Stáhněte si níže uvedený soubor (03-WEBB-Acrylic Parts.cdr nebo 03-WEBB-Acrylic Parts (Ponoko P2).eps)
- Vyřízněte je z 3 mm (1/8 ") akrylu
Možnost 3: (Scroll Saw)
- Stáhněte si vzor rolovací pily zespodu (03-WEBB-ScrollSaw Pattern (A4).pdf (pro papír formátu A4) nebo 03-WEBB-ScrollSaw Pattern (letter).pdf (pro papír velikosti Letter))
- Při tisku dvakrát zkontrolujte, zda nebyl zmenšen (měřením vytištěných pravítek)
- Přilepte na kousek 3 mm (1/8 ") akrylu a vystřihněte kousky.
Sestavení: Stáhněte si níže uvedenou příručku k montáži (04-WEBB-Assembly Guide.pdf) a sestavte stůl notebooku.
Krok 3: Software - (Arduino)
Pro ty nové v Arduinu se podívejte na skvělou příručku Začínáme na Arduino.cc Nejprve software běžící na Arduinu. Jedná se o velmi jednoduchý program, který Arduino monitoruje sériový port pro data. Co hledá, je konverzace dlouhá 5 bajtů.
- Byte 1-3 (Zkontrolujte bajty „AAA“)
- Příkaz Byte 4 (Říká arduino, co má dělat) (Podporované příkazy 'F' - vpřed, 'B' - vzad, 'L' - vlevo, 'R' - vpravo, 'S' - rychlost, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - stop)
- Parametr Byte 5 - u příkazů pro přesun je to interpretováno jako časový interval (parametr * 100 ms) a u příkazů pro rychlost od 0 do 100
Kód je důkladně okomentován a vzhledem k tomuto rámci by přidání dalších příkazů mělo být snadné. Stažení:
- Stáhněte si přiložený zip soubor. (05-WEBB-Arduino Code.zip)
- Rozbalte do adresáře Arduino Sketch. (výchozí: Moje dokumenty / Arduino)
- Otevřete své vývojové prostředí arduino a nahrajte do svého Arduina.
Kopírovat a vložit
- Zkopírujte kód zespodu.
- Vložte do vývojového prostředí Arduino.
- Nahrajte do svého Arduina.
Dodatek: Program Arduino
/ * * Arduino Controlled Web Connected Robot (WEBB) - Serial Host * Další podrobnosti naleznete na adrese: https://www.oomlout.com/serb * * Chování: Arduino poslouchá svůj sériový port pro příkaz * ve formátu 254, 88, 88, (PŘÍKAZ), (ČAS) * Podporované příkazy - & aposF & apos - 70 - Vpřed * & aposB & apos - 66 - Zpět * & aposL & apos - 76 - Vlevo * & aposR & apos - 82 - Vpravo * & aposS & apos - 83 - Rychlost * & aposX & apos - 88 - SetSpeedLe * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Podporované časy - 0 - 255 (0 až 25,5 sekund) hodnota * 100 milisekund * sp * Zapojení: pravý servo signál - pin 9 * levý servo signál - pin 10 * * licence: Toto dílo podléhá licenci Creative Commons * Attribution-Share Alike 3.0 Unported License. Chcete-li * zobrazit kopii této licence, navštivte * https://creativecommons.org/licenses/by-sa/3.0/ * nebo pošlete dopis společnosti Creative Commons, 171 Second * Street, Suite 300, San Francisco, Kalifornie 94105, * USA. * */// --------------------------------------------- ---------------------------- // ZAČÁTEK PREAMBULY SÉRIOVÉHO SERVERU ARDUINO // Definování konstant odpovídajících každému příkazu (také 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/ *Tři kontrolní bajty (slouží k tomu, aby robot nereagoval na náhodná sériová *data) aktuálně „AAA“*/#define checkByte1 65 // „A“#define checkByte2 65 // "A "#define checkByte3 65 //" A "// -------------------------------------- ------------------------------------ // ZAČÁTEK ARDUINO ŘÍZENÉHO SERVO ROBOTA (SERB) PREAMBLE#zahrnovat #define LEFTSERVOPIN 10 // Pin, ke kterému je připojeno levé servo#definovat RIGHTSERVOPIN 9 // Pin, ke kterému je připojeno pravé servoServo leftServo; Servo vpravoServo; int leftSpeed = 50; // drží rychlost robotů leftServo // procento mezi 0 a 100int rightSpeed = 100; // drží rychlost robotů vpravoServo // procento mezi 0 a 100 // KONEC ARDUINO ŘÍZENÝ SERVO ROBOT (SERB) PREAMBLE // ------------------- ---------------------------------------------------------- ----- // Získá vše a běží Vyhněte se setup () {Serial.begin (9600); // Spustí sériový port serbSetup (); // nastaví stav všech potřebných // pinů a přidá do vaší skici serva} // Hlavní program loopvoid loop () {serbPollSerialPort (); // nepřetržitě hledá sériový port // pokud existují data, která zpracovává} // ------------------------------ ----------------------------------------- // ZAČÁTEK SÉRIOVÝCH SLUŽEB ARDUINO/ * * Zpracovává příkazy doručované na sériový port arduino & aposs */void serbPollSerialPort () {int dta; // proměnná pro uchování sériového bajtu if (Serial.available ()> = 5) {// pokud je ve vyrovnávací paměti 5 bytů (délka pf úplný požadavek) dta = Serial.read (); if (dta = checkByte1) {// Zkontroluje první kontrolní bajt dta = Serial.read (); if (dta = checkByte2) {// Zkontroluje druhý kontrolní byte dta = Serial.read (); if (dta = checkByte3) {// Zkontroluje třetí kontrolní bajt int příkaz = Serial.read (); // Čtvrtý bajt je příkaz int param1 = Serial.read (); // Pátý bajt je param1 interpretCommand (příkaz, param1); // odešle do něj analyzovaný požadavek & aposs handler}}}}/ * * Převezme příkaz a parametr a předá ho robotovi */void interpretCommand (int příkaz, int param1) {if (příkaz == FORWARD) {goForward (); zpoždění (param1 * 100); goStop ();} // if forward else if (command == BACKWARD) {goBackward (); zpoždění (param1 * 100); goStop ();} // pokud dozadu jinak if (příkaz == VLEVO) {goLeft (); zpoždění (param1 * 100); goStop ();} // pokud zbude jinak if (příkaz == VPRAVO) {goRight (); zpoždění (param1 * 100); goStop ();} // if right else if (příkaz == SETSPEED) {setSpeed (param1);} // // if setting speed else if (command == STOP) {goStop ();}}} // if stop else if (příkaz == SETSPEEDLEFT) {setSpeedLeft (param1);} // pokud nastavíte levou rychlost else if (příkaz == SETSPEEDRIGHT) {setSpeedRight (param1);} // // pokud nastavíte správnou rychlost jinak {// pokud nerozpoznaný příkaz udělejte trochu shimmey goLeft (); zpoždění (150); Jdi doprava(); zpoždění (150); goStop (); }} // ---------------------------------------------- -------------------------- // ZAČÁTEK ARDUINO ŘÍZENÝCH SERVO ROBOT (SERB) ROUTINES/ * * nastaví vaše arduino tak, aby oslovilo vaše SERB pomocí zahrnuté rutiny*/void serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, OUTPUT); // nastaví levý signální pin servo // na výstupní pinMode (RIGHTSERVOPIN, OUTPUT); // nastaví pravý pin signálu serva // na výstup leftServo.attach (LEFTSERVOPIN); // připojí levé servo rightServo.attach (RIGHTSERVOPIN); // připojí pravé servo goStop ();}/ * * nastaví rychlost robota mezi 0- (zastaveno) a 100- (plná rychlost) * POZNÁMKA: rychlost nezmění aktuální rychlost, musíte změnit rychlost * pak zavolejte metod go, než dojde ke změnám.*/ void setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // nastaví levou rychlost setSpeedRight (newSpeed); // nastavuje správnou rychlost}/ * * Nastavuje rychlost levého kola */void setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // if speed is greater than 100 // make 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ší rychlost na}/ * * posílá robota dopředu */void goForward () {leftServo.write (90 + leftSpeed); rightServo.write (90 - rightSpeed);} / * * posílá robota zpět * /void goBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * odešle robota doprava * /void goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);}/ * * odešle robota doleva */void goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);}/ * * zastaví robota */void goStop () {leftServo.write (90); rightServo.write (90);} // KONEC ARDUINO ŘÍZENÝCH SERVO ROBOT (SERB) RUTINY // ---------------------------- -----------------------------------------------
Krok 4: Software - Robot Laptop (WebServer)
(Processing je programovací jazyk a prostředí s otevřeným zdrojovým kódem, se kterým je velmi snadné začít. Bližší informace naleznete na stránce Processing) Software, který běží na přenosném počítači, je také velmi jednoduchý. Jedná se o poměrně základní webový server (naslouchající žádostem o webové stránky z webového prohlížeče), malé uživatelské rozhraní (pro jeho nastavení) a zařízení pro předávání příkazů přijatých z webového serveru do Arduina. Rychlá instalace: (na oknech)
- Stáhněte si níže uvedený soubor zip (06-WEBB-Webový server pro zpracování (Windows exe).zip)
- Rozbalte jej a spusťte soubor.exe (_WEBB_WebServer_RobotComputer.exe)
Úpravy ve zpracování:
- Stáhněte si níže uvedený soubor zip (06-WEBB-Webový server pro zpracování (zdrojové soubory).zip)
- Rozbalte kdekoli v počítači.
- Otevřete prostředí Processing a otevřete (_WEBB_WebServer_RobotComputer.pde)
Testovat:
- Spusťte program.
- V rámečku č. 1 bude seznam dostupných komunikačních portů ve vašem počítači (klikněte na ten, ke kterému je připojeno vaše Arduino. (Váš robot se při připojení počítače několikrát zatřepe a vedle zvoleného se zobrazí azurová tečka) komunikační port)
- V poli č. 2 otestujte, zda je vaše Arduino připojeno. Klikněte na jednu ze šipek a váš robot se snad na půl sekundy bude pohybovat ve směru kliknutí.
- V poli č. 3 spusťte webový server kliknutím na tlačítko „Start“.
- Otevřete webový prohlížeč (na robotickém notebooku) a navštivte https://127.0.0.1:12345/ControlPage.html (snad se objeví ovládací webová stránka s tlačítky) -Podrobnosti o tom, jak tuto stránku použít v dalším kroku -
Co se děje:
- Webový server naslouchá portu 12345 pro požadavky http (co se odešle při zadání adresy webové stránky)
- Existují dva typy požadavků, na které reaguje.
1. Naslouchá „ControlPage.html“a odešle kontrolní webovou stránku 2. Naslouchá požadavkům ve formuláři „/request? Command = F & param1 = 100“(tyto příkazy jsou analyzovány a odeslány do Arduina (tento příklad by měl za následek v robotu, který jde dopředu 10 sekund) Příloha: (Kód pro webový server)
/ * * Arduino Controlled Web Connected Robot (WEBB) - webový server * Další podrobnosti naleznete na adrese: https://www.oomlout.com/serb * * Chování: Program naslouchá požadavkům http (webové stránky) ve formě * "/požadavek ? command = F & param1 = 100 "a poté je předá * Arduino * Podporované příkazy - & aposF & apos - 70 - Vpřed * & aposB & apos - 66 - Zpět * & aposL & apos - 76 - Vlevo * & aposR & apos - 82 - Vpravo * & aposS & apos - 83 - Rychlost * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Zastavení * hodnota param1 & aposs - 0 - 255 (0 až 25,5 sekund) hodnota * 100 milisekund * * slouží také jako ovládací webová stránka v prohlížeči, pokud žádáte o ControlPage.html * * Obsluha: 1. Klikněte na komunikační port, ke kterému je připojeno vaše Arduino * 2. Pomocí testovacích tlačítek zjistíte, zda váš arduino poslouchá * (bude se pohybovat ve směru, na který jste klikli půl sekundy) * 3. Klikněte na Start a váš webový server poslouchejte žádosti * * * Licence: Toto dílo podléhá licenci Creative Commons * Attribu tion-Share Alike 3.0 Unported License. Chcete-li * zobrazit kopii této licence, navštivte * https://creativecommons.org/licenses/by-sa/3.0/ * nebo pošlete dopis společnosti Creative Commons, 171 Second * Street, Suite 300, San Francisco, Kalifornie 94105, * USA. * */zpracování zpracování importu. sériové. *; // importujte sériovou knihovnu a použijte Serial (pro komunikaci s Arduino) import processing.net.*; // importujte síťovou knihovnu a používejte Server (pro komunikaci s internetem)/ * Proměnné související se sériovým portem */int serialPortIndex = -1; // index sériového portu, který používáme v seznamu Serial.list () listString commOptions; // Proměnná, do které se ukládá Serial.list (), takže není potřeba dotazovat // sériové porty pokaždé, když si to přejeme znovu vyvolat (dotazování způsobí // skok do serva arduino) Serial serialPort; // Nastaví v tomto náčrtu adresovatelnost sériového portu/ * Grafické proměnné a proměnné související s vykreslováním */Písmo PFont; // dělá písmo veřejným, takže se musí načíst pouze jednou (Arial-72)/ * Proměnné související se sítí */Server wServer; // Server, který zpracovává webové požadavkyintport = 12345; // Port, kterému server naslouchá, aby cycleCount = 0; // Počítá, kolikrát se vykreslí smyčka (slouží k // animaci „běžícího“textu)/ * Proměnné nástroje */PImage bg; // Obrázek pozadí aktuálně / WEBB-background.png/ * * Proměnné související s tlačítky * (tlačítka jsou implementována velmi zhruba, ohraničující rámečky jsou uloženy a grafika a text jsou * nakresleny na obrázek na pozadí), tj. přesunutí proměnných tlačítek nepřesune vzhled tlačítek */Button comm1; Tlačítko Comm2; Tlačítko Comm3; Tlačítko Comm4; // Tlačítka pro výběr správného sériového portu Tlačítko nahoru; Tlačítko vpravo; Tlačítko vlevo; Tlačítko dolů; // Směrová tlačítka k otestování, zda robot reagujeButton webServer; // Tlačítko pro spuštění webServeru/ * * nastaví vše ostatní */void setup () {frameRate (5); // Trochu zpomalí náčrt, aby nebyl tak náročný na systém bg = loadImage ("WEBB-background.png"); // Načte velikost obrázku na pozadí (uloženého ve složce skici) (700, 400); // Nastaví velikost okna skici font = loadFont ("ArialMT-72.vlw"); // Načte písmo, které použijeme prostřednictvím tohoto náčrtu commOptions = Serial.list (); // Dotáže se na sériové porty a získá seznam dostupných portů // (dělá to jen jednou, aby se robot netrhl pokaždé, když se zeptá na // sériový port) defineButtons (); // Definuje ohraničující rámečky pro pozadí každého tlačítka (bg); // Namaluje obrázek na pozadí (na tomto obrázku je veškerá grafika tlačítek)}/ * Načrtne hlavní smyčku */void draw () {if (cycleCount == 0) {//- rutiny volání draw drawCommBox (); // Nakreslí emelmenty do komunikačního pole (pole 1) drawTestBox (); // Nakreslí všechny prvky do Testovacího pole (rámeček 2) drawWebServerBox (); // Nakreslí všechny prvky do pole WebServer Box (rámeček 3)} //- volání pracovních rutin pollWebServer (); // Dotáže webový server, aby zjistil, zda prostřednictvím sítě přišly nějaké požadavky} // ------------------------------ ----------------------------------------------//Začátek rutiny kreslení (rozdělte se, aby byl kód čitelnější)/ * * Rutina aktualizace kreslení (spuštěna každý cyklus) u položek v poli pro komunikaci (pole 1) */void drawCommBox () {fill (0, 0, 0); // Nastavit výplň na černý textFont (písmo, 15); // Nastavte písmo na správnou velikost pro (int i = 0; i 0) {running = running + ".";} // počet bodů vychází z cycleCount if ((cycleCount /1)> 1) { running = running + ".";} if ((cycleCount / 1)> 2) {running = running + ".";} if ((cycleCount / 1)> 3) {cycleCount = 0;} text (running, 520, 210); } cycleCount ++; // Pokaždé, když se cycleCount zvýší o jeden} // Rutiny ukončení kreslení // ------------------------------- ------------------------------ // ------------------ ------------------------------------------ // // Zahájení rutin služby/ * * mousePressed se zavolá při každém stisknutí myši * toto zkontroluje, zda je myš uvnitř některého z rámečků ohraničujících tlačítka * a zda je to vhodná rutina, se nazývá */void mousePressed () {if (comm1.pressed ()) { updateSerialPort (0);} // Změny komunikačního portu na indexu 0 v Serial.list () else if (comm2.pressed ()) {updateSerialPort (1);} // Změny komunikačního portu na indexu 1 v Serial.list () else if (comm3.pressed ()) {updateSerialPort (2);} // Změny komunikačního portu na indexu 2 v Serial.list () else if (comm4.pressed ()) {updateSerialPort (3);} // Změny komunikačního portu na indexu 3 v Serial.list () else if (up.pressed ()) {sendRobotCommand ("F", 5);} // Odesílá příkaz k posunutí robota dopředu o 0,5 sekundy else if (left.pressed ()) {sendRobotCommand ("L", 5);} / /Odešle příkaz k přesunutí robota doleva na 0,5 sekundy jinak, pokud (right.pressed ()) {sendRobotCommand ("R", 5);} // Pošle příkaz k pohybu robota na 0,5 sekundy jinak, pokud (dolů. stisknuto ()) {sendRobotCommand ("B", 5);} // Pošle příkaz k posunutí robota o 0,5 sekundy dozadu, pokud (webServer.pressed ()) {startWebServer ();} // Spustí webServer cycleCount = 0; pozadí (bg); // Překreslí obrázek na pozadí (tento obrázek obsahuje veškerou grafiku tlačítek) draw ();}/ * * Volá se po spuštění a kontroluje server, aby zjistil, zda existuje nějaké čekající připojení * pokud existuje čekající připojení, vytáhne požadavek odešle a předá rutině parseRequest (String) *, aby odstranil další text. Toto je poté odesláno do rutiny interpretRequest (String), aby * zavolala příslušnou akční rutinu (tj. Poslala pokyny robotu).* * Požadavek je předán zadáním adresy počítače a portu do webového prohlížeče * Pro místní počítač "https://127.0.0.1:12345/request?command=F¶m1=100" * * Příklad požadavku: * ZÍSKAT/požadavek? 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 * Připojení: Keep-Alive * * Příklad odpovědi (pro zpracovaný požadavek) * HTTP/1,1 200 OK * Připojení: zavřít * Typ obsahu: text/html * * příkaz: F param1: 100 */void pollWebServer () {if (wServer! = null) {// If the webServer běží Klientský požadavek = wServer.available (); // Načtěte dalšího klienta do řádku na // server (null, pokud žádné požadavky nečekají) if (request! = Null) {// pokud probíhá proces požadavku String fullRequest = request.readString (); // Uložení obsahu požadavku jako řetězce String ip = request.ip (); // Uložte adresu IP klientů jako řetězec String requestString = parseRequest (fullRequest.toUpperCase ()); // Odstraňte všechny další // informace a ponechejte pouze řetězec požadavku (text po GET) // (pro snazší testování řetězců se posune na velká písmena) if (requestString.indexOf ("REQUEST?")! = -1) { // Zkontroluje, zda má požadavek "REQUEST?" Odpověď řetězce = interpretRequest (requestString); // Odešle požadavek na překladač požadavků request.write ("HTTP/1,1 200 OK / nConnection: close / nContent-Type: text/html / n / n" + odpověď); // Pošle odpověď 200, aby řekl, že požadavek byl // zpracován a řetězec "odpověď" jako odpověď wServer.disconnect (požadavek); // Odpojí klienta} else if (requestString.indexOf ("CONTROLPAGE")! = -1) {// Pokud je požadavek pro kontrolní webovou stránku String webPageArray = loadStrings ("WEBB -ControlPage.html"); // Načte ovládací webovou stránku z / data / WEBB-ControlPage.html // (načten jako pole řádků) String webPage = ""; // Aby byla editace snazší, na webové stránce byly ponechány // konce řádků, takže pro smyčky se tyto řádky vynechávají pro (int i = 0; i portIndex) {// pokud je předaný portIndex platným indexem v Serial.list () // (tj. není možnost tři v seznamu dvou) serialPortIndex = portIndex; // nastavte proměnnou serialPortIndex na nový index serialport // (slouží k zobrazení tečky vedle aktivního portu)} if (serialPortIndex! = -1) {// zkontrolujte, zda byl port vybrán někdy dříve, pokud (serialPort! = null) {serialPort.stop ();}} // pokud je již používán sériový port, zastavte jej před načtením nového serialPort = new Serial (this, Serial.list () [serialPortIndex], 9600); // Vytvořte nový sériový objekt pro komunikaci s Arduino 9600 Baud}}/ * * Vezme řetězec požadavku (např. „Požadavek? Příkaz = F & param1 = 100“) a vymaže příkaz * a param1 a předá jej arduino (zde by bylo možné přidat další parametry nebo jiné než arduino příkazy) */String interpretRequest (String requestString) {String returnValue = "OK"; // Příprava proměnné returnValue Řetězec; // Další tři řádky extrahují hodnotu za "příkaz =" // (další řádek je v případě, že parametr příkazu je na // konci požadavku a za ním není & if (requestString.indexOf ("COMMAND ="))! = -1) {příkaz = requestString.substring (requestString.indexOf ("COMMAND =") + "COMMAND =". Length ());} else {command = "Z";} if (command.indexOf (" & ")! = -1) {příkaz = příkaz.substring (0, command.indexOf (" & "));} else {příkaz = příkaz;} Řetězec param1String; // Další tři řádky extrahují hodnotu za" param1 = "// (další řádek je v případě, že parametr příkazu je na // konci požadavku a za ním nebude následovat & 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); // Změní řetězec param1 na integer sendRobotCommand (příkaz, param1); // Pošle příkaz rutině, která jej odešle do Arduino returnValue = "příkaz:" + příkaz + "param1:" + param1; // v tuto chvíli pouze analyzovaný příkaz, ale odesílání // jako html, takže lze zahrnout formátování return returnValue;}/ * * Převezme příkaz (aktuálně jedno písmeno) a parametr (jeden bajt 0-255) a odešle jej do arduino *, které poslouchá a čte * aktuálně podporované příkazy * F - */void sendRobotCommand (příkaz String, int param1) {println ("příkaz:" + příkaz + "čas:" + param1); String checkString = "AAA"; if (serialPort! = null) {serialPort.write (checkString + příkaz); serialPort.write (byte (param1)); }} // Konec instalace/nepříliš běžně nazývané rutiny // ----------------------------------- ---------------------------------------------------------- // Tlačítko příkladu a kód RectButton z příkladu processing.org s některými změnami // provedenými převážně za účelem zjednodušení a odstranění animace převrácení // https://processing.org/learning/topics/buttons.html (2008-09-23) třída Tlačítko {int x, y; int šířka, výška; Tlačítko (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)
Už jsme téměř hotovi, zbývá už jen mluvit s vaším robotem. Chcete -li mluvit: (přes místní síť -v systému Windows -)
- Zjistěte místní IP adresu přenosného počítače. Chcete -li to provést, přejděte na „Start / Programy / Příslušenství / Příkazový řádek“a když se otevře okno terminálu, zadejte „ipconfig“. Zapište si „IP adresu“a přejděte k jinému počítači v místní síti.
- Otevřete webový prohlížeč a zadejte „https:// (IP počítače robota): 12345/ControlPage.html
- Řídicí webová stránka by se měla načíst, do pole „IP adresa“zadejte IP počítače robota.
- Začněte ovládat svého robota.
Chcete -li mluvit: (přes internet) Nyní, když to funguje na místní úrovni, je mluvení přes internet vzdáleno jen několik málo kroků.
- (nejtěžší krok) Nastavení přesměrování portů - počítač musí poslouchat internet, nikoli pouze místní síť. Chcete -li to provést, řekněte svému routeru, aby předal určité požadavky počítači, který řídí robota. To je trochu složité a daleko přesahuje rámec tohoto Instructable. Pokud však navštívíte PortForward.com, poskytnou vám vše, co potřebujete vědět o konfiguraci směrovače (port 12345 musíte přesměrovat na robotický notebook)
- Dále objevte svou internetovou IP (navštivte WhatIsMyIP.com)
- Nakonec spusťte videohovor přes skype a nechte se oslovit kýmkoli, s kým mluvíte, na „https:// (internet IP): 12345/ControlPage.html“
- Zadejte internetovou IP do pole „IP adresa“na ovládací webové stránce a váš robot s webovým připojením se bude řídit z dálky.
Krok 6: Hotovo
No to je ono. Doufám, že si užijete zábavu při řízení svého robota z daleka. Pokud máte nějaké problémy se softwarem nebo hardwarem, neváhejte zanechat komentář a já se vám pokusím pomoci. Pokud byste se chtěli podívat na úhlednější projekty, zkuste navštívit: oomlout.com
Doporučuje:
Jak vyrobit dron pomocí Arduino UNO - Vytvořte kvadrokoptéru pomocí mikrokontroléru: 8 kroků (s obrázky)
Jak vyrobit dron pomocí Arduino UNO | Vytvořte kvadrokoptéru pomocí mikrokontroléru: Úvod Navštivte můj kanál na YouTube Drone je velmi drahý gadget (produkt) na nákup. V tomto příspěvku budu diskutovat, jak to udělám levně? A jak si můžete takhle vyrobit vlastní za levnou cenu … V Indii všechny materiály (motory, ESC
Mluvící Arduino - Přehrávání MP3 pomocí Arduina bez jakéhokoli modulu - Přehrávání souborů MP3 z Arduina pomocí PCM: 6 kroků
Mluvící Arduino | Přehrávání MP3 pomocí Arduina bez jakéhokoli modulu | Přehrávání souboru MP3 z Arduina pomocí PCM: V tomto návodu se naučíme, jak přehrávat soubor mp3 s arduino bez použití jakéhokoli zvukového modulu, zde použijeme knihovnu PCM pro Arduino, která přehrává 16 bitů PCM s frekvencí 8 kHZ, takže to zvládneme
Vytvořte si svůj první IOT pomocí Arduina bez dalších modulů: 5 kroků (s obrázky)
Vytvořte si svůj první IOT pomocí Arduina bez dalších modulů: Svět je každý den chytřejší a největším důvodem je evoluce chytré technologie. Jako technologický nadšenec jste určitě slyšeli o termínu IOT, což znamená internet věcí. Internet věcí znamená ovládat a krmit
55 palců, 4K digitální fotorámeček za přibližně 400 $: 7 kroků (s obrázky)
55 palců, 4K digitální fotorámeček za zhruba 400 dolarů: existuje spousta návodů, jak vytvořit úžasný digitální fotorámeček s malinovým pi. rpi bohužel nepodporuje rozlišení 4K. Odroid C2 snadno zvládne rozlišení 4K, ale žádný z těchto výukových programů rpi nefunguje pro jednotku C2. zabralo to
Vytvořte si vlastní pěkné plstěné pouzdro EeePC / netbook za přibližně 8 $ (a ušetříte 91 $ místo nákupu z Redmaloo): 5 kroků (s obrázky)
Vytvořte si vlastní pěkný plstěný sáček EeePC / netbook za zhruba 8 $ (a místo nákupu u Redmaloo ušetřete 91 $): Tento návod vám ukáže, jak si vyrobit vlastní, velmi pěkný a dobře vypadající notebook nebo ještě lépe sáček na netbook. Uloží váš netbook, poskytne vám podložku pod myš, pocit používání něčeho jedinečného, pěkného a ručně vyrobeného a bláznivý pocit