Мазмұны:
- 1 -қадам: Бөлшектер мен құралдар
- 2 -қадам: кесектерді кесу және құрастыру
- 3 -қадам: Бағдарламалық қамтамасыз ету - (Arduino)
- 4 -қадам: Бағдарламалық қамтамасыз ету - роботтық ноутбук (WebServer)
- 5 -қадам: Бағдарламалық қамтамасыз ету - (веб -бет)
- 6 -қадам: Аяқталды
Бейне: Интернетке қосылған робот жасаңыз (шамамен 500 долларға) (Arduino мен Netbook көмегімен): 6 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:28
Бұл нұсқаулық сізге өзіңіздің вебке қосылған роботты қалай құруға болатынын көрсетеді (Arduino микроконтроллері мен Asus eee компьютерін қолдана отырып). Неліктен вебке қосылған роботты алғыңыз келеді? Әрине ойнау үшін. Роботты Skype пен веб -браузерден басқа ештеңені пайдаланбай, бүкіл бөлмеден немесе бүкіл елден жүргізіңіз (басқарушы компьютерге орнатуға ештеңе жоқ). Содан кейін? Бағдарламалық жасақтаманы қарап шығыңыз және оны қалағаныңызша бейімдеңіз, GPS қосыңыз, сонда сіз қайда бара жатқаныңызды көре аласыз, үйдегі температура градиенттерін салыстыру үшін температура датчиктерін немесе интернетте бақылауды қосу үшін дыбыс датчиктерін қосыңыз. драйверлер кездесуі мүмкін және мүмкін емес. Ерекше өзгешеліктері:
- Арзан - (егер сіз барлық бөлшектерді жаңа сатып алсаңыз ~ 500 доллар, ал егер сіз бөлшектерге арналған қоқыс жәшігін қазып алсаңыз, әлдеқайда арзан)
- Роботты басқаруды бастағаннан кейін тек веб -шолғыш қажет (және сіз қайда бара жатқаныңызды білгіңіз келсе, Skype)
- Ашық көзі және оңай бейімделуі - (Arduino микроконтроллерін қолданады, веб -сервер үшін өңдеу және барлық бағдарламалық қамтамасыз ету Linux -де жұмыс істей алады (барлық код сонымен қатар кіру мен заттарды өзгерту үшін түсіндіріледі))
- Модульдік дизайн (толық интеграцияланған жүйе емес, егер сіз басқа бейнеконференцбайланыс қызметін пайдаланғыңыз келсе, алаңдамаңыз, немесе егер сізде Arduino -дан гөрі негізгі мөр болса, онда кодтың кішкене бөлігін дұрыс орналастырыңыз)
Міне менің вебке қосылған роботымның асханадан қуылып шығарылғанының тез бейнесі.
1 -қадам: Бөлшектер мен құралдар
Тек бірнеше бөлшектер қажет: Робот: Arduino басқарылатын сервистік робот - (SERB) ($ 175 @ oomlout.com) немесе (өзіңіз жасаңыз)
Arduino микроконтроллерін ми ретінде қолданатын ашық көзі робот
(arduino бар кез келген қос серво робот платформасын қолдануға болады (1 -нұсқа) (егер сіз басқа нұсқаларды тапсаңыз, маған хабарлаңыз) Компьютер: Asus eee PC 4G ($ 280) (@Best Buy)
Кішкене арзан ноутбук, бұл үшін өте қолайлы
(кез келген ноутбук (немесе егер сіз аккордпен жұмыс жасағыңыз келсе) жұмыс істейтін эскиздерді қолдануға болады) Ноутбук үстелі: Акрилді лазермен кесу ($ 25 (@ oomlout)) немесе (3 -қадамды өзіңіз жасаңыз)
Ноутбукке жұмыс үстелін беру үшін (SERB) бекітілген бірнеше қосымша акрил бөлшектері
Жаңғақтар мен болттар: (үй қоймасында бар)
- 3 мм x 10 мм болт (x4)
- 3 мм x 15 мм болт (x4)
- 3 мм гайка (x8)
2 -қадам: кесектерді кесу және құрастыру
Ноутбук үстелінің бөлшектерін алудың үш нұсқасы бар. 1 -нұсқа: (oomlout.com сайтынан сатып алу)
лазермен кесілген үстел бөлшектері мен қажетті жабдықты oomlout -тен 25 долларға алуға болады (мұнда)
2 -нұсқа: (Жеке лазерлік кескішті немесе Ponoko.com кесу)
- Төмендегі файлды жүктеңіз (03-WEBB-акрил бөліктері.cdr немесе 03-WEBB-акрил бөлшектері (Ponoko P2).eps)
- Оларды 3 мм акрилден кесіңіз
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 -дің деректер сериялы портын бақылайды, іздейтіні - ұзындығы 5 байт.
- 1-3 байт («AAA» байттарын тексеріңіз)
- Байт 4 командасы (arduino не істеу керектігін айтады) (Қолдау көрсетілетін командалар 'F' - Алға, 'B' - Артқа, 'L' - Солға, 'R' - Оңға, 'S' - Жылдамдық, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Тоқтату)
- Байт 5 параметрі - Жылжыту командалары үшін бұл уақыт интервалы ретінде түсіндіріледі (Параметр * 100 мс), ал жылдамдық үшін 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 & apos - 88 - SetSpeed * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Тоқтату * Қолдау көрсетілетін уақыттар - 0 - 255 (0 - 25,5 секунд) мәні * 100 миллисекунд * сп * Сымдар: Оң жақ серво сигналы - түйреуіш 9 * Сол жақ серво сигналы - пин 10 * * Лицензия: Бұл жұмыс Creative Commons * Attribution-Share Alike 3.0 Unported лицензиясы бойынша лицензияланған. * Бұл лицензияның көшірмесін қарау үшін * https://creativecommons.org/licenses/by-sa/3.0/ * сайтына кіріңіз немесе Creative Commons, 171 Second * Street, Suite 300, Сан-Франциско, Калифорния 94105, * АҚШ. * */// --------------------------------------------- ---------------------------- // ARDUINO SERIAL SERVER PREAMBLE БАСТАУЫ // Әр командаға сәйкес келетін тұрақтыларды анықтау (сонымен қатар ascii код нөмірі))#FORWARD 70 анықтаңыз // F#артқа 66 анықтаңыз // B#солға 76 анықтаңыз // L#оңға 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 БАСҚАРЫЛҒАН СЕРВО РОБОТЫНЫҢ СТАРТЫ (СЕРБ) АЛҒАШҚЫ#кіреді #define LEFTSERVOPIN 10 // Сол жақ серво қосылатын түйреуіш#RIGHTSERVOPIN 9 анықтау // Оң жақ серво қосылатын түйінServo leftServo; Servo rightServo; int leftSpeed = 50; // leftServo роботтарының жылдамдығын ұстайды // 0 мен 100int аралығындағы пайыздық оңSpeed = 100; // роботтардың жылдамдығын дұрыс ұстайдыServo // 0 мен 100 арасындағы пайыз // ARDUINO бақыланатын SERVO роботының соңы (SERB) АЛҒАШҚЫ // ------------------- -------------------------------------------------- ----- // Барлығын іске қосады void setup () {Serial.begin (9600); // serbSetup () сериялық портын іске қосады; // барлық қажетті // түйреуіштердің күйін орнатады және эскизіңізге сервос қосады} // Негізгі бағдарлама loopvoid loop () {serbPollSerialPort (); // сериялық портқа үздіксіз қарайды // егер деректер болса, оны өңдейді} // ------------------------------ ----------------------------------------- // ARDUINO SERIAL SERVER RUTINES БАСТАУЫ/ * * Arduino & aposs сериялық портына жеткізілген командаларды өңдейді */void serbPollSerialPort () {int dta; // сериялық байтты ұстау үшін айнымалы if (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 (команда, param1); // талданған сұрауды оған жібереді &}}}}}/ * * Пәрмен мен параметрді қабылдайды және оны роботқа береді */void interpretCommand (int command, int param1) {if (command == FORWARD) {goForward (); кідіріс (парам1 * 100); goStop ();} // if else if if (command == BACKWARD) {goBackward (); кідіріс (парам1 * 100); goStop ();} // if backward else if (command == LEFT) {goLeft (); кідіріс (парам1 * 100); goStop ();} // егер басқасы қалса if (команда == ОҢҒА) {goRight (); кідіріс (парам1 * 100); goStop ();} // егер дұрыс болса, егер (команда == SETSPEED) {setSpeed (param1);} // егер басқа жылдамдықты орнататын болсақ (команда == ТОҚТАТУ) {goStop ();} // if else if if (command == SETSPEEDLEFT) {setSpeedLeft (param1);} // егер сол жаққа басқа жылдамдық орнатылса, егер (команда == 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); // оң жақ серво сигналының түйреуішін орнатады // leftServo.attach (LEFTSERVOPIN) шығару үшін; // сол жақ серво оң жаққа бекітедіServo.attach (RIGHTSERVOPIN); // 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 -ден жоғары болса // оны 100 -ге айналдыр (if newSpeed <= 0) {newSpeed = 0;} // егер жылдамдық 0 -ден аз болса // 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 бақыланатын SERVO ROBOT (SERB) ЖОЛДАРЫНЫҢ СОҢЫ // ---------------------------- -----------------------------------------------
4 -қадам: Бағдарламалық қамтамасыз ету - роботтық ноутбук (WebServer)
(Өңдеу - бұл ашық бастапқы коды бар бағдарламалау тілі мен ортасы, оны бастау өте оңай. Толығырақ Өңдеу бөліміне кіріңіз) Робот ноутбукте жұмыс істейтін бағдарламалық қамтамасыз ету де өте қарапайым. Бұл қарапайым веб-сервер (веб-браузерден веб-беттің сұраныстарын тыңдау), шағын пайдаланушы интерфейсі (оны орнату үшін) және веб-серверден алынған командаларды Arduino-ға жіберуге арналған қондырғылар. (терезелерде)
- Төмендегі zip файлын жүктеңіз (06-WEBB-өңдеу веб-сервері (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» тыңдайды және веб -бетті жібереді. 2. «/request? Command = F & param1 = 100» пішінінің сұраныстарын тыңдайды (бұл командалар талданған және Arduino -ға жіберілген (бұл мысал нәтиже береді) роботта 10 секунд алға жылжиды) Қосымша: (WebServer коды)
/ * * Arduino басқарылатын вебке қосылған робот (WEBB) - веб -сервер * Толығырақ ақпарат алу үшін мына сайтқа кіріңіз: 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 секундқа дейін) мәні * 100 миллисекунд * * ControlPage.html * * сұрайтын болса, браузерге басқару веб -бетін ұсынады. Әрекет: 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, Сан-Франциско, Калифорния 94105, * АҚШ. * */импортты өңдеу.сериал. *; // сериялық (Arduino -мен сөйлесу үшін) пайдалану үшін сериялық кітапхананы импорттау өңдеу.net.*; // серверді пайдалану үшін таза кітапхананы импорттау (интернетпен сөйлесу үшін)/ * Сериялық портқа қатысты айнымалылар */int serialPortIndex = -1; // Serial.list () listString commOptions біз пайдаланатын сериялық порттың индексі; // Serial.list () сақталатын айнымалы, сондықтан сауалнама жүргізудің қажеті жоқ // сериялық порттар біз оны қайта жаңартқымыз келген сайын (сұрау arduino сервосында // секіруді тудырады) Serial serialPort; // Сериялық портты осы эскиз бойынша адресат етеді/ * Графикалық және бейнеленетін байланысты айнымалылар */PFont қаріпі; // қаріпті жалпыға ортақ етеді, сондықтан оны тек бір рет жүктеу қажет (Arial-72)/ * Желіге қатысты айнымалылар */Server wServer; // Веб -сұраныс порт = 12345 өңдейтін сервер; // Сервер тыңдайтын порт CycleCount = 0; // тарту циклы қанша рет орындалатынын есептейді («жұмыс істейтін» мәтінді жандандыру үшін қолданылады)/ * қызметтік айнымалылар */PImage bg; // Қазіргі кездегі фондық сурет / WEBB-background.png/ * * Түймешікпен байланысты айнымалылар * (түймелер өте өрескел орындалады, шектеу қораптары сақталады және фондық суретте графикалық және мәтінді * сызылады) яғни. жылжымалы түймешіктер айнымалылары түймелердің көрінісін өзгертпейді */Button comm1; Comm2 түймесі; Comm3 түймесі; Comm4 түймесі; // Дұрыс сериялық портты таңдау батырмалары Жоғары батырмасы; Оң жақ түймешік; Сол жақ батырмасы; Түймені төмендету; // Роботтың жауап беретінін тексеруге арналған бағыттау түймелері WebServer батырмасы; // webServer/ * * іске қосу түймесі бәрін реттейді */void setup () {frameRate (5); // Эскизді сәл баяулатады, сондықтан ол bg = loadImage («WEBB-background.png») жүйесіне салық салынбайды; // Фондық суретті (эскиз қалтасында сақталады) өлшемін жүктейді (700, 400); // эскиз терезесінің өлшемін белгілейді font = loadFont («ArialMT-72.vlw»); // Біз пайдаланатын қаріпті осы эскиз арқылы жүктейді commOptions = Serial.list (); // Сериялық порттарды сауалнамалайды және қол жетімді порттардың тізімін алады // (бұл роботты кез келген уақытта бұрап қалудан сақтайды & сериялық порт сұралған сайын) defineButtons (); // Әр түйме фонына шектеу ұяшықтарын анықтайды (bg); // Фондық суретті бояйды (бұл суретте барлық түйме графикасы бар)}/ * Негізгі цикл */void draw () {if (cycleCount == 0) {//- шақыру рәсімдері drawCommBox (); // Комбинациядағы қорытпаларды сызады (1 -қорап) drawTestBox (); // Сынақ қорабындағы барлық элементтерді салады (2 -қорап) drawWebServerBox (); // WebServer қорабындағы барлық элементтерді салады (3-жолақ)} //- pollWebServer () жұмыс тәртібіне қоңырау шалу; // Веб-серверден сұраулардың желі арқылы түскенін білу үшін сауалнама жүргізеді} // ------------------------------ ---------------------------------------------- // Басталуы рәсімдерді салу (кодты оқуды жақсарту үшін бөліңіз)/ * * Коммерциялық терезедегі элементтер үшін ұтыс жаңарту процедурасы (әр циклде орындалады) */void drawCommBox () {fill (0, 0, 0); // Толтыруды қара мәтінге орнатыңыз TextFont (қаріп, 15); // Қаріпті (int i = 0; i 0) {жүгіру = жүгіру + «.»;} Үшін қажетті өлшемге орнатыңыз // нүктелердің саны циклдің санына негізделген, егер ((cycleCount /1)> 1) { жүгіру = жүгіру + «.»;} if ((cycleCount / 1)> 2) {жүгіру = жүгіру + «.»;} if ((cycleCount / 1)> 3) {cycleCount = 0;} мәтін (жүгіру, 520), 210); } cycleCount ++; // 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 индексіндегі байланыс портына өзгертулер енгізіледі, егер (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);} // Роботты оңға жылжыту үшін пәрменді басқа секундқа жібереді, егер (төмен). pressed ()) {sendRobotCommand («B», 5);} // Роботты 0,5 секундқа артқа жылжыту үшін пәрмен жібереді, егер (webServer.pressed ()) {startWebServer ();} // webServer cycleCount = басталады 0; фон (bg); // Фондық суретті қайта бояйды (бұл суретте барлық түйме графикасы бар) draw ();}/ * * Орындау кезінде шақырылады, ол Серверді күтіп тұрған байланыстардың бар -жоғын тексереді * егер күту байланысы болса, ол тартылады сұранысты шығарып, оны қосымша мәтінді алып тастау үшін parseRequest (String) * процедурасына жібереді. Содан кейін бұл interpretRequest (String) процедурасына * сәйкес әрекет ету тәртібін шақыру үшін жіберіледі (яғни роботқа нұсқауларды жіберу).* * Сұраныс компьютер адресі мен портын веб -шолғышқа енгізу арқылы жіберіледі * Жергілікті машина үшін «https://127.0.0.1:12345/request?command=F¶m1=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, kk * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Хост: 127.0.0.1:12345 * Қосылу: тірі қалу * * Мысал жауабы (өңделген сұраныс үшін) * HTTP/1.1 200 OK * Байланыс: жабу * Content-Type: text/html * * пәрмені: F param1: 100 */void pollWebServer () {if (wServer! = null) {// Егер веб-сервер болса Client request = wServer.available () жұмыс істейді; // Келесі Клиентті // серверіне жүктеңіз (егер сұраныс күтілмесе нөл) if (request! = Null) {// егер сұраныс процесі болса String fullRequest = request.readString (); // Сұраныс мазмұнын жол ретінде сақтаңыз String ip = request.ip (); // Клиенттердің IP мекенжайын жол ретінде сақтаңыз String requestString = parseRequest (fullRequest.toUpperCase ()); // Барлық қосымша ақпаратты алып тастаңыз // тек сұрау жолын қалдырыңыз (GET -тен кейінгі мәтін) // (жолды тексеруді жеңілдету үшін үлкен регистрге ауысады) if (requestString.indexOf («REQUEST?»)! = -1) { // Сұрауда «СҰРАУ?» Бар -жоғын тексереді. Жолдық жауап = interpretRequest (requestString); // сұранысты сұрау аудармашысына request.write жібереді («HTTP/1.1 200 OK / nБайланыс: жабу / nМазмұн түрі: мәтін/html / n / n» + жауап); // сұраудың // өңделгенін айту үшін 200 -ге жауап жібереді және «жауап» жолын wServer.disconnect (сұраныс) жауабы ретінде жібереді; // Клиентті ажыратады} else if 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) {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 = «// (қосымша жол -егер пәрмен параметрі сұраудың соңында // болса және & if (requestString.indexOf (» PARAM1 = «)! = -1) {param1String = requestString.substring (requestString.indexOf («PARAM1 =») + «PARAM1 =». ұзындығы ());} басқа {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 = «command:» + command + «param1:» + param1; // қазіргі уақытта тек талданған пәрмен, бірақ html ретінде // жіберу, сондықтан пішімдеу returnValue қосылуы мүмкін;}/ * * Команданы (қазіргі уақытта бір әріп) және параметрді (бір байт 0-255) қабылдайды және оны тыңдайтын және қайта оқитын arduino * * Қолдаулы командалар * F - */void sendRobotCommand (String command, int param1) {println («пәрмен:» + пәрмен + «уақыт:» + парам1); String checkString = «AAA»; if (serialPort! = null) {serialPort.write (checkString + пәрмені); serialPort.write (байт (param1)); }} // Орнатудың соңы/әдеттегі тәртіп деп аталмайды // ----------------------------------- -------------------------------------------------- // Мысал түймешігі мен RectButton коды өңделетін.org мысалында кейбір өзгерістер // анимацияны айналдыруды жеңілдету және жою үшін жасалған // 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; ені = ені; биіктігі = биіктігі; } логикалық басылды () {if (overRect ()) {return true; } else {return false;}} логикалық overRect () {if (mouseX> = x && mouseX = y && mouseY <= y+height) {return true; } else {return false; }}}
5 -қадам: Бағдарламалық қамтамасыз ету - (веб -бет)
Біз роботпен сөйлесу ғана қалды. Сөйлесу үшін: (жергілікті желі арқылы -терезеде)
- Ноутбуктің жергілікті IP мекенжайын табыңыз. Мұны істеу үшін «Бастау / Бағдарламалар / Аксессуарлар / Пәрмен жолы» өтіңіз және терминал терезесі ашылғанда «ipconfig» теріңіз. «IP мекенжайын» жазып, жергілікті желідегі басқа компьютерге өтіңіз.
- Веб -шолғышты ашыңыз, «https:// (робот компьютерінің ip): 12345/ControlPage.html деп теріңіз
- Басқару веб -беті жүктелуі керек, «IP мекенжайы» өрісіне робот компьютерлерін ip деп теріңіз.
- Роботты басқаруды бастаңыз.
Сөйлесу үшін: (Интернетте) Енді сізде жергілікті жұмыс бар, оны Интернет арқылы сөйлесуге бірнеше қадам қалды.
- (ең қиын қадам) Портты қайта жіберуді орнату - Сіздің компьютер тек жергілікті желіні емес, интернетті тыңдауы керек. Мұны істеу үшін сіз маршрутизаторға роботты басқаратын компьютерге белгілі бір сұраныстарды жіберуін айтуыңыз керек. Бұл сәл күрделі және нұсқаулықтың ауқымынан асып түседі. Алайда, егер сіз PortForward.com сайтына кірсеңіз, олар сізге маршрутизаторды конфигурациялау туралы қажет нәрсенің бәрін береді (сізге 12345 портын робот ноутбукке жіберу қажет)
- Содан кейін Интернет IP мекенжайын табыңыз (WhatIsMyIP.com сайтына кіріңіз)
- Ақырында скайпты орнатыңыз, бейне қоңырау шалыңыз және кіммен сөйлессеңіз, оған кіріңіз «https:// (интернет IP): 12345/ControlPage.html»
- Басқару веб -бетіндегі «IP мекенжайы» өрісіне интернет IP -ін енгізіңіз, сонда сіздің роботыңыз алыстан басқарылады.
6 -қадам: Аяқталды
Жақсы болды. Сіз роботты алыстан айдауды қызықты өткізесіз деп сенемін. Егер сізде бағдарламалық жасақтамамен немесе аппараттық құралмен байланысты мәселелер туындаса, түсініктеме қалдырыңыз, мен сізге көмектесуге тырысамын. Егер сіз жақсы жобаларды тексергіңіз келсе, мына сайтқа кіріңіз: oomlout.com
Ұсынылған:
Интернетке қосылған дүкен стерео жасау: 6 қадам (суреттермен)
Интернетке қосылған стерео дүкенін жасау: Мен көлік жүргізген кезде радионы қосқанда, мен жергілікті колледждің 90.7 KALX радиостанциясына жүгінемін. Мен өмір сүрген жылдар мен әр түрлі жерлерде мен әрқашан колледж радиостанцияларын тыңдадым. Интернет күшінің арқасында мен қазір тыңдай аламын
Zwift үшін Интернетке қосылған желдеткіш: 7 қадам (суреттермен)
Zwift үшін Интернетке қосылған желдеткіш: Мен интернетке қосылған желдеткіш жасадым, бұл веложарыс ойындары / жаттығуларының виртуалды жүйесі Zwift. Егер сіз Zwift -те жылдам жүрсеңіз, желдеткіш сыртқа шығу жағдайын имитациялау үшін тезірек айналады.;) Мен бұл құрылысты жақсы өткіздім, сізге ұнайды деп үміттенемін
Ақылды айнаны 80 долларға дейін жасаңыз - Raspberry Pi көмегімен: 6 қадам (суреттермен)
Өзіңіздің ақылды айнаңызды 80 долларға дейін жасаңыз - Raspberry Pi көмегімен: Бұл жобада біз сізге таңертең дайындық кезінде пайдалы ақпаратты көрсететін ақылды айна жасаймыз. Барлығы 80 доллардан аспауы керек, бұл көптеген адамдар үшін қол жетімді. Бұл нұсқаулық сізге тек үйретеді
40 долларға дейінгі 500 метрлік радио деректерінің сілтемесін жасаңыз: 7 қадам
40 долларға дейінгі 500 метрлік радиобайланыс сілтемесін жасаңыз. Өлшегіңіз келетін су ыдысы немесе бөгет немесе қақпа бар ма? Дискіден келе жатқан көлікті анықтағыңыз келеді, бірақ бақша арқылы сым өткізгіңіз келмейді ме? Бұл нұсқаулық picaxe microcontr көмегімен 100% сенімділікпен 500 метрлік деректерді қалай жіберу керектігін көрсетеді
Шамамен 8 долларға EeePC / нетбук дорбасын өзіңізге жақсы етіп жасаңыз (және Redmaloo -дан сатып алудың орнына 91 доллар үнемдеңіз): 5 қадам (суреттермен)
Өзіңіздің EeePC / Netbook қалтаңызды шамамен 8 долларға жасаңыз (және Redmaloo -дан сатып алудың орнына 91 доллар үнемдеңіз): Бұл нұсқаулық сізге өз қолыңызбен өте жақсы және жақсы көрінетін ноутбук немесе одан да жақсы нетбук қалтасын қалай жасау керектігін көрсетеді. Бұл сіздің нетбукіңізді сақтайды, сізге тышқан тақтасын береді, бірегей, жақсы және қолдан жасалған нәрсені қолдану сезімін және гус сезімін береді