विषयसूची:

ESP32 कैमरा रोबोट - FPV: 6 चरण
ESP32 कैमरा रोबोट - FPV: 6 चरण

वीडियो: ESP32 कैमरा रोबोट - FPV: 6 चरण

वीडियो: ESP32 कैमरा रोबोट - FPV: 6 चरण
वीडियो: Surveillance Car using ESP32 Cam module | ESP32 Camera wi-fi car 🚓 2024, जुलाई
Anonim
Image
Image
ESP32 कैमरा रोबोट - FPV
ESP32 कैमरा रोबोट - FPV
ESP32 कैमरा रोबोट - FPV
ESP32 कैमरा रोबोट - FPV

ESP32 कैमरा मॉड्यूल एक सस्ता और शक्तिशाली पीएलसी है। इसमें चेहरे की पहचान भी शामिल है!

आइए पहले व्यक्ति दृष्टिकोण रोबोट का निर्माण करें जिसे आप ऑन-बोर्ड वेब इंटरफ़ेस के माध्यम से चलाते हैं!

यह प्रोजेक्ट OV2640 कैमरा के साथ Geekcreit ESP32 मॉड्यूल का उपयोग करता है। यह AIThinker मॉड्यूल पर आधारित है।

वहाँ कई अलग-अलग ESP32 कैमरा क्लोन हैं। कुछ काम करते हैं, कुछ नहीं। मेरा सुझाव है कि आप उसी मॉड्यूल का उपयोग करें जो मैंने किया था ताकि आपके पास सफल होने का एक अच्छा अवसर हो।

रोबोट निम्नानुसार काम करता है।

ESP32 आपके नेटवर्क पर एक वेब URL प्रसारित करता है जो कैमरे के कुछ कार्यों के संचालन के लिए कुछ चेक-बॉक्स के साथ लाइव वीडियो स्ट्रीम प्रस्तुत करता है। यह कीबोर्ड से वेब पेज पर भेजे गए कुंजी प्रेस भी प्राप्त करता है जो रोबोट के लिए दिशात्मक आदेश हैं। आप USB जॉयस्टिक शील्ड का निर्माण करना चाह सकते हैं ताकि आप कीबोर्ड कमांड टाइप करने के बजाय रोबोट को जॉयस्टिक से चला सकें।

जब ESP32 कुंजी प्रेस प्राप्त करता है, तो यह उन बाइट्स को Arduino नैनो को अग्रेषित करता है जो तब रोबोट को स्थानांतरित करने के लिए मोटर्स को चलाता है।

यह परियोजना मध्यम-उच्च कठिनाई की है। आप समय ले सकते हैं।

आएँ शुरू करें!

आपूर्ति

  • OV2640 कैमरा के साथ ESP-32 कैमरा मॉड्यूल - मैं Geekcreit उत्पाद की सिफारिश करूंगा
  • सिग्नल की शक्ति को अधिकतम करने के लिए ESP-32 के लिए बाहरी स्नैप-ऑन एंटीना
  • अरुडिनो नैनो
  • जॉयस्टिक मॉड्यूल के लिए Arduino लियोनार्डो (हमें लियोनार्डो द्वारा प्रदान किए गए USB कीबोर्ड इम्यूलेशन की आवश्यकता है)
  • जेनेरिक जॉयस्टिक मॉड्यूल
  • L293D क्वाड एच-ब्रिज चिप
  • ESP32. को पावर देने के लिए 5V आउटपुट के साथ DC-DC बक कवरर
  • ESP32 की प्रोग्रामिंग के लिए FTDI सीरियल एडेप्टर
  • दो गियर वाली मोटरों के साथ एक सामान्य रोबोट चेसिस - कोई भी चेसिस काम करेगा। 3 से 6V मोटर्स की सिफारिश की जाती है
  • ESP32 और मोटर्स को पावर देने के लिए 2 x 7.4V 1300mAh LiPo बैटरी (या समान)
  • Arduino Nano को पावर देने के लिए 1 x 9V बैटरी

चरण 1: ESP32 कैमरा प्रोग्राम करें

ESP32 कैमरा प्रोग्राम करें
ESP32 कैमरा प्रोग्राम करें
ESP32 कैमरा प्रोग्राम करें
ESP32 कैमरा प्रोग्राम करें

ब्रेडबोर्ड का उपयोग करके, अपने ESP32 कैमरे को FTDI एडेप्टर से इस प्रकार कनेक्ट करें:

एफटीडीआई ईएसपी32

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

जीएनडी ----------- जीएनडी

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

आरएक्स ----------- यू0टी

इसके अतिरिक्त, पिन IO0 ("आई-ओह-जीरो") को GND से कनेक्ट करें। ESP32 को प्रोग्रामिंग मोड में डालने के लिए आपको ऐसा करने की आवश्यकता है।

esp32CameraWebRobotforInstructable.zip फ़ाइल को अनज़िप करें।

इस परियोजना में 4 फाइलें हैं:

esp32CameraWebRobotforInstructable.ino Arduino स्केच है।

ap_httpd.cpp वह कोड है जो वेब सर्वर का प्रबंधन करता है और वेब पेज से कैमरा सुविधाओं को सेट करने और वेब पेज से कुंजी प्रेस प्राप्त करने से संबंधित है।

कैमरा_इंडेक्स.एच में वेब एप्लिकेशन के लिए बाइट एरेज़ के रूप में एचटीएमएल/जावास्क्रिप्ट कोड है। वेब एप्लिकेशन को संशोधित करना इस परियोजना के दायरे से बाहर है। मैं बाद में एचटीएमएल/जावास्क्रिप्ट को संशोधित करने के तरीके के लिए एक लिंक शामिल करूंगा।

Camera_pins.h ESP32 कैमरे के पिन कॉन्फ़िगरेशन से संबंधित हेडर फ़ाइल है।

ESP32 को प्रोग्रामिंग मोड में डालने के लिए, आपको IO0 ("आई-ओह-जीरो") को ग्राउंड से कनेक्ट करना होगा।

अपना Arduino IDE लॉन्च करें और टूल्स/बोर्ड्स/बोर्ड्स मैनेजर पर जाएं। Esp32 खोजें और esp32 लाइब्रेरी स्थापित करें।

अपने Arduino IDE में प्रोजेक्ट खोलें।

उपरोक्त चित्र में हाइलाइट की गई पंक्तियों में अपने राउटर की नेटवर्क आईडी और अपना पासवर्ड डालें। प्रोजेक्ट को सेव करें।

टूल्स मेनू पर जाएं और ऊपर चित्र में दिखाए अनुसार चयन करें।

बोर्ड: ESP32 Wrover

अपलोड स्पीड: ११५२००

विभाजन योजना: "विशाल एपीपी (3 एमबी ओटीए नहीं)"

और वह पोर्ट चुनें जिससे आपका FTDI अडैप्टर कनेक्ट है।

"अपलोड" बटन पर क्लिक करें।

अब, कभी-कभी, ESP32 अपलोड करना प्रारंभ नहीं करेगा। इसलिए जब आप अपलोड के दौरान कंसोल में …---… अक्षर दिखाई देने लगें तो ESP32 के पीछे RESET बटन दबाने के लिए तैयार रहें। इसके बाद यह अपलोड होना शुरू हो जाएगा।

जब आप कंसोल पर 'प्रेस आरएसटी' देखते हैं, तो अपलोड पूरा हो जाता है।

जमीन से IO0 डिस्कनेक्ट करें। FTDI अडैप्टर और ESP32 के बीच 3.3V लाइन को डिस्कनेक्ट करें।

ESP32 कैमरा को अच्छी तरह से काम करने के लिए बहुत अधिक करंट की आवश्यकता होती है। ESP32 पर 5V 2A पावर एडॉप्टर को 5V और GND पिन से कनेक्ट करें।

सीरियल मॉनिटर खोलें, बॉड दर को 115200 पर सेट करें और फिर ESP32 रिबूट के रूप में देखें। अंत में, आप सर्वर के लिए URL देखेंगे।

अपने ब्राउजर में जाएं और यूआरएल डालें। जब वेब साइट लोड हो जाती है, तो 'स्ट्रीमिंग शुरू करें' बटन पर क्लिक करें और लाइव वीडियो स्ट्रीम शुरू होनी चाहिए। यदि आप 'फ्लडलाइट' चेकबॉक्स पर क्लिक करते हैं, तो ऑन-बोर्ड फ्लैश एलईडी जलनी चाहिए। ध्यान रहें! यह उज्ज्वल है!

चरण 2: रोबोट का निर्माण करें

रोबोट का निर्माण करें
रोबोट का निर्माण करें

आपको दो पहियों वाला रोबोट चेसिस चाहिए। कोई भी चलेगा। निर्माता के निर्देशों के अनुसार चेसिस को इकट्ठा करें।

फिर आरेख के अनुसार रोबोट को तार दें। बैटरी कनेक्शन को अभी के लिए छोड़ दें।

L293D का उपयोग मोटर्स को नियंत्रित करने के लिए किया जाता है। ध्यान दें कि चिप पर आधा पायदान ESP32 की ओर है।

आमतौर पर, दो मोटरों को नियंत्रित करने के लिए Arduino पर 6 पिन की आवश्यकता होती है।

इस रोबोट को केवल 4 पिन की आवश्यकता है और अभी भी पूरी तरह से काम करता है।

पिन 1 और 9 Arduino के 5V स्रोत से जुड़े हैं इसलिए वे स्थायी रूप से उच्च हैं। रोबोट को इस तरह से तार करने का मतलब है कि हमें मोटरों को नियंत्रित करने के लिए Arduino पर दो कम पिन की आवश्यकता है।

आगे की दिशाओं में, INPUT पिन को LOW पर सेट किया जाता है और मोटर पल्स वेव मॉड्यूलेशन पिन को 0 और 255 के बीच 0 अर्थ ऑफ और 255 अर्थ अधिकतम गति के साथ मानों पर सेट किया जाता है।

विपरीत दिशाओं में, INPUT पिन उच्च पर सेट होते हैं और PWM मान उलट जाते हैं। 0 का अर्थ है अधिकतम गति और 255 का अर्थ है बंद।

अनज़िप करें और ArduinoMotorControl स्केच को Arduino Nano पर अपलोड करें।

चरण 3: अरे! एक सेकंड रुको! मुझे Arduino नैनो की आवश्यकता क्यों है?

आप शायद सोच रहे हैं, "अरे! ESP32 कैमरे पर कम से कम 4 IO पिन उपलब्ध हैं। मैं मोटरों को नियंत्रित करने के लिए उनका उपयोग क्यों नहीं कर सकता?"

खैर, यह सच है, ESP32 पर निम्नानुसार पिन हैं:

IO0 - ESP32 को प्रोग्रामिंग मोड में डालने के लिए आवश्यक है

IO2 - उपलब्ध

IO4 - फ्लैश एलईडी

IO12, IO13, IO14, IO15, IO16 - अतिरिक्त GPIO पिन।

यदि आप PWM कमांड के साथ पिन को नियंत्रित करने के लिए ESP32 पर सिर्फ एक बेसिक स्केच लोड करते हैं, तो वे काम करते हैं।

हालाँकि, एक बार जब आप अपने रेखाचित्रों में CAMERA पुस्तकालयों को सक्रिय कर देते हैं, तो ये पिन उपलब्ध नहीं रह जाते हैं।

तो सबसे आसान काम यह है कि PWM के माध्यम से मोटर्स को नियंत्रित करने के लिए नैनो का उपयोग करें और ESP32 से एक तार (ESP32 U0T से Arduino Rx0) और GND पर सीरियल संचार द्वारा कमांड भेजें। बहुत सरल।

चरण 4: यूएसबी जॉयस्टिक को तार दें (वैकल्पिक)

आप निम्न प्रकार से वेब पेज पर की प्रेस भेजकर रोबोट चला सकते हैं:

8 - फॉरवर्ड

9 - फॉरवर्ड राइट

7 - फॉरवर्ड लेफ्ट

4 - बाएँ घुमाएँ

5 - रुको

1 - वाम उल्टा

2 - उल्टा

3 - रिवर्स राइट।

USB जॉयस्टिक स्केच जॉयस्टिक इनपुट को कुंजी प्रेस में अनुवाद करता है और उन्हें वेब इंटरफ़ेस पर भेजता है जो रोबोट को चलाने के लिए उन्हें Arduino पर भेजता है।

जॉयस्टिक को Arduino LEONARDO से इस प्रकार कनेक्ट करें:

लियोनार्डो जॉयस्टिक

5 वी ---------- वीसीसी

जीएनडी ---------- जीएनडी

ए0 ---------- वीआरएक्स

ए1 ---------- वीआरई

USBJoyStick स्केच खोलें, बोर्ड के रूप में Arduino लियोनार्डो का चयन करें और इसे लियोनार्डो पर अपलोड करें।

यदि आप इसका परीक्षण करना चाहते हैं, तो बस अपने कंप्यूटर पर एक टेक्स्ट एडिटर खोलें, विंडो में माउस क्लिक करें और जॉयस्टिक को हिलाना शुरू करें। आपको विंडो में 1 से 9 तक के मान दिखाई देने चाहिए

चरण 5: चलो सवारी करें

कुछ समय लें और यह सुनिश्चित करने के लिए अपनी वायरिंग पर जाएं कि सब सही है।

इसके बाद, अपनी बैटरी को निम्नानुसार कनेक्ट करें।

1. ESP32 कैमरा को पावर दें। वेब सर्वर को प्रारंभ करने में कुछ सेकंड लगते हैं।

2. Arduino नैनो को पावर दें।

3. मोटर्स को पावर दें।

अपना ब्राउज़र लॉन्च करें और ESP32 के URL पर जाएं।

स्ट्रीमिंग शुरू करें बटन पर क्लिक करें।

अपने माउस को ब्राउज़र स्क्रीन में कहीं भी क्लिक करें ताकि स्क्रीन अब फोकस हो।

अपने रोबोट को जॉयस्टिक (या कीबोर्ड) से चलाना प्रारंभ करें।

मैंने पाया है कि वाईफाई पर लाइव वीडियो को काफी प्रतिक्रियात्मक रूप से प्रसारित करने के लिए डिफ़ॉल्ट फ्रेम आकार ठीक काम करता है। हालाँकि जैसे-जैसे आप फ़्रेम का आकार बढ़ाते हैं, स्ट्रीम अधिक तड़क-भड़क वाली हो जाएगी क्योंकि आप बड़ी छवियों को प्रसारित करने का प्रयास कर रहे हैं।

यह एक चुनौतीपूर्ण परियोजना है जो आपको लाइव वीडियो स्ट्रीमिंग के साथ काम करना शुरू करने और वाईफाई पर रोबोट चलाने का अवसर देती है। मुझे आशा है कि आपको यह मजेदार लगा!

अब जाओ और कुछ अद्भुत बनाओ!

जनवरी 2020 अपडेट - आखिरी तस्वीरें रोबोट के अंतिम संस्करण को दिखाती हैं, हार्ड-सोल्डर और सुरक्षित रूप से चेसिस पर लगा हुआ है।

तीन फ्रंट-माउंटेड स्विच इस प्रकार हैं:

वाम - मोटर पावर बैटरी

केंद्र - Arduino बैटरी

राइट - ESP32 कैमरा बैटरी

मैं कुछ हिरन-बूस्ट ट्रांसफॉर्मर के साथ एक बड़ी बैटरी का उपयोग कर सकता हूं (मैं ईएसपी 32 के लिए एक का उपयोग करता हूं - यह फ्रंट-व्यू फोटो के निचले दाएं भाग में है), लेकिन सादगी के लिए, मैं सिर्फ 3 बैटरी रख रहा हूं।

एक्सेस प्वाइंट पर अब रोबोट

मुझे अपने घर के बाहर इस रोबोट को प्रदर्शित करना बोझिल लगता है क्योंकि मेरा स्कूल एंटरप्राइज नेटवर्क मुझे रोबोट वेब सर्वर को इससे कनेक्ट करने की अनुमति नहीं देता है। समाधान के रूप में, मैंने ESP32 वेब सर्वर की एक्सेस प्वाइंट सुविधा का उपयोग करने पर शोध किया। इसमें कुछ काम लगता है, लेकिन ईएसपी 32 को अपना आईपी पता प्रसारित करने के लिए मुख्य रोबोट स्केच में काफी कम बदलाव की आवश्यकता होती है। यह एक समर्पित हाई स्पीड वाईफाई हब के रूप में शक्तिशाली नहीं है (कभी-कभी यदि आप बहुत तेजी से आगे बढ़ते हैं तो लटक जाता है), लेकिन यह काफी अच्छी तरह से काम करता है और अब मैं रोबोट को कहीं भी प्रदर्शित कर सकता हूं, बिना इसे नेटवर्क से कनेक्ट किए! एक बार जब आप रोबोट को काम कर लेते हैं, तो इसे स्वयं एक्सेस प्वाइंट में बदलने का प्रयास करें!

चरण 6: वेबसर्वर के लिए HTML/जावास्क्रिप्ट कोड को कैसे संशोधित करें का विवरण

यह आवश्यक नहीं है, लेकिन मेरे पास कुछ अनुरोध हैं।

मैंने इस Google डॉक को HTML/जावास्क्रिप्ट और कैमरा_इंडेक्स.एच फ़ाइल में बाइट सरणी अभ्यावेदन के बीच आगे और पीछे कनवर्ट करने के लिए साइबरशेफ का उपयोग करने के विवरण के साथ प्रदान किया है।

सिफारिश की: