3 पॉइंट द्वारा GN⁺ 2025-02-03 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • ESP32 RC Cars एक ESP32-CAM आधारित रिमोट-कंट्रोल कैमरा सिस्टम है, जो WebSocket के ज़रिए रियल-टाइम वीडियो स्ट्रीमिंग और मोटर/सर्वो कंट्रोल को साथ में लागू करता है
  • Python सर्वर एप्लिकेशन WebSocket कम्युनिकेशन मैनेज करता है और एक वेब इंटरफ़ेस देता है, जहाँ ब्राउज़र से ESP32 डिवाइस का वीडियो देखा और उसे कंट्रोल किया जा सकता है
  • मुख्य फीचर हैं ESP32-CAM से लाइव वीडियो स्ट्रीमिंग, WebSocket कमांड आधारित मोटर/सर्वो कंट्रोल, कंट्रोल कमांड न मिलने पर डिफ़ॉल्ट स्थिति में लौटाने वाला ऑटो टाइमआउट, और मल्टी-क्लाइंट वीडियो कैनवस
  • हार्डवेयर के लिए AI Thinker या compatible ESP32-CAM, GPIO से जुड़े मोटर/सर्वो, स्थिर 5V पावर, Wi-Fi नेटवर्क चाहिए; SD कार्ड वैकल्पिक है
  • कंट्रोल कमांड MOTOR:<speed>, SERVO:<angle>, CONTROL:<speed>:<angle> फ़ॉर्मेट में हैं, और सर्वर कई ESP32 क्लाइंट्स के वीडियो फ्रेम को ग्रिड में रखकर वेब इंटरफ़ेस पर स्ट्रीम करता है

प्रोजेक्ट ओवरव्यू

  • ESP32 RC Cars ESP32 आधारित रिमोट-कंट्रोल कैमरा सिस्टम का उदाहरण है
  • ESP32-CAM रियल-टाइम वीडियो WebSocket से भेजता है, और मोटर व सर्वो WebSocket कमांड से कंट्रोल होते हैं
  • Python सर्वर एप्लिकेशन WebSocket कम्युनिकेशन मैनेज करता है और वेब इंटरफ़ेस से ESP32 डिवाइस को देखने व कंट्रोल करने देता है
  • डेमो वीडियो: https://youtu.be/OubYFXmvA1E

मुख्य फीचर

  • ESP32-CAM से वेब सर्वर पर लाइव वीडियो स्ट्रीमिंग भेजता है
  • WebSocket कमांड से मोटर और सर्वो को रिमोट से कंट्रोल करता है
  • कुछ समय तक कोई कंट्रोल कमांड न मिलने पर मोटर और सर्वो अपने-आप डिफ़ॉल्ट स्थिति में लौट आते हैं
  • सर्वर कई क्लाइंट्स की वीडियो फीड को डायनेमिक रूप से कैनवस पर व्यवस्थित करता है

हार्डवेयर और सामग्री

  • आवश्यक हार्डवेयर
    • ESP32-CAM, AI Thinker मॉड्यूल या compatible बोर्ड
    • उचित GPIO पिनों से जुड़े मोटर और सर्वो
    • ESP32-CAM के लिए स्थिर 5V पावर
    • कम्युनिकेशन के लिए Wi-Fi नेटवर्क
    • अन्य फीचर के लिए ज़रूरत होने पर वैकल्पिक SD कार्ड
  • इस्तेमाल की गई सामग्री AliExpress से खरीदे गए किट के कॉम्पोनेंट हैं
    • कार बॉडी चेसिस
    • इलेक्ट्रॉनिक स्पीड कंट्रोलर
      • 30A वर्शन इस्तेमाल किया गया; BEC आउटपुट 5V 3A है, जो ESC और सर्वो चलाने के लिए पर्याप्त करंट जैसा लगा
    • बैटरी होल्डर
    • दो 18650 3.6V सेल या 7.4V बैटरी पैक
      • दोनों इस्तेमाल किए गए; सेल दूसरे प्रोजेक्ट्स में ज़्यादा लचीले ढंग से उपयोग किए जा सकते हैं
    • ESP32-CAM
      • बाहरी एंटीना वाला मॉडल बहुत महत्वपूर्ण है, और 170-डिग्री fisheye कैमरा इस्तेमाल किया गया
    • Bluetooth Gamepad
      • PS4 कंट्रोलर इस्तेमाल किया गया

वायरिंग तरीका

  • कार बॉडी चेसिस में शामिल सर्वो के 3-पिन JST adapter को हटाकर, ESP32 से जोड़ने के लिए 4-पिन JST plug में बदला गया
  • सर्वो के positive और negative leads को जोड़कर, crimping tool से 3-पिन female JST plug जोड़ा गया
  • ESC की सफ़ेद कंट्रोल वायर को 4-पिन JST plug और 3-पिन female plug से जोड़ा गया

सॉफ़्टवेयर कॉन्फ़िगरेशन

  • ESP32 कोड में इस्तेमाल होने वाली libraries
    • WiFi.h: Wi-Fi कनेक्शन
    • ArduinoWebsockets.h: WebSocket कम्युनिकेशन
    • esp_camera.h: ESP32-CAM कैमरा कंट्रोल
    • ServoControl.h, Esc.h: सर्वो और मोटर कंट्रोल
    • Arduino.h: स्टैंडर्ड Arduino functions
  • Python सर्वर dependencies नीचे दिए कमांड से इंस्टॉल करें
sudo apt install python3-aiohttp python3-opencv python3-numpy

सेटअप और रन करना

  • ESP32 firmware सेटअप
    • secrets.h में Wi-Fi credentials और WebSocket server URL सेट करें
#define WIFI_SSID "YourWiFiSSID"
#define WIFI_PASSWORD "YourWiFiPassword"
#define WS_SERVER_URL "ws://YourServerIP:Port"
  • कैमरा GPIO पिन AI Thinker ESP32-CAM बोर्ड के लिए पहले से सेट हैं
  • ज़रूरत हो तो मोटर और सर्वो पिन को हार्डवेयर कॉन्फ़िगरेशन के अनुसार बदलें
  • Python सर्वर सेटअप
    • सर्वर script को वेब इंटरफ़ेस के index.html फ़ाइल वाली same directory में रखें
    • सर्वर को नीचे दिए कमांड से चलाएँ
python3 app.py

उपयोग और WebSocket कमांड

  • ESP32 उपयोग की प्रक्रिया
    • Arduino IDE या compatible platform से दिए गए sketch को ESP32-CAM पर upload करें
    • serial output देखकर पुष्टि करें कि Wi-Fi और WebSocket server connection सफल है
  • सर्वर उपयोग की प्रक्रिया
    • Python सर्वर script चलाएँ
    • ब्राउज़र में वेब इंटरफ़ेस खोलकर लाइव वीडियो स्ट्रीम देखें
    • WebSocket कनेक्शन के ज़रिए कंट्रोल कमांड भेजें
  • supported commands
    • MOTOR:<speed>: मोटर speed सेट करता है, range -255 से 255
    • SERVO:<angle>: सर्वो angle सेट करता है, range 0 से 180
    • CONTROL:<speed>:<angle>: मोटर speed और सर्वो angle को साथ में कंट्रोल करता है

ऑपरेशन डिटेल्स और troubleshooting

  • ESP32 initialization steps
    • तय किए गए Wi-Fi नेटवर्क से कनेक्ट करता है
    • वीडियो स्ट्रीमिंग के लिए ESP32-CAM को सेट करता है
    • सर्वर के साथ WebSocket connection स्थापित करता है
  • टाइमआउट हैंडलिंग कुछ समय तक कोई कंट्रोल कमांड न मिलने पर मोटर speed को 0 और सर्वो angle को 90 पर वापस कर देती है
  • Python सर्वर कई ESP32 क्लाइंट्स से WebSocket के ज़रिए कम्युनिकेशन करता है
  • सर्वर आने वाले वीडियो frames को प्रोसेस करता है, उन्हें ग्रिड रूप में डायनेमिक रूप से व्यवस्थित करता है और वेब इंटरफ़ेस पर स्ट्रीम करता है
  • कनेक्शन समस्या हो तो secrets.h में Wi-Fi credentials जाँचें, और सुनिश्चित करें कि WebSocket server चल रहा है और accessible है
  • वीडियो stream की समस्या हो तो ESP32-CAM की power सही है या नहीं और camera initialization settings जाँचें
  • प्रोजेक्ट MIT License के तहत रिलीज़ किया गया है

1 टिप्पणियां

 
GN⁺ 2025-02-03
Hacker News की राय
  • 12 साल पहले, जब Arduino था लेकिन ESP32 नहीं था, मैंने कुछ ऐसा ही बनाया था: https://newton-net-pl.translate.goog/2012/01/robot/?_x_tr_sl...
    पुराने HTC Magic फोन को कैमरा+वाई-फाई ट्रांसमीटर की तरह इस्तेमाल किया, और सीरियल पोर्ट व level shifter से Arduino से जोड़कर servo और RGB LED कंट्रोल किए
    कनेक्शन बहुत स्थिर नहीं था, लेकिन काफी मज़ेदार था, और शायद अब अगली पीढ़ी के microcontroller के साथ इस project को फिर से जीवित करने का समय आ गया है
  • project feedback के लिए शुक्रिया, मैं इसे जारी रखना चाहता हूं और PR भी देखना चाहूंगा
    अगर project पसंद आया हो, तो किसी ऐसे व्यक्ति से मेरा परिचय करा देना जो remote developer ढूंढ रहा हो—यह सबसे बड़ी मदद होगी
    मेरा मुख्य काम Ruby on Rails developer का है, लेकिन robotics work पर भी विचार कर सकता हूं
  • ESP32 CAM खरीदने से पहले बाहरी antenna वाला model consider करना अच्छा रहेगा
    यह post पढ़ने लायक है: https://www.reddit.com/r/esp32/comments/r7kqtt/esp32cam_supe...
    कुछ सलाह लागू करने से पहले frame rate काफी खराब था
    • router admin page के हिसाब से, resistor को फिर से solder कर antenna जोड़ते ही यह unstable 1Mbps से stable 20Mbps पर पहुंच गया
      0Ω resistor को फिर से solder करना लगभग एक adventure जैसा था, लेकिन किसी तरह सही pin से जोड़ दिया, और result ऐसा दिखता है: https://imgur.com/a/LJflZ80
    • इस project को करके मेरे अनुभव में external antenna लगभग जरूरी था
      मैंने इस्तेमाल किए गए antenna का link README में जोड़ दिया है
    • क्या आप exact model recommend कर सकते हैं?
  • शानदार। मैंने ESP32 से चलने वाला continuous-track RC tank बनाया था, और उसे Bluetooth से PlayStation 4 controller से connect करके control किया
    basic software Bluetooth controller library इस्तेमाल करके C code की करीब 20 lines में आसानी से शुरू किया जा सकता है
    बाद में controls को आसान बनाने के लिए features जोड़े, लेकिन 2 tracks को 2 sticks से control करने का तरीका कम speed पर ठीक है; चूंकि 2 drone motors इस्तेमाल करके यह लगभग 20km/h तक चला जाता था, इसलिए अलग control scheme की जरूरत पड़ी
    आखिर में DualShock controller के triggers से RPM limit के साथ direct track control किया, और high-speed driving में left stick up/down को acceleration और right stick left/right को steering बनाकर इसे आम RC car की तरह drive करने लायक बनाया
    यह उसी 3D-printed model का video है जिसे base के तौर पर इस्तेमाल किया, और 00:50 से speed अच्छी तरह दिखती है: https://www.youtube.com/watch?v=3Mv_tDY89Zw
    • वाकई impressive
      RC बनाना मुझे ज्यादा नहीं आता; आम तौर पर इसे कैसे control करते हैं? क्या PS4 controller को सीधे ESP से connect करते हैं?
  • FPV की बड़ी समस्या, और इसके लंबे समय तक analog technology पर टिके रहने की वजह, latency है
    इस project की latency कितनी है, यह जानने की उत्सुकता है
    • आजकल FPV में आम तौर पर ExpressLRS[0] इस्तेमाल होता है, जो FPV quadcopter के control link के लिए open protocol है और अक्सर ESP32 भी इस्तेमाल करता है
      वहीं FPV quadcopter का video अलग-अलग तरह से होता है। कुछ लोग analog इस्तेमाल करते हैं क्योंकि signal टूटने पर यह पूरी तरह कटकर reconnect होने के बजाय धीरे-धीरे खराब होता है, और कुछ लोग 802.11-based communication इस्तेमाल करते हैं, जो असल में काफी competitive है
      उदाहरण के लिए Walksnail Goggles video link के लिए 802.11 इस्तेमाल करता है, और भले ही यह बहुत open या well-documented नहीं है, Chris Rosser के काम जैसे लोग इसके अंदर तक झांक रहे हैं
      ऐसे setup की latency तेज competitive quadcopter racing के लिए भी पर्याप्त लगती है
      [0] https://www.expresslrs.org
    • related project: https://github.com/wooky/esp32-analog-video-over-wifi
      और: https://github.com/gyrex/CrystalVideo
    • FPV drone experience जैसा comparison point मेरे पास नहीं है, लेकिन घर के wireless network पर, बाकी सभी home devices connected होने के बावजूद latency problem नहीं बनी
      frame rate ज्यादातर इस बात से limited लगता है कि ESP32 image कितनी तेजी से capture कर सकता है
      Python script में FPS measure करने पर ESP32s से करीब 50fps मिला, और हाल ही में घर के बाहर test करने के लिए मैंने travel router खरीदा है
  • मैं भी एक similar project करने का सोच रहा हूं, इसलिए latency experience को लेकर curious हूं
    video feed देखते हुए remote control करना possible है? मेरी सबसे बड़ी चिंता यह है कि ज्यादातर speeds पर obstacle avoidance के लिए यह बहुत slow होगा
  • पिछले साल मैंने वही kit खरीदी थी, और हाल ही में छोटे display वाला ESP32 game controller भी खरीदा: https://github.com/01studio-lab/pyController
    समय मिला तो दोनों को combine करके car control करूंगा और display पर camera feed भी देखूंगा
  • अगर result ज्यादा महत्वपूर्ण है और बनाने का मज़ा कम महत्वपूर्ण है, तो आजकल AliExpress पर ठीक-ठाक 2.5-inch RC car 30 dollar में, और standalone 5.8GHz analog camera 25 dollar में मिल जाता है
    • अगर standalone से मतलब all-in-one camera है, तो built-in VTX वाले cameras आम तौर पर normal analog से भी खराब होते हैं और फिर भी analog goggles चाहिए होते हैं
      जिन्हें prescription glasses की जरूरत नहीं है या जो contact lenses पहनते हैं, उनके लिए DJI O4 ‘lite’ और N3 goggles का combo कहीं बेहतर option है
  • अगर आप RC car को automate करना चाहते हैं तो यह पढ़ना interesting होगा
    यह कुछ साल पुराना article है, इसलिए आज शायद similar results आसान या बेहतर तरीके से मिल सकते हैं: https://hackaday.com/2021/10/25/fast-indoor-robot-watches-ce...
  • battlefield में इस्तेमाल होने वाले FPV quadcopters के बारे में सब जानते हैं, लेकिन ground vehicles में भी interest बढ़ रहा है
    यह फिल्मों वाले Boston Dynamics robot dog और Terminator के mix जैसा बिल्कुल नहीं है, लेकिन landmine बिछाने, mines detonate करने, और frontline पर कहीं छिपे सैनिक तक थोड़ी supplies पहुंचाने जैसे कम दिखाई देने वाले “boring” कामों में बहुत useful है