- अवयव आवश्यक
- कैमरा मॉड्यूल OV7670 के बारे में याद रखने वाली बातें
- सर्किट आरेख
- प्रोग्रामिंग Arduino UNO
- छवियाँ पढ़ने के लिए सीरियल पोर्ट रीडर का उपयोग कैसे करें
- नीचे OV7670 से लिए गए नमूना चित्र हैं
- OV7670 का उपयोग करते समय सावधानियां
कैमरों ने हमेशा इलेक्ट्रॉनिक्स उद्योग पर अपना वर्चस्व कायम किया है क्योंकि इसमें बहुत सारे अनुप्रयोग हैं जैसे विजिटर मॉनिटरिंग सिस्टम, सर्विलांस सिस्टम, अटेंडेंस सिस्टम इत्यादि जो आज हम उपयोग करते हैं वे स्मार्ट हैं और उनमें बहुत सारी विशेषताएं हैं जो पहले के कैमरों में मौजूद नहीं थीं। आज के डिजिटल कैमरे न केवल छवियों को कैप्चर करते हैं, बल्कि दृश्य के उच्च-स्तरीय विवरणों को भी कैप्चर करते हैं और वे जो देखते हैं उसका विश्लेषण करते हैं। इसका उपयोग बड़े पैमाने पर रोबोटिक्स, आर्टिफिशियल इंटेलिजेंस, मशीन लर्निंग आदि में किया जाता है। आर्टिफिशियल इंटेलिजेंस और मशीन लर्निंग का उपयोग करके कैप्चर किए गए फ्रेम को प्रोसेस किया जाता है और फिर नंबर प्लेट डिटेक्शन, ऑब्जेक्ट डिटेक्शन, मोशन डिटेक्शन, फेशियल रिकग्निशन आदि जैसे कई एप्लिकेशन में उपयोग किया जाता है।
इस ट्यूटोरियल में हम Arduino UNO के साथ सबसे व्यापक रूप से उपयोग किए जाने वाले कैमरा मॉड्यूल OV7670 को इंटरफ़ेस करेंगे । कैमरा मॉड्यूल OV7670 को एक ही पिन कॉन्फ़िगरेशन, कोड और स्टेप्स के साथ Arduino Mega में इंटर किया जा सकता है । कैमरा मॉड्यूल को इंटरफ़ेस करना कठिन है क्योंकि इसमें बड़ी संख्या में पिन और जंबल्ड वायरिंग होती है। इसके अलावा कैमरा मॉड्यूल का उपयोग करते समय तार बहुत महत्वपूर्ण हो जाता है क्योंकि तार की पसंद और तार की लंबाई तस्वीर की गुणवत्ता को काफी प्रभावित कर सकती है और शोर ला सकती है।
हम पहले से ही विभिन्न प्रकार के माइक्रोकंट्रोलर्स और IoT डिवाइसेस के साथ कैमरों पर पर्याप्त प्रोजेक्ट कर चुके हैं:
- रास्पबेरी पाई और पाई कैमरा के साथ आगंतुक निगरानी प्रणाली
- ईमेल अलर्ट के साथ IOT आधारित रास्पबेरी पाई होम सिक्योरिटी सिस्टम
- मोशन कैप्चर के साथ रास्पबेरी पाई सर्विलांस कैमरा
कैमरा OV7670 3.3 पर काम करता है, तो यह Arduino जो उनके उत्पादन GPIO पिन पर 5V उत्पादन देता है से बचने के लिए बहुत महत्वपूर्ण हो जाता है। OV7670 एक FIFO कैमरा है। लेकिन इस ट्यूटोरियल में, तस्वीर या फ्रेम को फीफो के बिना पकड़ा जाएगा। इस ट्यूटोरियल में Arduino UNO के साथ OV7670 इंटरफ़ेस करने के लिए सरल चरण और सरलीकृत प्रोग्रामिंग होगी।
अवयव आवश्यक
- Arduino UNO
- OV7670 कैमरा मॉड्यूल
- प्रतिरोध (10k, 4.7k)
- जम्परों
आवश्यक सॉफ्टवेयर:
- Arduino IDE
- सीरियल पोर्ट रीडर (आउटपुट इमेज का विश्लेषण करने के लिए)
कैमरा मॉड्यूल OV7670 के बारे में याद रखने वाली बातें
OV7670 कैमरा मॉड्यूल एक FIFO कैमरा मॉड्यूल है जो विभिन्न निर्माताओं से विभिन्न पिन कॉन्फ़िगरेशन के साथ उपलब्ध है। TheOV7670 पूर्ण फ्रेम प्रदान करता है, विस्तृत प्रारूप में 8-बिट छवियां विंडो। छवि सरणी वीजीए में 30 फ्रेम प्रति सेकंड (एफपीएस) तक काम करने में सक्षम है। OV7670 में शामिल हैं
- इमेज सेंसर अर्रे (लगभग 656 x 488 पिक्सेल)
- टाइमिंग जेनरेटर
- एनालॉग सिग्नल प्रोसेसर
- ए / डी कन्वर्टर्स
- टेस्ट पैटर्न जेनरेटर
- डिजिटल सिग्नल प्रोसेसर (DSP)
- छवि स्केलर
- डिजिटल वीडियो पोर्ट
- एलईडी और स्ट्रोब फ्लैश कंट्रोल आउटपुट
OV7670 इमेज सेंसर को सीरियल कैमरा कंट्रोल बस (SCCB) का उपयोग करके नियंत्रित किया जाता है, जो 400KHz की अधिकतम घड़ी आवृत्ति के साथ I2C इंटरफ़ेस (SIOC, SIOD) है।
कैमरा हैंडशेकिंग सिग्नल के साथ आता है जैसे:
- VSYNC: वर्टिकल सिंक आउटपुट - फ्रेम के दौरान कम
- HREF: क्षैतिज संदर्भ - पंक्ति के सक्रिय पिक्सेल के दौरान उच्च
- PCLK: पिक्सेल क्लॉक आउटपुट - फ्री रनिंग क्लॉक। बढ़ते किनारे पर डेटा मान्य है
इसके अतिरिक्त, इसके और भी कई संकेत हैं जैसे कि
- D0-D7: 8-बिट YUV / RGB वीडियो घटक डिजिटल आउटपुट
- PWDN: पावर डाउन मोड चयन - सामान्य मोड और पावर डाउन मोड
- XCLK: सिस्टम क्लॉक इनपुट
- रीसेट: रीसेट सिग्नल
OV7670 को 24MHz ऑसिलेटर से देखा गया है। यह 24MHz का पिक्सेल क्लॉक (PCLK) आउटपुट देता है। FIFO वीडियो फ्रेम बफर मेमोरी के 3Mbps प्रदान करता है। टेस्ट पैटर्न जनरेटर में 8-बार कलर बार पैटर्न, फीका-टू-ग्रे कलर बार पेटेंट है। अब आइए कैमरा OV7670 के परीक्षण के लिए Arduino UNO की प्रोग्रामिंग शुरू करें और सीरियल पोर्ट रीडर का उपयोग करके फ़्रेमों को पकड़ें।
सर्किट आरेख
प्रोग्रामिंग Arduino UNO
प्रोग्रामिंग OV7670 के लिए आवश्यक आवश्यक लाइब्रेरी को शामिल करने के साथ शुरू होती है । चूंकि OV7670 I2C इंटरफ़ेस पर चलता है, इसमें शामिल हैइसके बाद, रजिस्टरों को OV7670 के लिए संशोधित करने की आवश्यकता है। बेहतर समझ के लिए कार्यक्रम को छोटे कार्यों में विभाजित किया गया है।
सेटअप () सभी प्रारंभिक केवल छवि कैप्चरिंग के लिए आवश्यक व्यवस्था शामिल हैं। पहला फ़ंक्शन arduinoUnoInut () है जिसका उपयोग arduino uno को इनिशियलाइज़ करने के लिए किया जाता है। प्रारंभ में यह सभी वैश्विक व्यवधानों को निष्क्रिय करता है और संचार इंटरफेस कॉन्फ़िगरेशन जैसे पीडब्लूएम घड़ी, इंटरप्ट पिन का चयन, प्रेसक्लेर चयन, समता जोड़ने और बिट्स को रोकने के लिए सेट करता है।
ArduinoUnoInut ();
Arduino को कॉन्फ़िगर करने के बाद, कैमरा को कॉन्फ़िगर करना होगा। कैमरा को इनिशियलाइज़ करने के लिए, हमारे पास केवल रजिस्टर वैल्यूज़ को बदलने का विकल्प है। रजिस्टर मानों को डिफ़ॉल्ट से कस्टम में बदलना होगा। इसके अलावा हम जिस माइक्रोकंट्रोलर फ्रीक्वेंसी का उपयोग कर रहे हैं, उसके आधार पर आवश्यक विलंब जोड़ें। के रूप में, धीमी माइक्रोकंट्रोलर के पास कैप्चरिंग फ्रेम के बीच अधिक विलंब को जोड़ने के लिए कम प्रसंस्करण समय होता है।
शून्य कैमइनिट (शून्य) { राइटरैग (0x12, 0x80); _delay_ms (100); wrSensorRegs8_8 (ov7670_default_regs); राइटरेज (REG_COM10, 32); // PCLK HBLANK पर टॉगल नहीं करता है। }
कैमरा QVGA छवि लेने के लिए सेट है, इसलिए रिज़ॉल्यूशन का चयन करने की आवश्यकता है। फ़ंक्शन QVGA छवि लेने के लिए रजिस्टर को कॉन्फ़िगर करता है।
setResolution ();
इस ट्यूटोरियल में, छवियों को मोनोक्रोम में लिया जाता है, इसलिए एक मोनोक्रोम छवि को आउटपुट करने के लिए रजिस्टर मूल्य निर्धारित किया जाता है। फ़ंक्शन रजिस्टर सूची से रजिस्टर मान सेट करता है जो कार्यक्रम में पूर्वनिर्धारित है।
setColor ();
नीचे फ़ंक्शन को रजिस्टर फ़ंक्शन को लिखना है जो रजिस्टर करने के लिए हेक्स मान लिखता है। यदि आप तले हुए चित्र प्राप्त करते हैं, तो दूसरा शब्द अर्थात 10 से 9/11/12 को बदलने का प्रयास करें। लेकिन अधिकांश समय यह मान ठीक काम करता है इसलिए इसे बदलने की कोई आवश्यकता नहीं है।
राइटरगेज (0x11, 10);
इस फ़ंक्शन का उपयोग छवि रिज़ॉल्यूशन आकार प्राप्त करने के लिए किया जाता है। इस परियोजना में हम 320 x 240 पिक्सेल के आकार में चित्र ले रहे हैं।
कैप्चरोग्राम (320, 240);
इसके अलावा, कोड में I2C कॉन्फ़िगरेशन भी कई भागों में विभाजित है। बस कैमरे से डेटा प्राप्त करने के लिए, I2C कॉन्फ़िगरेशन में स्टार्ट, रीड, राइट, सेट एड्रेस फ़ंक्शन है जो I2C प्रोटोकॉल का उपयोग करते समय महत्वपूर्ण हैं।
आप इस ट्यूटोरियल के अंत में एक प्रदर्शन वीडियो के साथ पूरा कोड पा सकते हैं । बस कोड अपलोड करें और सीरियल पोर्ट रीडर खोलें और फ़्रेम को पकड़ो।
छवियाँ पढ़ने के लिए सीरियल पोर्ट रीडर का उपयोग कैसे करें
सीरियल पोर्ट रीडर एक साधारण जीयूआई है, इसे यहां से डाउनलोड करें। यह बेस 64 एनकोड को कैप्चर करता है और इसे इमेज बनाने के लिए डिकोड करता है। बस सीरियल पोर्ट रीडर का उपयोग करने के लिए इन सरल चरणों का पालन करेंचरण 1: अपने Arduino को अपने पीसी के किसी भी USB पोर्ट से कनेक्ट करें
चरण 2: अपने Arduino COM पोर्ट को खोजने के लिए "चेक" पर क्लिक करें
चरण 3: अंत में क्रमिक रूप से पढ़ना शुरू करने के लिए "प्रारंभ" बटन पर क्लिक करें।
चरण 4: कोई भी "चित्र सहेजें" पर क्लिक करके इस चित्रों को भी सहेज सकता है।
नीचे OV7670 से लिए गए नमूना चित्र हैं
OV7670 का उपयोग करते समय सावधानियां
- जहां तक संभव हो तारों या जंपर्स का उपयोग करने का प्रयास करें
- Arduino या OV7670 पर किसी भी पिन से किसी भी ढीले संपर्क से बचें
- कनेक्ट होने के बारे में सावधान रहें क्योंकि बड़ी संख्या में वायरिंग शॉर्ट सर्किट का कारण बन सकती है
- यदि UNO GPIO को 5V आउटपुट देता है तो Level Shifter का उपयोग करें।
- OV7670 के लिए 3.3V इनपुट का उपयोग करें क्योंकि वोल्टेज से अधिक OV7670 मॉड्यूल को नुकसान पहुंचा सकता है।
यह परियोजना Arduino के साथ एक कैमरा मॉड्यूल का उपयोग करने का ओवरव्यू देने के लिए बनाई गई है। चूंकि Arduino में मेमोरी कम है, इसलिए प्रसंस्करण उम्मीद के मुताबिक नहीं हो सकता है। आप विभिन्न नियंत्रकों का उपयोग कर सकते हैं जिनमें प्रसंस्करण के लिए अधिक मेमोरी है।