Съдържание:
- Стъпка 1: Части и инструменти
- Стъпка 2: Рязане на парчета и монтаж
- Стъпка 3: Софтуер - (Arduino)
- Стъпка 4: Софтуер - робот лаптоп (WebServer)
- Стъпка 5: Софтуер - (уеб страница)
- Стъпка 6: Готово
Видео: Направете уеб свързан робот (за около $ 500) (използвайки Arduino и нетбук): 6 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:55
Тази инструкция ще ви покаже как да създадете свой собствен уеб свързан робот (използвайки микроконтролер Arduino и компютър с Asus eee). Защо искате да имате уеб свързан робот? Разбира се, за да играете. Карайте робота си от цялата стая или в цялата страна, като не използвате нищо повече от Skype и уеб браузър (нищо за инсталиране на контролиращия компютър). След това? Вкопайте се в софтуера и го адаптирайте както искате, добавете GPS, за да можете да наблюдавате къде шофирате на картата, добавете температурни сензори към картографските температурни градиенти в дома си или сензори за сонар, за да добавите контроли за това, което сте в мрежата шофьорите могат и не могат да се сблъскат. Характеристика:
- Евтино - (~ $ 500, ако купувате всички части нови и значително по -евтино, ако ровите из кофата за части)
- След като стартирате и контролирате робота, се изисква само уеб браузър - (и Skype, ако искате да видите къде шофирате)
- С отворен код и лесно адаптируема - (използва микроконтролер Arduino, Обработка за уеб сървъра и целият софтуер може да се изпълнява на Linux (целият код също е силно коментиран, за да улесни навлизането и промяната на нещата))
- Модулен дизайн (не е напълно интегрирана система, ако искате да използвате различна услуга за видеоконферентна връзка, не се притеснявайте, или ако имате основен печат, а не Arduino, точно малко парче код и го поставете)
Ето един бърз видеоклип на моя робот, свързан с мрежата, изгонен от кухнята.
Стъпка 1: Части и инструменти
Изискват се само няколко части: Робот: Arduino управляван серво робот - (SERB) ($ 175 @ oomlout.com) или (направете свой собствен)
Робот с отворен код, който използва микроконтролер Arduino като мозък
(може да се използва всяка двойна серво робот платформа с arduino (опция 1) (моля, изпратете ми съобщение, ако откриете други опции) Компютър: Asus eee PC 4G ($ 280) (@Най -добрата покупка)
Малък евтин лаптоп, който е идеален за тази цел
(всеки лаптоп (или десктоп, ако искате да работите с акорд), който може да работи Може да се използва обработка на скици) Лаптоп бюро: Лазерно изрязан акрил ($ 25 (@ oomlout)) или (изградете своя собствена стъпка 3)
Няколко допълнителни акрилни парчета, които се закрепват към (SERB), за да му дадат бюро, на което да седне лаптопът
Ядки и болтове: (налични в домашно депо)
- Болт 3 мм x 10 мм (x4)
- 3 мм х 15 мм болт (х4)
- 3 мм гайка (x8)
Стъпка 2: Рязане на парчета и монтаж
Има три опции за получаване на парчета за бюрото на вашия лаптоп. Опция за рязане 1: (Закупуване от oomlout.com)
лазерно изрязани парчета бюро и необходимия хардуер се предлагат от oomlout за $ 25 (тук)
Вариант 2: (Рязане на собствен лазерен нож или Ponoko.com)
- Изтеглете файла по-долу (03-WEBB-акрилни части.cdr или 03-WEBB-акрилни части (Ponoko P2).eps)
- Изрежете ги от 3 мм (1/8 ") акрил
Вариант 3: (Скрол трион)
- Изтеглете шаблона за превъртане на триона отдолу (03-WEBB-ScrollSaw Pattern (A4).pdf (за хартия с формат A4) или 03-WEBB-ScrollSaw Pattern (буква).pdf (за хартия с размер на буква))
- Проверете отново дали не е мащабирано при печат (чрез измерване на отпечатаните линийки)
- Залепете върху парче акрил от 3 мм (1/8 ") и изрежете парчетата.
Сглобяване: Изтеглете ръководството за сглобяване (04-WEBB-Ръководство за сглобяване.pdf) по-долу и сглобете бюрото на лаптопа.
Стъпка 3: Софтуер - (Arduino)
За тези, които са нови за Arduino, вижте страхотното ръководство за започване на Arduino.cc Първо стартирайте софтуера, работещ на Arduino. Това е много проста програма, това, което Arduino прави, е да следи серийния си порт за данни. Това, което търси, е разговор с дължина 5 байта.
- Байт 1-3 (Проверете байтове "AAA")
- Команда 4 байт (Казва на arduino какво да прави) (Поддържани команди 'F' - напред, 'B' - назад, 'L' - наляво, 'R' - надясно, 'S' - скорост, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Стоп)
- Байт 5 параметър - За командите за преместване това се интерпретира като интервал от време (параметър * 100 ms), а за командите за скорост процент от 0-100
Кодът се коментира задълбочено и като се има предвид тази рамка, добавянето на допълнителни команди трябва да е лесно. За да изтеглите:
- Изтеглете прикачения zip файл. (05-WEBB-Arduino Code.zip)
- Разархивирайте в директорията на Arduino Sketch. (по подразбиране: Моите документи / Arduino)
- Отворете вашата среда за развитие на arduino и качете на вашия Arduino.
За копиране и поставяне
- Копирайте кода отдолу.
- Поставете в средата за разработка на Arduino.
- Качете на вашия Arduino.
Приложение: Програмата Arduino
/ * * Arduino контролиран уеб свързан робот (WEBB) - сериен хост * За повече подробности посетете: https://www.oomlout.com/serb * * Поведение: Arduino слуша своя сериен порт за команда * във формат 254, 88, 88, (КОМАНДА), (ВРЕМЕ) * Поддържани команди - & aposF & apos - 70 - Напред * & aposB & apos - 66 - Назад * & aposL & apos - 76 - Вляво * & aposR & apos - 82 - Вдясно * & aposS & apos - 83 - Скорост * & aposX & aposL - 88 - Set * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Стоп * Поддържани времена - 0 - 255 (0 до 25,5 секунди) стойност * 100 милисекунди * sp * Окабеляване: Десен серво сигнал - щифт 9 * Лев серво сигнал - щифт 10 * * Лиценз: Това произведение е лицензирано под Creative Commons * Attribution-Share Alike 3.0 Unported License. За да * видите копие на този лиценз, посетете * https://creativecommons.org/licenses/by-sa/3.0/ * или изпратете писмо до Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * САЩ. * */// --------------------------------------------- ---------------------------- // НАЧАЛО НА ПРЕАМБУЛА НА СЕРВЪР СЕРВЪР НА ARDUINO // Дефиниране на константи, съответстващи на всяка команда (също и кодовия номер на ASCII)#дефинирам НАПРЕД 70 "F#дефинирам НАЗАД 66 // B#дефинирам НАЛЯВО 76 // L#дефинирам НАДЯСНО 82 // R#дефинирам SETSPEED 83 // S#дефинирам STOP 67 // C#дефинирам SETSPEEDLEFT 88 // X #define SETSPEEDRIGHT 89 // Y/ *Трите контролни байта (използвани, за да попречат на робота да реагира на случайни серийни *данни) в момента "AAA" */#дефинирайте checkByte1 65 // "A" #define checkByte2 65 // "A "#define checkByte3 65 //" A "// -------------------------------------- ------------------------------------ // НАЧАЛО НА АРДУИНО КОНТРОЛИРАН СЕРВО РОБОТ (СЪРБ) ПРЕАМБУЛА#включва #дефинирам LEFTSERVOPIN 10 // ПИНът отляво серво е свързан към#define RIGHTSERVOPIN 9 // ПИНът отдясно серво е свързан къмServo leftServo; Серво дясно int leftSpeed = 50; // задържа скоростта на роботите leftServo // процент между 0 и 100int rightSpeed = 100; // задържа скоростта на роботите rightServo // процент между 0 и 100 // КРАЙ НА АРДУИНО КОНТРОЛИРАНИЯ СЕРВО РОБОТ (СЪРБ) ПРЕАМБУЛА // ------------------- -------------------------------------------------- ----- // Получава всичко и работиvoid setup () {Serial.begin (9600); // Стартира серийния порт serbSetup (); // задава състоянието на всички необходими // щифтове и добавя серво към вашата скица} // Основната програма loopvoid loop () {serbPollSerialPort (); // непрекъснато гледа към серийния порт // ако има данни, той ги обработва} // ------------------------------ ----------------------------------------- // НАЧАЛО НА ПРОГРАМИТЕ НА СЕРВЪР СЕРВЪР НА ARDUINO/ * * Обработва команди, доставени на серийния порт arduino & aposs */void serbPollSerialPort () {int dta; // променлива за задържане на серийния байт if (Serial.available ()> = 5) {// ако 5 байта са в буфера (дължина pf пълна заявка) dta = Serial.read (); if (dta = checkByte1) {// Проверява за първи байт за проверка dta = Serial.read (); if (dta = checkByte2) {// Проверява за втори байт за проверка dta = Serial.read (); if (dta = checkByte3) {// Проверява за трети байт за проверка int команда = Serial.read (); // Четвъртият байт е командата int param1 = Serial.read (); // Петият байт е param1 interpretCommand (команда, param1); // изпраща анализираната заявка към него & манипулатор aposs}}}}}/ * * Взема командата и параметъра и ги предава на робота */void interpretCommand (команда int, int param1) {if (command == FORWARD) {goForward (); забавяне (param1 * 100); goStop ();} // ако препращам иначе if (команда == BACKWARD) {goBackward (); забавяне (param1 * 100); goStop ();} // ако назад иначе if (команда == НАЛЯВО) {goLeft (); забавяне (param1 * 100); goStop ();} // ако е останало иначе if (команда == RIGHT) {goRight (); забавяне (param1 * 100); goStop ();} // if right else if (command == SETSPEED) {setSpeed (param1);} // ако задаваме скорост else if (command == STOP) {goStop ();} // ако стоп иначе if (команда команда == SETSPEEDLEFT) {setSpeedLeft (para1); goLeft (); забавяне (150); върви надясно(); забавяне (150); goStop (); }} // ---------------------------------------------- -------------------------- // СТАРТ НА РАБОТИРАНИТЕ СЕРВО РОБОТИ (СРЪБСКИ) НА ARDUINO/ * * настройва вашия arduino да се обръща към вашия SERB, използвайки включените процедури*/void serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, OUTPUT); // задава левия щифт на серво сигнала // към изход pinMode (RIGHTSERVOPIN, OUTPUT); // задава десния щифт за серво сигнал // към изход leftServo.attach (LEFTSERVOPIN); // прикачва ляво серво rightServo.attach (RIGHTSERVOPIN); // прикачва дясно серво на go методите преди да настъпят промени.*/ void setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // задава скорост наляво setSpeedRight (newSpeed); // задава дясна скорост}/ * * Задава скоростта на лявото колело */void setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // ако скоростта е по -голяма от 100 // направете го 100 if (newSpeed = 100) {newSpeed = 100;} // ако скоростта е по -голяма от 100 // направете 100 if (newSpeed <= 0) {newSpeed = 0;} // ако скоростта е по -малка от 0 make // it 0 rightSpeed = newSpeed * 0.9; // мащабира скоростта, която трябва да бъде}/ * * изпраща робота напред */void goForward () {leftServo.write (90 + leftSpeed); rightServo.write (90 - rightSpeed);} / * * изпраща робота назад * /void goBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * изпраща робота вдясно * /void goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);}/ * * изпраща робота наляво */void goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);}/ * * спира робота */void goStop () {leftServo.write (90); rightServo.write (90);} // КРАЙ НА РАБОТИРАНИТЕ СЕРВО РОБОТИ (СЪРБСКИ) РАБОТИ НА ARDUINO // ---------------------------- -----------------------------------------------
Стъпка 4: Софтуер - робот лаптоп (WebServer)
(Обработката е език за програмиране и среда с отворен код, с който е много лесно да започнете. За повече подробности посетете Processing) Софтуерът, който работи на лаптопа на робота, също е доста прост. Това е доста елементарен уеб-сървър (слушане на заявки за уеб страници от уеб браузър), малък потребителски интерфейс (за да го настрои) и възможности за предаване на командите, получени от уеб сървъра към Arduino. За да инсталирате бързо: (на прозорци)
- Изтеглете zip файла по-долу (06-WEBB-обработващ уеб сървър (windows exe).zip)
- Разархивирайте го и стартирайте.exe файла (_WEBB_WebServer_RobotComputer.exe)
За да редактирате в обработка:
- Изтеглете zip файла по-долу (06-WEBB-обработващ уеб сървър (изходни файлове).zip)
- Разархивирайте навсякъде на компютъра си.
- Отворете средата за обработка и отворете (_WEBB_WebServer_RobotComputer.pde)
За тестване:
- Стартирайте програмата.
- В полето № 1 ще има списък с наличните комуникационни портове на вашия компютър (щракнете върху този, към който е свързан вашият Arduino. (Вашият робот ще се потрепне няколко пъти, когато компютърът се свърже, и циановата точка ще се появи до избраната comm порт)
- В поле № 2 проверете дали вашият Arduino е свързан. Щракнете върху една от стрелките и се надяваме вашият робот да се движи в посоката на щракване за половин секунда.
- В поле #3 щракнете върху бутона "Старт", за да стартирате уеб сървъра.
- Отворете уеб браузър (на лаптопа на робота) и посетете https://127.0.0.1:12345/ControlPage.html (надявам се да се появи контролната уеб страница с бутони върху нея) -Подробности за това как да използвате тази страница в следващата стъпка -
Какво се случва:
- Уеб сървърът слуша порт 12345 за http заявки (това, което се изпраща, когато въведете адрес на уеб страница)
- Има два вида искания, на които отговаря.
1. Той изслушва „ControlPage.html“и ще изпрати контролната уеб страница 2. Той слуша заявки от формата „/request? Command = F & param1 = 100“(тези команди се анализират и изпращат до Arduino (този пример би довел до резултат в робота върви напред за 10 секунди) Приложение: (Кодът за WebServer)
/ * * Arduino контролиран уеб свързан робот (WEBB) - уеб сървър * За повече подробности посетете: https://www.oomlout.com/serb * * Поведение: Програмата слуша заявки за http (уеб страница) под формата * "/request ? command = F & param1 = 100 "и след това ги предава на * Arduino * Поддържаните команди - & aposF & apos - 70 - Напред * & aposB & apos - 66 - Назад * & aposL & apos - 76 - Вляво * & aposR & apos - 82 - Вдясно * & aposS & apos - 83 - Скорост * & aposX & - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Стоп * param1 & aposs - 0 - 255 (0 до 25,5 секунди) стойност * 100 милисекунди * * също обслужва контролната уеб страница на браузъра, ако поиска ControlPage.html * * Работа: 1. Щракнете върху Comm порта, към който е свързан вашият Arduino * 2. Използвайте тестовите бутони, за да видите дали вашият arduino слуша * (ще се движи в посоката, щракната за половин секунда) * 3. Щракнете върху Старт и вашият уеб сървър ще слушайте заявки * * * Лиценз: Това произведение е лицензирано под атрибута Creative Commons * tion-Share Alike 3.0 Unported License. За да * видите копие на този лиценз, посетете * https://creativecommons.org/licenses/by-sa/3.0/ * или изпратете писмо до Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * САЩ. * */import processing.serial. *; // импортирайте серийната библиотека, за да използвате Serial (за разговори с Arduino) import processing.net.*; // импортиране на нетната библиотека за използване на сървър (за разговори с интернет)/ * Променливи, свързани със сериен порт */int serialPortIndex = -1; // индексът на серийния порт, който използваме в Serial.list () listString commOptions; // Променлива, в която да се съхранява Serial.list (), така че няма нужда да анкетираме // серийните портове всеки път, когато искаме да я реферираме (анкетирането причинява // скок в сервомоторите на arduino) Serial serialPort; // Прави сериен порт адресируем в цялата скица/ * Графични и рендиращи свързани променливи */PFont шрифт; // прави шрифта публичен, така че трябва да се зареди само веднъж (Arial-72)/ * Мрежови променливи */Server wServer; // Сървърът, който обработва уеб заявки port port = 12345; // Портът, който сървърът слушаintcycleCount = 0; // Отчита броя на изпълненията на цикъла за изтегляне (използван за // анимиране на „работещия“текст)/ * Променливи на помощната програма */PImage bg; // Фоновото изображение в момента / WEBB-background.png/ * * Свързани с бутони променливи * (бутоните са изпълнени много грубо, ограничаващите се полета се съхраняват, а графичните и текстовите * се нарисуват върху фоновото изображение) т.е. преместването на променливите на бутоните няма да премести външния вид на бутоните */Button comm1; Бутон comm2; Бутон comm3; Бутон comm4; // Бутоните за избор на правилния сериен портButton up; Бутон вдясно; Бутон вляво; Бутон надолу; // Бутоните за посока за проверка дали роботът отговаряButton webServer; // Бутонът за стартиране на webServer/ * * задава всичко */void setup () {frameRate (5); // Забавя малко скицата, така че да не е толкова облагаща системата bg = loadImage ("WEBB-background.png"); // Зарежда фоновото изображение (съхранено в папката за скици) с размер (700, 400); // Задава размера на прозореца на скицата font = loadFont ("ArialMT-72.vlw"); // Зарежда шрифта, който ще използваме през тази скица commOptions = Serial.list (); // Опитва серийните портове и получава списък с наличните портове // (това се прави само веднъж, като предпазва робота от потрепване всеки път, когато & aposs // серийният порт е анкетиран) defineButtons (); // Определя ограничаващите полета за всеки фон на бутона (bg); // Боядисва фоновото изображение (това изображение има всички графики на бутоните върху него)}/ * Скицира основния цикъл */void draw () {if (cycleCount == 0) {//- извикване на рутинни процедури drawCommBox (); // Изчертава елементите в полето за комуникация (поле 1) drawTestBox (); // Изчертава всички елементи в тестовото поле (поле 2) drawWebServerBox (); // Изчертава всички елементи в кутията на WebServer (кутия 3)} //- извиква работните процедури pollWebServer (); // Анкетира уеб сървъра, за да види дали са дошли някакви заявки през мрежата} // ------------------------------ ---------------------------------------------- // Начало на чертежи (разделени само за да стане кодът по -приятен за четене)/ * * Програмата за актуализиране на изтегляне (изпълнява се всеки цикъл) за елементи в полето за комуникация (поле 1) */void drawCommBox () {fill (0, 0, 0); // Задайте запълването на черен textFont (шрифт, 15); // Задайте правилния размер на шрифта за (int i = 0; i 0) {running = running + ".";} // броят на точките се основава на cycCount if ((cycleCount /1)> 1) { running = running + ".";} if ((cycleCount / 1)> 2) {running = running + ".";} if ((cycleCount / 1)> 3) {cycCount = 0;} текст (работи, 520, 210); } цикълCount ++; // Всеки път през цикълCount се увеличава с един} // Процедури за край на чертежа // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // Процедури за стартиране на услугата/ * * mousePressed се извиква при всяко натискане на мишката, това * проверява дали мишката е вътре в някое от полетата за ограничаване на бутоните * и дали е подходящата рутина се нарича */void mousePressed () {if (comm1.pressed ()) { updateSerialPort (0);} // Промени в порта за комуникация при индекс 0 в Serial.list () else if (comm2.pressed ()) {updateSerialPort (1);} // Промени в порта на комуникация при индекс 1 в Serial.list () else if (comm3.pressed ()) {updateSerialPort (2);} // Промени в комуникационния порт при индекс 2 в Serial.list () else if (comm4.pressed ()) {updateSerialPort (3);} // Промени в порта за комуникация в индекс 3 в Serial.list () else if (up.pressed ()) {sendRobotCommand ("F", 5);} // Изпраща команда за преместване на робота напред за 0,5 секунди, ако if (left.pressed ()) {sendRobotCommand ("L", 5);} / /Изпраща команда за преместване на робота наляво за 0,5 секунди иначе ако (right.pressed ()) {sendRobotCommand ("R", 5);} // Изпраща команда за преместване на робота надясно за 0,5 секунди иначе ако (надолу. натиснат ()) {sendRobotCommand ("B", 5);} // Изпраща команда за преместване на робота назад за 0,5 секунди иначе ако (webServer.pressed ()) {startWebServer ();} // Стартира цикъла на webServerCount = 0; фон (bg); // Пребоядисва фоновото изображение (това изображение има всички графики на бутоните) draw ();}/ * * Извиква се след изпълнение, проверява сървъра дали има чакащи връзки * ако има връзка за изчакване, което той издърпва изважда заявката и я предава на подпрограмата parseRequest (String) *, за да премахне допълнителния текст. След това се изпраща към рутинната програма interpretRequest (String), за да * извика съответната рутина за действие (т.е. да изпрати инструкции на робота).* * Заявка се предава чрез въвеждане на адреса и порта на компютрите в уеб браузър * За локална машина "https://127.0.0.1:12345/request?command=F¶m1=100" * * Примерна заявка: * GET/request? команда = F & param1 = 100 HTTP/1.1 * Потребителски агент: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-САЩ) AppleWebKit/525.19 (KHTML, като Gecko) * Приемам: * // * * Приемам-Език: en-US, en * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Хост: 127.0.0.1:12345 * Връзка: Keep-Alive * * Пример за отговор (за обработена заявка) * HTTP/1.1 200 OK * Връзка: затваряне * Content-Type: text/html * * команда: F param1: 100 */void pollWebServer () {if (wServer! = null) {// Ако webServer изпълнява Client request = wServer.available (); // Зареждаме следващия клиент на ред в // сървъра (null, ако няма чакащи заявки) if (request! = Null) {// ако има процес на заявка, String fullRequest = request.readString (); // Съхранявайте съдържанието на заявката като низ String ip = request.ip (); // Съхраняваме ip адреса на клиентите като низ String requestString = parseRequest (fullRequest.toUpperCase ()); // Премахваме цялата допълнителна // информация, оставяйки само низа на заявката (текст след GET) // (преминава към главни букви, за да улесни тестването на низ) if (requestString.indexOf ("REQUEST?")! = -1) { // Проверява дали заявката има „REQUEST?“String reply = interpretRequest (requestString); // Изпраща заявката до интерпретатора на заявка request.write ("HTTP/1.1 200 OK / nСвързване: затвори / nContent-Type: text/html / n / n" + отговор); // Изпраща отговора 200, за да каже, че заявката е // обработена и низът „reply“като отговор wServer.disconnect (заявка); // Прекъсва връзката с клиента} else if (requestString.indexOf ("CONTROLPAGE")! = -1) {// Ако заявката е за контролната уеб страница String webPageArray = loadStrings ("WEBB -ControlPage.html"); // Зарежда контролната webPage от / data / WEBB-ControlPage.html // (зарежда се като масив от редове) String webPage = ""; // За да улесним редактирането, уеб страницата е оставена с // прекъсвания на редове, така че това за цикъл изважда тези редове за (int i = 0; i portIndex) {// ако предаденият portIndex е валиден индекс в Serial.list () // (т.е. не е опция три в списък от две) serialPortIndex = portIndex; // задаваме променливата serialPortIndex на новия индекс на серийния порт // (това се използва за показване на точката до активния порт)} if (serialPortIndex! = -1) {// проверете дали даден порт е избран някога преди (serialPort! = null) {serialPort.stop ();} // ако сериен порт вече се използва, спрете го, преди да заредите нов serialPort = new Serial (this, Serial.list () [serialPortIndex], 9600); // Създаване на нов сериен обект за комуникация с Arduino 9600 Baud}}/ * * Взема низ за заявка (например: "request? Command = F & param1 = 100") и ще премахне командите * и param1 и ще ги предаде на arduino (добавянето на допълнителни параметри или команди без arduino би било направено тук) */String interpretRequest (String requestString) {String returnValue = "OK"; // Подготвя променлива returnValue команда String; // Следващите три реда извличат стойността след "command =" // (допълнителният ред е в случай, че параметърът на командата е в // края на заявката и не е последван от & if (requestString.indexOf ("COMMAND =")! = -1) {команда = requestString.substring (requestString.indexOf ("COMMAND =") + "COMMAND =". Length ());} else {команда = "Z";} if (command.indexOf (" & ")! = -1) {команда = command.substring (0, command.indexOf (" & "));} else {команда = команда;} Низ param1String; // Следващите три реда извличат стойността след" param1 = "// (допълнителният ред е в случай, че командният параметър е в // края на заявката и не е последван от & 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); // Превръща низа param1 в цяло число sendRobotCommand (команда, param1); // Изпраща командата на рутината, която я изпраща на Arduino returnValue = "команда:" + команда + "param1:" + param1; // в момента само анализираната команда, но изпращаща // като html, така че форматирането може да бъде включено return returnValue;}/ * * Взема команда (в момента една буква) и параметър (един байт 0-255) и я изпраща на arduino *, който слуша и реастрира * Текущо поддържани команди * F - */void sendRobotCommand (Команда на низ, int param1) {println ("команда:" + команда + "време:" + param1); String checkString = "AAA"; if (serialPort! = null) {serialPort.write (checkString + команда); serialPort.write (байт (параметър1)); }} // Край на настройката/не много често наричани рутини // ----------------------------------- -------------------------------------------------- // Примерен бутон и код на RectButton от пример за processing.org с някои промени // направени най-вече за опростяване и премахване на анимацията при преобръщане // https://processing.org/learning/topics/buttons.html (2008-09-23) class Button {int x, y; int ширина, височина; Бутон (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; width = iwidth; височина = iheight; } булево натискане () {if (overRect ()) {връщане на истината; } else {return false;}} boolean overRect () {if (mouseX> = x && mouseX = y && mouseY <= y+височина) {return true; } else {return false; }}}
Стъпка 5: Софтуер - (уеб страница)
Е, почти приключихме, остава само да поговорим с вашия робот. За да говорите: (през локална мрежа -на windows-)
- Открийте локалния ip адрес на лаптопа. За да направите това, отидете на "Старт / Програми / Принадлежности / Команден ред" и когато се отвори прозорецът на терминала, въведете "ipconfig". Запишете „IP адрес“и се насочете към друг компютър във вашата локална мрежа.
- Отворете уеб браузър, въведете „https:// (ip компютър на робот): 12345/ControlPage.html
- Контролната уеб страница трябва да се зареди, в полето „IP адрес“въведете роботите компютри ip.
- Започнете да контролирате робота си.
За да говорите: (през интернет) Сега, когато го работите на местно ниво, говоренето по интернет е само на няколко крачки.
- (най -трудната стъпка) Настройване на пренасочване на портове - Вашият компютър трябва да слуша интернет, а не само локалната мрежа. За да направите това, трябва да кажете на вашия рутер да предаде определени заявки на компютъра, който контролира робота. Това е малко сложно и далеч надхвърля обхвата на тази инструкция. Ако обаче посетите PortForward.com, те ще ви дадат всичко, което трябва да знаете за конфигурирането на вашия рутер (трябва да препратите порт 12345 към вашия робот лаптоп)
- След това открийте вашия IP IP (посетете WhatIsMyIP.com)
- Най -накрая стартирайте скайп, настройте видеообаждане и накарайте всеки, с когото говорите, да посети „https:// (интернет IP): 12345/ControlPage.html“
- Въведете интернет IP в полето „IP адрес“на контролната уеб страница и вашият уеб свързан робот се управлява отдалеч.
Стъпка 6: Готово
Ами това е. Надявам се да се забавлявате, карайки робота си от далеч. Ако имате някакви проблеми със софтуера или хардуера, не се колебайте да оставите коментар и аз ще се опитам да ви помогна. Ако искате да проверите още изчистени проекти, опитайте да посетите: oomlout.com
Препоръчано:
Направете уеб-радио за по-малко от $ 15: 4 стъпки (със снимки)
Направете уеб-радио за по-малко от $ 15: И така, реших да направя проект, който отлагах за известно време: Домашно, напълно функционално уеб радио, в комплект с усилвател и високоговорител, за под 15 €!. Можете да промените между предварително дефинирани стрийминг радиостанции с натискане на бутон и можете да
Направете фантастична кутия за бижута, използвайки Fusion: 7 стъпки (със снимки)
Направете фантастична кутия за бижута, използвайки Fusion: Това е едно от най -момичешките неща, които направих с Fusion. Използвал съм стъкло като материал, тъй като ще ми помогне да прозря. Знам болката от търсенето на бижута;)
Направете персонализиран изпитателен стенд на Arduino, използвайки навиване на кабели: 7 стъпки (със снимки)
Направете персонализирана тестова скамейка на Arduino, използвайки навиване на кабели: Тази инструкция ще ви покаже лесен начин за свързване на Arduino Nano към различни платки за прекъсване на печатни платки. Този проект възникна по време на моето търсене на ефективен, но неразрушителен начин за свързване на няколко модула. Имах пет модула, които исках да
Свързан към мрежата SMART LED анимационен часовник с уеб базиран контролен панел, синхронизиран сървър на времето: 11 стъпки (със снимки)
Свързан с мрежата SMART LED анимационен часовник С уеб-базиран контролен панел, синхронизиран сървър на времето: Историята на този часовник датира от далечен път-повече от 30 години. Баща ми беше пионер в тази идея, когато бях само на 10 години, много преди революцията на светодиодите - тогава, когато светодиодите бяха 1/1000 от яркостта на техния ослепяващ блясък. Истина
Направете своя собствена приятна чанта за EeePC / Нетбук за около $ 8 (и спестете $ 91 вместо да купувате от Redmaloo): 5 стъпки (със снимки)
Направете своя собствена приятна торбичка за EeePC / нетбук за около $ 8 (и спестете $ 91 вместо да купувате от Redmaloo): Тази инструкция ще ви покаже как да направите свой собствен, много хубав и добре изглеждащ лаптоп или още по -добра чанта за нетбук. Той ще съхранява вашия нетбук, ще ви даде подложка за мишка, усещането да използвате нещо уникално, хубаво и ръчно изработено и усещането за