Isi kandungan:
- Langkah 1: Perkakasan Diperlukan
- Langkah 2: Memasang Casis
- Langkah 3: Memasang Elektronik
- Langkah 4: Menambah Kamera Web
- Langkah 5: Pendawaian Semuanya
- Langkah 6: Menyiapkan RPI
- Langkah 7: Mengkonfigurasi Port Serial RPI
- Langkah 8: Memasang Modul Python
- Langkah 9: Menyiapkan RoboClaw
- Langkah 10: Memasang Rover Program / fail
- Langkah 11: Memulakan Bot Naik
- Langkah 12: Mengakses Halaman Kawalan Bot
- Langkah 13: Kod Python / Flask
- Langkah 14: Menggunakan Perkakasan Lain
Video: Rover Terkawal Web: 14 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Membina dan bermain dengan robot adalah keseronokan utama saya dalam hidup. Yang lain bermain golf atau ski, tetapi saya membina robot (kerana saya tidak dapat bermain golf atau ski:-). Saya merasa santai dan menyeronokkan! Untuk membuat sebahagian besar bot saya, saya menggunakan kit casis. Menggunakan kit membantu saya melakukan perkara yang lebih saya gemari, perisian dan elektronik dan juga membuat casis yang lebih baik untuk diri saya sendiri.
Dalam Instructable ini, kita akan melihat apa yang diperlukan untuk membuat rover terkawal Wifi / web yang ringkas tetapi kuat. Casis yang digunakan adalah Actobotics Gooseneck. Saya memilihnya kerana saiz, kemampuan pengembangan dan kosnya tetapi anda boleh menggunakan casis lain yang anda pilih.
Untuk projek seperti ini, kita memerlukan komputer papan tunggal yang kukuh dan untuk bot ini saya memilih untuk menggunakan komputer berasaskan Linux Raspberry Pi (RPI). RPI (dan Linux) memberi kami banyak pilihan pengekodan dan Python akan digunakan untuk sisi pengekodan. Untuk antara muka web saya menggunakan Flask, kerangka web ringan untuk Python.
Untuk menggerakkan motor, saya memilih RoboClaw 2x5a. Ia membolehkan komunikasi bersiri mudah untuk memerintahkannya dan berfungsi dengan baik dengan RPI dan motor di Gooseneck.
Akhirnya, ia mempunyai kamera web untuk maklum balas video jenis POV untuk mengarahkannya dari jauh. Saya akan membahas setiap topik dengan lebih terperinci kemudian.
Langkah 1: Perkakasan Diperlukan
- Casis Actobotics Gooesneck atau pengganti yang sesuai dengan pilihan anda
- Raspberry Pi pilihan anda (atau klon) - Model B RPI digunakan pada bot ini, tetapi mana-mana dengan sekurang-kurangnya dua port USB akan berfungsi
- Plat Servo Piawai B x1
- Kurungan Saluran Sudut Tunggal 90 ° x1
- Pemandu motor RoboClaw 2x5a
- S3003 atau servo saiz standard yang serupa
- Papan roti kecil atau papan roti Mini
- Wayar pelompat Perempuan ke Perempuan
- Wayar pelompat Lelaki hingga Perempuan
- Kamera web (pilihan) - Saya menggunakan Logitech C110, dan berikut adalah senarai kamera yang disokong untuk RPI
- Sumber kuasa 5v-6v untuk kuasa servo
- Bateri 7.2v-11.1v untuk menghidupkan motor pemacu
- Bank kuasa USB 5v 2600mah (atau lebih tinggi) untuk RPI
- Penyesuai Wifi USB
Di bot saya, saya menggunakan roda 4 untuk menjadikannya lebih Sedikit-Terrain-Dalaman. Untuk pilihan ini, anda memerlukan:
- Roda Tugas Berat 4 "x2
- Hab Skru Set Bore 4mm (0,770 inci) x2
Langkah 2: Memasang Casis
Pasang casis pertama mengikut arahan yang disertakan dengan casis atau video. Selepas selesai anda harus mempunyai sesuatu seperti gambar. CATATAN: Semasa memasang bahagian Leher, lepaskan pendakap pemasangan.
Di bot saya, saya memilih untuk mengganti roda yang disertakan dengan casis untuk roda tugas berat 4 . Ini adalah pilihan dan tidak diperlukan melainkan anda mahu melakukan perkara yang sama.
Langkah 3: Memasang Elektronik
Gooseneck mempunyai banyak ruang dan pilihan untuk memasang elektronik anda. Saya memberikan gambar-gambar ini sebagai garis panduan, tetapi anda boleh memilih bagaimana anda ingin meletakkan semuanya. Anda boleh menggunakan pita dua sisi, pita dua sisi, Velcro atau servo-tape untuk memasang papan dan bateri.
Langkah 4: Menambah Kamera Web
Ambil pendakap 90 darjah, hub servo ringan dan empat (4) skru.3125 untuk langkah ini:
- Ambil hub servo dan letakkan di satu sisi pendakap dan pasangkannya dengan skru.2125 "seperti gambar
- Seterusnya pasang servo ke dalam braket servo
- Pasang pendakap 90 darjah dengan servo tanduk ke tulang belakang servos dan gunakan skru tanduk yang disertakan dengan servo untuk menghubungkannya bersama
- Sekarang pasangkan Servo dalam kurungan ke bahagian atas leher angsa dengan skru yang tinggal
- Pasang kamera dengan ikatan zip atau pita dua sisi pada pendakap 90 darjah
Gunakan gambar untuk panduan sekiranya diperlukan.
Langkah 5: Pendawaian Semuanya
Pendawaian agak terhad untuk robot ini.
The Motors:
Solder mengarah pada kedua-dua motor jika anda belum melakukannya
Dengan bahagian depan robot (hujung dengan leher angsa) menghadap ke arah anda:
- Sambungkan wayar motor pada motor kiri ke saluran M1A dan M1B
- Sambungkan wayar motor di motor kanan ke saluran M2A dan M2B
Sambungan darat (GND):
- Sambungkan satu pin tanah pada RoboClaw ke papan pelompat tanah. Garis pin tanah di RoboClaw paling dekat dengan pusat (Lihat gambar)
- Sambungkan PIN 6 pada RPI ke papan pelompat. Lihat gambar tajuk RPI untuk penugasan pin.
- Sambungkan GND dari pek bateri servo ke salah satu pin pada papan pelompat.
- Jalankan wayar pelompat dari papan pelompat ke wayar servos GND.
RPI ke RoboClaw:
Sambungkan pin RPI GPIO14 TXD ke pin RoboClaw S1
Kuasa:
- Sambungkan wayar POS dari bateri servo ke plumbum servos
- Sambungkan wayar POS dari bateri motor ke POS (+) terminal input kuasa motor RoboClaw. Kami akan membiarkan terminal GND terputus buat masa ini.
Langkah 6: Menyiapkan RPI
Saya menganggap pengguna di sini mengetahui beberapa perkara mengenai Linux dan RPI. Saya tidak merangkumi cara menyediakan atau menyambungkannya. Sekiranya anda memerlukan pertolongan, gunakan halaman di bawah.
Untuk mendapatkan persediaan RPI anda, lihat halaman berikut:
- Persediaan Asas RPI
- Panduan permulaan pantas RPI
- Guilde persediaan NOOBS
Untuk halaman lompatan umum, halaman utama RPI dan halaman eLinux adalah tempat yang baik untuk bermula.
Lihat pautan ini untuk penyediaan Wifi umum RPI.
Sekiranya anda ingin menggunakan kamera atau kamera web di bot, lihat halaman ini untuk mendapatkan fail asas yang diperlukan.
- Penyediaan cam RPI
- Penyediaan cam eLinix RPI
Menstrim video:
Terdapat beberapa cara untuk membuat streaming video berfungsi pada RPI, tetapi kaedah yang saya sukai adalah menggunakan Motion.
Untuk memasangnya pada RPI anda jalankan ini: sudo apt-get install motion
Ini dapat diatur untuk mengaturnya untuk streaming juga.
Langkah 7: Mengkonfigurasi Port Serial RPI
Kita perlu mematikan mod konsol Linux untuk menggunakan RX dan TX kerana kita ingin bercakap dengan pengawal motor RoboClaw dari port ini. Untuk melakukan ini, anda boleh menggunakan kaedah ini atau alat ini. Pilihannya adalah pilihan anda kerana kedua-duanya melakukan perkara yang sama pada akhirnya.
Langkah 8: Memasang Modul Python
Anda memerlukan python yang dipasang di RPI dan juga pip pemasang python.
Untuk memasang pip lakukan:
- sudo apt-get install python-setuptools
- sudo easy_install pip
Kemudian:
- sudo pip pasang kelalang
- sudo pip pasang pyserial
- sudo pip pasang RPIO
Ini akan menjadi semua modul yang diperlukan agar kod dapat dijalankan.
Langkah 9: Menyiapkan RoboClaw
Saya mempunyai kod robot yang bercakap dengan RoboClaw dalam Mod Serial Standard pada 19200 baud.
Untuk menetapkan RoboClaw, lakukan:
- Tekan butang "MODE" pada RoboClaw
- Tekan butang set sehingga LED berkelip 5 (lima) kali antara kelewatan
- Tekan butang "LIPO" untuk menyimpan
- Seterusnya tekan butang "SET" sehingga LED berkelip 3 (tiga) kali antara kelewatan
- Tekan butang LIPO untuk menyimpan
Itu sahaja untuk menyiapkan pengawal motor. Lihat pdf yang dipautkan di atas untuk maklumat lebih lanjut sekiranya diperlukan.
Langkah 10: Memasang Rover Program / fail
Muat turun dan salin fail rover.zip ke RPI anda di direktori pengguna pi anda.
Sekiranya anda menjalankan Linux atau Mac, anda boleh menggunakan 'scp' untuk melakukannya:
scp ~ / location / of / the / file / rover.zip pi @ your_rpi_ip: / ~
Untuk Windows, anda boleh memuat turun dan menggunakan pscp dan kemudian lakukan:
pscp /lokasi/of/the/file/rover.zip pi @ your_rpi_ip: / ~
Setelah zipfile disalin ke RPI, log masuk ke dalamnya sebagai pengguna pi.
Sekarang jalankan:
unzip rover.zip
Ini akan membuka zip fail ke folder bernama 'rover' dan mempunyai yang berikut di bawah folder itu:
- restrover.py (Kod python untuk robot)
- statik (menyimpan fail gambar untuk butang di halaman kawalan)
- templat (memegang fail index.htlm, halaman web kawalan)
Sekiranya anda menggunakan kamera web, ubah baris di bahagian bawah fail index.html dalam folder templat. Tukar URL di baris IFRAME agar sesuai dengan URL src untuk aliran video anda.
Langkah 11: Memulakan Bot Naik
Sambungkan kuasa USB ke RPI.
Untuk memulakan kod bot, log masuk sebagai pengguna pi dan jalankan:
- cd rover
- sudo python restrover.py
Sekiranya semuanya baik-baik saja, anda akan melihat skrin yang serupa dengan gambar dalam langkah ini
Sekiranya anda melihat kesilapan atau masalah, anda harus memperbaikinya sebelum meneruskannya.
Sekarang, sambungkan wayar GND (-) ke terminal NEG (-) pada input kuasa motor RoboClaw.
Langkah 12: Mengakses Halaman Kawalan Bot
Setelah skrip python robot berjalan, hidupkan RoboClaw dan kemudian arahkan ke ip RPI anda seperti:
your_rpi_ip
Anda mesti melihat halaman kawalan Web muncul seperti dalam gambar. Sekiranya tidak, periksa terminal output RPI anda dan cari kesilapan dan betulkan.
Setelah sampai di halaman, anda sudah bersedia untuk mengawal bot.
Robot akan bermula dalam tetapan "Med run" dan pada kelajuan Medium.
Bot dapat dikendalikan melalui butang di halaman atau dengan kekunci pada papan kekunci.
Kuncinya adalah:
- w - ke hadapan
- z - terbalik / belakang
- a - pusing kiri panjang
- s - pusing kanan panjang
- q - pusing kiri pendek
- e - pusing kanan pendek
- 1 - kamera pan kiri
- 2 - kamera pan sebelah kanan
- 3 - kuali kiri penuh
- 4 - kuali penuh ke kanan
- / - kamera rumah / tengah
- h - robot berhenti / berhenti
Terdapat penampan penundaan setengah saat antara arahan yang dihantar. Saya melakukan ini untuk menghilangkan perintah berulang yang tidak diingini. Anda tentu saja boleh mengeluarkannya dari kod jika anda mahu (dalam index.html)
Selebihnya kawalan dan pengawalannya harus jelas.
Langkah 13: Kod Python / Flask
Bot ini menggunakan rangka web Python dan Flask. Anda boleh mengetahui lebih lanjut mengenai Flask di sini jika anda berminat.
Perbezaan besar dari aplikasi Flask dan skrip Python biasa adalah @ app.route class / kaedah yang digunakan untuk melakukan pengendalian URI. Selain itu, Python hampir biasa.
#! / usr / bin / env python
# # Wifi / Web didorong Rover # # Ditulis oleh Scott Beasley - 2015 # # Menggunakan RPIO, pyserial dan Flask # import time import dari RPIO import PWM dari termos import Flask, render_template, request app = Flask (_name_, static_url_path = ") # Sambungkan ke port comm untuk bercakap dengan pengawal motor Roboclaw cuba: # Tukar kadar baud di sini jika berbeza dari 19200 roboclaw = serial. Serial ('/ dev / ttyAMA0', 19200) kecuali IOError: print ("Port Comm not found ") sys.exit (0) # Pemboleh ubah kawalan kelajuan dan pemacu last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Posisi neutral servo (rumah) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18 # servo_pos def index (): return render_template ('index.html', name = None) @ app.route ("/ forward") def forward (): global_direction terakhir, run_ti saya mencetak "Teruskan" go_forward () last_direction = 0 # sleep 100ms + run_time time.sleep (0.100 + run_time) # Jika tidak berterusan, hentikan selepas kelewatan jika run_time> 0: last_direction = -1 berhenti () kembali "ok" @ app.route ("/ undur") def mundur (): global_akhir arah, print_time print "Backward" go_backward () last_direction = 1 # sleep 100ms + run_time time.sleep (0.100 + run_time) # Sekiranya tidak berterusan, hentikan selepas kelewatan if run_time> 0: last_direction = -1 stop () return "ok" @ app.route ("/ left") def left (): global_ lastrection, turn_tm_offset print "Left" go_left () last_direction = -1 # tidur @ 1 / 2 kali kedua.sleep (0.500 - turn_tm_offset) # stop stop () time.sleep (0.100) return "ok" @ app.route ("/ right") def right (): global last_direction, turn_tm_offset print "Right" go_right () # tidur @ 1/2 kali kedua.sleep (0.500 - turn_tm_offset) last_direction = -1 # stop stop () time.sleep (0.100) return "ok" @ app.route ("/ ltforward") def ltforward (): arah terakhir global, turn_t cetakan m_offset "Belok kiri ke depan" go_left () # tidur @ 1/8 kali kedua.sleep (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop stop () time.sleep (0.100) return "ok" @app.route ("/ rtforward") def rtforward (): arahan terakhir global, cetak_tm_offset cetak "Belok kanan ke depan" go_right () # tidur @ 1/8 kali kedua.sleep (0.250 - (turn_tm_offset / 2)) last_direction = -1 # berhenti berhenti () time.sleep (0.100) kembali "ok" @ app.route ("/ stop") def berhenti (): cetakan terakhir_direction global "Berhenti" berhenti () last_direction = -1 # tidur 100ms time.sleep (0.100) kembali "ok" @ app.route ("/ panlt") def panlf (): cetakan servo_pos global "Panlt" servo_pos - = 100 jika servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # tidur 150ms masa. tidur (0.150) kembali "ok" @ app.route ("/ home") def home (): global servo_pos print "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" @ app.route ("/ panfull_lt") def panfull_lt (): cetakan servo_pos global "Pan penuh l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return" ok "@ app.route (" / panfull_rt ") def panfull_rt (): cetakan servo_pos global" Pan penuh kanan "servo_pos = 2500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" @ app.route ("/ speed_low") def speed_low (): global speed_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # Kemas kini arah semasa untuk mendapatkan kelajuan baru jika last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @ app.route ("/ speed_mid") def speed_mid (): speed_offset global, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # Kemas kini arah semasa untuk mendapatkan kelajuan baru jika last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) kembali "ok" @ app.route ("/ speed_hi") def speed_hi (): speed_offset global, last_direction, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0.332 # Kemas kini arah semasa untuk mendapatkan kelajuan baru jika last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @ app.route ("/ berterusan "def def Continuous (): print run_time global" Continuous run "run_time = 0 # sleep 100ms time.sleep (0.100) return" ok "@ app.route (" / mid_run ") def mid_run (): global run_time print" Mid run "run_time = 0.750 stop () # sleep 100ms time.sleep (0.100) return" ok "@ app.route (" / short_time ") def short_time (): cetakan run_time global" jangka pendek "run_time = 0.300 berhenti () # tidur 100ms time.sleep (0.100) return "ok" # # Fungsi pemacu motor # def go_forward (): speed_offset global jika speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) other: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.wri te (chr (255 - speed_offset)) other: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) other: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right (): global speed_offset jika speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) other: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset) def def (): roboclaw.write (chr (0)) if _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = True)
Sekiranya anda tidak mahu atau memerlukan maklumat debug dari Flask, tetapkan debug ke 'false' pada baris app.run.
jika _nama_ == "_main_":
app.run (host = '0.0.0.0', port = 80, debug = Salah)
Anda juga boleh menukar port yang didengarkan oleh pelayan Flask http di sini.
Langkah 14: Menggunakan Perkakasan Lain
Sekiranya anda ingin menggunakan perkakasan lain, seperti jenis SBC (Single Board Computer) yang lain, anda pasti mempunyai masalah kecil apabila Python dan Flask berjalan di papan lain seperti Beagle Bone, PCDuino dll … Anda perlu menukar kod agar sesuai dengan GPIO susun atur dan gunakan kemampuan pemanduan servo papan baru.
Untuk menggunakan pemacu motor jenis lain, anda hanya perlu mengubah fungsi go_forward, go_backward, go_left, go_right dan stop untuk melakukan apa sahaja yang diperlukan oleh pemandu motor pengganti untuk membuat motor melakukan fungsi tertentu.
Disyorkan:
Rover Terkawal Bluetooth Dengan Dexter: 9 Langkah
Bluetooth Controlled Rover With Dexter: Dexter board adalah kit pelatih pendidikan yang menjadikan pembelajaran elektronik menyeronokkan dan mudah. Lembaga ini mengumpulkan semua bahagian yang diperlukan oleh seorang pemula untuk mengubah idea menjadi prototaip yang berjaya. Dengan Arduino di tengah-tengahnya, sejumlah besar
Cara Membuat Rover Terkawal Android: 8 Langkah (dengan Gambar)
Cara Membuat Rover Terkawal Android: dalam instruksional ini saya akan menunjukkan kepada anda bagaimana cara membuat kereta atau rover yang dikendalikan android. Bagaimana Robot yang Dikawal Android Berfungsi? Robot terkawal aplikasi Android berkomunikasi melalui Bluetooth ke modul Bluetooth yang terdapat pada rompakan
Bot Bot Anjing: Lego Robot Rover Dengan Kamera Web: 17 Langkah (dengan Gambar)
Bot Bot Dog: Lego Robot Rover Dengan Kamera Web: Inilah cara membuat robot Lego yang dapat anda kendalikan dari mana-mana skrin melalui wifi. Ia juga mempunyai kamera web sehingga anda dapat melihat ke mana arah anda dan lampu LED untuk mata! Ini adalah projek yang bagus untuk anak-anak anda kerana mereka boleh membuat pembinaan logo dan anda boleh
Robot Rover FPV terkawal Wi-fi (dengan Arduino, ESP8266 dan Stepper Motors): 11 Langkah (dengan Gambar)
Wi-fi terkawal FPV Rover Robot (dengan Arduino, ESP8266 dan Stepper Motors): Instruksional ini menunjukkan cara merancang rover robot roda dua yang dikendalikan dari jarak jauh melalui rangkaian wi-fi, menggunakan Arduino Uno yang disambungkan ke modul Wi-fi ESP8266 dan dua motor stepper. Robot boleh dikendalikan dari kening internet biasa
Kamera Pengawasan Terkawal Web: 8 Langkah (dengan Gambar)
Kamera Pengawasan Terkawal Web: Tujuan kerja ini adalah untuk menunjukkan, bagaimana membangun sistem pengawasan dengan antara muka halaman web. Kamera web boleh dipusingkan ke arah menegak atau mendatar melalui antara muka, tetapi hanya di kawasan yang dibenarkan oleh sensor sempadan. Sambungan