Daftar Isi:

Mobil RasbperryPi Dengan Kamera FPV. Kontrol oleh Web Browser: 31 Langkah (dengan Gambar)
Mobil RasbperryPi Dengan Kamera FPV. Kontrol oleh Web Browser: 31 Langkah (dengan Gambar)

Video: Mobil RasbperryPi Dengan Kamera FPV. Kontrol oleh Web Browser: 31 Langkah (dengan Gambar)

Video: Mobil RasbperryPi Dengan Kamera FPV. Kontrol oleh Web Browser: 31 Langkah (dengan Gambar)
Video: Rental PS Sepi Tahun 2023 2024, November
Anonim
Image
Image

Kami akan membangun mobil 4wd - kemudi akan serupa seperti di tangki - untuk memutar satu sisi roda akan berputar dengan kecepatan yang berbeda dari yang lain. Pada mobil akan ditempatkan kamera pada dudukan khusus dimana kita dapat mengubah posisi kamera. Robot akan dikendalikan oleh browser web (chrome atau firefox di desktop, atau firefox di ponsel), di browser, Kami akan mendapatkan video kamera (dengan latensi hanya 200ms), dan dari browser, kami dapat mengontrol pergerakan mobil dan posisi kamera. Untuk mempermudah komunikasi saya telah menggunakan sistem app.remoteme.org, ada juga yang bekerja di luar kotak mengendalikan mobil jenis ini, Jadi Anda tidak perlu menulis kode Anda sendiri, tetapi tentu saja Anda dapat memodifikasi skrip menambahkan kemungkinan baru dll.

Sebelum menghubungkan daya ke PCB Anda, harap periksa kembali semua koneksi

Langkah 1: Beberapa Informasi Tentang App.remoteme.org

Sistem ini memiliki tiga bagian

  • webapplication - ketika Anda meng-host halaman web kontrol Anda dan menghubungkan semua komunikasi
  • program rasbperryPi - program yang mengirim video, mengelola skrip python Anda
  • perpustakaan tempat Anda menemukan kelas, definisi fungsi

Remoteme.org adalah sistem yang cepat Anda menghubungkan semua perangkat Anda bersama-sama, Anda dapat meng-host di sana Halaman web Anda, lihat perangkat Anda yang terhubung. Sistem Remoteme.org dibuat untuk membantu Anda memulai membuat proyek Anda, tanpa khawatir tentang komunikasi protokol, ide utamanya adalah mengirim pesan biner antara berbagai perangkat seperti Halaman web, RasbeprryPI, arduino, dan skrip.

Dari sisi lain Remoteme.org memberi Anda kendali penuh atas file Anda, Anda dapat dengan mudah memodifikasinya dengan menulis fungsionalitas Anda sendiri

Pada tutorial ini saya akan menunjukkan kepada Anda bagaimana membuat beberapa proyek mengagumkan hampir tanpa menulis kode apapun.

Di akhir tutorial ini saya telah meletakkan tautan berguna yang akan membantu Anda memahami sistem remoteme.org.

Langkah 2: Apa yang Dibutuhkan:

Apa yang dibutuhkan
Apa yang dibutuhkan
Apa yang dibutuhkan
Apa yang dibutuhkan
  • Raspberry PI Nol W
  • Kamera khusus
  • Adafruit 16-Channel 12-bit PWM/Servo Driver - antarmuka I2C - PCA9685 atau tiruannya
  • Dua mekanisme servo yang kompatibel dengan dudukan kamera
  • Pemegang kamera
  • Baterai - Dalam tutorial dua kemungkinan koneksi
  • H bridge TB6612FNG, untuk mengontrol roda speer
  • File elang PCB Sangat mudah untuk membuatnya metode transfer termalDC-DC
  • Modul Konverter Step Down DC
  • Kasus robot

Langkah 3: Koneksi

Koneksi
Koneksi

Mekanisme servo kontrol Raspberry pi melalui modul PWM dan kecepatan motor oleh jembatan H yang terhubung ke pin RasbperryPi, input PWM ke jembatan H dihasilkan oleh modul yang sama yang saya gunakan untuk servos (bagian mana yang saya sebutkan di atas tidak diperlukan konverter logika)

Langkah 4: PCB

PCB
PCB
PCB
PCB

Anda dapat mengunduh file elang PCB dari sini Jalurnya gemuk sehingga mudah dibuat dengan metode transfer termal

Langkah 5: Output PCB

Keluaran PCB
Keluaran PCB
Keluaran PCB
Keluaran PCB
  1. Input PWM untuk motor penggerak Harus disambungkan ke modul PWM pin ke-15 dan ke-16 (periksa kotak hijau pada gambar modul PWM)
  2. Input daya untuk motor penggerak (periksa tegangan maksimum yang dapat digunakan motor Anda)
  3. Daya untuk modul RasbperryPi dan PWM – harus tepat
  4. Output motor penggerak (ada dua output karena kita akan memasangkan motor penggerak)
  5. Daya Mekanisme Servo - Anda juga harus memeriksa voltase apa yang baik untuk mereka
  6. Jumper dayanya yang sekarang dari input ke-5 akan memberi daya juga menggerakkan motor sehingga tidak perlu menghubungkan apa pun ke input 2
  7. Jumper jika ada RasbperryPi akan menjadi daya dari input ke-3 - sebelum meletakkan jumper di sini periksa apakah koneksi baik-baik saja - Anda tidak ingin membakar RPi Anda
  8. Mari kita solder di sini kabel karena kita tidak memerlukan konverter logika

Langkah 6: Bagaimana Ini Akan Bekerja

Di RasbperryPi ada skrip python yang menggunakan dua perpustakaan

  • import RPi. GPIO sebagai GPIO – untuk pin 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (notasi BCM) yang terhubung ke H bridge
  • impor Adafruit_PCA9685 untuk modul PWM

Pin Rpi terhubung sebagai berikut 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) dan mode kontrol jembatan H (maju, mundur, berhenti, istirahat pendek). H bridge juga membutuhkan dua sinyal PWM sehingga kita dapat mengontrol kecepatan atau putaran motor. Karena di proyek kami sudah memiliki pengontrol PWM (digunakan untuk servo) kami akan menggunakannya juga untuk menghasilkan PWM untuk jembatan H.

Modul PWM menggunakan protokol komunikasi I2C. Saya telah menggunakan bekerja di luar kotak Adafruit_PCA9685. Perpustakaan

Langkah 7: Perakitan Mobil - Roda

Perakitan Mobil - Roda
Perakitan Mobil - Roda
Perakitan Mobil - Roda
Perakitan Mobil - Roda

Kami akan mulai dari menghubungkan motor penggerak ke kasing mobil. Motor sisi kiri/samping terhubung bersama, dan keduanya berpasangan, terhubung ke beberapa kabel daya yang nantinya akan terhubung ke PCB. Catatan penting saat menghubungkan roda motor di setiap sisi harus berputar pada arah yang sama.

Langkah 8: Opsi Daya (Baterai Isi Ulang AA) 1/2

Daya (Baterai Isi Ulang AA) Opsi 1/2
Daya (Baterai Isi Ulang AA) Opsi 1/2
Daya (Baterai Isi Ulang AA) Opsi 1/2
Daya (Baterai Isi Ulang AA) Opsi 1/2
Daya (Baterai Isi Ulang AA) Opsi 1/2
Daya (Baterai Isi Ulang AA) Opsi 1/2
Daya (Baterai Isi Ulang AA) Opsi 1/2
Daya (Baterai Isi Ulang AA) Opsi 1/2

Saya akan menulis dua kemungkinan daya Mobil yang pertama adalah dari baterai isi ulang 10xAA Pada gambar terakhir saya telah ditarik oleh jumper warna merah yang harus diletakkan.

Langkah 9: Daya (Baterai Li-Po 7.2V) Opsi 2/2

Daya (Baterai Li-Po 7.2V) Opsi 2/2
Daya (Baterai Li-Po 7.2V) Opsi 2/2
Daya (Baterai Li-Po 7.2V) Opsi 2/2
Daya (Baterai Li-Po 7.2V) Opsi 2/2

Dan opsi kedua adalah baterai 7.2 LI-PO. Dalam hal ini kami mendapat 3 voltase – 5v Untuk Rpi dan modul, 6V untuk servos dan langsung dari baterai 7,2 volt untuk motor penggerak. Saya harus menggunakan dua modul step down

Opsi 2 dengan LI-PO lebih baik:

  • Baterai memiliki kapasitas lebih besar – mobil akan melaju lebih lama
  • Tegangan lebih besar untuk motor penggerak – mobil akan melaju lebih cepat
  • Kemungkinan kecil bahwa setelah motor penggerak mulai menemukan kita bisa mengalami penurunan tegangan yang besar dan RPI restart.

Langkah 10: Menyolder

Pematerian
Pematerian
Pematerian
Pematerian
Pematerian
Pematerian
Pematerian
Pematerian

Saya telah memasang beberapa spacer untuk modul PWM di PCB. Tidak ada yang perlu ditulis, lihat saja gambar cara menyolder semuanya bersama-sama

Langkah 11: Kamera

Kamera
Kamera

kami menghubungkan kamera, di sini tertulis cara memusatkan Mekanisme servo sebelum dipasang ke dudukan kamera, tetapi cara terpendek adalah dengan lembut secara manual memeriksa posisi rotasi maksimum dan mengatur servos di posisi tengah. Mekanisme servo terpusat ini kami masukkan ke dalam dudukan kamera di posisi tengah (kamera mengarah lurus ke depan seperti di foto)

Langkah 12: Menyatukan Suku Cadang Mobil

Menyatukan Suku Cadang Mobil
Menyatukan Suku Cadang Mobil
Menyatukan Suku Cadang Mobil
Menyatukan Suku Cadang Mobil
Menyatukan Suku Cadang Mobil
Menyatukan Suku Cadang Mobil

Untuk PCB saya sudah membuat meja plexiglass kecil

Langkah 13: Konfigurasi App.remoteme.org

Konfigurasi App.remoteme.org
Konfigurasi App.remoteme.org

Saya telah menggunakan sistem app.remoteme.org gratis yang membantu Anda membuat koneksi, dan sudah memiliki skrip yang kami butuhkan

Pada instruksi ini, saya hanya akan menunjukkan langkah demi langkah apa yang harus dilakukan untuk membuat mengemudi mobil (di sini Anda akan menemukan detail lebih lanjut)

  • Nyanyikan di https://app.remoteme.org setelah mendaftar Anda akan masuk secara otomatis
  • buka tab Token di sebelah kiri, lalu klik "token baru" berikan beberapa nama dan klik OK, Kami baru saja membuat token baru (gambar di layar)
  • dalam contoh ini, nilai tokennya adalah: ~1_&p@+BNnZ@A+x8 (milik Anda akan berbeda;))

Langkah 14: Konfigurasi RasbperryPi

Konfigurasi RasbperryPi
Konfigurasi RasbperryPi

di konsol dempul (di sini cara mengatur RPi kami mengaktifkan komunikasi kamera I2c)

git clone git://github.com/remoteme/remoteme.git

remote cd

python3.5 install.py

  • Penginstal akan menanyakan beberapa pertanyaan kepada kami untuk semua yang kami tanggapi [Y]es dan konfirmasi dengan [enter]
  • ketika instalasi akan meminta token, kami menempel (shift+insert) token yang disalin dari aplikasi dan Enter
  • nama misalnya Rpi
  • deviceId 1 Masuk
  • setelah instalasi - jalankan program

./runme.sh

Langkah 15: Memeriksa Koneksi

Memeriksa Koneksi
Memeriksa Koneksi

Mari kembali ke

Pada tab perangkat kita akan melihat RPi kita yang terhubung (ikon tautan hijau berarti RPi terhubung sekarang)

Langkah 16: Menambahkan Skrip Python

Menambahkan Skrip Python
Menambahkan Skrip Python
Menambahkan Skrip Python
Menambahkan Skrip Python

Sekarang kita akan menambahkan script python yang sudah ada di template jadi kita tidak perlu memprogram apapun.

Pada tab perangkat buka menu RasbperryPi dan pilih "Tambahkan skrip eksternal".

Ketika jendela baru muncul berikan informasi seperti pada gambar di atas

Jangan lupa untuk memilih template "car4wd". Setelah langkah ini, remoteme.org akan menambahkan skrip python ke RasbperryPi kami dan memulai kembali

Langkah 17: Memeriksa Apakah Skrip Python Berhasil Ditambahkan

Memeriksa Apakah Skrip Python Berhasil Ditambahkan
Memeriksa Apakah Skrip Python Berhasil Ditambahkan

Pada tab perangkat perangkat skrip python baru harus ditambahkan, dan deviceId-nya adalah 2. Ke halaman web Id perangkat ini akan mengirim pesan ke mobil kontrol

Langkah 18: Menambahkan Halaman Web ke Mobil Kontrol

Menambahkan Halaman Web ke Mobil Kontrol
Menambahkan Halaman Web ke Mobil Kontrol

di tab perangkat klik "Baru" lalu "Halaman Web". Kami hanya menambahkan perangkat lain - Halaman web kami akan menggunakannya untuk mengontrol mobil kami. Dan karena kami menggunakan template "car4wdDesktop" di halaman web, file sudah hampir siap digunakan

Langkah 19: Konfigurasikan Perangkat Halaman Web untuk Mengontrol Mobil 1/2

Konfigurasikan Perangkat Halaman Web untuk Mengontrol Mobil 1/2
Konfigurasikan Perangkat Halaman Web untuk Mengontrol Mobil 1/2

Perluas Halaman Web di tab perangkat dan klik index.html lalu Buka

Langkah 20: Konfigurasikan Perangkat Halaman Web untuk Mengontrol Mobil 2/2

Konfigurasikan Perangkat Halaman Web untuk Mengontrol Mobil 2/2
Konfigurasikan Perangkat Halaman Web untuk Mengontrol Mobil 2/2

Jendela muncul maka kita perlu memberikan deviceId dari skrip python kita pada kasus kita deviceId adalah 2. Mari kita ubah tempat yang ditunjukkan pada gambar

Langkah 21: Buka Pusat Kontrol Mobil

Buka Pusat Kontrol Mobil
Buka Pusat Kontrol Mobil
Buka Pusat Kontrol Mobil
Buka Pusat Kontrol Mobil

Sekarang saatnya untuk membuka halaman kami dan melihat cara kerjanya. Pada tab perangkat klik index.html dan kemudian "Buka di tab baru" Untuk mendapatkan pratinjau video Anda harus menggunakan browser chrome atau firefox browser lain tidak mendukung webRTC sepenuhnya

Langkah 22: Konfigurasi Kamera 1/2

Konfigurasi Kamera 1/2
Konfigurasi Kamera 1/2

Saat kita menggerakkan mouse di area video, kamera harus berubah posisi, dan seharusnya berfungsi persis seperti di game FPS. Itu mungkin tidak akan bergerak dengan benar

Langkah 23: Konfigurasi Kamera 2/2

Konfigurasi Kamera 2/2
Konfigurasi Kamera 2/2

Buka script.js (tab perangkat perluas halaman web lalu klik di script.js lalu buka) dan temukan tempat yang saya tunjukkan di layar

di posisi pusat kasus saya adalah 560 dan 430 dan jangkauan gerakan untuk kedua sumbu 200

Anda harus bereksperimen dengan angka-angka ini sehingga Anda mendapatkan pusat posisi kamera dan gerakan halus, Jika Anda menggunakan tutorial ini cukup salin nilai yang diberikan

Langkah 24: Mengemudi 1/2

Mengemudi 1/2
Mengemudi 1/2

Jika Anda menekan panah ke atas pada keyboard, pengukur harus berubah posisi dan mobil harus mengemudi. Jika Anda menekan panah "atas" dan mobil berputar maka Anda harus menambah/menghapus minus di beberapa tempat di layar.

Setelah operasi ini setelah menabrak panah "atas" mobil harus melaju ke depan dan mobil panah bawah harus melaju mundur.

Langkah 25: Mengemudi 2/2

Mengemudi 2/2
Mengemudi 2/2

Sekarang belok – tekan panah kiri jika mobil belok kanan Anda harus membalik kabel (periksa gambar di atas)

Jika Anda menyolder kabel ini, Anda dapat mengubahnya di script.jshanya mengubah urutan kecepatan pengiriman motor, sebelum:

pos=putByte(ret, pos, carController.getMotorMode(carController.getRightSideSpeed())); pos=putByte(ret, pos, Math.abs(carController.getRightSideSpeed()*255));

pos=putByte(ret, pos, carController.getMotorMode(-carController.getLeftSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getLeftSideSpeed()*255));

setelah:

pos=putByte(ret, pos, carController.getMotorMode(-carController.getLeftSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getLeftSideSpeed()*255));

pos=putByte(ret, pos, carController.getMotorMode(carController.getRightSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getRightSideSpeed()*255));

dan sekarang Anda harus bermain dengan minus seperti satu langkah sebelumnya untuk membuatnya bekerja dengan benar;). Seperti yang mungkin Anda perhatikan setelah menabrak panah mobil tidak mengemudi dengan kecepatan penuh untuk membuat mobil bergerak lebih cepat hanya melepaskan panah ke atas saat dalam posisi maksimum dan tekan dan tahan lagi

Langkah 26: Bagaimana Cara Kerjanya

Halaman web mengirim pesan pesan byte ke-9 ke skrip python dalam format:

  • 1 byte satu byte nilai integer 1
  • 2 byte integer X posisi kamera
  • 2 byte integer posisi kamera Y
  • 1 byte integer mode motor kiri (3= mundur, 1= maju, 2=berhenti)
  • 1 byte integer kiri kecepatan motor
  • 1 byte integer mode motor kanan (3= mundur, 1= maju, 2=berhenti)
  • 1 byte integer kecepatan motor kanan

pengiriman pesan dilakukan pada file script.js pada fungsi "sendNow()"

di RasbperryPi python.py mendapatkan pesan ini dalam fungsi "onUserMessage"

Anda dapat memeriksanya dan bermain sedikit sehingga Anda tahu apa yang sedang terjadi.

deskripsi fungsi kelas di sini

Langkah 27: Tablet, Kemudi Seluler

Tablet, Kemudi Ponsel
Tablet, Kemudi Ponsel

Kami menambahkan halaman web baru persis seperti yang kami lakukan sebelumnya tetapi sekarang kami memilih template "car4wdMobile"

Selanjutnya, kami mengonfigurasi semuanya di script.js seperti yang kami lakukan untuk halaman web kontrol desktop. Format pesannya persis sama sehingga kami tidak perlu mengubah skrip python.py.

Langkah 28: Buka Halaman di Ponsel

Buka Halaman di Ponsel
Buka Halaman di Ponsel
Buka Halaman di Ponsel
Buka Halaman di Ponsel

Alih-alih masuk ke akun Anda dari ponsel, cukup pindai url QR anymous.

detail QR di sini

Jika kontrol ponsel Anda berfungsi ketika RPi dan ponsel berada di wifi yang sama tetapi tidak jika Anda menggunakan internet seluler maka Anda harus menambahkan server giliran, cara melakukannya sudah saya tulis di sini

Langkah 29: Menambahkan Turn Server

Menambahkan Giliran Server
Menambahkan Giliran Server
Menambahkan Giliran Server
Menambahkan Giliran Server
Menambahkan Giliran Server
Menambahkan Giliran Server

Terkadang (ketika Anda berada di belakang NAT atau beberapa pengaturan firewall) Anda tidak dapat menghubungkan robot Anda dari jaringan lain maka robot Anda terhubung. Ini bukan masalah besar dan kemudian Anda harus menambahkan server giliran.

Saya telah menguji server dari perusahaan XIRSYS (gratis untuk penggunaan pengembang) dan saya akan menunjukkan cara mengkonfigurasi turn server menggunakan sistem XIRSYS

daftar:

global.xirsys.net/dashboard/signup

lalu klik "plus" untuk menambahkan aplikasi

di sebelah kanan di bawah "status turn creditentials" Anda memiliki semua data yang Anda butuhkan. Salin ke file webrtc_streamer.conf untuk melakukannya, buka

perluas perangkat RaspberryPi

klik file webrtc_streamer.conf

klik buka

dan tambahkan informasi

turn_server=turn_namapengguna=

turn_credential=

setelah Anda selesai mengedit Anda harus memiliki sesuatu seperti di layar.

lalu klik Save and restart You Rpi, dengan cara klik menu di device RasbperryPi dan pilih restart

Setelah program RPi dimulai ulang Anda dapat melihat pratinjau video di ponsel Anda bahkan Jika Anda menggunakan internet seluler.

Langkah 30: Kemudi Seluler

Kemudi Seluler
Kemudi Seluler

di lingkaran 1 kita letakkan jempol kiri, di 2 kanan – tidak harus tepat di titik ini – halaman web akan mengatur posisi nol tepat setelah Anda menyentuh layar, dan dengan menggerakkan jempol Anda (mengemudi kiri, posisi kamera kanan) Anda dapat mengontrol mobilmu

Langkah 31: Ringkasan

Saya harap Anda menyukai tutorial ini, seperti yang saya tulis sebelumnya di tutorial ini lebih detail tentang cara kerjanya di bawah tenda.

beberapa tautan:

remoteme.org - halaman utama remoteme.org disana Anda dapat menemukan dokumentasi dan tutorial

FB fanpage - Facebook fanpage informasi terbaru tentang remoteme.org

Youtube - beberapa video proyek, tutorial

Bersulang, Maciek

Direkomendasikan: