İçindekiler:

ESP32 Kamera Robotu - FPV: 6 Adım
ESP32 Kamera Robotu - FPV: 6 Adım

Video: ESP32 Kamera Robotu - FPV: 6 Adım

Video: ESP32 Kamera Robotu - FPV: 6 Adım
Video: ESP32 Cam Wifi Camera Robot Car | Remote Control Android App ESP32-Cam Robot 2024, Temmuz
Anonim
Image
Image
ESP32 Kamera Robotu - FPV
ESP32 Kamera Robotu - FPV
ESP32 Kamera Robotu - FPV
ESP32 Kamera Robotu - FPV

ESP32 Kamera modülü, ucuz ve güçlü bir PLC'dir. Hatta yüz tanıma içerir!

Yerleşik bir web arayüzü üzerinden sürdüğünüz bir First Person Viewpoint robotu yapalım!

Bu proje, OV2640 Kameralı Geekcreit ESP32 modülünü kullanır. AIThinker modülünü temel alır.

Orada birçok farklı ESP32 Kamera klonu var. Bazıları çalışıyor, bazıları çalışmıyor. Başarılı olmak için iyi bir fırsatınız olması için benim yaptığım modülü kullanmanızı öneririm.

Robot aşağıdaki gibi çalışır.

ESP32, kameranın bazı işlevlerini çalıştırmak için bazı onay kutuları ile canlı video akışını sunan ağınıza bir web URL'si yayınlar. Ayrıca, robot için yön komutları olan klavyeden web sayfasına gönderilen tuş basışlarını da alır. USB joystick kalkanını oluşturmak isteyebilirsiniz, böylece robotu klavye komutlarını yazmak yerine joystick ile sürebilirsiniz.

ESP32 tuş basımlarını aldığında, bu baytları Arduino Nano'ya iletir ve daha sonra robotu hareket ettirmek için motorları çalıştırır.

Bu proje orta-yüksek zorluktadır. Lütfen acele etmeyin.

Başlayalım!

Gereçler

  • OV2640 Kameralı ESP-32 Kamera modülü - Geekcreit ürününü tavsiye ederim
  • Sinyal gücünü en üst düzeye çıkarmak için ESP-32 için harici geçmeli anten
  • Arduino Nano
  • Joystick modülü için Arduino Leonardo (Leonardo tarafından sağlanan USB klavye emülasyonuna ihtiyacımız var)
  • Genel Joystick modülü
  • L293D Dörtlü H-köprü çipi
  • ESP32'ye güç sağlamak için 5V çıkışlı DC-DC Buck Coverter
  • ESP32'yi programlamak için FTDI Seri Adaptör
  • İki dişli motora sahip genel bir robot şasisi - herhangi bir şasi işe yarayacaktır. 3 ila 6V motorlar tavsiye edilir
  • ESP32'ye ve motorlara güç sağlamak için 2 x 7.4V 1300mAh LiPo pil (veya benzeri)
  • Arduino Nano'ya güç sağlamak için 1 x 9V pil

Adım 1: ESP32 Kamerayı Programlayın

ESP32 Kamerayı Programlayın
ESP32 Kamerayı Programlayın
ESP32 Kamerayı Programlayın
ESP32 Kamerayı Programlayın

Bir devre tahtası kullanarak ESP32 Kameranızı FTDI adaptörüne aşağıdaki şekilde bağlayın:

FTDI ESP32

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

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

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

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

Ek olarak, IO0 ("eye-oh-sıfır") pinini GND'ye bağlayın. ESP32'yi programlama moduna geçirmek için bunu yapmanız gerekir.

esp32CameraWebRobotforInstructable.zip dosyasını açın.

Bu projede 4 dosya var:

esp32CameraWebRobotforInstructable.ino, Arduino taslağıdır.

ap_httpd.cpp, web sunucusunu yöneten ve web sayfasından kamera özelliklerinin ayarlanması ve web sayfasından tuşlara basılması ile ilgilenen koddur.

camera_index.h, web uygulaması için bayt dizileri olarak HTML/JavaScript kodunu içerir. Web uygulamasını değiştirmek bu projenin kapsamı dışındadır. Daha sonra HTML/JavaScript'in nasıl değiştirileceğine ilişkin bir bağlantı ekleyeceğim.

camera_pins.h, ESP32 kameranın pin yapılandırmasıyla ilgili başlık dosyasıdır.

ESP32'yi Programlama Moduna sokmak için, IO0'ı ("eye-oh-zero") Toprağa bağlamanız gerekir.

Arduino IDE'nizi başlatın ve Tools/Boards/Boards Manager'a gidin. esp32'yi arayın ve esp32 kitaplığını kurun.

Projeyi Arduino IDE'nizde açın.

Yönlendiricinizin ağ kimliğini ve SİZİN şifrenizi yukarıdaki resimde vurgulanan satırlara girin. Projeyi kaydedin.

Araçlar menüsüne gidin ve yukarıdaki resimde gösterildiği gibi seçimleri yapın.

Anakart: ESP32 Wrover

Yükleme Hızı: 115200

Bölme Şeması: "Büyük APP (3MB OTA yok)"

ve FTDI bağdaştırıcınızın bağlı olduğu bağlantı noktasını seçin.

"Yükle" düğmesini tıklayın.

Şimdi, bazen ESP32 yüklemeye başlamaz. Yükleme sırasında konsolda …---… karakterlerinin belirdiğini görmeye başladığınızda, ESP32'nin arkasındaki RESET düğmesine basmaya hazır olun. Daha sonra yüklemeye başlayacaktır.

Konsolda 'basın RST' gördüğünüzde yükleme tamamlanmıştır.

IO0'ın Toprakla BAĞLANTISINI KESİN. FTDI adaptörü ile ESP32 arasındaki 3.3V hattını ayırın.

ESP32 Kameranın iyi çalışması için çok fazla akım gerekir. ESP32'deki 5V ve GND pinlerine bir 5V 2A güç adaptörü bağlayın.

Seri Monitörü açın, baud hızını 115200'e ayarlayın ve ardından ESP32'nin yeniden başlatılmasını izleyin. Sonunda, sunucunun URL'sini göreceksiniz.

Tarayıcınıza gidin ve URL'yi girin. Web sitesi yüklendiğinde, 'Yayını Başlat' düğmesini tıklayın ve canlı video akışı başlamalıdır. 'Floodlight' onay kutusuna tıklarsanız, yerleşik flaş LED'i yanmalıdır. Dikkat et! PARLAK!

2. Adım: Robotu Oluşturun

Robotu İnşa Et
Robotu İnşa Et

İki tekerlekli bir robot şasisine ihtiyacınız var. Herhangi biri yapacak. Kasayı üreticinin talimatlarına göre monte edin.

Ardından robotu şemaya göre bağlayın. Batarya bağlantılarını şimdilik bırakın.

L293D, motorları kontrol etmek için kullanılır. Çip üzerindeki yarım çentiğin ESP32'YE DOĞRU olduğuna dikkat edin.

Tipik olarak, iki motoru kontrol etmek için Arduino'da 6 pin gereklidir.

Bu robot sadece 4 pin gerektiriyor ve hala tam olarak çalışıyor.

Pin 1 ve 9, Arduino'nun 5V kaynağına bağlanır, böylece kalıcı olarak YÜKSEK olurlar. Robotu bu şekilde kablolamak, motorları kontrol etmek için Arduino'da iki tane daha az pime ihtiyacımız olduğu anlamına gelir.

İleri yönlerde, INPUT pinleri LOW olarak ayarlanır ve motor Pulse Wave Modulation pinleri 0 ile 255 arasında, 0 KAPALI anlamına gelir ve 255 maksimum hız anlamına gelir.

Ters yönlerde INPUT pinleri HIGH olarak ayarlanır ve PWM değerleri tersine çevrilir. 0 maksimum hız ve 255 kapalı anlamına gelir.

ArduinoMotorControl çizimini açın ve Arduino Nano'ya yükleyin.

Adım 3: HAYIR! Bir saniye bekle! Neden Arduino Nano'ya İhtiyacım Var?

Muhtemelen "Hey! ESP32 kamerada en az 4 IO pini var. Motorları kontrol etmek için neden onları kullanamıyorum?" diye düşünüyorsunuz.

Doğru, ESP32'de aşağıdaki gibi pinler var:

IO0 - ESP32'yi programlama moduna geçirmek için gerekli

IO2 - mevcut

IO4 - Flaş LED'i

IO12, IO13, IO14, IO15, IO16 - ek GPIO pinleri.

Pinleri PWM komutlarıyla kontrol etmek için ESP32'ye basit bir çizim yüklerseniz, çalışırlar.

ANCAK, eskizlerinizde KAMERA kitaplıklarını etkinleştirdiğinizde, bu pinler artık kullanılamaz.

Bu yüzden yapılacak en kolay şey, motorları PWM üzerinden kontrol etmek için bir Nano kullanmak ve ESP32'den komutları tek bir kablo (ESP32 U0T - Arduino Rx0) ve GND üzerinden seri iletişim yoluyla göndermektir. Çok basit.

Adım 4: USB Joystick'i Bağlayın (Opsiyonel)

Web sayfasına aşağıdaki gibi tuşlara basarak robotu sürebilirsiniz:

8 - İleri

9 - Sağa İleri

7 - İleri Sol

4 - Sola Döndür

5 - Dur

1 - Sol Ters

2 - Ters

3 - Sağa Ters.

USB joystick taslağı, joystick girişlerini tuş basışlarına çevirir ve bunları robotu sürmek için Arduino'ya ileten web arayüzüne gönderir.

Joystick'i Arduino LEONARDO'ya aşağıdaki gibi bağlayın:

leonardo oyun çubuğu

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

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

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

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

usbJoyStick taslağını açın, tahta olarak Arduino Leonardo'yu seçin ve Leonardo'ya yükleyin.

Test etmek istiyorsanız, bilgisayarınızda bir metin düzenleyici açın, pencerede fareyi tıklayın ve joystick'i hareket ettirmeye başlayın. Pencerede 1'den 9'a kadar olan değerleri görmelisiniz.

Adım 5: SÜRECEĞİZ

Her şeyin doğru olduğundan emin olmak için biraz zaman ayırın ve kablolamanızı gözden geçirin.

Ardından, pillerinizi aşağıdaki gibi bağlayın.

1. ESP32 Kamerayı çalıştırın. Web sunucusunu başlatmak için birkaç saniye gerekir.

2. Arduino Nano'yu çalıştırın.

3. Motorları çalıştırın.

Tarayıcınızı başlatın ve ESP32'nin URL'sine gidin.

Akışı Başlat düğmesini tıklayın.

Ekranın artık odak noktası olması için farenizi tarayıcı ekranında bir yere tıklayın.

Robotunuzu joystick (veya klavye) ile sürmeye başlayın.

Varsayılan çerçeve boyutunun, canlı videoyu WiFi üzerinden oldukça duyarlı bir şekilde yayınlamak için uygun olduğunu buldum. Ancak çerçeve boyutunu artırdıkça, daha büyük görüntüler yayınlamaya çalıştığınız için akış daha dalgalı hale gelir.

Bu, size canlı video akışıyla çalışmaya ve WiFi üzerinden bir robotu sürmeye başlama fırsatı veren zorlu bir projedir. Umarım eğlenceli bulmuşsundur!

ŞİMDİ GİDİN VE MÜKEMMEL BİR ŞEY YAPIN!

Ocak 2020 Güncellemesi - Son fotoğraflar, robotun sert lehimli ve kasaya güvenli bir şekilde monte edilmiş son halini göstermektedir.

Öne monte edilen üç anahtar aşağıdaki gibidir:

Sol - Motor gücü pili

Merkez - Arduino pili

Sağ - ESP32 Kamera Pili

Bazı güçlendirici transformatörlerle büyük bir pil kullanabilirim (ESP32 için bir tane kullanıyorum - önden görünüm fotoğrafının sağ alt tarafında), ancak basitlik adına, sadece 3 pili tutuyorum.

Robot şimdi Erişim Noktasında

Bu robotu evimin dışında göstermeyi hantal buluyorum çünkü okul kurumsal ağım robot web sunucusunu ona bağlamama izin vermiyor. Çözüm olarak ESP32 web sunucusunun Erişim Noktası özelliğini kullanmayı araştırdım. Biraz çalışma gerektirir, ancak ESP32'nin kendi IP adresini yayınlamasını sağlamak için ana robot çiziminde oldukça az değişiklik gerektirir. Özel bir yüksek hızlı wifi hub kadar güçlü değil (bazen çok hızlı hareket ederseniz kilitleniyor), ancak oldukça iyi çalışıyor ve şimdi robotu bir ağa bağlamak zorunda kalmadan istediğim her yerde gösterebilirim! Robotu çalıştırdıktan sonra, kendiniz Access Point'e dönüştürmeyi deneyin!

Adım 6: Web Sunucusu için HTML/Javascript Kodunun Nasıl Değiştirileceğine İlişkin Ayrıntılar

Bu gerekli değil, ama bazı isteklerim oldu.

Bu Google Dokümanına, HTML/Javascript ile camera_index.h dosyasındaki bayt dizisi temsilleri arasında ileri geri dönüştürmek için CyberChef'in nasıl kullanılacağına ilişkin ayrıntıları sağladım.

Önerilen: