Isi kandungan:

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: ESP32 FPV camera 2024, Julai
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 hebat. Malah merangkumi pengecaman wajah!

Mari buat robot First Person Viewpoint yang anda pandu melalui antara muka web on-board!

Projek ini menggunakan modul Geekcreit ESP32 dengan Kamera OV2640. Ia berdasarkan modul AIThinker.

Terdapat banyak klon ESP32 Camera di luar sana. Ada yang bekerja, ada yang tidak. Saya cadangkan anda menggunakan modul yang sama seperti yang saya lakukan sehingga anda mempunyai peluang yang baik untuk berjaya.

Robot berfungsi seperti berikut.

ESP32 menyiarkan URL web ke rangkaian anda yang menghadirkan aliran video langsung dengan beberapa kotak pilihan untuk mengendalikan beberapa fungsi kamera. Ia juga menerima penekanan tombol yang dikirim ke halaman web dari papan kekunci yang merupakan arahan arah untuk robot. Anda mungkin ingin membina pelindung kayu bedik USB supaya anda dapat menggerakkan robot dengan kayu bedik daripada mengetik perintah papan kekunci.

Apabila ESP32 menerima penekanan kekunci, ia meneruskan byte ke Arduino Nano yang kemudian menggerakkan motor untuk membuat robot bergerak.

Projek ini mempunyai tahap kesukaran sederhana tinggi. Sila luangkan masa anda.

Mari kita mulakan!

Bekalan

  • Modul kamera ESP-32 dengan Kamera OV2640 - Saya akan mengesyorkan produk Geekcreit
  • Antena snap-on luaran untuk ESP-32 untuk memaksimumkan kekuatan isyarat
  • Arduino Nano
  • Arduino Leonardo untuk modul Joystick (kami memerlukan emulasi papan kekunci USB yang disediakan oleh Leonardo)
  • Modul Joystick generik
  • Cip Jambatan Quad H L293D
  • DC-DC Buck Coverter dengan output 5V untuk menghidupkan ESP32
  • FTDI Serial Adapter untuk pengaturcaraan ESP32
  • Casis robot generik dengan dua motor gear - casis mana pun akan berfungsi. Motor 3 hingga 6V disyorkan
  • 2 x 7.4V 1300mAh bateri LiPo (atau serupa) untuk memberi kuasa kepada ESP32 dan motor
  • 1 x 9V bateri untuk menghidupkan Arduino Nano

Langkah 1: Programkan Kamera ESP32

Programkan Kamera ESP32
Programkan Kamera ESP32
Programkan Kamera ESP32
Programkan Kamera ESP32

Dengan menggunakan papan roti, sambungkan Kamera ESP32 anda ke penyesuai FTDI seperti 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 memasukkan ESP32 ke mod pengaturcaraan.

Nyahzip fail esp32CameraWebRobotforInstructable.zip.

Terdapat 4 fail dalam projek ini:

esp32CameraWebRobotforInstructable.ino adalah lakaran Arduino.

ap_httpd.cpp adalah kod yang menguruskan pelayan web dan berurusan dengan menetapkan ciri kamera dari laman web dan menerima penekanan kekunci dari laman web.

camera_index.h mengandungi kod HTML / JavaScript untuk aplikasi web sebagai susunan bait. Mengubah aplikasi web jauh di luar ruang lingkup projek ini. Saya akan memasukkan pautan untuk bagaimana mengubah HTML / JavaScript kemudian.

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

Untuk memasukkan ESP32 ke dalam Mod Programming, anda mesti menyambungkan IO0 ("eye-oh-zero") ke Ground.

Lancarkan Arduino IDE anda dan pergi ke Tools / Boards / Boards Manager. Cari esp32 dan pasang perpustakaan esp32.

Buka projek di Arduino IDE anda.

Masukkan ID rangkaian router dan kata laluan ANDA ke dalam garis yang disorot dalam gambar di atas. Simpan projek.

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

Papan: ESP32 Wrover

Kelajuan Muat Naik: 115200

Skema Partition: "APP Besar (3MB no OTA)"

dan pilih port yang disambungkan oleh penyesuai FTDI anda.

Klik butang "Muat Naik".

Sekarang, kadangkala, ESP32 tidak akan mula dimuat naik. Oleh itu, bersedia untuk menekan butang RESET di bahagian belakang ESP32 apabila anda mula melihat watak… ---… muncul di konsol semasa memuat naik. Kemudian akan dimuat naik.

Apabila anda melihat 'tekan RST' di konsol, muat naik selesai.

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

Kamera ESP32 memerlukan banyak arus untuk berfungsi dengan baik. Sambungkan penyesuai kuasa 5V 2A ke pin 5V dan GND pada ESP32.

Buka Serial Monitor, tetapkan kadar baud ke 115200 dan kemudian tonton ketika ESP32 dihidupkan semula. Akhirnya, anda akan melihat URL untuk pelayan.

Pergi ke Penyemak Imbas anda dan masukkan URL. Semasa laman web dimuat, klik butang 'Mula Streaming' dan aliran video langsung akan bermula. Sekiranya anda mengklik pada kotak pilihan 'Floodlight', LED flash on-board akan menyala. Berhati-hati! ITU CERAH!

Langkah 2: Bina Robot

Bina Robot
Bina Robot

Anda memerlukan casis robot beroda dua. Mana-mana orang akan lakukan. Pasang casis mengikut arahan pengeluar.

Kemudian pasangkan robot seperti gambar rajah. Tinggalkan sambungan bateri buat masa ini.

L293D digunakan untuk mengawal motor. Perhatikan bahawa setengah kedudukan pada cip MENJALANKAN ESP32.

Biasanya, 6 pin diperlukan di Arduino untuk mengawal dua motor.

Robot ini hanya memerlukan 4 pin dan masih berfungsi sepenuhnya.

Pin 1 dan 9 disambungkan ke sumber Arduino 5V sehingga kekal TINGGI. Dengan memasang robot dengan cara ini, kita memerlukan dua pin lebih sedikit di Arduino untuk mengawal motor.

Dalam arah ke hadapan, pin INPUT ditetapkan ke RENDAH dan pin Modulasi Gelombang Nadi motor ditetapkan ke nilai antara 0 dan 255 dengan 0 bermaksud MATI dan 255 bermaksud kelajuan maksimum.

Dalam arah terbalik, pin INPUT ditetapkan ke TINGGI dan nilai PWM dibalikkan. 0 bermaksud kelajuan maksimum dan 255 mati.

Buka zip dan muat naik lakaran ArduinoMotorControl ke Arduino Nano.

Langkah 3: HEY! Tunggu sebentar! Mengapa Saya Memerlukan Arduino Nano?

Anda mungkin berfikir, "Hei! Terdapat sekurang-kurangnya 4 pin IO pada kamera ESP32. Mengapa saya tidak dapat menggunakannya untuk mengawal motor?"

Betul, ada pin pada ESP32 seperti berikut:

IO0 - diperlukan untuk meletakkan ESP32 dalam mod pengaturcaraan

IO2 - tersedia

IO4 - Lampu LED

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

Sekiranya anda hanya memuatkan lakaran asas ke ESP32 untuk mengawal pin dengan arahan PWM, ia berfungsi.

Bagaimanapun, setelah anda mengaktifkan perpustakaan CAMERA dalam lakaran anda, pin ini tidak lagi tersedia.

Oleh itu, perkara yang paling mudah dilakukan ialah hanya menggunakan Nano untuk mengawal motor melalui PWM dan menghantar arahan dari ESP32 melalui komunikasi bersiri melalui satu wayar (ESP32 U0T ke Arduino Rx0) dan GND. Sangat ringkas.

Langkah 4: Wire Up USB Joystick (Pilihan)

Anda boleh menggerakkan robot dengan menghantar penekanan kekunci ke laman web seperti berikut:

8 - Maju

9 - Maju Kanan

7 - Maju Kiri

4 - Putar Kiri

5 - Berhenti

1 - Belakang Kiri

2 - Terbalik

3 - Kanan Terbalik.

Sketsa joystick USB menerjemahkan input joystick ke dalam penekanan kekunci dan menghantarnya ke antara muka web yang memajukannya ke Arduino untuk menggerakkan robot.

Sambungkan kayu bedik ke Arduino LEONARDO seperti berikut:

Joystick Leonardo

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

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

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

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

Buka lakaran usbJoyStick, pilih Arduino Leonardo sebagai papan dan muat naik ke Leonardo.

Sekiranya anda ingin mengujinya, cukup buka editor teks di komputer anda, klik tetikus di tetingkap dan mula menggerakkan kayu bedik. Anda harus melihat nilai dari 1 hingga 9 yang ditunjukkan di tetingkap

Langkah 5: MARI BERJALAN

Luangkan sedikit masa dan periksa pendawaian anda untuk memastikan semuanya betul.

Seterusnya, sambungkan bateri anda seperti berikut.

1. Hidupkan Kamera ESP32. Ia memerlukan beberapa saat untuk memulakan pelayan web.

2. Nyalakan Arduino Nano.

3. Hidupkan motor.

Lancarkan penyemak imbas anda dan pergi ke URL untuk ESP32.

Klik butang Mula Penstriman.

Klik tetikus anda di suatu tempat di skrin penyemak imbas sehingga kini layar menjadi tumpuan.

Mulakan memandu robot anda dengan kayu bedik (atau papan kekunci).

Saya mendapati bahawa ukuran bingkai lalai berfungsi dengan baik untuk menyiarkan video langsung dengan responsif melalui WiFi. Namun ketika anda meningkatkan ukuran bingkai, aliran akan menjadi lebih berombak kerana anda cuba menyiarkan gambar yang lebih besar.

Ini adalah projek yang mencabar yang memberi anda peluang untuk mula bekerja dengan streaming video langsung dan memandu robot melalui WiFi. Saya harap anda merasa seronok!

SEKARANG PERGI DAN JADIKAN SESUATU YANG MAHAL!

Kemas kini Januari 2020 - Foto terakhir menunjukkan versi terakhir robot, disolder keras dan dipasang dengan selamat ke casis.

Tiga suis yang dipasang di hadapan adalah seperti berikut:

Kiri - Bateri kuasa motor

Pusat - Bateri Arduino

Kanan - Bateri Kamera ESP32

Saya boleh menggunakan satu bateri besar dengan beberapa transformer buck-boost (saya menggunakannya untuk ESP32 - ia berada di sebelah kanan bawah foto pandangan depan), tetapi demi kesederhanaan, saya hanya menyimpan 3 bateri.

Robot kini berada di Titik Akses

Saya merasa sukar untuk menunjukkan robot ini di luar rumah saya kerana rangkaian perusahaan sekolah saya tidak membenarkan saya menghubungkan pelayan web robot dengannya. Sebagai penyelesaiannya, saya melakukan penyelidikan menggunakan ciri Access Point dari pelayan web ESP32. Ia memerlukan sedikit kerja, tetapi memerlukan sedikit perubahan pada lakaran robot utama untuk menjadikan ESP32 menyiarkan alamat IPnya sendiri. Ia tidak sekuat hab wifi berkelajuan tinggi khusus (kadang-kadang hang jika anda bergerak terlalu pantas), tetapi ia berfungsi dengan baik dan sekarang saya dapat menunjukkan robot di mana sahaja yang saya mahukan tanpa perlu menyambungkannya ke rangkaian! Setelah robot berfungsi, cubalah menukarnya menjadi Access Point sendiri!

Langkah 6: Perincian Cara Mengubah Kod HTML / Javascript untuk Pelayan Web

Ini tidak perlu, tetapi saya mempunyai beberapa permintaan.

Saya telah memberikan Dokumen Google ini dengan perincian mengenai cara menggunakan CyberChef untuk menukar bolak-balik antara HTML / Javascript dan perwakilan array byte dalam fail camera_index.h.

Disyorkan: