Daftar Isi:

Membuat Robot Terhubung Web (Sekitar $500) (menggunakan Arduino dan Netbook): 6 Langkah (dengan Gambar)
Membuat Robot Terhubung Web (Sekitar $500) (menggunakan Arduino dan Netbook): 6 Langkah (dengan Gambar)

Video: Membuat Robot Terhubung Web (Sekitar $500) (menggunakan Arduino dan Netbook): 6 Langkah (dengan Gambar)

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

Instruksi ini akan menunjukkan kepada Anda bagaimana membuat Robot Terhubung Web Anda sendiri (menggunakan mikrokontroler Arduino dan Asus eee pc). Mengapa Anda menginginkan Robot Terhubung Web? Untuk bermain dengan tentu saja. Kendarai robot Anda dari seberang ruangan atau di seluruh negeri, menggunakan tidak lebih dari Skype dan browser web (tidak perlu menginstal di komputer pengontrol). Setelah itu? Gali perangkat lunak & sesuaikan sesuka Anda, tambahkan GPS sehingga Anda dapat menonton di mana Anda mengemudi di peta, menambahkan sensor suhu untuk memetakan gradien suhu di rumah Anda, atau sensor sonar untuk menambahkan kontrol pada web Anda driver bisa dan tidak bisa bertemu. Fitur:

  • Murah - (~$500 jika Anda membeli semua suku cadang baru dan jauh lebih murah jika Anda mencari-cari di tempat sampah suku cadang Anda)
  • Setelah aktif dan berjalan, mengendalikan robot hanya membutuhkan browser web - (dan Skype jika Anda ingin melihat di mana Anda mengemudi)
  • Open Source dan Mudah Diadaptasi - (menggunakan mikrokontroler Arduino, Pemrosesan untuk server web & semua perangkat lunak dapat dijalankan di Linux (semua kode juga banyak dikomentari untuk membuat lompatan dan mengubah segalanya menjadi mudah))
  • Desain Modular (bukan sistem yang sepenuhnya terintegrasi, jika Anda ingin menggunakan layanan konferensi video yang berbeda jangan khawatir, atau jika Anda memiliki stempel Dasar daripada Arduino, cukup gunakan sepotong kecil kode dan masukkan)

Berikut adalah video singkat tentang Robot Terhubung Web saya yang diusir dari dapur.

Langkah 1: Suku Cadang & Alat

Suku Cadang & Alat
Suku Cadang & Alat

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

Robot open source yang menggunakan mikrokontroler Arduino sebagai otaknya

(platform robot servo ganda apa pun dengan arduino dapat digunakan (opsi 1) (silakan pesan saya jika Anda menemukan opsi lain) Komputer: Asus eee PC 4G ($280) (@Best Buy)

Sebuah laptop murah kecil yang sempurna untuk tujuan ini

(laptop apa saja (atau desktop jika Anda ingin berlari dengan akord) yang mampu menjalankan Memproses sketsa dapat digunakan) Meja Laptop: Akrilik Potong Laser ($25 (@ oomlout)) atau (buat langkah Anda sendiri 3)

Beberapa potongan akrilik tambahan yang dibaut ke (SERB) untuk memberikan meja tempat laptop duduk

Nuts and Bols: (tersedia di home depot)

  • Baut 3mm x 10mm (x4)
  • Baut 3mm x 15mm (x4)
  • mur 3mm (x8)

Langkah 2: Memotong Potongan & Perakitan

Memotong Potongan & Perakitan
Memotong Potongan & Perakitan
Memotong Potongan & Perakitan
Memotong Potongan & Perakitan
Memotong Potongan & Perakitan
Memotong Potongan & Perakitan
Memotong Potongan & Perakitan
Memotong Potongan & Perakitan

Ada tiga opsi untuk mendapatkan potongan untuk meja laptop Anda. Opsi Pemotongan 1: (Pembelian dari oomlout.com)

potongan meja potong laser dan perangkat keras yang diperlukan tersedia dari oomlout seharga $25 (di sini)

Opsi 2: (Memotong pemotong laser Anda sendiri atau Ponoko.com)

  • Download file di bawah ini (03-WEBB-Acrylic Parts.cdr atau 03-WEBB-Acrylic Parts (Ponoko P2).eps)
  • Potong dari 3mm (1/8") Akrilik

Opsi 3: (Gulir Gergaji)

  • Unduh pola scroll saw dari bawah (03-WEBB-ScrollSaw Pattern (A4).pdf (untuk kertas ukuran A4) atau 03-WEBB-ScrollSaw Pattern (letter).pdf (untuk kertas berukuran letter))
  • Periksa kembali apakah itu tidak diskalakan saat mencetak (dengan mengukur penggaris yang dicetak)
  • Rekatkan pada sepotong akrilik 3mm (1/8") dan potong potongannya.

Merakit: Unduh panduan perakitan (04-WEBB-Assembly Guide.pdf) di bawah dan satukan meja laptop.

Langkah 3: Perangkat Lunak - (Arduino)

Perangkat Lunak - (Arduino)
Perangkat Lunak - (Arduino)

Bagi mereka yang baru mengenal Arduino, lihat panduan memulai yang bagus di Arduino.cc Pertama, perangkat lunak yang berjalan di Arduino. Ini adalah program yang sangat sederhana, apa yang Arduino lakukan adalah memantau port serialnya untuk data. Yang dicari adalah percakapan sepanjang 5 byte.

  • Byte 1-3 (Periksa byte "AAA")
  • Perintah Byte 4 (Memberitahu arduino apa yang harus dilakukan) (Perintah yang didukung 'F' - Maju, 'B' - Mundur, 'L' - Kiri, 'R' - Kanan, 'S' - Kecepatan, 'X' - SetSpeedLeft, 'Y' - SetSpeedRight, 'C' - Berhenti)
  • Byte 5 Parameter - Untuk perintah gerakan ini ditafsirkan sebagai interval waktu (Parameter * 100 ms), dan untuk perintah kecepatan persentase dari 0-100

Kode dikomentari secara menyeluruh dan diberikan kerangka kerja ini menambahkan perintah tambahan seharusnya mudah. Untuk Mengunduh:

  • Unduh file zip terlampir. (05-WEBB-Arduino Code.zip)
  • Buka zip ke direktori Sketsa Arduino Anda. (default: Dokumen Saya\Arduino)
  • Buka lingkungan pengembangan arduino Anda dan unggah ke Arduino Anda.

Untuk Menyalin dan Menempel

  • Salin kode dari bawah.
  • Tempel ke lingkungan pengembangan Arduino.
  • Unggah ke Arduino Anda.

Lampiran: Program Arduino

/* * Arduino Controlled Web Connected Robot (WEBB) - Serial Host * Untuk lebih jelasnya kunjungi: https://www.oomlout.com/serb * * Perilaku: Arduino mendengarkan port Serial untuk perintah * dalam format 254, 88, 88, (COMMAND), (TIME) * Perintah yang Didukung - &aposF&apos - 70 - Maju * &aposB&apos - 66 - Mundur * &aposL&apos - 76 - Kiri * &aposR&apos - 82 - Kanan * &aposS&apos - 83 - Kecepatan * &aposX&apos - 88 - SetSpeedLeft - 88 * &aposY&apos - 89 - SetSpeedRight * &aposC&apos - 67 - Stop * Waktu yang Didukung - nilai 0 - 255 (0 hingga 25,5 Detik) * 100 milidetik *sp * Pengkabelan: Sinyal Servo Kanan - pin 9 * Sinyal Servo Kiri - pin 10 * * Lisensi: Karya ini dilisensikan di bawah Creative Commons * Attribution-Share Alike 3.0 Unported License. Untuk * melihat salinan lisensi ini, kunjungi * https://creativecommons.org/licenses/by-sa/3.0/ * atau kirim surat ke Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * AS. * */ //--------------------------------------------- ----------------------------//MULAI ARDUINO SERIAL SERVER PEMBUKAAN // Mendefinisikan konstanta yang sesuai dengan setiap perintah (juga nomor kode 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#define SETSPEEDLEFT 88 //X #define SETSPEEDRIGHT 89 //Y/*Tiga byte cek (digunakan untuk menjaga robot agar tidak merespon serial *data acak) saat ini "AAA" */#define checkByte1 65 // "A"#define checkByte2 65 // "A "#define checkByte3 65 // "A" //-------------------------------------- ------------------------------------// MULAI DARI ARDUINO CONTROLLED SERVO ROBOT (SERB) PEMBUKAAN#termasuk #define LEFTSERVOPIN 10 //Pin servo kiri terhubung ke#define RIGHTSERVOPIN 9 //Pin servo kanan terhubung keServo leftServo; Servo kananServo; int kecepatan kiri = 50; //menahan kecepatan robot leftServo //persentase antara 0 dan 100int rightSpeed = 100; //menahan kecepatan robot kananServo //persentase antara 0 dan 100// AKHIR ARDUINO CONTROLLED SERVO ROBOT (SERB) PEMBUKAAN//------------------- -------------------------------------------------- -----//Menyiapkan semuanya dan menjalankanvoid setup() { Serial.begin(9600); //Memulai port serial serbSetup(); //menetapkan status semua //pin dan menambahkan servos ke sketsa Anda yang diperlukan}//Program utama loopvoid loop() { serbPollSerialPort(); //terus menerus melihat ke serial port //jika ada data yang memprosesnya}//----------------------------- -----------------------------------------//MULAI RUTIN SERVER ARDUINO SERIAL/ * * Memproses perintah yang dikirim ke port serial arduino&aposs */void serbPollSerialPort(){ int dta; //variabel untuk menampung byte serial if (Serial.available() >= 5) { //jika 5 byte berada dalam buffer (panjang pf permintaan penuh) dta = Serial.read(); if (dta = checkByte1){ //Memeriksa cek pertama byte dta = Serial.read(); if (dta = checkByte2){ //Cek cek kedua byte dta = Serial.read(); if (dta = checkByte3){ //Cek cek ketiga byte int command = Serial.read(); //Byte keempat adalah perintah int param1 = Serial.read(); //Byte kelima adalah param1 interpretCommand(perintah, param1); //mengirimkan permintaan yang telah diurai ke&aposs handler } } } }}/* * Mengambil perintah dan parameter dan meneruskannya ke robot */void interpretCommand(int command, int param1){if (command == FORWARD){goForward(); penundaan (param1 * 100); goStop();} //if forward else if(command == BACKWARD){goBackward(); penundaan (param1 * 100); goStop();} //jika mundur else if(command == LEFT){goLeft(); penundaan (param1 * 100); goStop();} //jika ke kiri lagi if(perintah == KANAN){goRight(); penundaan (param1 * 100); goStop();} //if right else if(command == SETSPEED){setSpeed(param1);} //jika menyetel kecepatan else if(command == STOP){goStop();} //jika stop else if(command == SETSPEEDLEFT){setSpeedLeft(param1);} //jika menyetel kecepatan ke kiri else if(command == SETSPEEDRIGHT){setSpeedRight(param1);} //jika menyetel kecepatan kanan lagi{ //jika perintah yang tidak dikenal lakukan sedikit shimmey pergi ke kiri(); penundaan(150); belok kanan(); penundaan(150); goStop(); }}//--------------------------------------------- --------------------------//MULAI ARDUINO CONTROLLED SERVO ROBOT (SERB) ROUTINES/* * mengatur arduino Anda untuk mengatasi SERB Anda menggunakan rutinitas yang disertakan*/void serbSetup(){ setSpeed(leftSpeed); pinMode(LEFTSERVOPIN, OUTPUT); //set pin sinyal servo kiri //ke output pinMode(RIGHTSERVOPIN, OUTPUT); //set pin sinyal servo kanan //ke output leftServo.attach(LEFTSERVOPIN); //melampirkan servo kiri rightServo.attach(RIGHTSERVOPIN); //pasang kanan servo goStop();}/* * mengatur kecepatan robot antara 0-(berhenti) dan 100-(kecepatan penuh) * CATATAN: kecepatan tidak akan mengubah kecepatan saat ini Anda harus mengubah kecepatan * kemudian panggil satu dari metode go sebelum perubahan terjadi.*/ void setSpeed(int newSpeed){ setSpeedLeft(newSpeed); //set kecepatan kiri setSpeedRight(newSpeed); //sets right speed}/* * Mengatur kecepatan roda kiri */void setSpeedLeft(int newSpeed){ if(newSpeed >= 100) {newSpeed = 100;} //jika kecepatan lebih besar dari 100 //membuatnya 100 if(newSpeed = 100) {newSpeed = 100;} //jika kecepatan lebih besar dari 100 //membuatnya 100 if(newSpeed <= 0) {newSpeed = 0;} //jika kecepatan kurang dari 0 make // itu 0 rightSpeed = newSpeed * 0.9; //skala kecepatan menjadi }/* * mengirim robot ke depan */void goForward(){ leftServo.write(90 + leftSpeed); rightServo.write(90 - rightSpeed);} /* * mengirim robot mundur */void goBackward(){ leftServo.write(90 - leftSpeed); rightServo.write(90 + rightSpeed);} /* * mengirim robot ke kanan */void goRight(){ leftServo.write(90 + leftSpeed); rightServo.write(90 + rightSpeed);}/* * mengirim robot ke kiri */void goLeft(){ leftServo.write(90 - leftSpeed); rightServo.write(90 - rightSpeed);}/* * menghentikan robot */void goStop(){ leftServo.write(90); rightServo.write(90);}//AKHIR DARI ARDUINO CONTROLLED SERVO ROBOT (SERB) RUTINE//---------------------------- ----------------------------------------------------------

Langkah 4: Perangkat Lunak - Robot Laptop (WebServer)

Perangkat Lunak - Robot Laptop (WebServer)
Perangkat Lunak - Robot Laptop (WebServer)

(Pemrosesan adalah bahasa dan lingkungan pemrograman open source yang sangat mudah untuk memulai. Untuk lebih jelasnya kunjungi Processing) Perangkat lunak yang berjalan pada laptop robot juga cukup sederhana. Ini adalah server web yang agak sederhana (mendengarkan permintaan halaman web dari browser web), antarmuka pengguna kecil (untuk mengaturnya), dan fasilitas untuk meneruskan perintah yang diterima dari Server Web ke Arduino. Untuk Menginstal dengan Cepat: (di jendela)

  • Download file zip di bawah ini (06-WEBB-Processing Webserver (windows exe).zip)
  • Buka zip dan jalankan file.exe (_WEBB_WebServer_RobotComputer.exe)

Untuk Mengedit dalam Pemrosesan:

  • Download file zip di bawah ini (06-WEBB-Processing Webserver (source files).zip)
  • Buka zip di mana saja di komputer Anda.
  • Buka lingkungan Pemrosesan dan buka (_WEBB_WebServer_RobotComputer.pde)

Untuk mengetes:

  • Jalankan programnya.
  • Di kotak #1 akan ada daftar port komunikasi yang tersedia di komputer Anda (klik port yang terhubung dengan Arduino Anda. (Robot Anda akan bergerak beberapa kali saat komputer terhubung, dan titik cyan akan muncul di samping yang dipilih). pelabuhan komunikasi)
  • Di kotak #2 tes untuk melihat apakah Arduino Anda terhubung. Klik salah satu panah dan semoga robot Anda akan bergerak ke arah yang diklik selama setengah detik.
  • Di kotak #3 klik tombol "Start" untuk memulai server web.
  • Buka browser web (pada Robot Laptop) dan kunjungi https://127.0.0.1:12345/ControlPage.html (semoga akan muncul halaman web kontrol dengan tombol di atasnya) -Rincian cara menggunakan halaman ini di langkah selanjutnya -

Apa yang terjadi:

  • Server Web mendengarkan port 12345 untuk permintaan http (apa yang dikirim saat Anda mengetikkan alamat halaman web)
  • Ada dua jenis permintaan yang ditanggapinya.

1. Ini mendengarkan "ControlPage.html" dan akan mengirim Halaman Web kontrol 2. Ini mendengarkan permintaan dari bentuk "/request?command=F&param1=100" (perintah ini diuraikan dan dikirim ke Arduino (contoh ini akan menghasilkan di robot akan Maju selama 10 detik)Lampiran: (Kode untuk WebServer)

/* * Arduino Controlled Web Connected Robot (WEBB) - Webserver * Untuk lebih jelasnya kunjungi: https://www.oomlout.com/serb * * Perilaku: Program mendengarkan permintaan http (halaman web) dalam bentuk * "/request ?command=F&param1=100" lalu meneruskannya ke * Arduino * Perintah yang Didukung - &aposF&apos - 70 - Maju * &aposB&apos - 66 - Mundur * &aposL&apos - 76 - Kiri * &aposR&apos - 82 - Kanan * &aposS&apos - 83 - Kecepatan * &apos - 88 - SetSpeedLeft * &aposY&apos - 89 - SetSpeedRight * &aposC&apos - 67 - Stop * param1&aposs - 0 - 255 (0 hingga 25,5 Detik) nilai * 100 milidetik * * juga melayani halaman web kontrol ke browser jika meminta ControlPage.html * * Operasi: 1. Klik pada port Comm yang terhubung ke Arduino Anda * 2. Gunakan tombol uji untuk melihat apakah arduino Anda mendengarkan * (akan bergerak ke arah yang diklik selama setengah detik) * 3. Klik Mulai dan server web Anda akan mendengarkan permintaan * * * Lisensi: Karya ini dilisensikan di bawah Creative Commons * Atribut tion-Share Alike 3.0 Unported Lisensi. Untuk * melihat salinan lisensi ini, kunjungi * https://creativecommons.org/licenses/by-sa/3.0/ * atau kirim surat ke Creative Commons, 171 Second * Street, Suite 300, San Francisco, California 94105, * AS. * */import processing.serial.*; //import library serial untuk menggunakan Serial (untuk berbicara dengan Arduino)import processing.net.*; //import net library untuk menggunakan Server (untuk berbicara dengan internet)/* Variabel Terkait Port Serial */int serialPortIndex = -1; //indeks port serial yang kita gunakan di Serial.list() listString commOptions; //Sebuah variabel untuk menyimpan Serial.list() sehingga tidak perlu polling //port serial setiap kali kita ingin mereferensikannya (polling menyebabkan //jump di servos arduino)Serial serialPort; //Membuat port serial dapat dialamatkan di seluruh sketsa ini/* Grafik dan Variabel Terkait Rendering */font PFont; //membuat font menjadi publik sehingga hanya perlu dimuat sekali (Arial-72)/* Variabel Terkait Jaringan */Server wServer; //Server yang menangani permintaan webint port = 12345; //Port yang didengarkan Server toint cycleCount = 0; //Menghitung berapa kali loop menggambar dijalankan (digunakan untuk //menganimasikan teks "berjalan") /* Variabel Utilitas */ PImage bg; //Gambar latar belakang saat ini \WEBB-background.png/* * Variabel Terkait Tombol * (tombol diterapkan dengan sangat kasar, kotak pembatas disimpan dan grafik dan teks * digambar pada gambar latar belakang) yaitu. variabel tombol bergerak tidak akan memindahkan tampilan tombol */Button comm1; Tombol com2; Tombol com3; Tombol com4; //Tombol untuk memilih port serial yang benarTombol ke atas; Tombol kanan; Tombol kiri; Button down;//Tombol arah untuk menguji apakah robot meresponsButton webServer; //Tombol untuk memulai webServer/* * mengatur semuanya */void setup() { frameRate(5); //Memperlambat sketsa sedikit sehingga tidak membebani sistem bg = loadImage("WEBB-background.png"); //Memuat gambar latar belakang (disimpan dalam folder sketsa) size(700, 400); //Menyetel ukuran font jendela sketsa = loadFont("ArialMT-72.vlw"); //Memuat font yang akan kita gunakan melalui sketsa ini commOptions = Serial.list(); //Melakukan polling port Serial dan mendapatkan daftar port yang tersedia //(melakukan ini hanya sekali membuat robot tidak bergerak setiap kali&aposs //port serial disurvei) defineButtons(); //Mendefinisikan kotak pembatas untuk setiap tombol background(bg); //Melukis gambar latar belakang (gambar ini memiliki semua grafik tombol di atasnya)}/* Sketsa loop utama */void draw() { if(cycleCount==0){ //-- call draw routines drawCommBox(); //Menggambar emelment di Comm Box (box 1) drawTestBox(); //Menggambar semua elemen dalam Test Box (box 2) drawWebServerBox(); //Menggambar semua elemen dalam Kotak WebServer (kotak 3) } //-- memanggil rutinitas kerja pollWebServer(); //Melakukan polling server web untuk melihat apakah ada permintaan yang masuk melalui jaringan}//----------------------------- ----------------------------------------------//Mulai menggambar rutin (dibagi hanya untuk membuat kode lebih enak dibaca)/* * Rutinitas pembaruan undian (dijalankan setiap siklus) untuk item dalam kotak komunikasi (kotak 1) */void drawCommBox(){ fill(0, 0, 0); //Setel isian ke textFont hitam(font, 15); //Setel font ke ukuran yang tepat untuk(int i = 0; i 0){running = running + ".";} //jumlah titik didasarkan pada cycleCount if((cycleCount / 1) > 1){ running = running + ".";} if((cycleCount / 1) > 2){running = running + ".";} if((cycleCount / 1) > 3){cycleCount=0;} text(running, 520, 210); } cycleCount++; //Setiap kali melalui cycleCount bertambah satu} //Rutinitas Akhir Pengundian//------------------------------- ------------------------------//------------------ -------------------------------------------------------// Mulai rutinitas Layanan/ * * mousePressed dipanggil setiap kali mouse ditekan ini * memeriksa apakah mouse berada di dalam salah satu kotak pembatas tombol * dan jika itu adalah rutinitas yang sesuai disebut*/void mousePressed(){ if(comm1.pressed()) { updateSerialPort(0);} //Perubahan pada port komunikasi pada indeks 0 di Serial.list() else if(comm2.pressed()) {updateSerialPort(1);} //Perubahan pada port komunikasi pada indeks 1 pada Serial.list() else if(comm3.pressed()) {updateSerialPort(2);} //Perubahan pada port comm pada indeks 2 di Serial.list() else if(comm4.pressed()) {updateSerialPort(3);} //Mengubah port komunikasi pada indeks 3 di Serial.list() else if(up.pressed()) {sendRobotCommand("F", 5);} //Mengirim perintah untuk memindahkan robot Maju selama 0,5 detik lagi if(left.pressed()) {sendRobotCommand("L", 5);} / /Mengirim perintah untuk memindahkan robot ke Kiri selama 0,5 detik else if(right.pressed()) {sendRobotCommand("R", 5);} //Mengirim perintah untuk memindahkan robot ke Kanan selama 0,5 detik else if(down. press()) {sendRobotCommand("B", 5);} //Mengirim perintah untuk menggerakkan robot Mundur selama 0,5 detik if(webServer.pressed()) {startWebServer();} //Memulai webServer cycleCount = 0; latar belakang (bg); //Mengecat ulang gambar latar (gambar ini memiliki semua grafik tombol di atasnya) draw();}/* * Dipanggil setelah eksekusi, ia memeriksa Server untuk melihat apakah ada koneksi yang menunggu * jika ada koneksi menunggu yang ditariknya keluar permintaan dan meneruskannya ke parseRequest(String) * rutin untuk menghapus teks tambahan. Ini kemudian dikirim ke rutin interpretRequest(String) untuk * memanggil tindakan rutin yang sesuai (yaitu mengirim instruksi ke robot).* * Permintaan dilewatkan dengan memasukkan alamat komputer dan port ke browser web * Untuk mesin lokal "https://127.0.0.1:12345/request?command=F&param1=100" * * Contoh Permintaan: * GET /request? command=F&param1=100 HTTP/1.1 * User-Agent: 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 * Connection: Keep-Alive * * Contoh Balasan (untuk permintaan yang diproses) * HTTP/1.1 200 OK * Koneksi: tutup * Tipe Konten: teks/html * * perintah: F param1: 100 */void pollWebServer(){ if(wServer != null){ //Jika webServer sedang menjalankan permintaan Klien = wServer.available(); //Muat Klien berikutnya di baris //server (null jika tidak ada permintaan yang menunggu) if(request != null){ //jika ada proses permintaan String fullRequest = request.readString(); //Menyimpan isi permintaan sebagai string String ip = request.ip(); //Menyimpan alamat ip klien sebagai string String requestString = parseRequest(fullRequest.toUpperCase()); //Singkirkan semua //informasi tambahan yang hanya menyisakan string permintaan (teks setelah GET) //(bergeser ke huruf besar untuk membuat pengujian string lebih mudah) if(requestString.indexOf("REQUEST?") != -1){ //Memeriksa apakah permintaan memiliki "REQUEST?" String balasan = interpretRequest(requestString); //Mengirim permintaan ke request interpreter request.write("HTTP/1.1 200 OK\nConnection: close\nContent-Type: text/html\n\n" + reply); //Mengirim balasan 200 untuk mengatakan permintaan itu //ditangani dan string "balasan" sebagai respons wServer.disconnect(request); //Putuskan hubungan Klien }else if(requestString.indexOf("CONTROLPAGE") != -1){ //Jika permintaan adalah untuk halaman web kontrol String webPageArray = loadStrings("WEBB-ControlPage.html"); //Memuat halaman web kontrol dari \data\WEBB-ControlPage.html //(dimuat sebagai larik baris) String halaman web =""; //Untuk mempermudah pengeditan, halaman web dibiarkan dengan //jeda baris sehingga loop for ini menghapus baris-baris tersebut untuk(int i = 0; i portIndex){ //jika portIndex yang diteruskan adalah indeks yang valid di Serial.list() //(yaitu bukan opsi tiga dalam daftar dua) serialPortIndex = portIndex; //set variabel serialPortIndex ke indeks serialport baru //(ini digunakan untuk menampilkan titik di sebelah port aktif) } if(serialPortIndex != -1){ //periksa untuk memastikan port telah dipilih beberapa waktu sebelumnya jika (serialPort != null){serialPort.stop();} //jika port Serial sudah digunakan hentikan sebelum memuat yang baru serialPort = new Serial(this, 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 menghapus perintah * dan param1 dan meneruskannya ke arduino (menambahkan parameter tambahan atau perintah non arduino akan dilakukan di sini) */String interpretRequest(String requestString){ String returnValue = "OK"; //Mempersiapkan perintah String variabel returnValue; //Tiga baris berikutnya mengekstrak nilai setelah "command=" //(baris tambahan jika parameter perintah berada di //akhir permintaan dan tidak diikuti oleh & 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; //Tiga baris berikutnya mengekstrak nilai setelah "param1= " //(baris tambahan jika parameter perintah berada di //akhir permintaan dan tidak diikuti oleh & if(requestString.indexOf("PARAM1=") != -1){ param1String = requestString.substring (requestString.indexOf("PARAM1=") + "PARAM1=".length());} else{param1String = "0";} if(param1String.indexOf("& ") != -1){ param1String = param1String.substring(0, param1String.indexOf("&"));} else{param1String = param1String;} int param1 = Integer.parseInt(param1String); //Mengubah String param1 menjadi integer sendRobotCommand(perintah, param1); //Mengirim perintah ke rutin yang mengirimkannya ke Arduino returnValue = "command: " + command + " param1: " + param1; //saat ini hanya perintah yang diuraikan 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 mendengarkan dan reasts * Perintah yang Saat Ini Didukung * F -*/void sendRobotCommand(String command, int param1){ println("command: " + command + " time: " + param1); String checkString = "AAA"; if(serialPort != null){ serialPort.write(checkString + perintah); serialPort.write(byte(param1)); }}//Akhir pengaturan/tidak terlalu umum disebut rutin//----------------------------------- -------------------------------------------------- //Contoh tombol dan kode RectButton dari contoh processing.org dengan beberapa perubahan //dibuat sebagian besar untuk menyederhanakan dan menghapus animasi roll over//https://processing.org/learning/topics/buttons.html (2008-09-23) Kelas Tombol{ int x, y; int lebar, tinggi; Tombol(int ix, int iy, int iwidth, int iheight) { x = ix; y = iy; lebar = lebar; tinggi = tinggi; } boolean ditekan() { if(overRect()) { kembali benar; } else { return false;} } boolean overRect() { if (mouseX >= x && mouseX = y && mouseY <= y+height) { return true; } else { kembali salah; } }}

Langkah 5: Perangkat Lunak - (Halaman Web)

Perangkat Lunak - (Halaman Web)
Perangkat Lunak - (Halaman Web)
Perangkat Lunak - (Halaman Web)
Perangkat Lunak - (Halaman Web)
Perangkat Lunak - (Halaman Web)
Perangkat Lunak - (Halaman Web)

Yah kita hampir selesai, yang tersisa hanyalah berbicara dengan robot Anda. Untuk Berbicara: (melalui jaringan lokal -di windows-)

  • Temukan alamat ip lokal komputer laptop. Untuk melakukan ini, buka "Start\Programs\Accesories\Command Prompt" dan ketika jendela terminal terbuka ketik "ipconfig". Tulis "Alamat IP" dan buka komputer lain di jaringan lokal Anda.
  • Buka web browser, ketik "https:// (ip komputer robot):12345/ControlPage.html
  • Halaman web kontrol harus dimuat, di kotak "Alamat IP" ketik ip komputer robot.
  • Mulailah mengendalikan robot Anda.

To Get Talking: (melalui internet) Sekarang setelah Anda membuatnya bekerja secara lokal membuatnya berbicara melalui internet hanya beberapa langkah lagi.

  • (langkah paling sulit) Mengatur Port Forwarding - Komputer Anda harus mendengarkan internet daripada hanya jaringan lokal. Untuk melakukan ini, Anda perlu memberi tahu router Anda untuk meneruskan permintaan tertentu ke komputer yang mengendalikan robot. Ini agak rumit dan jauh melampaui cakupan Instructable ini. Namun jika Anda mengunjungi PortForward.com, mereka akan memberi Anda semua yang perlu Anda ketahui tentang mengkonfigurasi router Anda (Anda perlu meneruskan port 12345 ke laptop robot Anda)
  • Selanjutnya temukan IP internet Anda (kunjungi WhatIsMyIP.com)
  • Akhirnya jalankan skype setup panggilan video dan dapatkan siapa pun yang Anda ajak bicara untuk mengunjungi "https://(internet IP):12345/ControlPage.html"
  • Ketikkan IP internet ke dalam kotak "Alamat IP" di halaman web kontrol dan Robot Terhubung Web Anda sedang didorong dari jauh.

Langkah 6: Selesai

Selesai
Selesai

Nah itu saja. Saya harap Anda bersenang-senang mengendarai robot Anda dari jauh. Jika Anda memiliki masalah dengan perangkat lunak atau perangkat keras, silakan tinggalkan komentar dan saya akan mencoba membantu Anda. Jika Anda ingin melihat proyek yang lebih rapi, coba kunjungi: oomlout.com

Direkomendasikan: