Агуулгын хүснэгт:

Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан): 6 алхам (зурагтай)
Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан): 6 алхам (зурагтай)

Видео: Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан): 6 алхам (зурагтай)

Видео: Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан): 6 алхам (зурагтай)
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Долдугаар сарын
Anonim
Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан)
Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан)
Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан)
Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан)
Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан)
Вэбэд холбогдсон робот хийх (ойролцоогоор 500 доллараар) (Arduino болон Netbook ашиглан)

Энэхүү зааварчилгаа нь өөрийн вэб холболттой роботыг хэрхэн бүтээхийг танд харуулах болно (Arduino микроконтроллер ба Asus eee pc ашиглан). Та яагаад Вэбэд холбогдсон роботыг хүсч байна вэ? Мэдээж тоглох. Роботыг Skype болон вэб хөтөч (хяналтын компьютер дээр суулгах зүйл байхгүй) ашиглан өрөөнөөсөө эсвэл улс орон даяар жолоодоорой. Үүний дараа? Програм хангамжийг ухаж, хүссэнээрээ тохируулж, GPS -ийг нэмж, хаана явж байгаагаа газрын зураг дээрээс харах, байшингийнхаа температурын градиентийг хэмжих температур мэдрэгч, эсвэл вэб дээрх хяналтаа нэмэхийн тулд sonar мэдрэгчийг нэмж оруулаарай. жолооч нар таарч болно, чадахгүй. Онцлог:

  • Хямдхан - (хэрэв та бүх эд ангиудыг шинээр худалдаж авбал ~ 500 доллар, хэрэв та саванд хийж ухвал хамаагүй хямд болно)
  • Роботыг ажиллуулсны дараа зөвхөн вэб хөтөч шаардлагатай болно (мөн хэрэв та хаашаа явж байгаагаа харахыг хүсвэл Skype).
  • Нээлттэй эх сурвалж, амархан дасан зохицох боломжтой - (Arduino микро хянагч ашигладаг, вэб серверийн боловсруулалт, бүх програм хангамжийг Линукс дээр ажиллуулах боломжтой (бүх кодыг тайлбарлах замаар үсрэх, өөрчлөхөд хялбар болгодог))
  • Модульчлагдсан дизайн (бүрэн нэгдсэн систем биш, хэрэв та өөр видео хурлын үйлчилгээ ашиглахыг хүсвэл санаа зовох зүйлгүй, эсвэл танд Arduino гэхээсээ илүү үндсэн тамга байгаа бол жижигхэн кодыг оруулаад оруулаарай)

Миний Вэб холбосон роботыг гал тогооноос хөөж гаргасан бичлэгийг энд оруулав.

Алхам 1: эд анги, багаж хэрэгсэл

Эд анги, багаж хэрэгсэл
Эд анги, багаж хэрэгсэл

Зөвхөн цөөн хэдэн хэсэг шаардлагатай болно: Робот: Arduino Controlled Servo Robot - (SERB) ($ 175 @ oomlout.com) эсвэл (өөрөө хийх)

Arduino микро хянагчийг тархи болгон ашигладаг нээлттэй эх робот

(arduino -тэй хос серво роботын платформыг ашиглаж болно (1 -р сонголт) (хэрэв өөр сонголт байвал надад мэдэгдээрэй) Компьютер: Asus eee PC 4G (280 доллар) (@Best Buy)

Бага оврын хямд үнэтэй зөөврийн компьютер нь энэ зорилгоор төгс төгөлдөр юм

(Ажиллах боломжтой ямар ч зөөврийн компьютер (эсвэл хэрэв та хөвчтэй ажиллахыг хүсвэл ширээний компьютер) ашиглаж болно) Зөөврийн компьютерын ширээ: Laser Cut Acrylic (25 доллар (@ oomlout)) эсвэл (өөрийн 3 -р алхамыг бүтээх)

Зөөврийн компьютер дээр суух ширээ өгөхийн тулд (SERB) бэхэлсэн цөөн хэдэн нийлэг ширхэг

Самар ба боолт: (гэрийн агуулахаас авах боломжтой)

  • 3mm x 10mm боолт (x4)
  • 3mm x 15mm боолт (x4)
  • 3 мм самар (x8)

Алхам 2: Хэсэг хайчлах, угсрах

Зүсэх хэсэг ба угсралт
Зүсэх хэсэг ба угсралт
Зүсэх хэсэг ба угсралт
Зүсэх хэсэг ба угсралт
Зүсэх хэсэг ба угсралт
Зүсэх хэсэг ба угсралт
Зүсэх хэсэг ба угсралт
Зүсэх хэсэг ба угсралт

Зөөврийн компьютерын ширээ авах гурван сонголт байдаг. Сонголт 1: (oomlout.com дээрээс худалдан авах)

лазер хайчлах ширээний эд анги, шаардлагатай тоног төхөөрөмжийг oomlout дээрээс 25 доллараар авах боломжтой (энд)

Сонголт 2: (Өөрийн лазер таслагч эсвэл Ponoko.com дээр хайчлах)

  • Доорх файлыг татаж авах (03-WEBB-Acrylic Parts.cdr эсвэл 03-WEBB-Acrylic Parts (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)

Arduino -д шинээр суралцаж буй хүмүүсийн хувьд эхлээд Arduino.cc дээрээс эхлэх гайхалтай гарын авлагаас Arduino дээр ажилладаг програм хангамжийг үзээрэй. Энэ бол маш энгийн програм бөгөөд Arduino нь өгөгдөл дамжуулах портыг хянадаг бөгөөд 5 байтын урттай яриа юм.

  • Байт 1-3 ("AAA" байтуудыг шалгана уу)
  • Byte 4 Command (arduino -д юу хийхийг хэлж өгнө) (Дэмжигдсэн тушаалууд 'F' - Урагш, 'B' - Арагш, 'L' - Зүүн, 'R' - Баруун, 'S' - Хурд, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Зогсоох)
  • Байт 5 параметр - Хөдөлгөөнт командуудын хувьд үүнийг хугацааны интервал (Параметр * 100 мс), хурдны хувьд 0-100 хүртэлх хувиар тушаана.

Кодыг сайтар тайлбарлаж өгсөн бөгөөд энэ хүрээнд нэмэлт команд нэмэх нь хялбар байх ёстой.

  • Хавсаргасан зип файлыг татаж аваарай. (05-WEBB-Arduino Code.zip)
  • Arduino Sketch лавлах руугаа задлаарай. (анхдагч: Миний баримт бичиг / Arduino)
  • Arduino хөгжүүлэх орчноо нээж, Arduino руугаа байршуулна уу.

Хуулбарлах, буулгах

  • Кодыг доороос нь хуулна уу.
  • Arduino хөгжүүлэлтийн орчинд оруулна уу.
  • Arduino руугаа байршуулна уу.

Хавсралт: Arduino програм

/ * * Arduino Controlled Web Connected Robot (WEBB) - Цуваа хост * Дэлгэрэнгүй мэдээллийг https://www.oomlout.com/serb * хаягаар орж үзнэ үү 88, 88, (COMMAND), (TIME) * Дэмжигдсэн командууд - & aposF & apos - 70 - Урагш * & aposB & apos - 66 - Буцах * & aposL & apos - 76 - Зүүн * & aposR & apos - 82 - Баруун * & aposS & apos - 83 - Хурд * & aposX & apos - 88 - SetSpeed * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Дэмжигдсэн цаг - 0 - 255 (0 - 25.5 секунд) утга * 100 миллисекунд * sp * Утас: Баруун Servo дохио - зүү 9 * Зүүн Servo дохио - зүү 10 * * Лиценз: Энэ бүтээл нь Creative Commons * Attribution-Share Alike 3.0 Unported лицензийн дагуу лицензлэгдсэн болно. * Энэхүү лицензийн хуулбарыг үзэхийн тулд * https://creativecommons.org/licenses/by-sa/3.0/ * хаягаар зочлох эсвэл Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * АНУ. * */// --------------------------------------------- ---------------------------- // ARDUINO SERIAL SERVER PREAMBLE-ийн эхлэл // Тушаал бүрт харгалзах тогтмолуудыг тодорхойлох (мөн ascii кодын дугаар))#FORWARD 70 // F#BACKWARD 66 тодорхойлох // B#LEFT 76 тодорхойлох // L#RIGHT 82 // R#SETSPEED 83 тодорхойлох // S#STOP 67 тодорхойлох // C#SETSPEEDLEFT 88 // X тодорхойлох #define SETSPEEDRIGHT 89 // Y/ *Гурван чек байт (роботыг санамсаргүй цуваа *өгөгдөлд хариу өгөхгүй байхад ашигладаг) одоогоор "AAA" */#define checkByte1 65 // "A" #define checkByte2 65 // "A "#define checkByte3 65 //" A "// -------------------------------------- ------------------------------------ // ARDUINO ХЯНАЛТТАЙ СЕРВО РОБОТЫН ЭХЛЭЛ (SERB) PREAMBLE#include #define LEFTSERVOPIN 10 // Зүүн талын сервог холбосон зүү#тодорхойлох RIGHTSERVOPIN 9 // Баруун талын servo нь Servo leftServo руу холбогдсон зүү; Servo rightServo; int leftSpeed = 50; // leftServo роботуудын хурдыг эзэмшдэг // 0 -ээс 100int хүртэлх баруун талын хурд = 100; // роботуудын хурдыг зөв байлгадаг Серво // 0-ээс 100 хүртэлх хувь // ARDUINO-ийн хяналттай SERVO ROBOT (SERB) ТӨГСГӨЛИЙН ТӨГСГӨЛ // ------------------- -------------------------------------------------- ----- // Бүгдийг ажиллуулж, ажиллуулах void setup () {Serial.begin (9600); // serbSetup () цуваа портыг эхлүүлнэ; // бүх шаардлагатай // тээглүүрийн төлөвийг тогтоож, эскиздээ сервос нэмж оруулна} // Үндсэн програм loopvoid loop () {serbPollSerialPort (); // цуваа порт руу тасралтгүй харна // хэрэв өгөгдөл байвал түүнийг боловсруулдаг} // ------------------------------ ----------------------------------------- // ARDUINO SERIAL SERVER ROUTINES-ийг эхлүүлэх/ * * Arduino & aposs цуваа порт руу тушаасан командуудыг боловсруулдаг */void serbPollSerialPort () {int dta; // сериал байтыг хадгалах хувьсагч бол (Serial.available ()> = 5) {// хэрэв 5 байт буферт байгаа бол (урт нь бүрэн хүсэлт) 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 (command, param1); // задлан шинжлэх хүсэлтийг түүнд илгээнэ); саатал (param1 * 100); goStop ();} // if else if if (command == BACKWARD) {goBackward (); саатал (param1 * 100); goStop ();} // if backward else if if (command == LEFT) {goLeft (); саатал (param1 * 100); goStop ();} // хэрэв өөрөөр үлдээвэл if (command == RIGHT) {goRight (); саатал (param1 * 100); goStop ();} // хэрэв зөв бол if (command == SETSPEED) {setSpeed (param1);} // if if another speed if if (command == STOP) {goStop ();} // if else else if (command == SETSPEEDLEFT) {setSpeedLeft (param1);} // хэрэв зүүн хурдыг өөрөөр тохируулбал (command == SETSPEEDRIGHT) {setSpeedRight (param1);} // хэрэв зөв хурдыг өөрөөр тохируулбал {// хэрэв танигдаагүй команд байвал жаахан шиммэй хийгээрэй. goLeft (); саатал (150); goRight (); саатал (150); goStop (); }} // ---------------------------------------------- -------------------------- // ARDUINO CONTROLLED SERVO ROBOT (SERB) ROUTINES-ийн START/ * * нь таны SERB-ийг ашиглан таны arduino-ийг тохируулдаг. орсон журам*/void serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, OUTPUT); // зүүн серво дохионы зүүг // гаралтын pinMode (RIGHTSERVOPIN, OUTPUT) болгож тохируулдаг; // зөв servo дохионы зүүг тохируулна // leftServo.attach (LEFTSERVOPIN) гаргах; // зүүн servo -ийг баруун тийш хавсарганаServo.attach (RIGHTSERVOPIN); // зөв servo servo-г хавсаргана goStop ();}/ * * роботыг 0- (зогссон) ба 100- (бүрэн хурд) хооронд тохируулна * ТАЙЛБАР: хурд нь одоогийн хурдыг өөрчлөхгүй, та хурдыг өөрчлөх ёстой * дараа нь нэг рүү залгаарай. өөрчлөлт хийхээс өмнө явах аргуудын талаар.*/ 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 -аас их байвал // болгох (хэрэв newSpeed <= 0) {newSpeed = 0;} // бол хурд 0 -ээс бага бол // болгох энэ нь 0 баруун хурд = шинэ хурд * 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-ийн хяналттай SERVO ROBOT (SERB) ROUTINES-ийн төгсгөл // ---------------------------- -----------------------------------------------

Алхам 4: Програм хангамж - Робот зөөврийн компьютер (WebServer)

Програм хангамж - Робот зөөврийн компьютер (WebServer)
Програм хангамж - Робот зөөврийн компьютер (WebServer)

(Боловсруулалт бол нээлттэй эхийн програмчлалын хэл, орчин бөгөөд үүнийг эхлүүлэхэд маш хялбар байдаг. Дэлгэрэнгүй мэдээллийг Processing -ээс үзнэ үү) Робот зөөврийн компьютер дээр ажилладаг програм хангамж нь бас маш энгийн. Энэ бол маш энгийн вэб сервер (вэб хөтчийн вэб хуудасны хүсэлтийг сонсох), жижиг хэрэглэгчийн интерфэйс (үүнийг тохируулах), вэб серверээс хүлээн авсан тушаалуудыг Arduino руу дамжуулах хэрэгсэл юм. (цонхнууд дээр)

  • Доорх zip файлыг татаж авна уу (06-WEBB-Processing Webserver (windows exe).zip)
  • Үүнийг задлаад.exe файлыг ажиллуулна уу (_WEBB_WebServer_RobotComputer.exe)

Боловсруулах явцад засахын тулд:

  • Доорх zip файлыг татаж авах (06-WEBB-боловсруулах вэбсервер (эх файлууд).zip)
  • Компьютерийн аль ч хэсэгт задлах.
  • Боловсруулах орчныг нээгээд (_WEBB_WebServer_RobotComputer.pde) нээнэ үү.

Шалгах:

  • Хөтөлбөрийг ажиллуулна уу.
  • 1 -р хайрцагт таны компьютер дээрх боломжтой портуудын жагсаалт байх болно (таны Arduino холбосон холбоос дээр дарна уу) холбооны порт)
  • №2 хайрцагт таны Arduino холбогдсон эсэхийг шалгаарай. Сумны аль нэг дээр дарна уу, таны робот дарагдсан чиглэлд хагас секундын турш хөдөлнө гэж найдаж байна.
  • 3 -р талбарт вэб серверийг эхлүүлэхийн тулд "Эхлүүлэх" товчийг дарна уу.
  • Вэб хөтөч нээж (робот зөөврийн компьютер дээр) https://127.0.0.1:12345/ControlPage.html хаягаар зочилно уу (товчлуур бүхий хяналтын вэб хуудас гарч ирнэ гэж найдаж байна) -Дараагийн алхамд энэ хуудсыг хэрхэн ашиглах талаар дэлгэрэнгүй мэдээлэл авна уу. -

Юу болоод байна:

  • Вэб сервер нь http хүсэлтийн 12345 портыг сонсдог (вэб хуудасны хаягийг бичихэд юу илгээгддэг)
  • Түүний хариулдаг хоёр төрлийн хүсэлт байдаг.

1. Энэ нь "ControlPage.html" -г сонсдог бөгөөд хяналтын вэб хуудсыг илгээх болно. ""/Request? Command = F & param1 = 100 "маягтын хүсэлтийг сонсдог (эдгээр тушаалуудыг задлан шинжилж Arduino руу илгээдэг (энэ жишээ нь үр дүнгээ өгөх болно) робот 10 секундын турш урагшлах болно) Хавсралт: (WebServer -ийн код)

/ * * Arduino Controlled Web Connected Robot (WEBB) - Webserver * Дэлгэрэнгүй мэдээллийг эндээс үзнэ үү: https://www.oomlout.com/serb * * Зан төлөв: Хөтөлбөр нь http (вэб хуудас) хүсэлтийг * "/хүсэлт хэлбэрээр сонсдог. ? 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 - Stop * param1 & aposs - 0 - 255 (0 -ээс 25.5 секундын) утга Үйлдэл: 1. Arduino -ийн холбогдсон коммандын порт дээр дарна уу * 2. Туршилтын товчлуурыг ашиглан таны arduino сонсож байгаа эсэхийг шалгаарай * (хагас секундын турш дарагдсан чиглэлд шилжих болно) * 3. Эхлүүлэх дээр дарахад таны вэб сервер ажиллах болно. хүсэлтийг сонсох * * * Лиценз: Энэ бүтээл нь Creative Commons * Attribu дагуу лицензлэгдсэн болно tion-Share Alike 3.0 Unported лиценз. * Энэхүү лицензийн хуулбарыг үзэхийн тулд * https://creativecommons.org/licenses/by-sa/3.0/ * хаягаар зочлох эсвэл Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * АНУ. * */импорт боловсруулах. цуврал. *; // Serial (Arduino -той ярилцах) ашиглахын тулд цуваа номын санг импортлох.net.net.*; // серверийг ашиглахын тулд цэвэр номын санг импортлох (интернетээр ярих)/ * Цуваа порттой холбоотой хувьсагчид */int serialPortIndex = -1; // бидний ашиглаж байгаа цуваа портын индекс Serial.list () listString commOptions; // Serial.list () - ийг хадгалах хувьсагч, ингэснээр санал асуулга явуулах шаардлагагүй болно // цуваа портуудыг бид үүнийг дахин шинэчлэх болгонд (санал асуулга нь arduino servos дээр // үсрэлт үүсгэдэг) Serial serialPort; // Цуваа портыг энэ ноорог дээр хаягаар оруулах боломжтой болгодог/ * График ба рэндэрлэхтэй холбоотой хувьсагчид */PFont фонт; // фонтыг олон нийтэд нээлттэй болгодог тул үүнийг зөвхөн нэг удаа ачаалах шаардлагатай (Arial-72)/ * Сүлжээтэй холбоотой хувьсагчид */Server wServer; // Вэб хүсэлтийг ажиллуулдаг сервер порт = 12345; // Серверийн сонсох порт циклCount = 0; // Татах давталтыг хэдэн удаа гүйцэтгэхийг тоолно ("ажиллаж байгаа" текстийг // амьдруулахад ашиглагддаг)/ * Utility Variables */PImage bg; // Одоогийн байдлаар дэвсгэр зураг / WEBB-background.png/ * * Товчтой холбоотой хувьсагчууд * (товчлууруудыг маш ойролцоогоор хэрэгжүүлдэг, хязгаарлах хайрцгуудыг хадгалж, арын зурган дээр график болон текстийг * зурдаг) өөрөөр хэлбэл. хөдөлж буй товчлуурын хувьсагчид товчлуурын төрхийг хөдөлгөхгүй болно */Button comm1; Comm2 товчлуур; Comm3 товчлуур; Comm4 товчлуур; // Зөв цуваа портыг сонгох товчлуурууд; Зөв товчлуур; Зүүн товчлуур; Товчлуур; // Робот хариу өгөх эсэхийг шалгах чиглэлийн товчлуурууд Button webServer; // webServer/ * * эхлүүлэх товчлуур нь бүх зүйлийг тохируулдаг */void setup () {frameRate (5); // Ноорогыг бага зэрэг удаашруулдаг тул bg = loadImage ("WEBB-background.png") системд татвар ногдуулдаггүй; // Арын зургийг (ноорог хавтсанд хадгалагдсан) хэмжээг ачаална (700, 400); // Ноорог цонхны хэмжээг тохируулна фонт = loadFont ("ArialMT-72.vlw"); // Бидний ашиглах фонтыг энэ ноорогоор ачаална commOptions = Serial.list (); // Цуваа портуудаас санал асуулга авч, бэлэн байгаа портуудын жагсаалтыг авна // (үүнийг ганц удаа хийснээр роботыг эргүүлэх бүрдээ саатуулахаас хамгаална & цуваа портоос санал асуулга авах болно) defineButtons (); // Товчлуурын дэвсгэр бүрийн хувьд хязгаарлах хайрцгийг тодорхойлдог (bg); // Арын дэвсгэр зургийг будна (энэ зураг дээр бүх товчлуурын графикууд байна)}/ * Үндсэн ноорог */void draw () {if (cycleCount == 0) {//- дуудлагын зурах процедур drawCommBox (); // Commel хайрцагт эмелментийг зурна (хайрцаг 1) drawTestBox (); // Туршилтын хайрцаг дахь бүх элементүүдийг зурна (хайрцаг 2) drawWebServerBox (); // WebServer Box дахь бүх элементүүдийг зурна (хайрцаг 3)} //- дуудлагын ажлын горимыг pollWebServer (); // Сүлжээгээр дамжуулан ямар нэгэн хүсэлт ирсэн эсэхийг мэдэхийн тулд вэб серверээс санал асуулга авдаг // // ------------------------------ ---------------------------------------------- // Эхлэл горимыг зурах (кодыг уншихад илүү гоё болгохын тулд хуваана уу)/ * * Коммандын хайрцагт байгаа зүйлсийн сугалааны шинэчлэлтийн горим (мөчлөг бүрт хийгддэг) */void drawCommBox () {fill (0, 0, 0); // Дүүргэлтийг хар textFont болгон тохируулна уу (фонт, 15); // (int i = 0; i 0) {running = running + ".";} // үсгийн фонтыг зөв хэмжээгээр тохируулаарай, хэрэв цэгийн тоо нь циклийн тоон дээр үндэслэгддэг бол ((cycleCount /1)> 1) { ажиллаж байгаа = ажиллаж байгаа "". ";} if ((cycleCount / 1)> 2) {ажиллаж байгаа = ажиллаж байгаа" ".";} if ((cycleCount / 1)> 3) {cycleCount = 0;} текст (ажиллаж байгаа, 520), 210); } cycleCount ++; // Цикл тоолох тоолуур бүр нэгээр нэмэгддэг} // Төгсгөлийн горимууд // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // Үйлчилгээний горимын эхлэл/ * * mousePressed нь хулганы товчлуур дарагдах бүрт дуудагддаг * энэ нь хулгана товчлуурыг хязгаарлах хайрцгуудын аль нэгэнд байгаа эсэхийг шалгадаг * бөгөөд энэ нь тохирох горимыг */void mousePressed () {if (comm1.pressed ()) { updateSerialPort (0);} // Serial.list () дахь 0 индекс дэх харилцаа холбооны портод өөрчлөлт орвол өөрөөр хэлбэл (comm2.pressed ()) {updateSerialPort (1);} // Цуврал дахь индекс 1 дэх холбооны портод өөрчлөлт орно..list () else if (comm3.pressed ()) {updateSerialPort (2);} // Serial.list () -д индекс 2 дахь коммандын портод өөрчлөлт орвол else (comm4.pressed ()) {updateSerialPort (3);} // Serial.list () дахь индекс 3 дахь коммандын портод өөрчлөлт орвол өөр (up.pressed ()) {sendRobotCommand ("F", 5);} // роботыг 0.5 -аар урагшлуулах команд илгээнэ. өөр секунд бол (left.pressed ()) {sendRobotCommand ("L", 5);} / /Хэрэв роботыг зүүн тийш шилжүүлэх командыг өөр 0.5 секундын турш илгээдэг бол (right.pressed ()) {sendRobotCommand ("R", 5);} // Хэрэв (доош) бол роботыг 0.5 секундын турш баруун тийш шилжүүлэх команд илгээнэ. дарагдсан ()) {sendRobotCommand ("B", 5);} // Хэрэв (webServer.pressed ()) {startWebServer ();} // webServer -ийн мөчлөгийг эхлүүлдэг бол роботыг 0.5 секундын турш ухраах тушаал илгээдэг. 0; дэвсгэр (bg); // Арын зургийг дахин будна (энэ зураг дээр бүх товчлуурын графикууд байна) draw ();}/ * * Гүйцэтгэх үед дуудагдвал Серверийг хүлээж буй холболт байгаа эсэхийг шалгадаг * Хэрэв хүлээгдэж буй холболт байгаа бол татаж авдаг хүсэлтийг гаргаад нэмэлт текстийг арилгахын тулд parseRequest (String) * горимд шилжүүлнэ. Үүнийг дараа нь interpretRequest (String) горим руу илгээж * зохих үйлдлийн горимыг дуудах (өөрөөр хэлбэл робот руу заавар илгээх).* * Компьютерийн хаяг, портыг вэб хөтөч рүү оруулах замаар хүсэлтийг дамжуулдаг * Орон нутгийн машинд зориулсан "https://127.0.0.1:12345/request?command=F&param1=100" * * Жишээ хүсэлт: * АВАХ/хүсэлт? command = F & param1 = 100 HTTP/1.1 * Хэрэглэгч-Агент: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) 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 * Холболт: Амьд байлгах * * Жишээ хариулт (боловсруулсан хүсэлтийн хувьд) * HTTP/1.1 200 OK * Холболт: хаах * Агуулгын төрөл: текст/html * * тушаал: F param1: 100 */void pollWebServer () {if (wServer! = null) {// Хэрэв вэб сервер ажиллаж байгаа Client request = wServer.available (); // Дараагийн үйлчлүүлэгчийг // сервер дээр дарааллаар нь ачаална уу (хэрэв хүсэлтийг хүлээж авахгүй бол null) if (request! = Null) {// хэрэв хүсэлтийн процесс байгаа бол String fullRequest = request.readString (); // Хүсэлтийн агуулгыг string хэлбэрээр хадгалах String ip = request.ip (); // Үйлчлүүлэгчдийн IP хаягийг string хэлбэрээр хадгалах String requestString = parseRequest (fullRequest.toUpperCase ()); // Бүх нэмэлт // мэдээллийг хасах нь зөвхөн хүсэлтийн мөрийг үлдээнэ (GET -ийн дараах текст) // (мөрийн туршилтыг хөнгөвчлөхийн тулд том үсгээр шилждэг) if (requestString.indexOf ("REQUEST?")! = -1) { // Хүсэлтэд "ХҮСЭЛТ БАЙХ ВЭ?" Байгаа эсэхийг шалгана. String reply = interpretRequest (requestString); // Хүсэлтийг тайлбарлагч хүсэлт рүү илгээдэг request.write ("HTTP/1.1 200 OK / nХолболт: хаах / nАгуулга-Төрөл: текст/html / n / n" + хариулт); // Хүсэлтийг // зохицуулж, "хариулах" мөрийг wServer.disconnect (хүсэлт) гэж хэлэхийн тулд хариултыг 200 руу илгээдэг; // Үйлчлүүлэгчийг салгана} else if if (requestString.indexOf ("CONTROLPAGE")! = -1) {// Хэрэв хүсэлт нь вэб хуудсыг хянах String webPageArray = loadStrings ("WEBB -ControlPage.html") бол; // Хяналтын вэб хуудсыг / data / WEBB-ControlPage.html // -ээс ачаалж байна (шугамын массив хэлбэрээр ачаалагдсан) String webPage = ""; // Вэб хуудсыг засварлах ажлыг хөнгөвчлөхийн тулд // мөр тасарсан хэвээр үлдсэн тул давталтын хувьд эдгээр мөрүүдийг (int i = 0; i portIndex) {// хэрэв дамжуулсан portIndex нь Serial.list доторх хүчинтэй индекс бол () // (өөрөөр хэлбэл хоёр жагсаалтын гурав дахь сонголт биш) serialPortIndex = portIndex; // serialPortIndex хувьсагчийг шинэ serialport индекс болгон тохируулна // (энэ нь идэвхтэй портын хажууд байгаа цэгийг харуулахад ашиглагддаг)} 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) {command = requestString.substring (requestString.indexOf ("COMMAND =") + "COMMAND =". Length ());} else {command = "Z";} if (command.indexOf (" & ")! = -1) {command = command.substring (0, command.indexOf (" & "));} else {command = command;} String param1String; // Дараагийн гурван мөрөөс" param1 = // (requestString.indexOf ("PARAM1 =") + "PARAM1 =". length ());} өөр {param1String = "0";} if (param1String.indexOf ("&")! = -1) {param1String = param1String.substring (0, param1String.indexOf ("&"));} өөр {param1String = param1String;} int param1 = Integer.parseInt (param1String); // param1 String -ийг sendRobotCommand бүхэл тоо (тушаал, param1); // тушаалыг Arduino returnValue = "command:" + command + "param1:" + param1; // одоогоор зөвхөн задлан шинжлэх команд байгаа боловч html хэлбэрээр // илгээж байгаа тул форматыг буцаах returnValue;}/ * * Команд (одоогоор нэг үсэг) болон параметр (нэг байт 0-255) авч түүнийг рүү илгээдэг. сонсох, дахин унших arduino * Одоогийн байдлаар дэмжигддэг командууд * F - */void sendRobotCommand (String command, int param1) {println ("command:" + command + "time:" + param1); String checkString = "AAA"; if (serialPort! = null) {serialPort.write (checkString + тушаал); serialPort.write (байт (param1)); }} // Тохиргооны төгсгөл/ердийнх шиг нэрлэгддэггүй // ----------------------------------- -------------------------------------------------- // Жишээ товчлуур ба RectButton кодыг боловсруулах явцад зарим өөрчлөлт орсон // жишээ нь анимацийг хялбарчлах, арилгахад зориулагдсан болно // https://processing.org/learning/topics/buttons.html (2008-09-23) ангийн товчлуур {int x, y; int өргөн, өндөр; Товчлуур (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; өргөн = өргөн; өндөр = өндөр; } boolean дарагдсан () {if (overRect ()) {return true; } else {return false;}} boolean overRect () {if (mouseX> = x && mouseX = y && mouseY <= y+height) {return true; } өөр {return false; }}}

Алхам 5: Програм хангамж - (вэб хуудас)

Програм хангамж - (вэб хуудас)
Програм хангамж - (вэб хуудас)
Програм хангамж - (вэб хуудас)
Програм хангамж - (вэб хуудас)
Програм хангамж - (вэб хуудас)
Програм хангамж - (вэб хуудас)

Таны роботтой ярилцах л үлдлээ. Ярилцах: (дотоод сүлжээгээр -цонхон дээр)

  • Зөөврийн компьютерын локал IP хаягийг олж мэдэх. Үүнийг хийхийн тулд "Start / Programs / Accesories / Command Prompt" руу очоод терминалын цонх нээгдэхэд "ipconfig" гэж бичнэ үү. "IP хаяг" гэж бичээд өөр сүлжээнд байгаа өөр компьютер руу очно уу.
  • Вэб хөтөчийг нээгээд "https:// (робот компьютерийн ip): 12345/ControlPage.html бичнэ үү
  • Хяналтын вэб хуудас ачаалагдах ёстой бөгөөд "IP хаяг" талбарт робот компьютеруудын IP хаягийг бичнэ үү.
  • Роботыг удирдаж эхэл.

Ярилцах: (интернэтээр) Орон нутагт ажиллаж байгаад интернэтээр ярихад хэдхэн алхам л үлдээд байна.

  • (хамгийн хэцүү алхам) Порт дамжуулах тохиргоог хийх - Таны компьютер зөвхөн дотоод сүлжээнээс илүү интернет сонсох хэрэгтэй. Үүнийг хийхийн тулд та чиглүүлэгчдээ тодорхой хүсэлтийг робот хянадаг компьютерт дамжуулахыг хэлэх хэрэгтэй. Энэ нь жаахан төвөгтэй бөгөөд энэхүү зааварчилгааны хамрах хүрээнээс хол давсан байна. Гэсэн хэдий ч хэрэв та PortForward.com сайтад зочлох юм бол тэд таны чиглүүлэгчийг тохируулах талаар шаардлагатай бүх зүйлийг өгөх болно (та 12345 портыг робот зөөврийн компьютер дээрээ дамжуулах хэрэгтэй)
  • Дараа нь интернетийн IP хаягаа олж мэдээрэй (WhatIsMyIP.com хаягаар зочилно уу)
  • Эцэст нь Skype тохиргоог хийж видео дуудлага хийж, ярьж буй хүнтэйгээ "https:// (интернет IP): 12345/ControlPage.html" руу зочлоорой.
  • Хяналтын вэб хуудсан дээрх "IP хаяг" талбарт интернетийн IP хаягийг оруулна уу.

Алхам 6: Дууссан

Дууссан
Дууссан

За ингээд боллоо. Та роботыг холоос жолоодох цагийг хөгжилтэй өнгөрүүлж байна гэж найдаж байна. Хэрэв танд програм хангамж, техник хангамжтай холбоотой ямар нэгэн асуудал байвал сэтгэгдлээ үлдээгээрэй, би танд туслахыг хичээх болно. Хэрэв та илүү цэвэр төслүүдийг үзэхийг хүсвэл oomlout.com руу зочилж үзээрэй.

Зөвлөмж болгож буй: