ESP32 RC Cars
Video demo
- Proyek ini mendemonstrasikan sistem kamera kendali jarak jauh berbasis ESP32
- Dapat mengirimkan streaming video real-time melalui WebSockets serta mengendalikan motor dan servo
- Aplikasi server Python mengelola komunikasi WebSocket dan menyediakan antarmuka web untuk mengendalikan perangkat ESP32
Fitur
- Streaming video real-time dari ESP32-CAM ke server web
- Kendali jarak jauh motor dan servo melalui perintah WebSocket
- Fitur timeout otomatis untuk mereset motor dan servo ke status default
- Menyediakan kanvas feed video multi-klien dinamis di server
Persyaratan perangkat keras
- ESP32-CAM (modul AI Thinker atau board yang kompatibel)
- Motor dan servo yang terhubung ke pin GPIO yang sesuai
- Catu daya 5V yang stabil untuk ESP32-CAM
- Opsional: kartu SD untuk fitur tambahan
- Jaringan Wi-Fi untuk komunikasi
Bahan
- Semua kit dapat dibeli di aliexpress
- Sasis mobil, electronic speed controller, dudukan baterai, sel 18650 atau paket baterai 7.4v, ESP32-CAM, gamepad Bluetooth (menggunakan kontroler PS4)
Persyaratan perangkat lunak
Kode ESP32
Library
WiFi.h: koneksi Wi-Fi
ArduinoWebsockets.h: komunikasi WebSocket
esp_camera.h: kontrol kamera ESP32-CAM
ServoControl.h dan Esc.h: kontrol servo dan motor
Arduino.h: fungsi Arduino standar
Server Python
Dependensi
- Instal library Python berikut:
aiohttp, opencv-python, numpy
Pengaturan
Firmware ESP32
- Ubah file
secrets.h untuk menyertakan kredensial Wi-Fi dan URL server WebSocket
- Pastikan pin GPIO untuk modul kamera, motor, dan servo sesuai dengan konfigurasi perangkat keras
Server Python
- Letakkan skrip server di direktori bersama file
index.html untuk antarmuka web
- Jalankan server:
python3 server.py
Cara penggunaan
ESP32
- Gunakan Arduino IDE atau platform kompatibel untuk mengunggah sketch yang disediakan ke ESP32-CAM
- Pantau output serial untuk memastikan perangkat berhasil terhubung ke Wi-Fi dan server WebSocket
Server
- Jalankan skrip server Python
- Buka antarmuka web di browser untuk melihat streaming video real-time
- Kirim perintah kontrol melalui koneksi WebSocket
Perintah WebSocket
MOTOR:<speed>: mengatur kecepatan motor (-255 hingga 255)
SERVO:<angle>: mengatur sudut servo (0 hingga 180)
CONTROL:<speed>:<angle>: mengendalikan kecepatan motor dan sudut servo secara bersamaan
Detail teknis
Inisialisasi ESP32
- Wi-Fi: terhubung ke jaringan Wi-Fi yang ditentukan
- Kamera: mengonfigurasi ESP32-CAM dengan pengaturan yang sesuai untuk streaming video
- WebSocket: menyiapkan koneksi WebSocket dengan server
Penanganan timeout
- Jika tidak ada perintah kontrol yang diterima dalam periode timeout yang telah ditentukan, kecepatan motor akan direset ke
0 dan sudut servo ke 90
Server Python
- Menangani komunikasi WebSocket dengan beberapa klien ESP32
- Memproses frame video yang diterima dan menyusunnya secara dinamis dalam grid
- Men-streaming grid frame video ke antarmuka web
Pemecahan masalah
Masalah koneksi
- Periksa kredensial Wi-Fi di
secrets.h
- Pastikan server WebSocket sedang berjalan dan dapat diakses
Masalah streaming video
- Pastikan ESP32-CAM mendapatkan catu daya yang sesuai
- Periksa pengaturan inisialisasi kamera
Lisensi
- Proyek ini disediakan sebagai open source di bawah lisensi MIT
Kontribusi
- Issue submission atau pull request untuk meningkatkan aplikasi sangat disambut
1 komentar
Komentar Hacker News
12 tahun lalu, pada masa Arduino sudah ada tetapi ESP32 belum, saya pernah mengerjakan proyek yang memakai ponsel HTC Magic sebagai kamera dan pemancar WiFi, lalu menghubungkannya ke Arduino untuk mengendalikan servo dan LED RGB. Koneksinya tidak stabil, tetapi tetap menyenangkan
Jika Anda tertarik dengan otomatisasi mobil RC, ini bacaan yang menarik. Memang materinya dari beberapa tahun lalu, tetapi sekarang mungkin ada cara yang lebih mudah
Sebelum membeli ESP32 CAM, sebaiknya pertimbangkan yang memiliki antena eksternal. Saya merujuk saran di Reddit tentang masalah frame rate
Baru-baru ini saya mengerjakan proyek serupa menggunakan Rust dan Steam Deck
Masalah besar pada FPV adalah latensi, dan saya penasaran berapa latensi proyek ini
Saya pernah mengendalikan tank RC bertenaga ESP32 dengan kontroler PlayStation 4 melalui Bluetooth
Di AliExpress, mobil RC 2,5 inci yang bagus harganya $30, dan kamera analog 5.8 GHz mandiri harganya $25
Saya sedang mempertimbangkan proyek serupa dan penasaran dengan pengalaman soal latensi. Saya ingin tahu apakah kendaraan ini bisa dikendalikan dari jarak jauh sambil melihat feed video. Sepertinya latensi akan menjadi masalah untuk menghindari rintangan
Saya ingin membuat mainan kucing yang otomatis menghindari rintangan. Proyek ini tampaknya bisa menjadi dasar yang lebih baik daripada yang sebelumnya saya pilih