Isi kandungan:

Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook): 6 Langkah (dengan Gambar)
Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook): 6 Langkah (dengan Gambar)

Video: Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook): 6 Langkah (dengan Gambar)

Video: Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook): 6 Langkah (dengan Gambar)
Video: Tonton Sampai Habis !!! Belajar Arduino Di Jamin Bisa 2024, November
Anonim
Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook)
Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook)
Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook)
Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook)
Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook)
Buat Robot Bersambung Web (sekitar $ 500) (menggunakan Arduino dan Netbook)

Instructable ini akan menunjukkan cara membina Robot Bersambung Web anda sendiri (menggunakan pengawal mikro Arduino dan komputer Asus eee). Mengapa anda mahukan Robot Bersambung Web? Sudah tentu bermain. Pandu robot anda dari seberang ruangan atau di seluruh negara, menggunakan tidak lebih dari Skype dan penyemak imbas web (tidak ada yang boleh dipasang pada komputer kawalan). Selepas itu? Gali perisian & sesuaikannya mengikut keinginan anda, tambahkan GPS sehingga anda dapat melihat di mana anda memandu di peta, tambahkan sensor suhu untuk memetakan kecerunan suhu di rumah anda, atau sensor sonar untuk menambahkan kawalan pada web anda pemandu boleh dan tidak dapat mengalami. Ciri-ciri:

  • Murah - (~ $ 500 jika anda membeli semua bahagian baru dan jauh lebih murah jika anda menggali tong sampah)
  • Setelah berjalan dan mengawal robot hanya memerlukan penyemak imbas web - (dan Skype jika anda ingin melihat di mana anda memandu)
  • Sumber Terbuka dan Mudah Diadaptasi - (menggunakan pengawal mikro Arduino, Pemprosesan untuk pelayan web & semua perisian dapat dijalankan di Linux (semua kod juga banyak dikomentari untuk membuat melompat dan mengubah sesuatu dengan mudah))
  • Reka Bentuk Modular (bukan sistem yang sepenuhnya terintegrasi, jika anda ingin menggunakan perkhidmatan persidangan video yang lain jangan risau, atau jika anda mempunyai cap Asas dan bukannya Arduino tepat pada sebilangan kecil kod dan masukkannya)

Berikut adalah video pantas Robot Bersambung Web saya dihalau dari dapur.

Langkah 1: Bahagian & Alat

Bahagian & Alat
Bahagian & Alat

Hanya beberapa bahagian yang diperlukan: Robot: Arduino Servo Robot - - (SERB) ($ 175 @ oomlout.com) atau (buat sendiri)

Robot sumber terbuka yang menggunakan pengawal mikro Arduino kerana otaknya

(mana-mana platform robot servo berkembar dengan arduino boleh digunakan (pilihan 1) (sila mesej saya jika anda menemui pilihan lain) Komputer: Asus eee PC 4G ($ 280) (@Best Buy)

Komputer riba kecil yang sangat sesuai untuk tujuan ini

(mana-mana komputer riba (atau desktop jika anda ingin menjalankan dengan kord) yang mampu dijalankan. Proses lakaran boleh digunakan) Meja komputer riba: Laser Cut Acrylic ($ 25 (@ oomlout)) atau (buat langkah anda sendiri 3)

Beberapa kepingan akrilik tambahan yang dipasang pada (SERB) untuk memberikannya meja untuk komputer riba

Nuts and Bols: (tersedia di depot rumah)

  • Selak 3mm x 10mm (x4)
  • Selak 3mm x 15mm (x4)
  • Kacang 3mm (x8)

Langkah 2: Memotong Potongan & Pemasangan

Memotong Potongan & Pemasangan
Memotong Potongan & Pemasangan
Memotong Potongan & Pemasangan
Memotong Potongan & Pemasangan
Memotong Potongan & Pemasangan
Memotong Potongan & Pemasangan
Memotong Potongan & Pemasangan
Memotong Potongan & Pemasangan

Terdapat tiga pilihan untuk mendapatkan kepingan untuk meja komputer riba anda. Memotong Pilihan 1: (Pembelian dari oomlout.com)

potongan meja laser dan perkakasan yang diperlukan boleh didapati dari oomlout dengan harga $ 25 (di sini)

Pilihan 2: (Memotong pemotong laser anda sendiri atau Ponoko.com)

  • Muat turun fail di bawah (03-WEBB-Acrylic Parts.cdr atau 03-WEBB-Acrylic Parts (Ponoko P2).eps)
  • Potongnya dari Akrilik 3mm (1/8 ")

Pilihan 3: (Lihat Skrol)

  • Muat turun corak tatal tatal dari bawah (03-WEBB-ScrollSaw Pattern (A4).pdf (untuk kertas ukuran A4) atau 03-WEBB-ScrollSaw Pattern (surat).pdf (untuk kertas berukuran huruf))
  • Periksa semula bahawa ia tidak ditimbang semasa mencetak (dengan mengukur pembaris cetak)
  • Lekatkan sekeping akrilik 3mm (1/8 ") dan potong kepingannya.

Perhimpunan: Muat turun panduan pemasangan (Panduan Perhimpunan 04-WEBB.pdf) di bawah dan pasangkan meja komputer riba.

Langkah 3: Perisian - (Arduino)

Perisian - (Arduino)
Perisian - (Arduino)

Bagi mereka yang baru mengenal Arduino, periksa panduan memulakan yang hebat di Arduino.cc Pertama kali perisian yang dijalankan di Arduino. Ini adalah program yang sangat sederhana, apa yang dilakukan oleh Arduino adalah memantau port bersiri untuk data. Apa yang dicarinya adalah perbualan yang panjangnya 5 bait.

  • Byte 1-3 (Periksa bait "AAA")
  • Perintah Byte 4 (Memberitahu arduino apa yang harus dilakukan) (Perintah yang disokong 'F' - Maju, 'B' - Mundur, 'L' - Kiri, 'R' - Kanan, 'S' - Kelajuan, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Berhenti)
  • Parameter Byte 5 - Untuk perintah bergerak, ini ditafsirkan sebagai selang waktu (Parameter * 100 ms), dan untuk kelajuan memerintahkan peratusan dari 0-100

Kod tersebut dikomentari dengan teliti dan diberikan kerangka ini dengan menambahkan perintah tambahan semestinya mudah. Untuk memuat turun:

  • Muat turun fail zip yang dilampirkan. (05-WEBB-Arduino Code.zip)
  • Nyahzip ke direktori Arduino Sketch anda. (lalai: Dokumen Saya / Arduino)
  • Buka persekitaran pengembangan arduino anda dan muat naik ke Arduino anda.

Untuk Menyalin dan Menampal

  • Salin kod dari bawah.
  • Masukkan ke persekitaran pembangunan Arduino.
  • Muat naik ke Arduino anda.

Lampiran: Program Arduino

/ * * Arduino Web Connected Robot (WEBB) - Serial Host * Untuk maklumat lebih lanjut, lawati: https://www.oomlout.com/serb * * Tingkah Laku: Arduino mendengar port Serialnya untuk arahan * dalam format 254, 88, 88, (PERINTAH), (MASA) * Perintah yang Disokong - & aposF & apos - 70 - Maju * & aposB & apos - 66 - Mundur * & aposL & apos - 76 - Kiri * & aposR & apos - 82 - Kanan * & aposS & apos - 83 - Kelajuan * & aposX & apos - 88 - SetSpeed * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Stop * Times Disokong - 0 - 255 (0 hingga 25.5 Detik) nilai * 100 milisaat * sp * Pendawaian: Signal Servo Kanan - pin 9 * Signal Servo Kiri - pin 10 * * Lesen: Karya ini dilesenkan di bawah Creative Commons * Attribution-Share Alike 3.0 Unported License. Untuk * melihat salinan lesen ini, lawati * https://creativecommons.org/licenses/by-sa/3.0/ * atau kirim surat ke Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * USA. * * / // --------------------------------------------- ---------------------------- // MULAI PREAMBEL SERDIS SERIAL ARDUINO // Mendefinisikan pemalar yang sesuai dengan setiap arahan (juga nombor kod ascii) #define FORWARD 70 // F # define BACKWARD 66 // B # define LEFT 76 // L # define RIGHT 82 // R # define SETSPEED 83 // S # define STOP 67 // C #efinisikan SETSPEEDLEFT 88 // X #define SETSPEEDRIGHT 89 // Y / * Tiga bait cek (digunakan untuk mengelakkan robot daripada merespons data bersiri rawak) pada masa ini "AAA" * / # tentukan checkByte1 65 // "A" #define checkByte2 65 // "A "#define checkByte3 65 //" A "// -------------------------------------- ------------------------------------ // MULAI PREAMBLE SERVO ROBOT KAWALAN ARDUINO (SERB) # sertakan #define LEFTSERVOPIN 10 // Pin servo kiri disambungkan ke # define RIGHTSERVOPIN 9 // Pin servo kanan disambungkan keServo leftServo; Servo betulServo; int leftSpeed = 50; // menahan kelajuan robot leftServo // peratusan antara 0 dan 100int kananSpeed = 100; // menahan kelajuan robot kananServo // peratusan antara 0 dan 100 // AKHIR PREAMBEL SERVO ROBOT KAWALAN ARDUINO (SERB) // ------------------- -------------------------------------------------- ----- // Mendapatkan semuanya dan menjalankan penyediaan () {Serial.begin (9600); // Memulakan serbSetup port bersiri (); // menetapkan keadaan semua pin / pin yang diperlukan dan menambahkan servos pada lakaran anda} // Gelung loopvoid program utama () {serbPollSerialPort (); // terus melihat ke port bersiri // jika ada data yang memprosesnya} // ------------------------------ ----------------------------------------- // MULAI ROUTIN SERVER ARDUINO / * * Memproses arahan yang dihantar ke port bersiri arduino & aposs * / void serbPollSerialPort () {int dta; // pemboleh ubah untuk menahan bait bersiri jika (Serial.available ()> = 5) {// jika 5 bait berada dalam penyangga (panjang pf permintaan penuh) dta = Serial.read (); if (dta = checkByte1) {// Cek byte cek pertama dta = Serial.read (); if (dta = checkByte2) {// Cek byte cek kedua dta = Serial.read (); if (dta = checkByte3) {// Memeriksa check byte int perintah ketiga = Serial.read (); // Byte keempat adalah perintah int param1 = Serial.read (); // Byte kelima adalah param1 interpretCommand (perintah, param1); // kirim permintaan yang dihuraikan kepadanya & apos handler}}}}} / * * Mengambil perintah dan parameter dan meneruskannya ke robot * / void interpretCommand (int command, int param1) {if (command == FORWARD) {goForward (); kelewatan (param1 * 100); goStop ();} // jika maju lain jika (perintah == BACKWARD) {goBackward (); kelewatan (param1 * 100); goStop ();} // jika ke belakang lain jika (perintah == KIRI) {goLeft (); kelewatan (param1 * 100); goStop ();} // jika dibiarkan lain jika (perintah == KANAN) {goRight (); kelewatan (param1 * 100); goStop ();} // jika betul jika (perintah == SETSPEED) {setSpeed (param1);} // jika menetapkan kelajuan lain jika (perintah == STOP) {goStop ();} // jika berhenti yang lain jika (command == SETSPEEDLEFT) {setSpeedLeft (param1);} // jika menetapkan kelajuan kiri yang lain jika (perintah == SETSPEEDRIGHT) {setSpeedRight (param1);} // jika menetapkan kelajuan yang betul lain {// jika perintah yang tidak dikenali lakukan sedikit masalah goLeft (); kelewatan (150); goRight (); kelewatan (150); goStop (); }} // ---------------------------------------------- -------------------------- // MULAI ROUTIN SERVO (SERB) SERVO YANG DIKAWAL ARDUINO / * * menyediakan arduino anda untuk menangani SERB anda menggunakan rutin yang disertakan * / batal serbSetup () {setSpeed (leftSpeed); pinMode (LEFTSERVOPIN, OUTPUT); // tetapkan pin isyarat servo kiri // ke output pinMode (RIGHTSERVOPIN, OUTPUT); // tetapkan pin isyarat servo kanan // ke outputServo.attach kiri (LEFTSERVOPIN); // melampirkan servo kiri kananServo.attach (RIGHTSERVOPIN); // melampirkan servo kanan goStop ();} / * * menetapkan kelajuan robot antara 0- (berhenti) dan 100- (kelajuan penuh) * CATATAN: kelajuan tidak akan mengubah kelajuan semasa anda mesti menukar kelajuan * kemudian panggil satu kaedah pergi sebelum perubahan berlaku. * / batal setSpeed (int newSpeed) {setSpeedLeft (newSpeed); // set kelajuan kiri setSpeedRight (newSpeed); // tetapkan kelajuan kanan} / * * Tetapkan kelajuan roda kiri * / batal setSpeedLeft (int newSpeed) {if (newSpeed> = 100) {newSpeed = 100;} // jika kelajuan lebih besar dari 100 // buat 100 if (newSpeed = 100) {newSpeed = 100;} // jika kelajuan lebih besar dari 100 // jadikan 100 jika (newSpeed <= 0) {newSpeed = 0;} // jika kelajuan kurang dari 0 buat // it 0 rightSpeed = newSpeed * 0.9; // skala kelajuan menjadi} / * * menghantar robot ke depan * / batal goForward () {leftServo.write (90 + leftSpeed); rightServo.write (90 - rightSpeed);} / * * menghantar robot ke belakang * / batal goBackward () {leftServo.write (90 - leftSpeed); rightServo.write (90 + rightSpeed);} / * * menghantar robot ke kanan * / batal goRight () {leftServo.write (90 + leftSpeed); rightServo.write (90 + rightSpeed);} / * * menghantar robot ke kiri * / batal goLeft () {leftServo.write (90 - leftSpeed); rightServo.write (90 - rightSpeed);} / * * menghentikan robot * / membatalkan goStop () {leftServo.write (90); rightServo.write (90);} // ROUTIN SERVO KAWALAN ARDUINO TAMAT (SERB) // ---------------------------- -----------------------------------------------

Langkah 4: Perisian - Robot Laptop (WebServer)

Perisian - Laptop Robot (WebServer)
Perisian - Laptop Robot (WebServer)

(Pemprosesan adalah bahasa pengaturcaraan sumber terbuka dan persekitaran yang sangat mudah untuk dimulakan. Untuk lebih jelasnya, kunjungi Pemprosesan) Perisian yang dijalankan pada komputer riba robot juga cukup mudah. Ini adalah pelayan web yang agak rendah (mendengarkan permintaan halaman web dari penyemak imbas web), antara muka pengguna kecil (untuk memasangnya), dan kemudahan untuk menyampaikan perintah yang diterima dari Pelayan Web ke Arduino. Untuk Memasang Dengan Cepat: (di tingkap)

  • Muat turun fail zip di bawah (06-WEBB-Processing Webserver (windows exe).zip)
  • Buka zip dan jalankan fail.exe (_WEBB_WebServer_RobotComputer.exe)

Untuk Menyunting dalam Pemprosesan:

  • Muat turun fail zip di bawah (06-WEBB-Processing Webserver (file source).zip)
  • Buka zip di mana sahaja di komputer anda.
  • Buka persekitaran Pemprosesan dan buka (_WEBB_WebServer_RobotComputer.pde)

Untuk menguji:

  • Jalankan program.
  • Dalam kotak # 1 akan ada senarai port komersil yang tersedia di komputer anda (klik pada yang disambungkan oleh Arduino anda. (Robot anda akan berkedut beberapa kali semasa komputer menyambung, dan titik cyan akan muncul di sebelah yang dipilih pelabuhan comm)
  • Dalam ujian kotak # 2 untuk melihat apakah Arduino anda disambungkan. Klik salah satu anak panah dan semoga robot anda bergerak ke arah yang diklik selama setengah saat.
  • Pada kotak # 3 klik butang "Mula" untuk memulakan pelayan web.
  • Buka penyemak imbas web (di Robot Laptop) dan lawati https://127.0.0.1.112345/ControlPage.html (semoga laman web kawalan dengan butang di atasnya muncul) -Detail tentang cara menggunakan halaman ini pada langkah seterusnya -

Apa yang berlaku:

  • Pelayan Web mendengarkan port 12345 untuk permintaan http (apa yang dihantar semasa anda memasukkan alamat halaman web)
  • Terdapat dua jenis permintaan yang ditanggapi.

1. Ini mendengarkan "ControlPage.html" dan akan menghantar halaman Web kawalan 2. Ini mendengarkan permintaan dari form "/ request? Command = F & param1 = 100" (perintah ini dihurai dan dikirim ke Arduino (contoh ini akan menghasilkan dalam robot bergerak ke hadapan selama 10 saat) Lampiran: (Kod untuk WebServer)

/ * * Arduino Web Connected Robot (WEBB) - Webserver * Untuk maklumat lebih lanjut, kunjungi: https://www.oomlout.com/serb * * Tingkah Laku: Program ini mendengarkan permintaan http (halaman web) dalam bentuk * "/ permintaan ? command = F & param1 = 100 "dan kemudian menghantarnya ke * Arduino * Commandsed Supported - & aposF & apos - 70 - Forward * & aposB & apos - 66 - Backward * & aposL & apos - 76 - Left * & aposR & apos - 82 - Right * & aposS & apos - 83 - Speed * & aposX & apos - 88 - SetSpeedLeft * & aposY & apos - 89 - SetSpeedRight * & aposC & apos - 67 - Berhenti * param1 & aposs - 0 - 255 (0 hingga 25.5 Detik) nilai * 100 milisaat * * juga melayani halaman web kawalan ke penyemak imbas jika meminta ControlPage.html * * Operasi: 1. Klik pada port Comm Arduino anda disambungkan ke * 2. Gunakan butang ujian untuk melihat apakah arduino anda mendengar * (akan bergerak ke arah yang diklik selama setengah saat) * 3. Klik Mula dan pelayan web anda akan mendengar permintaan * * * Lesen: Karya ini dilesenkan di bawah Creative Commons * Attribu tion-Share Alike 3.0 Tidak Berlesen. Untuk * melihat salinan lesen ini, lawati * https://creativecommons.org/licenses/by-sa/3.0/ * atau kirim surat ke Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * USA. * * / import processing.serial. *; // import perpustakaan bersiri untuk menggunakan Serial (untuk bercakap dengan Arduino) import processing.net. *; // import pustaka bersih untuk menggunakan Server (untuk bercakap dengan internet) / * Pembolehubah Berkaitan Serial Port * / int serialPortIndex = -1; // indeks port bersiri yang kita gunakan dalam Serial.list () listString commOptions; // Pemboleh ubah untuk menyimpan Serial.list () sehingga tidak perlu membuat tinjauan // port bersiri setiap kali kami ingin menahannya (polling menyebabkan // melompat di servdu arduino) Serial serialPort; // Menjadikan port bersiri dapat ditangani sepanjang lakaran ini / * Grafik dan Pembolehubah Berkaitan Rendering * / fon PFont; // menjadikan fon awam sehingga hanya perlu dimuat sekali (Arial-72) / * Pembolehubah Berkaitan Rangkaian * / Server wServer; // Pelayan yang mengendalikan port permintaan web = 12345; // Pelabuhan yang dilayan oleh Pelayan untuk mendengar cycleCount = 0; // Mengira berapa kali gelung undian dijalankan (digunakan untuk // menghidupkan teks "berjalan") / * Pemboleh ubah Utiliti * / PImage bg; // Gambar latar semasa / WEBB-background.png / * * Pemboleh ubah Berkaitan Butang * (butang dilaksanakan dengan kasar, kotak pengikat disimpan dan grafik dan teks * dilukis pada gambar latar) iaitu. pemboleh ubah butang bergerak tidak akan memindahkan penampilan butang * / Butang comm1; Butang comm2; Butang comm3; Butang comm4; // Butang untuk memilih port bersiri yang betul Butang ke atas; Butang betul; Butang kiri; Butang ke bawah; // Butang arah untuk menguji sama ada robot bertindak balasButton webServer; // Butang untuk memulakan webServer / * * menetapkan evrything up * / batal setup () {frameRate (5); // Memperlahankan lakaran sedikit sehingga tidak membebankan sistem bg = loadImage ("WEBB-background.png"); // Memuatkan gambar latar (disimpan dalam folder lakaran) ukuran (700, 400); // Menetapkan ukuran font sketsa = loadFont ("ArialMT-72.vlw"); // Memuatkan fon yang akan kita gunakan melalui sketsa ini commOptions = Serial.list (); // Mengundi port Serial dan mendapat senarai port yang tersedia // (melakukan ini hanya sekali agar robot tidak berkedut setiap kali ia & muncul // port bersiri ditinjau) defineButtons (); // Menentukan kotak pengikat untuk setiap latar belakang butang (bg); // Warnakan gambar latar (gambar ini mempunyai semua butang grafik di atasnya)} / * Gelung utama lakaran * / undian batal () {if (cycleCount == 0) {// - rutin undian panggilan drawCommBox (); // Lukiskan emel di Comm Box (kotak 1) drawTestBox (); // Melukis semua elemen dalam Kotak Uji (kotak 2) drawWebServerBox (); // Melukis semua elemen dalam WebServer Box (kotak 3)} // - memanggil rutin kerja pollWebServer (); // Tinjau pelayan web untuk melihat apakah ada permintaan yang masuk melalui rangkaian} // ------------------------------ ---------------------------------------------- // Bermula dari lukis rutin (berpisah hanya untuk membuat kod lebih bagus untuk dibaca) / * * Rutin kemas kini cabutan (dilaksanakan setiap kitaran) untuk item di kotak comm (kotak 1) * / batal drawCommBox () {isi (0, 0, 0); // Tetapkan isian ke fontFont hitam (fon, 15); // Tetapkan fon ke ukuran yang tepat untuk (int i = 0; i 0) {running = running + ".";} // bilangan titik berdasarkan cycleCount if ((cycleCount / 1)> 1) { running = running + ".";} if ((cycleCount / 1)> 2) {running = running + ".";} if ((cycleCount / 1)> 3) {cycleCount = 0;} teks (berjalan, 520, 210); } cycleCount ++; // Setiap kali melalui cycleCount ditingkatkan satu} // Rutin akhir Cabutan // ------------------------------- ------------------------------ // ------------------ ------------------------------------------- // Rutin Permulaan Perkhidmatan / * * mousePressed dipanggil setiap kali tetikus ditekan ini * memeriksa apakah tetikus berada di dalam salah satu kotak pengikat butang * dan jika rutin yang sesuai disebut * / kosongkan tetikus Ditekan () {if (comm1.pressed ()) { updateSerialPort (0);} // Perubahan pada port comm pada indeks 0 dalam Serial.list () lain jika (comm2.pressed ()) {updateSerialPort (1);} // Perubahan pada port comm pada indeks 1 dalam Serial.list () lain jika (comm3.pressed ()) {updateSerialPort (2);} // Perubahan pada port comm pada indeks 2 di Serial.list () lain jika (comm4.pressed ()) {updateSerialPort (3);} // Perubahan pada port comm pada indeks 3 di Serial.list () jika (up.pressed ()) {sendRobotCommand ("F", 5);} // Menghantar arahan untuk memindahkan robot Maju untuk 0,5 saat lain jika (left.pressed ()) {sendRobotCommand ("L", 5);} / / Menghantar arahan untuk menggerakkan robot ke kiri selama 0,5 saat yang lain jika (kanan.tekan ()) {sendRobotCommand ("R", 5);} // Menghantar arahan untuk menggerakkan robot Kanan selama 0,5 saat yang lain jika (turun. ditekan ()) {sendRobotCommand ("B", 5);} // Menghantar arahan untuk menggerakkan robot ke belakang selama 0.5 saat jika (webServer.pressed ()) {startWebServer ();} // Memulakan webServer cycleCount = 0; latar belakang (bg); // Mengecat semula gambar latar (gambar ini mempunyai semua grafik butang di atasnya) lukis ();} / * * Dipanggil setelah pelaksanaan, ia memeriksa Pelayan untuk melihat apakah ada sambungan menunggu * jika ada sambungan menunggu yang ditariknya mengemukakan permintaan dan meneruskannya ke rutin parseRequest (String) * untuk menghilangkan teks tambahan. Ini kemudian dihantar ke rutin interpretRequest (String) untuk * memanggil rutin tindakan yang sesuai (iaitu menghantar arahan ke robot).* * Permintaan disampaikan dengan memasukkan alamat dan port komputer ke penyemak imbas web * Untuk mesin tempatan "https://127.0.0.1.112345/request?command=F&param1=100" * * Contoh Permintaan: * DAPATKAN / Minta? perintah = F & param1 = 100 HTTP / 1.1 * Ejen Pengguna: Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit / 525.19 (KHTML, seperti Gecko) * Terima: * // * * Terima-Bahasa: en-US, en * Accept-Charset: ISO-8859-1, *, utf-8 * Accept-Encoding: gzip, deflate, bzip2 * Host: 127.0.0.1.12345 * Sambungan: Keep-Alive * * Contoh Balasan (untuk permintaan yang diproses) * HTTP / 1.1 200 OK * Sambungan: tutup * Isi-Jenis: teks / html * * arahan: F param1: 100 * / void pollWebServer () {if (wServer! = null) {// Sekiranya pelayan web sedang menjalankan permintaan Pelanggan = wServer.available (); // Muatkan Pelanggan seterusnya dalam baris di pelayan // (null jika tidak ada permintaan menunggu) jika (request! = Null) {// jika ada proses permintaan itu String fullRequest = request.readString (); // Simpan kandungan permintaan sebagai rentetan String ip = request.ip (); // Simpan alamat ip klien sebagai rentetan String requestString = parseRequest (fullRequest.toUpperCase ()); // Lepaskan semua // maklumat tambahan yang tinggal hanya string permintaan (teks setelah GET) // (beralih ke huruf besar untuk memudahkan ujian rentetan) jika (requestString.indexOf ("REQUEST?")! = -1) { // Memeriksa apakah permintaan tersebut mempunyai "PERMINTAAN?" Jawapan rentetan = interpretRequest (requestString); // Menghantar permintaan ke permintaan jurubahasa request.write ("HTTP / 1.1 200 OK / nConnection: close / nContent-Type: text / html / n / n" + reply); // Menghantar balasan 200 untuk mengatakan permintaan itu // dikendalikan dan rentetan "balas" sebagai respons wServer.disconnect (permintaan); // Putuskan Pelanggan} yang lain jika (requestString.indexOf ("CONTROLPAGE")! = -1) {// Sekiranya permintaan itu adalah untuk halaman web kawalan String webPageArray = loadStrings ("WEBB-ControlPage.html"); // Memuatkan halaman web kawalan dari / data / WEBB-ControlPage.html // (dimuat sebagai susunan baris) String webPage = ""; // Untuk mempermudah penyuntingan, laman web telah ditinggalkan dengan // jeda baris sehingga ini untuk gelung mengetepikan garis tersebut untuk (int i = 0; i portIndex) {// jika portIndex yang dilalui adalah indeks yang sah dalam Serial.list () // (iaitu bukan pilihan tiga dalam senarai dua) serialPortIndex = portIndex; // tetapkan pemboleh ubah serialPortIndex ke indeks serialport baru // (ini digunakan untuk memaparkan titik di sebelah port aktif)} jika (serialPortIndex! = -1) {// periksa untuk memastikan port telah dipilih suatu ketika sebelumnya jika (serialPort! = null) {serialPort.stop ();} // jika port Serial sudah digunakan hentikannya sebelum memuatkan satu serialPort = baru Serial baru (ini, Serial.list () [serialPortIndex], 9600); // Buat objek Serial baru untuk berkomunikasi dengan Arduino 9600 Baud}} / * * Mengambil string permintaan (mis: "request? Command = F & param1 = 100") dan akan mengeluarkan perintah * dan param1 dan menyebarkannya ke arduino (menambahkan parameter tambahan atau perintah bukan arduino akan dilakukan di sini) * / String interpretRequest (String requestString) {String returnValue = "OK"; // Menyiapkan arahan String variabel returnValue; // Tiga baris seterusnya mengekstrak nilai setelah "command =" // (baris tambahan sekiranya parameter perintah berada di // akhir permintaan dan tidak diikuti oleh & if (requestString.indexOf ("COMMAND =")! = -1) {command = requestString.substring (requestString.indexOf ("COMMAND =") + "COMMAND =". Length ());} lain {command = "Z";} if (command.indexOf (" & ")! = -1) {command = command.substring (0, command.indexOf (" & "));} else {command = command;} String param1String; // Tiga baris seterusnya mengekstrak nilai selepas" param1 = "// (baris tambahan sekiranya parameter perintah berada di // akhir permintaan dan tidak diikuti oleh & if (requestString.indexOf (" PARAM1 = ")! = -1) {param1String = requestString.substring (requestString.indexOf ("PARAM1 =") + "PARAM1 =". length ());} lain {param1String = "0";} jika (param1String.indexOf ("&")! = -1) {param1String = param1String.substring (0, param1String.indexOf ("&"));} lain-lain {param1String = param1String;} int param1 = Integer.parseInt (param1String); // Mengubah param1 String menjadi integer sendRobotCommand (arahan, param1); // Menghantar perintah ke rutin yang mengirimkannya ke Arduino returnValue = "command:" + command + "param1:" + param1; // pada masa ini hanya arahan yang dihuraikan tetapi mengirim // sebagai html sehingga pemformatan dapat disertakan return returnValue;} / * * Mengambil perintah (saat ini satu huruf) dan parameter (satu byte 0-255) dan mengirimkannya ke arduino * yang mendengar dan mengulang * Perintah yang Disokong Secara Semasa * F - * / batal sendRobotCommand (String command, int param1) {println ("command:" + command + "time:" + param1); String checkString = "AAA"; jika (serialPort! = null) {serialPort.write (checkString + command); serialPort.write (bait (param1)); }} // Akhir persediaan / tidak biasa disebut rutin // ----------------------------------- -------------------------------------------------- // Contoh butang dan kod RectButton dari contoh processing.org dengan beberapa perubahan // dibuat terutamanya untuk mempermudah dan membuang animasi roll over // https://processing.org/learning/topics/buttons.html (2008-09-23) butang kelas {int x, y; lebar int, tinggi; Butang (int ix, int iy, int iwidth, int iheight) {x = ix; y = iy; lebar = lebar; tinggi = tinggi; } boolean ditekan () {if (overRect ()) {return true; } lain {return false;}} boolean overRect () {if (mouseX> = x && mouseX = y && mouseY <= y + height) {return true; } lain {kembali palsu; }}}

Langkah 5: Perisian - (Halaman Web)

Perisian - (Halaman Web)
Perisian - (Halaman Web)
Perisian - (Halaman Web)
Perisian - (Halaman Web)
Perisian - (Halaman Web)
Perisian - (Halaman Web)

Kita hampir selesai semua yang tinggal adalah bercakap dengan robot anda. Untuk Bercakap: (melalui rangkaian tempatan -dalam tingkap-)

  • Cari alamat ip komputer riba tempatan. Untuk melakukan ini, pergi ke "Start / Programs / Accesories / Command Prompt" dan apabila tetingkap terminal dibuka ketik "ipconfig". Tuliskan "Alamat IP" dan pergi ke komputer lain di rangkaian tempatan anda.
  • Buka penyemak imbas web, ketik "https:// (robot komputer ip): 12345 / ControlPage.html
  • Halaman web kawalan harus dimuat, dalam kotak "Alamat IP" taipkan robot komputer ip.
  • Mula mengawal robot anda.

Untuk Bercakap: (melalui internet) Setelah anda menggunakannya secara tempatan, membincangkannya melalui internet hanya beberapa langkah lagi.

  • (langkah paling sukar) Siapkan Port Forwarding - Komputer anda perlu mendengar internet dan bukan hanya rangkaian tempatan. Untuk melakukan ini, anda perlu memberitahu penghala anda untuk menyampaikan permintaan tertentu ke komputer yang mengendalikan robot. Ini agak rumit dan melampaui ruang lingkup Arahan ini. Walau bagaimanapun, jika anda mengunjungi PortForward.com, mereka akan memberi anda semua yang perlu anda ketahui tentang mengkonfigurasi penghala anda (anda perlu meneruskan port 12345 ke komputer riba robot anda)
  • Seterusnya temui IP internet anda (lawati WhatIsMyIP.com)
  • Akhirnya jalankan skype membuat panggilan video dan dapatkan siapa sahaja yang anda bercakap untuk melawat "https:// (IP internet): 12345 / ControlPage.html"
  • Masukkan IP internet ke dalam kotak "Alamat IP" di halaman web kawalan dan Robot Bersambung Web anda dihalau dari jauh.

Langkah 6: Selesai

Selesai
Selesai

Baik itu sahaja. Saya harap anda bersenang-senang memandu robot anda dari jauh. Sekiranya anda mempunyai masalah dengan perisian atau perkakasan jangan ragu untuk memberikan komen dan saya akan mencuba dan membantu anda. Sekiranya anda ingin melihat lebih banyak projek yang kemas, sila lawati: oomlout.com

Disyorkan: