3 puan yazan GN⁺ 2025-02-03 | 1 yorum | WhatsApp'ta paylaş

ESP32 RC Cars

Demo videosu

  • Bu proje, ESP32 tabanlı uzaktan kontrollü kamera sistemini gösterir
  • WebSockets üzerinden gerçek zamanlı video akışı iletir ve motor ile servoyu kontrol edebilir
  • Python sunucu uygulaması, WebSocket iletişimini yönetir ve ESP32 cihazını kontrol edebilen bir web arayüzü sağlar

Özellikler

  • ESP32-CAM'den web sunucusuna gerçek zamanlı video akışı
  • WebSocket komutlarıyla motor ve servonun uzaktan kontrolü
  • Motoru ve servoyu varsayılan durumlarına sıfırlayan otomatik zaman aşımı özelliği
  • Sunucuda dinamik çok istemcili video besleme kanvası sağlanması

Donanım gereksinimleri

  • ESP32-CAM (AI Thinker modülü veya uyumlu kart)
  • Uygun GPIO pinlerine bağlanmış motor ve servo
  • ESP32-CAM için kararlı 5V güç kaynağı
  • İsteğe bağlı: ek işlevler için SD kart
  • İletişim için Wi-Fi ağı

Malzemeler

  • Tüm kitler aliexpress üzerinden satın alınabilir
  • Araba şasisi, elektronik hız kontrol cihazı, pil yuvası, 18650 hücre veya 7.4v pil paketi, ESP32-CAM, Bluetooth gamepad (PS4 kontrolcüsü kullanılır)

Yazılım gereksinimleri

ESP32 kodu
Kütüphaneler
  • WiFi.h: Wi-Fi bağlantısı
  • ArduinoWebsockets.h: WebSocket iletişimi
  • esp_camera.h: ESP32-CAM kamera kontrolü
  • ServoControl.h ve Esc.h: servo ve motor kontrolü
  • Arduino.h: standart Arduino işlevleri
Python sunucusu
Bağımlılıklar
  • Şu Python kütüphanelerini kurun: aiohttp, opencv-python, numpy

Kurulum

ESP32 firmware'i
  1. secrets.h dosyasını düzenleyerek Wi-Fi kimlik bilgilerini ve WebSocket sunucu URL'sini ekleyin
  2. Kamera modülü, motor ve servo için GPIO pinlerinin donanım kurulumuyla eşleştiğinden emin olun
Python sunucusu
  1. Sunucu betiğini, web arayüzü için index.html dosyasıyla birlikte bir dizine yerleştirin
  2. Sunucuyu başlatın: python3 server.py

Kullanım

ESP32
  1. Verilen sketch'i Arduino IDE veya uyumlu bir platform kullanarak ESP32-CAM'e yükleyin
  2. Wi-Fi'ye ve WebSocket sunucusuna başarıyla bağlanıldığını doğrulamak için seri çıktıyı izleyin
Sunucu
  1. Python sunucu betiğini çalıştırın
  2. Gerçek zamanlı video akışını görmek için tarayıcıda web arayüzünü açın
  3. WebSocket bağlantısı üzerinden kontrol komutları gönderin

WebSocket komutları

  • MOTOR:<speed>: motor hızını ayarlar (-255 ile 255)
  • SERVO:<angle>: servo açısını ayarlar (0 ile 180)
  • CONTROL:<speed>:<angle>: motor hızını ve servo açısını aynı anda kontrol eder

Teknik ayrıntılar

ESP32 başlatma
  • Wi-Fi: belirtilen Wi-Fi ağına bağlanır
  • Kamera: video akışı için uygun ayarlarla ESP32-CAM yapılandırılır
  • WebSocket: sunucuyla WebSocket bağlantısı kurulur
Zaman aşımı yönetimi
  • Önceden tanımlanmış zaman aşımı süresi içinde kontrol komutu alınmazsa motor hızı 0, servo açısı ise 90 olarak sıfırlanır
Python sunucusu
  • Birden fazla ESP32 istemcisiyle WebSocket iletişimini işler
  • Gelen video karelerini işler ve bunları dinamik olarak bir ızgarada düzenler
  • Video kareleri ızgarasını web arayüzüne akış olarak iletir

Sorun giderme

Bağlantı sorunları
  • secrets.h içindeki Wi-Fi kimlik bilgilerini kontrol edin
  • WebSocket sunucusunun çalıştığını ve erişilebilir olduğunu doğrulayın
Video akışı sorunları
  • ESP32-CAM için uygun güç sağlandığını doğrulayın
  • Kamera başlatma ayarlarını kontrol edin

Lisans

  • Bu proje MIT lisansı altında açık kaynak olarak sunulmaktadır

Katkı

  • Uygulamayı geliştirmek için issue gönderimleri veya pull request'ler memnuniyetle karşılanır

1 yorum

 
GN⁺ 2025-02-03
Hacker News yorumu
  • 12 yıl önce, Arduino vardı ama ESP32 yoktu; o dönemde bir HTC Magic telefonu kamera ve WiFi vericisi olarak kullanıp Arduino'ya bağlayarak servo ve RGB LED kontrol ettiğim bir proje yapmıştım. Bağlantı çok kararlı değildi ama eğlenceliydi

    • Projeyi paylaştığın için teşekkürler; projeyi yeni nesil bir mikrodenetleyiciyle yeniden canlandırmak istiyorum
    • Projeyle ilgili geri bildirim için teşekkürler; devam etmek istiyorum ve PR görmek isterim
    • Projeyi beğendiyseniz, uzaktan geliştirici arayan birine önermeniz harika olur. Ruby-on-Rails geliştiricisiyim ama robotik işleri de değerlendiriyorum
  • RC araba otomasyonuyla ilgileniyorsanız, okunması eğlenceli bir şey. Birkaç yıllık olsa da bugün daha kolay yöntemler olabilir

  • ESP32 CAM satın almadan önce harici antenli bir modeli düşünmek iyi olabilir. Reddit'te kare hızı sorunlarıyla ilgili tavsiyelere bakmıştım

  • Yakın zamanda Rust ve Steam Deck kullanarak benzer bir proje yaptım

  • FPV'nin büyük sorunu gecikme süresi; bu projenin gecikmesinin ne kadar olduğunu merak ediyorum

  • ESP32 ile çalışan bir RC tankı PlayStation 4 kontrolcüsüyle Bluetooth üzerinden kontrol etmiştim

    • Temel yazılım, Bluetooth kontrolcü kütüphanesini kullanan yaklaşık 20 satırlık C koduyla başlıyor
    • İki stick ile iki paleti düşük hızda kontrol edebiliyorsunuz, ancak yüksek hızda farklı bir kontrol yöntemi gerekiyor
    • DualShock kontrolcüsünün "trigger" tuşlarını kullanarak rpm sınırına dayalı doğrudan palet kontrolü uyguladım
    • Yüksek hızda sürerken sol stick gaz, sağ stick direksiyon oluyor; böylece normal bir RC araba gibi sürülebiliyor
    • Kullandığım 3D baskı modelinin videosunu paylaşıyorum
  • AliExpress'te iyi bir 2,5 inç RC araba 30 dolar, bağımsız 5.8 GHz analog kamera ise 25 dolar

    • Bu, sadece eğlenceli bir proje değil de sonuca daha çok önem verenler için bir bilgi
  • Ben de benzer bir proje düşünüyorum ve gecikme süresiyle ilgili deneyimleri merak ediyorum. Video akışına bakarak uzaktan kontrol etmenin mümkün olup olmadığını bilmek istiyorum. Engel kaçınmada gecikme sorun yaratacak gibi görünüyor

  • Otomatik olarak engellerden kaçınan bir kedi oyuncağı yapmak istemiştim. Bu proje, daha önce seçtiğim temelden daha iyi bir başlangıç olabilir gibi görünüyor