Daftar Isi:

Robot Kamera ESP32 - FPV: 6 Langkah
Robot Kamera ESP32 - FPV: 6 Langkah

Video: Robot Kamera ESP32 - FPV: 6 Langkah

Video: Robot Kamera ESP32 - FPV: 6 Langkah
Video: Advanced Mecanum Wheels Robot using Arduino & ESP32 CAM || 4WD Omnidirectional Movement 2024, Juli
Anonim
Image
Image
Robot Kamera ESP32 - FPV
Robot Kamera ESP32 - FPV
Robot Kamera ESP32 - FPV
Robot Kamera ESP32 - FPV

Modul Kamera ESP32 adalah PLC yang murah dan kuat. Bahkan termasuk pengenalan wajah!

Mari buat robot Sudut Pandang Orang Pertama yang Anda kendarai melalui antarmuka web terpasang!

Proyek ini menggunakan modul Geekcreit ESP32 dengan Kamera OV2640. Ini didasarkan pada modul AIThinker.

Ada banyak klon Kamera ESP32 yang berbeda di luar sana. Beberapa bekerja, beberapa tidak. Saya sarankan Anda menggunakan modul yang sama dengan yang saya lakukan sehingga Anda memiliki peluang bagus untuk sukses.

Robot bekerja sebagai berikut.

ESP32 menyiarkan URL web ke jaringan Anda yang menyajikan streaming video langsung dengan beberapa kotak centang untuk mengoperasikan beberapa fungsi kamera. Itu juga menerima penekanan tombol yang dikirim ke halaman web dari keyboard yang merupakan perintah arah untuk robot. Anda mungkin ingin membuat pelindung joystick USB sehingga Anda dapat mengemudikan robot dengan joystick daripada mengetik perintah keyboard.

Ketika ESP32 menerima penekanan tombol, ia meneruskan byte tersebut ke Arduino Nano yang kemudian menggerakkan motor untuk membuat robot bergerak.

Proyek ini memiliki tingkat kesulitan sedang-tinggi. Silakan luangkan waktu Anda.

Mari kita mulai!

Perlengkapan

  • Modul Kamera ESP-32 dengan Kamera OV2640 - Saya akan merekomendasikan produk Geekcreit
  • Antena snap-on eksternal untuk ESP-32 untuk memaksimalkan kekuatan sinyal
  • Arduino Nano
  • Arduino Leonardo untuk modul Joystick (kami membutuhkan emulasi keyboard USB yang disediakan oleh Leonardo)
  • Modul Joystick Umum
  • Chip L293D Quad H-bridge
  • DC-DC Buck Coverter dengan output 5V untuk memberi daya pada ESP32
  • Adaptor Serial FTDI untuk memprogram ESP32
  • Sasis robot generik dengan dua motor roda gigi - sasis apa pun akan berfungsi. Motor 3 hingga 6V direkomendasikan
  • Baterai LiPo 2 x 7.4V 1300mAh (atau serupa) untuk memberi daya pada ESP32 dan motor
  • Baterai 1 x 9V untuk memberi daya pada Arduino Nano

Langkah 1: Program Kamera ESP32

Program Kamera ESP32
Program Kamera ESP32
Program Kamera ESP32
Program Kamera ESP32

Menggunakan papan tempat memotong roti, sambungkan Kamera ESP32 Anda ke adaptor FTDI sebagai berikut:

FTDI ESP32

3.3V----------- 3.3V

GND-----------GND

TX ----------- U0R

Rx ----------- U0T

Selain itu, sambungkan pin IO0 ("eye-oh-zero") ke GND. Anda perlu melakukan ini untuk menempatkan ESP32 ke mode pemrograman.

Buka zip file esp32CameraWebRobotforInstructable.zip.

Ada 4 file dalam proyek ini:

esp32CameraWebRobotforInstructable.ino adalah sketsa Arduino.

ap_httpd.cpp adalah kode yang mengelola server web dan menangani pengaturan fitur kamera dari halaman web dan menerima penekanan tombol dari halaman web.

camera_index.h berisi kode HTML/JavaScript untuk aplikasi web sebagai array byte. Memodifikasi aplikasi web jauh di luar cakupan proyek ini. Saya akan menyertakan tautan untuk cara memodifikasi HTML/JavaScript nanti.

camera_pins.h adalah file header yang berkaitan dengan konfigurasi pin kamera ESP32.

Untuk memasukkan ESP32 ke Mode Pemrograman, Anda harus menghubungkan IO0 ("eye-oh-zero") ke Ground.

Luncurkan Arduino IDE Anda dan buka Tools/Boards/Boards Manager. Cari esp32 dan instal perpustakaan esp32.

Buka proyek di Arduino IDE Anda.

Masukkan ID jaringan router ANDA dan kata sandi ANDA ke dalam baris yang disorot pada gambar di atas. Simpan proyek.

Buka menu Tools dan buat pilihan seperti yang ditunjukkan pada gambar di atas.

Papan: ESP32 Wrover

Kecepatan Unggah: 115200

Skema Partisi: "APP Besar (3MB tanpa OTA)"

dan pilih port yang terhubung dengan adaptor FTDI Anda.

Klik tombol "Unggah".

Sekarang, terkadang, ESP32 tidak mulai mengunggah. Jadi bersiaplah untuk menekan tombol RESET di bagian belakang ESP32 ketika Anda mulai melihat karakter ……--… muncul di konsol saat mengunggah. Ini kemudian akan mulai mengunggah.

Saat Anda melihat 'tekan RST' di konsol, pengunggahan selesai.

PUTUSKAN IO0 dari Ground. Putuskan sambungan saluran 3.3V antara adaptor FTDI dan ESP32.

Kamera ESP32 membutuhkan banyak arus untuk bekerja dengan baik. Hubungkan adaptor daya 5V 2A ke pin 5V dan GND pada ESP32.

Buka Serial Monitor, atur baud rate ke 115200 dan kemudian perhatikan saat ESP32 reboot. Akhirnya, Anda akan melihat URL untuk server.

Buka Browser Anda dan masukkan URL. Saat situs web dimuat, klik tombol 'Mulai Streaming' dan streaming video langsung akan dimulai. Jika Anda mengklik kotak centang 'Floodlight', LED flash on-board akan menyala. Hati-Hati! ITU CERAH!

Langkah 2: Bangun Robot

Bangun Robot
Bangun Robot

Anda membutuhkan sasis robot roda dua. Siapa pun akan melakukannya. Pasang sasis sesuai instruksi pabrik.

Kemudian pasang robot sesuai diagram. Biarkan sambungan baterai untuk saat ini.

L293D digunakan untuk mengontrol motor. Perhatikan bahwa setengah takik pada chip adalah MENUJU ESP32.

Biasanya, 6 pin diperlukan pada Arduino untuk mengontrol dua motor.

Robot ini hanya membutuhkan 4 pin dan masih berfungsi penuh.

Pin 1 dan 9 terhubung ke sumber 5V Arduino sehingga secara permanen TINGGI. Menghubungkan robot dengan cara ini berarti kita membutuhkan dua pin lebih sedikit di Arduino untuk mengontrol motor.

Dalam arah maju, pin INPUT diatur ke LOW dan pin Modulasi Gelombang Pulsa motor diatur ke nilai antara 0 dan 255 dengan 0 berarti OFF dan 255 berarti kecepatan maksimum.

Dalam arah terbalik, pin INPUT diatur ke HIGH dan nilai PWM dibalik. 0 berarti kecepatan maksimum dan 255 berarti mati.

Buka zip dan unggah sketsa ArduinoMotorControl ke Arduino Nano.

Langkah 3: HAI! Tunggu sebentar! Mengapa Saya Membutuhkan Arduino Nano?

Anda mungkin berpikir, "Hei! Setidaknya ada 4 pin IO yang tersedia di kamera ESP32. Mengapa saya tidak dapat menggunakannya untuk mengontrol motor?"

Nah, ternyata benar ada pin pada ESP32 sebagai berikut:

IO0 - diperlukan untuk menempatkan ESP32 dalam mode pemrograman

IO2 - tersedia

IO4 - LED Flash

IO12, IO13, IO14, IO15, IO16 - pin GPIO tambahan.

Jika Anda hanya memuat sketsa dasar ke ESP32 untuk mengontrol pin dengan perintah PWM, mereka berfungsi.

NAMUN, setelah Anda mengaktifkan perpustakaan KAMERA di sketsa Anda, pin ini tidak lagi tersedia.

Jadi hal termudah untuk dilakukan adalah dengan hanya menggunakan Nano untuk mengontrol motor melalui PWM dan mengirim perintah dari ESP32 melalui komunikasi serial melalui satu kabel (ESP32 U0T ke Arduino Rx0) dan GND. Sangat sederhana.

Langkah 4: Pasang Joystick USB (Opsional)

Anda dapat menggerakkan robot dengan mengirimkan penekanan tombol ke halaman web sebagai berikut:

8 - Maju

9 - Maju Kanan

7 - Maju Kiri

4 - Putar Kiri

5 - Berhenti

1 - Mundur Kiri

2 - Terbalik

3 - Balik Kanan.

Sketsa joystick USB menerjemahkan input joystick menjadi penekanan tombol dan mengirimkannya ke antarmuka web yang meneruskannya ke Arduino untuk menggerakkan robot.

Hubungkan joystick ke Arduino LEONARDO sebagai berikut:

Leonardo Joystick

5V ---------- VCC

GND ---------- GND

A0 ---------- VRx

A1 ---------- VRy

Buka sketsa usbJoyStick, pilih Arduino Leonardo sebagai papan dan unggah ke Leonardo.

Jika Anda ingin mengujinya, cukup buka editor teks di komputer Anda, klik mouse di jendela dan mulai gerakkan joystick. Anda akan melihat nilai dari 1 hingga 9 ditampilkan di jendela

Langkah 5: MARI BERKENDARA

Luangkan waktu dan periksa kabel Anda untuk memastikan semuanya benar.

Selanjutnya, sambungkan baterai Anda sebagai berikut.

1. Nyalakan Kamera ESP32. Perlu beberapa detik untuk memulai server web.

2. Nyalakan Arduino Nano.

3. Nyalakan motor.

Luncurkan browser Anda dan buka URL untuk ESP32.

Klik tombol Mulai Streaming.

Klik mouse Anda di suatu tempat di layar browser sehingga layar sekarang menjadi fokus.

Mulai mengemudikan robot Anda dengan joystick (atau keyboard).

Saya telah menemukan bahwa ukuran bingkai default berfungsi dengan baik untuk menyiarkan video langsung dengan cukup responsif melalui WiFi. Namun saat Anda meningkatkan ukuran bingkai, aliran akan menjadi lebih terputus-putus karena Anda mencoba menyiarkan gambar yang lebih besar.

Ini adalah proyek menantang yang memberi Anda kesempatan untuk mulai bekerja dengan streaming video langsung dan mengemudikan robot melalui WiFi. Saya harap Anda menemukan itu menyenangkan!

SEKARANG PERGI DAN BUAT SESUATU YANG LUAR BIASA!

Pembaruan Januari 2020 - Foto terakhir menunjukkan versi final robot, disolder keras dan dipasang dengan aman ke sasis.

Tiga sakelar yang dipasang di depan adalah sebagai berikut:

Kiri - Baterai daya motor

Pusat - baterai Arduino

Kanan - Baterai Kamera ESP32

Saya dapat menggunakan satu baterai besar dengan beberapa transformator buck-boost (saya menggunakan satu untuk ESP32 - itu ada di kanan bawah foto tampak depan), tetapi demi kesederhanaan, saya hanya menyimpan 3 baterai.

Robot sekarang di Access Point

Saya merasa sulit untuk mendemonstrasikan robot ini di luar rumah saya karena jaringan perusahaan sekolah saya tidak mengizinkan saya untuk menghubungkan server web robot ke sana. Sebagai solusinya, saya melakukan riset untuk menggunakan fitur Access Point pada web server ESP32. Dibutuhkan beberapa pekerjaan, tetapi membutuhkan perubahan yang cukup minimal pada sketsa robot utama untuk membuat ESP32 menyiarkan alamat IP-nya sendiri. Ini tidak sekuat hub wifi kecepatan tinggi khusus (terkadang hang jika Anda bergerak terlalu cepat), tetapi bekerja dengan cukup baik dan sekarang saya dapat mendemonstrasikan robot di mana saja saya inginkan tanpa harus menghubungkannya ke jaringan! Setelah robot bekerja, coba ubah sendiri menjadi Access Point!

Langkah 6: Detail Cara Memodifikasi Kode HTML/Javascript untuk Webserver

Ini tidak perlu, tapi saya punya beberapa permintaan.

Saya telah memberikan Google Doc ini dengan detail tentang cara menggunakan CyberChef untuk mengonversi bolak-balik antara HTML/Javascript dan representasi array byte dalam file camera_index.h.

Direkomendasikan: