Orodha ya maudhui:
- Hatua ya 1: Sehemu na Zana
- Hatua ya 2: Kukata vipande na Mkutano
- Hatua ya 3: Programu - (Arduino)
- Hatua ya 4: Programu - Laptop ya Robot (WebServer)
- Hatua ya 5: Programu - (Ukurasa wa wavuti)
- Hatua ya 6: Imemalizika
Video: Tengeneza Roboti Iliyounganishwa Wavuti (kwa Karibu $ 500) (kwa kutumia Arduino na Netbook): Hatua 6 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:55
Hii inayoweza kufundishwa itakuonyesha jinsi ya kujenga Robot yako ya Wavuti iliyounganishwa (ukitumia Mdhibiti mdogo wa Arduino na Asus eee pc). Kwa nini ungependa Roboti iliyounganishwa Mtandao? Ili kucheza na bila shaka. Endesha roboti yako kutoka kwenye chumba au nchi nzima, bila kutumia chochote zaidi ya Skype na kivinjari cha wavuti (hakuna kitu cha kusanikisha kwenye kompyuta inayodhibiti). Baada ya hapo? Chimba kwenye programu hiyo na ubadilishe jinsi unavyopenda, ongeza GPS ili uweze kutazama mahali unapoendesha gari kwenye ramani, ongeza sensorer za joto kwenye gradients za ramani ya nyumba yako, au sensorer za sonar kuongeza vidhibiti kwenye kile wewe ni wavuti madereva wanaweza na hawawezi kukimbia. vipengele:
- Nafuu - (~ $ 500 ukinunua sehemu zote mpya na za bei rahisi sana ikiwa utachimba kwenye sehemu yako ya bin)
- Mara moja na kudhibiti roboti inahitaji kivinjari cha wavuti tu - (na Skype ikiwa unataka kuona unapoendesha)
- Chanzo wazi na kinachoweza kubadilika kwa urahisi
- Ubunifu wa kawaida (sio mfumo uliounganishwa kabisa, ikiwa unataka kutumia huduma tofauti ya mkutano wa video hakuna wasiwasi, au ikiwa una stempu ya Msingi badala ya Arduino tu sawa kipande kidogo cha nambari na uipange ndani)
Hapa kuna video ya haraka ya Roboti yangu iliyounganishwa Wavuti ikifukuzwa nje ya jikoni.
Hatua ya 1: Sehemu na Zana
Sehemu chache tu zinahitajika: Roboti: Arduino Controlled Servo Robot - (SERB) ($ 175 @ oomlout.com) au (fanya yako mwenyewe)
Roboti ya chanzo wazi ambayo hutumia Mdhibiti mdogo wa Arduino kwani ni ubongo
(jukwaa lolote la servo mbili na arduino linaweza kutumiwa (chaguo 1) (tafadhali nitumie barua pepe ukigundua chaguzi zingine) Kompyuta: Asus eee PC 4G ($ 280) (@Best Buy)
Laptop ndogo ya bei rahisi ambayo ni kamili kwa kusudi hili
(Laptop yoyote (au desktop ikiwa unataka kukimbia na gumzo) inayoweza kuendesha michoro ya Usindikaji inaweza kutumika) Dawati la Laptop: Laser Kata Acrylic ($ 25 (@ oomlout)) au (jenga hatua yako mwenyewe 3)
Vipande vichache vya akriliki ambavyo huingia kwenye (SERB) ili kuipatia dawati kwa kompyuta ndogo kuketi
Karanga na Bols: (inapatikana kwenye bohari ya nyumbani)
- 3mm x 10mm bolt (x4)
- 3mm x 15mm bolt (x4)
- 3mm karanga (x8)
Hatua ya 2: Kukata vipande na Mkutano
Kuna chaguzi tatu za kupata vipande kwa dawati lako la mbali. Kukata Chaguo 1: (Ununuzi kutoka kwa oomlout.com)
vipande vya dawati vya kukata laser na vifaa vya neccesary vinapatikana kutoka kwa oomlout kwa $ 25 (hapa)
Chaguo 2: (Kukata mwenyewe mkata laser au Ponoko.com)
- Pakua faili hapa chini (03-WEBB-Acrylic Parts.cdr au 03-WEBB-Acrylic Parts (Ponoko P2).eps)
- Kata yao kutoka 3mm (1/8 ") Acrylic
Chaguo 3: (Kitabu cha Kuona)
- Pakua muundo wa kuona kutoka chini (03-WEBB-ScrollSaw Pattern (A4).pdf (kwa karatasi ya ukubwa wa A4) au 03-WEBB-ScrollSaw Pattern (barua).
- Hakikisha kuwa haijapunguzwa wakati wa kuchapisha (kwa kupima watawala waliochapishwa)
- Gundi kipande cha 3mm (1/8 ") akriliki na ukate vipande vipande.
Kukusanyika: Pakua mwongozo wa mkutano (04-WEBB-Mwongozo wa Mkutano.pdf) hapo chini na uweke dawati la mbali pamoja.
Hatua ya 3: Programu - (Arduino)
Kwa wale wapya kwa Arduino angalia mwongozo mzuri wa kuanza huko Arduino.cc Kwanza mbali na programu inayoendesha Arduino. Ni mpango rahisi sana, ambayo Arduino inafanya ni kufuatilia bandari yake ya serial kwa data. Kinachotafuta ni mazungumzo baiti 5 kwa muda mrefu.
- Byte 1-3 (Angalia ka "AAA")
- Amri ya Byte 4 (Inamwambia arduino cha kufanya) (Amri zinazoungwa mkono 'F' - Mbele, 'B' - Nyuma, 'L' - Kushoto, 'R' - Kulia, 'S' - Kasi, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Acha)
- Kiwango cha 5 Byte - Kwa maagizo ya hoja hii inatafsiriwa kama muda wa muda (Parameter * 100 ms), na kwa kasi inaamuru asilimia kutoka 0-100
Nambari hiyo imetolewa maoni kabisa na imepewa mfumo huu unaongeza amri za ziada lazima iwe rahisi.
- Pakua faili ya zip iliyoambatishwa. (05-WEBB-Msimbo wa Arduino.zip)
- Unzip kwenye saraka yako ya Mchoro wa Arduino. (chaguomsingi: Nyaraka Zangu / Arduino )
- Fungua mazingira yako ya maendeleo ya arduino na upakie kwenye Arduino yako.
Ili Kunakili na Kubandika
- Nakili nambari kutoka chini.
- Bandika katika mazingira ya maendeleo ya Arduino.
- Pakia Arduino yako.
Kiambatisho: Programu ya Arduino
/ * * Arduino Controlled Web Connected Robot (WEBB) - Serial Host * Kwa maelezo zaidi tembelea: 88, 88, (COMMAND), (TIME) * Amri zinazoungwa mkono - & aposF & apos - 70 - Sambaza * na aposB & apos - 66 - Nyuma * & aposL & apos - 76 - Kushoto * na aposR & apos - 82 - Kulia * & aposS & apos - 83 - Speed * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Supported Times - 0 - 255 (0 to 25.5 Seconds) thamani * 100 milliseconds * sp * Wiring: Right Servo Signal - pin 9 * Signal Servo Signal - pin 10 * * License: Kazi hii ina leseni chini ya Creative Commons * Attribution-Shiriki sawa 3.0 Leseni Isiyoripotiwa. Ili * kuona nakala ya leseni hii, tembelea * https://creativecommons.org/licenses/by-sa/3.0/ * au tuma barua kwa Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * MAREKANI. * * / // ------------------------------------------ ------------------) #fafanua MBELE 70 // F # fafanua NYUMA 66 // B # fafanua KUSHOTO 76 // L # fafanua HAKI 82 // R # fafanua SETSPEED 83 // S # fafanua STOP 67 // C # fafanua SETSPEEDLEFT 88 // X #fafanua SETSPEEDRIGHT 89 // Y / * Hesiti tatu za hundi (zinazotumiwa kuweka roboti kujibu data za kawaida) sasa "AAA" * / # define checkByte1 65 // "A" #fafanua kuangaliaByte2 65 // "A "#fafanua hundiByte3 65 //" A "// -------------------------------------- ---------------------- #fafanua LEFTSERVOPIN 10 // Pini servo ya kushoto imeunganishwa na # kufafanua HAKI 9 / // Pini ambayo servo ya kulia imeunganishwa naServo kushotoServo; Servo kuliaServo; int leftSpeed = 50; // inashikilia kasi ya roboti za kushotoServo // asilimia kati ya 0 na 100int kuliaSpeed = 100; // inashikilia kasi ya roboti kuliaServo // asilimia kati ya 0 na 100 // MWISHO WA ARDUINO ANAYEDHIBITIWA SERVO ROBOT (SERB) PREBLE // ------------------- -------------------------------------------------- ----- // Inapata kila kitu juu na inaanzisha usanidi wa kukimbia () {Serial.begin (9600); // Inaanza serbSetup bandari ya serial (); // huweka hali ya pini zote za kipengee // na inaongeza servos kwenye mchoro wako} // Mpango kuu wa kitanzi cha mpango () {serbPollSerialPort (); // inaendelea kutazama bandari ya serial // ikiwa kuna data inaisindika} // ------------------------------ -------------------------- * * Taratibu za amri zilizopelekwa bandari ya serial ya arduino & aposs * / batili serbPollSerialPort () {int dta; // kutofautiana kushikilia nambari ya serial ikiwa (Serial.available ()> = 5) {// ikiwa baiti 5 ziko kwenye bafa (urefu pf ombi kamili) dta = Serial.read (); ikiwa (dta = checkByte1) {// Inatafuta hundi ya kwanza byte dta = Serial.read (); ikiwa (dta = checkByte2) {// Inatafuta hundi ya pili byte dta = Serial.read (); ikiwa (dta = checkByte3) {// Inatafuta cheki ya tatu byte int command = Serial.read (); // Baiti ya nne ni amri int param1 = Serial.read (); // Byte ya tano ni param1 translCommand (amri, param1); // hutuma ombi lililogawanywa kwake na mshughulikiaji wa aposs}}}}} / * * Huchukua amri na parameta na kuipitisha kwa roboti * / void translCommand (int command, int param1) {if (command == FORWARD) {goForward (); kuchelewesha (param1 * 100); goStop ();} // ikiwa mbele zaidi ikiwa (command == BACKWARD) {goBackward (); kuchelewesha (param1 * 100); goStop ();} // ikiwa nyuma nyingine ikiwa (command == LEFT) {goLeft (); kuchelewesha (param1 * 100); goStop ();} // ikiwa imesalia nyingine ikiwa (command == RIGHT) {goRight (); kuchelewesha (param1 * 100); goStop ();} // ikiwa ni sawa ikiwa (command == SETSPEED) {setSpeed (param1);} // ikiwa inaweka kasi nyingine ikiwa (command == STOP) {goStop ();} // ikiwa acha kingine ikiwa (amri == SETSPEEDLEFT) {setSpeedLeft (param1);} // ikiwa kuweka kasi ya kushoto nyingine ikiwa (command == SETSPEEDRIGHT) {setSpeedRight (param1);} // ikiwa kuweka kasi ya kulia nyingine {// ikiwa amri isiyotambuliwa fanya shimmey kidogo goLeft (); kuchelewesha (150); goRight (); kuchelewesha (150); goStop (); }} // ----------------------------------------------- ----------- taratibu zilizojumuishwa * / batili serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, OUTPUT); // inaweka pini ya ishara ya servo ya kushoto // kwa pato la Modi (RIGHTSERVOPIN, OUTPUT); // huweka pini ya ishara ya servo ya kulia // kwa pato kushotoServo.ambatanisha (LEFTSERVOPIN); // inaambatisha kushoto servo kuliaServo.ambatanisha (RIGHTSERVOPIN); // inaambatisha servo goStop ya kulia ();} / * * inaweka kasi ya roboti kati ya 0- (imesimama) na 100- (kasi kamili) * KUMBUKA: kasi haitabadilisha kasi ya sasa lazima ubadilishe kasi * kisha piga simu moja ya njia za kwenda kabla ya mabadiliko kutokea. / batili setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // huweka kasi ya kushoto setSpeedRight (newSpeed); // huweka kasi ya kulia} / * * Inaweka kasi ya gurudumu la kushoto * / batili setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // ikiwa kasi ni kubwa kuliko 100 // fanya hivyo 100 ikiwa (newSpeed = 100) {newSpeed = 100;} // ikiwa kasi ni kubwa kuliko 100 // ifanye 100 ikiwa (newSpeed <= 0) {newSpeed = 0;} // ikiwa kasi ni chini ya 0 make // ni 0 rightSpeed = newSpeed * 0.9; // mizani kasi ya kuwa} / * * inapeleka roboti mbele * / batili ya kwenda mbele () {leftServo.write (90 + kushotoSpeed); kuliaServo.write (90 - SpeedSpeed);} / * * inapeleka robot nyuma * / batili goBackward () {leftServo.write (90 - SpeedSpeed); kuliaServo.write (90 + SpeedSpeed);} / * * inapeleka roboti kulia * / batili goRight () {leftServo.write (90 + SpeedSpeed); kuliaServo.write (90 + SpeedSpeed);} / * * inapeleka roboti kushoto * / batili goLeft () {leftServo.write (90 - SpeedSpeed); kuliaServo.write (90 - SpeedSpeed);} / * * anasimamisha robot * / batili goStop () {leftServo.write (90); kuliaServo.andika (90);} // MWISHO WA RUDI ZA SERVO Zilizodhibitiwa (SERB) NJIA // ---------------------------- -----------------------------------------------
Hatua ya 4: Programu - Laptop ya Robot (WebServer)
(Usindikaji ni lugha ya programu ya chanzo wazi na mazingira ambayo ni rahisi sana kuanza nayo. Kwa maelezo zaidi tembelea Usindikaji) Programu inayoendesha kwenye kompyuta ndogo ya roboti pia ni rahisi sana. Ni seva ya wavuti isiyo ya kawaida (kusikiliza maombi ya ukurasa wa wavuti kutoka kwa kivinjari cha wavuti), kiolesura kidogo cha mtumiaji (kuiweka), na vifaa vya kupitisha amri zilizopokelewa kutoka kwa Seva ya Wavuti kwenda kwa Arduino. (kwenye windows)
- Pakua faili ya zip hapa chini (06-WEBB-Processing Webserver (windows exe).zip)
- Fungua zip na uendesha faili ya.exe (_WEBB_WebServer_RobotComputer.exe)
Kuhariri katika Usindikaji:
- Pakua faili ya zip hapa chini (06-WEBB-Processing Webserver (faili za chanzo).zip)
- Unzip mahali popote kwenye kompyuta yako.
- Fungua mazingira ya Usindikaji na ufungue (_WEBB_WebServer_RobotComputer.pde)
Kujaribu:
- Endesha programu.
- Kwenye kisanduku # 1 kutakuwa na orodha ya bandari zinazopatikana kwenye kompyuta yako (bonyeza ile ambayo Arduino yako imeunganishwa nayo. (Roboti yako itakoroma mara kadhaa kompyuta inapoungana, na nukta ya cyan itaonekana kando ya iliyochaguliwa bandari)
- Kwenye kisanduku cha 2 jaribu kuona ikiwa Arduino yako imeunganishwa. Bonyeza moja ya mishale na tunatarajia roboti yako itahamia katika mwelekeo uliobofyekwa kwa nusu sekunde.
- Kwenye kisanduku # 3 bonyeza kitufe cha "Anza" kuanza seva ya wavuti.
- Fungua kivinjari cha wavuti (kwenye Laptop ya Robot) na utembelee https:// 127.0.0.1: 12345/ControlPage.html (kwa matumaini ukurasa wa wavuti wa kudhibiti na vifungo juu yake utaonekana) -Maelezo ya jinsi ya kutumia ukurasa huu katika hatua inayofuata -
Nini kinaendelea:
- Seva ya Wavuti husikiliza bandari 12345 kwa maombi ya http (ni nini kinatumwa unapoandika kwenye anwani ya ukurasa wa wavuti)
- Kuna aina mbili za maombi ambayo hujibu.
1. Inasikiliza "ControlPage.html" na itatuma ukurasa wa wavuti wa kudhibiti 2. Inasikiliza ombi la fomu "/ ombi? katika roboti inayoenda mbele kwa sekunde 10) Kiambatisho: (Nambari ya WebServer)
/ * * Arduino Controlled Web Connected Robot (WEBB) - Webserver * Kwa maelezo zaidi tembelea: ? amri = F & param1 = 100 "na kisha kuipeleka kwa * Arduino * Amri Zinazoungwa mkono - & aposF & apos - 70 - Sambaza * & aposB & apos - 66 - Nyuma * na aposL & apos - 76 - Kushoto * & aposR & apos - 82 - Kulia * na apos & apos - 83 - Speed * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * param1 & aposs - 0 - 255 (0 to 25.5 Seconds) thamani * milliseconds 100 * * pia hutumikia ukurasa wa wavuti kwa kivinjari ikiwa unauliza ControlPage.html * * Operesheni: 1. Bonyeza kwenye bandari ya Comm Arduino yako imeunganishwa na * 2. Tumia vifungo vya majaribio ili uone ikiwa arduino yako inasikiliza * (itasogea kwa mwelekeo ulibonyeza kwa nusu sekunde) * 3. Bonyeza Anza na webserver yako itafanya sikiliza maombi * * * Leseni: Kazi hii ina leseni chini ya Creative Commons * Attribu tion-Shiriki sawa 3.0 Leseni isiyosafirishwa. Ili * kuona nakala ya leseni hii, tembelea * https://creativecommons.org/licenses/by-sa/3.0/ * au tuma barua kwa Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * MAREKANI. * * / kuagiza usindikaji.serial. *; // kuagiza maktaba ya serial kutumia Serial (kwa kuzungumza na Arduino) kuagiza processing.net. // kuagiza maktaba ya wavu kutumia Seva (kwa kuongea na mtandao) / * Serial Port Variables Related / / int serialPortIndex = -1; // faharisi ya bandari ya serial tunayotumia kwenye Serial.list () orodhaString commOptions; // Tofauti ya kuhifadhi Serial.list () kwa hivyo hakuna haja ya kupiga kura // bandari za serial kila wakati tunataka kuirejelea (kupiga kura kunasababisha // kuruka kwenye servu ya arduino) SerialPort; // Hufanya bandari ya serial inayoweza kushughulikiwa katika mchoro huu / * Picha na Utoaji Vigezo vinavyohusiana * / font font; // hufanya font iwe hadharani kwa hivyo inahitaji kupakiwa mara moja tu (Arial-72) / * Vigeuzi vinavyohusiana na Mtandao * / Server wServer; // Seva inayoshughulikia maombi ya wavuti bandari = 12345; // Bandari Server inasikiliza toint cycleCount = 0; // Hesabu idadi ya nyakati ambazo kitanzi cha kuteka kinatekelezwa (kilitumika // kuhuisha maandishi ya "kukimbia") / * Vibadilishi vya Huduma * / PImage bg; // Picha ya mandharinyuma kwa sasa / WEBB-background.png / * * Kitufe Vigezo vinavyohusiana * (vifungo vinatekelezwa kwa ukali sana, masanduku yanayofungwa yanahifadhiwa na picha na maandishi yamechorwa kwenye picha ya nyuma). kusonga vigezo vya kitufe hakutasogeza muonekano wa vifungo * / Kitufe comm1; Kifungo comm2; Kifungo comm3; Kifungo comm4; // Vifungo vya kuchagua bandari sahihi ya kitufeBonyeza juu; Kitufe kulia; Kitufe kimeondoka; Kitufe chini; // Vifungo vya mwelekeo vya kujaribu ikiwa roboti inajibuButton webServer; // Kitufe cha kuanza WebServer / * * inaweka kitu chochote juu / kuanzisha batili () {frameRate (5); // Hupunguza mchoro chini kidogo kwa hivyo sio kama ushuru kwenye mfumo bg = loadImage ("WEBB-background.png"); // Inapakia picha ya nyuma (iliyohifadhiwa kwenye folda ya mchoro) saizi (700, 400); // Inaweka saizi ya fonti ya dirisha la mchoro = loadFont ("ArialMT-72.vlw"); // Inapakia font ambayo tutatumia kupitia hii sketch commOptions = Serial.list (); // Kura za bandari za Serial na kupata orodha ya bandari zinazopatikana // (kufanya hivi mara moja tu hufanya roboti isitikisike kila wakati na // Inafafanua masanduku ya kufunga kwa kila nyuma ya kifungo (bg); // Inachora picha ya mandharinyuma (picha hii ina picha zote za kitufe juu yake)} / * Mchoro kuu kitanzi * / tupu batili () {if (cycleCount == 0) {// - piga simu za kuteka drawCommBox (); // Huchora emelments katika Comm Box (sanduku 1) drawTestBox (); // Inachora vitu vyote kwenye Sanduku la Mtihani (sanduku la 2) DrawWebServerBox (); // Inachora vitu vyote kwenye Sanduku la WebServer (sanduku la 3)} // - piga kura za utaratibu wa kufanya kaziWebServer (); // Kuchunguza seva ya wavuti ili kuona ikiwa maombi yoyote yameingia kupitia mtandao} // ------------------------------ ---------------------------------------------- // Kuanza kwa chora mazoea (gawanya tu ili kufanya nambari nzuri kusoma) / * * Utaratibu wa sasisho la kuteka (uliofanywa kila mzunguko) kwa vitu kwenye sanduku la comm (kisanduku 1) * / utupu wa kutekaCommBox () {kujaza (0, 0, 0); // Weka kujaza kwa maandishi nyeusi Font (font, 15); // Weka fonti kwa saizi sahihi ya (int i = 0; i 0) {running = running + ".";} // idadi ya nukta inategemea mzungukoCount ikiwa ((cycleCount / 1)> 1) { mbio = mbio + ".";} ikiwa ((cycleCount / 1)> 2) {running = running + ".";} ikiwa ((cycleCount / 1)> 3) {cycleCount = 0;} maandishi (mbio, 520, 210); } mzungukoCount ++; // Kila wakati kupitia mzungukoHesabu huongezwa na moja} // Mwisho wa Taratibu za kuchora // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // Anza utaratibu wa huduma * * mousePressed inaitwa kila wakati panya inapobanwa hii * huangalia ikiwa panya iko ndani ya kisanduku chochote cha kifungo * na ikiwa ni utaratibu unaofaa unaitwa * / void mousePressed () {if (comm1.pressed ()) { sasishaSerialPort (0);} // Mabadiliko kwenye bandari ya comm katika faharisi 0 katika Serial.list () vingine ikiwa (comm2.press ()) {updateSerialPort (1);} // Mabadiliko ya bandari ya comm kwenye faharisi ya 1 katika Serial orodha () nyingine ikiwa (comm3.press ()) {updateSerialPort (2);} // Mabadiliko kwenye bandari ya comm kwenye faharisi ya 2 kwenye Serial.list () vingine ikiwa (comm4.press ()) {updateSerialPort (3); sekunde nyingine ikiwa (kushoto. imesisitizwa ()) {sendRobotCommand ("L", 5);} / / Hutuma amri ya kusonga roboti Kushoto kwa sekunde 0.5 nyingine ikiwa (kulia. Imeshinikizwa ()) {sendRobotCommand ("R", 5);} // // Inatuma amri ya kusogeza roboti Haki kwa sekunde 0.5 nyingine ikiwa (chini. imesisitizwa ()) {sendRobotCommand ("B", 5);} // Inatuma amri kurudisha roboti Nyuma kwa sekunde 0.5 nyingine ikiwa (webServer.pressed ()) {startWebServer ();} // Inapoanza webServer cycleCount = 0; historia (bg); // Inabadilisha picha ya usuli (picha hii ina picha zote za kitufe juu yake) chora ();} / * * Inayoitwa mara moja ya utekelezaji inakagua Seva ili kuona ikiwa kuna unganisho wowote wa kusubiri * ikiwa kuna unganisho wa kusubiri inavuta Ondoa ombi na kuipitisha kwa kifunguRequest (String) * utaratibu wa kuvua maandishi ya ziada. Hii inatumwa kwa kawaidaRequest (String) kawaida ili * kupiga hatua inayofaa ya hatua (yaani tuma maagizo kwa roboti). Ombi hupitishwa kwa kuingiza anwani ya kompyuta na bandari kwenye kivinjari cha wavuti * Kwa mashine ya ndani "https:// 127.0.0.1: 12345 / request?command=F¶m1=100" * * Mfano wa Ombi: * PATA / ombi? amri = F & param1 = 100 HTTP / 1.1 * Wakala wa Mtumiaji: Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit / 525.19 (KHTML, kama Gecko) * Kubali: * // * * Kubali-Lugha: en-US, sw * Kubali-Charset: ISO-8859-1, *, utf-8 * Kubali-Encoding: gzip, deflate, bzip2 * Host: 127.0.0.1:12345 * Connection: Keep-Alive * * Mfano Jibu (kwa ombi lililosindikwa) * HTTP / 1.1 200 OK * Uunganisho: karibu * Aina-Yaliyomo: maandishi / html * * amri: F param1: 100 * / void pollWebServer () {if (wServer! = null) {// Ikiwa webServer inaendesha ombi la Mteja = wServer.available (); // Pakia Mteja anayefuata kwenye foleni ya // seva (batili ikiwa hakuna maombi yanayosubiri) ikiwa (ombi! // Hifadhi yaliyomo kwenye ombi kama kamba String ip = request.ip (); // Hifadhi anwani ya ip ya wateja kama kamba String ombiString = parseRequest (fullRequest.toUpperCase ()); // Vua habari yote ya ziada ya // ukiacha tu kamba ya ombi (maandishi baada ya GET) // (inahamia kesi kubwa ili kufanya upimaji wa kamba kuwa rahisi) ikiwa (requestString.indexOf ("OMBI?")! = -1) { // Inakagua ikiwa ombi lina "OMBI?" Jibu la kamba = translRequest (requestString); // Hutuma ombi kwa ombi la mkalimani wa ombi. Andika ("HTTP / 1.1 200 OK / nUunganisho: karibu / nContent-Type: text / html / n / n" + jibu); // Hutuma jibu 200 kusema ombi lilikuwa // lilishughulikiwa na kamba ya "jibu" kama jibu wServer.disconnect (ombi); // Inakata Mteja} mwingine ikiwa (requestString.indexOf ("CONTROLPAGE")! = -1) {// Ikiwa ombi ni la kudhibiti ukurasa wa wavuti webPageArray = loadStrings ("WEBB-ControlPage.html"); // Inapakia wavuti ya kudhibiti kutoka / data / WEBB-ControlPage.html // (iliyobeba kama safu ya mistari) Kamba ya wavutiPage = ""; // Ili kurahisisha uhariri ukurasa wa wavuti umeachwa na mapumziko ya laini ya // kwa hivyo hii kwa vitanzi hupiga laini hizo kwa (int i = 0; i portIndex) {// ikiwa bandari iliyopitishwa ni faharisi halali katika Serial.list (// (yaani. sio chaguo tatu katika orodha ya mbili) serialPortIndex = portIndex; // weka ubadilishaji wa serialPortIndex kwa fahirisi mpya ya serialport // (hii inatumiwa kuonyesha nukta kando ya bandari inayotumika)} ikiwa (serialPortIndex! = -1) {// angalia kuhakikisha kuwa bandari imechaguliwa wakati mwingine uliopita ikiwa (serialPort! = null) {serialPort.stop ();} // ikiwa bandari ya Serial tayari inatumika isimamishe kabla ya kupakia serialPort mpya mpya = Serial mpya (hii, Serial.list () [serialPortIndex], 9600); // Unda kitu kipya cha Siri ili kuwasiliana na Arduino 9600 Baud}} / * * Inachukua kamba ya ombi (mfano: "ombi? Command = F & param1 = 100") na itavua amri * na param1 na kuipeleka kwa arduino (kuongeza vigezo vya ziada au amri zisizo za arduino zitafanywa hapa) * / String translRequest (String requestString) {String returnValue = "OK"; // Inatayarisha amri ya kutofautisha ya Kamba ya kurudi; // Mistari mitatu inayofuata hutoa thamani baada ya "command =" // (laini ya ziada ikiwa kesi ya amri iko mwisho wa ombi na haifuatwi na & if (requestString.indexOf ("COMMAND =")! = -1) {command = requestString.substring (requestString.indexOf ("COMMAND =") + "COMMAND =". Urefu ());} mwingine {command = "Z";} ikiwa (command.indexOf (" & ")! = -1) {command = command.substring (0, command.indexOf (" & "));} mwingine {command = command;} String param1String; // Mistari mitatu ifuatayo inachukua thamani baada ya" param1 = "// (laini ya ziada ikiwa kesi ya amri iko // mwisho wa ombi na haifuatwi na & if (requestString.indexOf (" PARAM1 = ")!--1) {param1String = requestString.substring (requestString.indexOf ("PARAM1 =") + "PARAM1 =". urefu ());} mwingine {param1String = "0";} ikiwa (param1String.indexOf ("&")!--1) {param1String = param1String.substring (0, param1String.indexOf ("&"));} mwingine {param1String = param1String;} int param1 = Integer.parseInt (param1String); // Inageuza Kamba ya param1 kuwa idadi kamili sendRobotCommand (amri, param1); // Inatuma amri kwa utaratibu unaotuma kwa Arduino returnValue = "command:" + command + "param1:" + param1; // kwa sasa amri tu iliyopasuliwa lakini kutuma // kama html ili muundo uweze kujumuishwa na kurudi ReturnValue;} / * * Inachukua amri (sasa barua moja) na parameter (baiti moja 0-255) na kuipeleka kwa arduino * ambayo inasikiliza na inaelezea * Amri Zinazoungwa mkono kwa sasa * F - * / batili sendRobotCommand (String command, int param1) {println ("command:" + command + "time:" + param1); Kamba kuangaliaString = "AAA"; ikiwa (serialPort! = null) {serialPort.write (amri ya kuangaliaString +); serialPort.write (byte (param1)); }} // Mwisho wa usanidi / sio kawaida huitwa mazoea // ---------------------------------- -------------------------------------------------- // Kitufe cha Mfano na nambari ya RectButton kutoka mfano wa processing.org na mabadiliko kadhaa // yamefanywa zaidi kurahisisha na kuondoa roll juu ya uhuishaji // https://processing.org/learning/topics/buttons.html (2008-09-23) Kitufe cha darasa {int x, y; upana wa int, urefu; Kitufe (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; upana = iwidth; urefu = urefu; } boolean imesisitizwa () {if (overRect ()) {Return true; } kingine {Return false;}} boolean overRect () {if (mouseX> = x && mouseX = y && mouseY <= y + height) {Return true; } vingine {kurudi uwongo; }}}
Hatua ya 5: Programu - (Ukurasa wa wavuti)
Kweli tumekaribia kumaliza yote iliyobaki ni kuzungumza na roboti yako. Kupata Mazungumzo: (juu ya mtandao wa ndani -kwa windows-)
- Gundua anwani ya ip ya ndani ya kompyuta ya mbali. Ili kufanya hivyo nenda kwa "Anza / Programu / Accesories / Command Prompt" na wakati dirisha la terminal linafungua aina "ipconfig". Andika "Anwani ya IP" na elekea kompyuta nyingine kwenye mtandao wako.
- Fungua kivinjari cha wavuti, andika "https:// (robot kompyuta ip): 12345 / ControlPage.html
- Ukurasa wa wavuti wa kudhibiti unapaswa kupakia, kwenye sanduku la "Anwani ya IP" chapa kompyuta za robot ip.
- Anza kudhibiti roboti yako.
Kupata Mazungumzo: (juu ya wavuti) Sasa kwa kuwa unayo kazi ya ndani kuizungumzia juu ya wavuti ni hatua chache tu mbali.
- (hatua ngumu zaidi) Sanidi Usambazaji wa Bandari - Kompyuta yako inahitaji kuwa inasikiliza wavuti badala ya mtandao wa ndani tu. Ili kufanya hivyo unahitaji kuambia router yako kupitisha maombi kadhaa kupitia kwa kompyuta inayodhibiti roboti. Hii ni ngumu kidogo na huenda mbali zaidi ya upeo wa hii inayoweza kufundishwa. Walakini ukitembelea PortForward.com watakupa kila kitu unahitaji kujua juu ya kusanidi router yako (unahitaji kupeleka bandari 12345 kwenye kompyuta yako ya mbali ya roboti)
- Ifuatayo gundua IP yako ya mtandao (tembelea WhatIsMyIP.com)
- Mwishowe fanya skype kuanzisha simu ya video na upate mtu yeyote unayezungumza naye kutembelea "https:// (internet IP): 12345 / ControlPage.html"
- Andika kwenye IP ya wavuti kwenye sanduku la "IP Adress" kwenye ukurasa wa wavuti wa kudhibiti na Wavuti yako iliyounganishwa ya Wavuti inaendeshwa kutoka mbali.
Hatua ya 6: Imemalizika
Kweli ndio hiyo. Natumahi unakuwa na wakati wa kufurahisha kuendesha roboti yako kutoka mbali. Ikiwa una shida yoyote na programu au vifaa jisikie huru kuacha maoni na nitajaribu na kukusaidia. Ikiwa ungependa kukagua miradi nadhifu zaidi jaribu kutembelea: oomlout.com
Ilipendekeza:
Tengeneza Thermostat yako mwenyewe ya kupokanzwa iliyounganishwa na Uweke Akiba kwa Kupokanzwa: Hatua 53 (na Picha)
Fanya Thermostat yako ya kupokanzwa iliyounganishwa na uweke akiba na joto. Je! Kusudi ni nini? Ongeza faraja kwa kupokanzwa nyumba yako haswa jinsi unavyotaka Weka akiba na upunguze uzalishaji wa gesi chafu kwa kupokanzwa nyumba yako tu wakati unahitaji Kuweka udhibiti wa inapokanzwa kwako popote ulipo Jivunie ulifanya hivyo
Joto na Wavuti ya Wavuti ya Esp32 Kutumia PYTHON & Zerynth IDE: 3 Hatua
Joto na Wavuti ya Wavuti ya Esp32 Kutumia PYTHON & Zerynth IDE: Esp32 ni mtawala mzuri sana, Ana nguvu kama Arduino lakini bora zaidi! Ina muunganisho wa Wifi, inayokuwezesha kukuza miradi ya IOT kwa bei rahisi na kwa urahisi. vifaa vinakatisha tamaa, Kwanza sio thabiti, Secon
Saa ya michoro ya SMART ya Uumbaji iliyounganishwa na Mtandaoni na Jopo la Kudhibiti la Wavuti, Seva ya Muda iliyosawazishwa: Hatua 11 (na Picha)
Saa ya Uhuishaji ya SMART ya LED iliyounganishwa na Wavuti na Jopo la Kudhibiti la Wavuti, Seva ya Saa iliyosawazishwa: Hadithi ya saa hii inarudi nyuma - zaidi ya miaka 30. Baba yangu alianzisha wazo hili wakati nilikuwa na umri wa miaka 10 tu, muda mrefu kabla ya mapinduzi ya LED - nyuma wakati wa LED ambapo 1/1000 mwangaza wa mwangaza wao wa sasa wa kupofusha. Ukweli
Mafunzo ya Dereva wa Wavuti IO Kutumia Wavuti ya Moja kwa Moja na Mifano ya Kufanya Kazi: Hatua 8
Mafunzo ya Dereva wa Wavuti Kutumia Wavuti ya Moja kwa Moja na Mifano ya Kufanya Kazi: Dereva wa Wavuti IO Mafunzo Kutumia Tovuti ya Moja kwa Moja na Mifano ya Kufanya Kazi Mwisho Mwisho: 07/26/2015 (Angalia mara nyingi ninaposasisha mafunzo haya kwa maelezo zaidi na mifano) changamoto ya kupendeza iliyowasilishwa kwangu. Nilihitaji
Jitengenezee Nice Felt yako mwenyewe EeePC / Netbook Pouch kwa Karibu $ 8 (na Hifadhi $ 91 Badala ya Kununua Kutoka Redmaloo): Hatua 5 (na Picha)
Tengeneza Kiti chako cha Nice Felt EeePC / Netbook kwa Karibu $ 8 (na Okoa $ 91 Badala ya Kununua Kutoka Redmaloo): Hii inayoweza kufundishwa itakuonyesha, jinsi ya kutengeneza kompyuta yako ya kupendeza, nzuri sana na nzuri au mkoba bora wa wavu. Itahifadhi kitabu chako cha wavu, itakupa kitufe cha panya, hisia ya kutumia kitu cha kipekee, kizuri na kilichotengenezwa kwa mikono na hisia za goos za