- तो, इस क्यूआर कोड वैसे भी क्या है?
- अपने बहुत ही QR कोड जनरेट करना
- पीएनजी को बीएमपी प्रारूप में परिवर्तित करना
- HMP कोड की एक सरणी के लिए BMP छवि कन्वर्ट
- सर्किट आरेख
- कोड स्पष्टीकरण
"क्विक रिस्पांस" कोड या संक्षिप्त रूप में क्यूआर कोड हमारे डिजिटल जीवन का एक अनिवार्य हिस्सा बन गया है, संभावना है कि आप पहले से ही अवचेतन रूप से उनके साथ परिचित हैं अब तक आप शायद अपने स्थानीय किराने की दुकान के आसपास घूम रहे हैं, या शायद आप हैं अपनी पसंदीदा पुस्तक के माध्यम से पढ़ना, या संभवत: आप Google पे, फोनपे या पेटीएम के साथ ऑनलाइन भुगतान कर रहे हैं, या वेब पर सर्फिंग कर रहे हैं, (मुझे लगता है कि मैं जा सकता हूं और उदाहरण के साथ हुह?) और आप आए हैं? इस अजीब सी दिखने वाली चौकोर चीज़ के बारे में और सोचा, यह चौकोर चीज़ क्या है और अगर आप नहीं हैं… ठीक है, तो चिंता न करें यह जल्द या बाद में होने के लिए बाध्य है, इसलिए इस विषय को बेहतर ढंग से समझने के लिए हम एक करने जा रहे हैं Arduino और OLED के साथ मजेदार छोटी परियोजना और निम्नलिखित चीजों को ध्वस्त करें:
- क्यूआर कोड का बेसिक कॉन्सेप्ट।
- यह काम किस प्रकार करता है।
- Arduino का उपयोग करके अपना स्वयं का QR कोड कैसे बनाएं।
- और अंत में, इसे एक OLED (SSD1306) स्क्रीन में प्रदर्शित करें।
तो, इस क्यूआर कोड वैसे भी क्या है?
QR कोड (क्विक रिस्पांस कोड) उच्च गति पर डेटा पढ़ने के लिए एक मैट्रिक्स 2D कोड है, जिसे DENSO WAVE द्वारा 1994 में जापान के मोटर वाहन उद्योग के लिए विकसित किया गया था। एक QR कोड मानक बारकोड की तुलना में बहुत कुशलता से डेटा को संपीड़ित करता है, इसे प्राप्त करने के लिए यह चार मानकीकृत एन्कोडिंग मोड्स (संख्यात्मक, अल्फ़ान्यूमेरिक, बाइट / बाइनरी, और कांजी) का उपयोग करता है, प्रौद्योगिकी को "ओपन सोर्स" बनाया गया था अर्थात सभी के लिए उपलब्ध था, इसलिए बहुत तेजी से लोकप्रियता हासिल की। पारंपरिक बारकोड पर क्यूआर कोड के महत्वपूर्ण फायदे बड़ी डेटा क्षमता और उच्च दोष सहिष्णुता हैं।
QR कोड कैसे काम करता है?
क्यूआर कोड (और अन्य डेटा मैट्रिक्स कोड) मनुष्यों द्वारा नहीं, बल्कि विशेष उपकरणों द्वारा पढ़ने के लिए डिज़ाइन किए गए हैं, इसलिए केवल एक विशिष्ट राशि है जिसे हम नेत्रहीन अध्ययन करके समझ सकते हैं, हालांकि हर कोड विभिन्न तरीकों से भिन्न होता है, हालांकि वे कुछ दिलचस्प आम होते हैं सर्किटडाइगस्ट डॉट कॉम क्यूआर कोड देखकर हम उनमें से कुछ का अध्ययन करेंगे
- खोजक पैटर्न: कोड के तीन कोनों में एक ठोस बॉक्स के साथ बड़े वर्ग बक्से यह पुष्टि करना आसान बनाते हैं कि यह क्यूआर कोड है क्योंकि उनमें से केवल तीन हैं, इसलिए यह बहुत स्पष्ट है कि किस तरह से कोड उन्मुख है।
- संरेखण पैटर्न: इससे यह निश्चित हो जाता है कि कोड जो भी हो, अभिविन्यास पठनीय हो सकता है।
- टाइमिंग पैटर्न: यह तीन खोजक पैटर्न के बीच क्षैतिज और लंबवत चलता है , इन पंक्तियों का उपयोग करके पाठक कोड का आकार निर्धारित कर सकता है।
- संस्करण की जानकारी: वर्तमान में QR कोड मानक के 40 विभिन्न संस्करण हैं, कोड का यह खंड QR कोड संस्करण निर्धारित करता है जिसका उपयोग किया जा रहा है, विपणन संस्करण 1-7 के लिए सामान्य रूप से उपयोग किया जाता है।
- प्रारूप सूचना: प्रारूप भागीदारों में त्रुटि सहिष्णुता और डेटा मास्किंग के बारे में जानकारी होती है।
- डेटा क्षेत्र: कोड के इस खंड में सभी डेटा तत्व और त्रुटि सुधार कोड शामिल हैं।
- क्विट ज़ोन: प्रत्येक क्यूआर कोड में अंतर कोड को अपने परिवेश से अलग करने के लिए अनिवार्य है।
नीचे दी गई छवि आपको कोड के बारे में एक स्पष्ट विचार देगी
कोड के अन्य खंड डेटा और अतिरेक कोड हैं।
कई अन्य विशेषताएं और जटिल विषय हैं जिनकी मैं इस ट्यूटोरियल में चर्चा नहीं करूंगा, यदि आप QR कोड के बारे में अधिक जानकारी पढ़ना पसंद करते हैं तो कृपया टैन जिन सून, ईपीसीग्लोइड सिंगापुर काउंसिल द्वारा इस क्यूआर कोड ट्यूटोरियल का अनुसरण करें। सिंथेसिस जर्नल, 2008।
क्यूआर कोड की विशिष्टता
प्रतीक का आकार |
मिन। 21x21 सेल - मैक्स। 177x177 सेल (4-सेल्स अंतराल के साथ) |
|
सूचना प्रकार और आयतन |
संख्यात्मक वर्ण |
अधिकतम 7,089 वर्ण |
अक्षर, संकेत |
4,296 वर्ण अधिकतम |
|
बाइनरी (8 बिट) |
अधिकतम 2,953 अक्षर |
|
कांजी अक्षर |
अधिकतम 1,817 अक्षर |
|
रूपांतरण दक्षता |
न्यूमेरिक कैरेक्टर मोड |
3.3 कोशिकाओं / चरित्र |
अल्फ़ान्यूमेरिक / साइन्स मोड |
5.5 सेल / वर्ण |
|
बाइनरी (8 बिट) मोड |
8 कोशिकाओं / चरित्र |
|
कांजी अक्षर मोड (13 बिट) |
13 कोशिकाओं / चरित्र |
|
गलतीयों का सुधार कार्यक्षमता |
स्तर एल |
लगभग। प्रतीक क्षेत्र का 7% अधिकतम पर बहाल |
स्तर एम |
लगभग। प्रतीक क्षेत्र का 15% अधिकतम पर बहाल |
|
स्तर क्यू |
लगभग। प्रतीक क्षेत्र का 25% अधिकतम पर बहाल |
|
स्तर एच |
लगभग। प्रतीक क्षेत्र का 30% अधिकतम पर बहाल |
|
लिंकिंग कार्यक्षमता |
अधिकतम 16 प्रतीकों में विभाजित किया जाना संभव है |
अपने बहुत ही QR कोड जनरेट करना
अपना स्वयं का QR कोड बनाने के लिए नीचे दिए गए चरणों का पालन करें, इस उदाहरण में, हम अपने प्रिय सर्किट डाइजेस्ट वेबसाइट का एक QR कोड बनाने जा रहे हैं
क्यूआर कोड जनरेट करने के लिए इस वेबसाइट पर जाएँ और यदि आप वेबसाइट के ऊपर की तरफ देखते हैं तो आप विकल्पों की एक सूची देख सकते हैं, इस ट्यूटोरियल में हम एक यूआरएल के लिए क्यूआर कोड उत्पन्न कर रहे हैं, इसलिए हम जा रहे हैं
- URL टैब पर क्लिक करें और URL दर्ज करें अनुभाग में सर्किट डाइजेस्ट के लिए URL पेस्ट करें।
- Save पर क्लिक करें।
- आउटपुट फ़ाइल के लिए एक फ़ाइल नाम दें।
- PNG को हमारे पसंदीदा फ़ाइल प्रारूप के रूप में चुनें।
- और सहेजें पर क्लिक करें।
नीचे दी गई छवि आपको प्रक्रिया के बारे में एक स्पष्ट विचार देगी
हमारा सबसे प्रिय माइक्रोकंट्रोलर "अरुडिनो" इतना बुद्धिमान नहीं है कि वह कच्चे पीएनजी छवि को संकलित कर सके और इसे OLED डिस्प्ले में प्रदर्शित कर सके। इसलिए, OLED को QR कोड प्रदर्शित करने के लिए हमें कुछ सरल चरणों का पालन करने की आवश्यकता है और Arduino द्वारा पठनीय PNG छवि को एक बिटमैप ऐरे में बदलना है । यह रूपांतरण हमने पहले SSD1306 OLED को Arduino के साथ और Arduino के साथ ग्राफिकल एलसीडी को इंटरफेयर करते समय किया है। हमने रास्पबेरी पाई, ESP32, NodeMCU, और कई अन्य माइक्रोकंट्रोलर के साथ SSD1306 OLED को भी बाधित किया। बिटमैप सरणी रूपांतरण दो चरणों के नीचे किया जा सकता है:
- पीएनजी को बीएमपी प्रारूप में परिवर्तित करना।
- HMP कोड की एक सरणी के लिए BMP छवि कन्वर्ट।
पीएनजी को बीएमपी प्रारूप में परिवर्तित करना
डाउनलोड की गई पीएनजी छवि को बीएमपी छवि में बदलने के लिए, इस वेबसाइट पर जाएं और छवि कनवर्टर अनुभाग में और
- ड्रॉपडाउन मेनू पर क्लिक करें और चुनें
- BMP में कनवर्ट करें
- Go पर क्लिक करें
नीचे दी गई छवि आपको प्रक्रिया के बारे में एक स्पष्ट विचार देगी:
आपको एक नए पृष्ठ के साथ प्रस्तुत किया जाएगा जो नीचे की छवि जैसा दिखता है:
- फ़ाइलें चुनें टैब पर क्लिक करें और डाउनलोड की गई छवि का चयन करें
- वैकल्पिक सेटिंग्स में, पैनल अपना इच्छित आकार टाइप करें (हम 128x64 OLED का उपयोग कर रहे हैं)
- प्रारंभ रूपांतरण बटन पर क्लिक करें
आपको निम्न पृष्ठ के साथ प्रस्तुत किया जाएगा और कुछ सेकंड के बाद आपकी परिवर्तित छवि डाउनलोड हो जाएगी यदि डाउनलोड स्वचालित रूप से शुरू नहीं होता है तो डाउनलोड फ़ाइल पर क्लिक करें:
महान! अब हमें अपनी BMP फाइल को अरुडिनो द्वारा पठनीय HEX कोड की एक सरणी में बदलने के लिए समय मिल गया ।
HMP कोड की एक सरणी के लिए BMP छवि कन्वर्ट
डाउनलोड की गई BMP छवि को HEX सरणी में बदलने के लिए, इस वेबसाइट पर जाएं और Tools -> image2cpp पर क्लिक करें
नीचे दी गई छवि आपको प्रक्रिया के बारे में एक स्पष्ट विचार देगी
आपको एक स्क्रीन के साथ प्रस्तुत किया जाएगा जिसमें चार विकल्प हैं और हम उन्हें विवरण में चर्चा करेंगे
- छवि चुने
- छवि सेटिंग्स
- पूर्वावलोकन
- उत्पादन
छवि अनुभाग का चयन करें
इस खंड में हम उस छवि का चयन करेंगे जिसे हमने BMP में बदल दिया है:
छवि सेटिंग्स अनुभाग
इस अनुभाग में, हम कैनवास के आकार, पृष्ठभूमि का रंग, स्केलिंग और केंद्र के विकल्प को हमारे आवश्यक मूल्य पर सेट करेंगे।
- कैनवास का आकार (हम 128x64 पर सेट करते हैं क्योंकि हम 128x64 पिक्सेल घनत्व के साथ एक OLED का उपयोग कर रहे हैं)।
- इस खंड में, हम ओएलईडी का पृष्ठभूमि रंग निर्धारित कर सकते हैं (हम इसे सफेद होने के लिए चुनते हैं)।
- स्केलिंग मूल आकार पर सेट है।
- अंत में, केंद्र विकल्प में क्षैतिज और ऊर्ध्वाधर चेकबॉक्स पर क्लिक करें, इससे छवि केंद्र में दिखाई देगी।
नीचे दी गई छवि आपको एक स्पष्ट विचार देगी
पूर्वावलोकन अनुभाग
पूर्वावलोकन अनुभाग में हम छवि का एक स्पष्ट पूर्वावलोकन देख सकते हैं जो नीचे दिखाए गए OLED की तरह प्रदर्शित होगा:
आउटपुट अनुभाग
आउटपुट सेक्शन में हम जनरेट कोड को जनरेट करेंगे और कॉपी करेंगे, ऐसा करने के लिए नीचे दिए गए चरणों का पालन करें:
- कोड आउटपुट प्रारूप (हम इसे Arduino कोड के रूप में सेट करते हैं क्योंकि हम एक का उपयोग कर रहे हैं)।
- आइडेंटिफ़ायर (यह विकल्प जनरेट किए गए एरे के लिए नाम सेट करता है जिसे हम डिफ़ॉल्ट रूप से छोड़ते हैं)।
- ड्रा मोड (हम ड्रा मोड विकल्प को क्षैतिज पर सेट करते हैं)।
- और अंत में, हम जनरेट कोड बटन पर क्लिक करते हैं यह अंतिम आउटपुट कोड उत्पन्न करेगा।
नीचे दी गई छवि आपको एक स्पष्ट विचार देगी
सर्किट आरेख
नीचे की छवि ने Arduino Nano और SSD1306 के बीच के अंतर कनेक्शन को दिखाया:
अरुडिनो नैनो पिन |
OLED पिन |
GND |
GND |
3.3 |
वीसीसी |
D13 |
सीएलके |
D11 |
MOSI |
डी 8 |
रेस |
डी 9 |
एसडीसी |
D10 |
सीसीएस |
कोड स्पष्टीकरण
ओएलईडी पर छवि दिखाने के लिए हमें एक Arduino लाइब्रेरी की मदद चाहिए, जिसे इस GitHub रिपॉजिटरी से डाउनलोड किया जा सकता है। लाइब्रेरी का U8glib-1.19.1.zip संस्करण डाउनलोड करें और इसे Arduino IDE में आयात करें। यदि आप Arduino के लिए नए हैं, तो लाइब्रेरी आयात करने के तरीके का वर्णन करते हुए इस लिंक की मदद लें। नीचे दिए गए अनुभाग में हम पहले से उत्पन्न एचईएक्स सरणी को ओएलईडी पर प्रदर्शित करने के लिए कोड को संशोधित करेंगे। एक कामकाजी वीडियो के साथ पूरा कोड इस लेख के अंत में दिया गया है। कोड का विवरण विस्तार नीचे दिया गया है।
सबसे पहले, डाउनलोड की गई लाइब्रेरी को शामिल करें।
U8glib लाइब्रेरी सहित #include "U8glib.h" //
फिर OLED के लिए सभी आवश्यक पिनों को परिभाषित करें।
#define OLED_CLK_PIN 13 // Arduino डिजिटल पिन D13: SCK #define OLED_MOSI_PIN 11 // Arduino डिजिटल पिन D11: MOSI #define OLED_RES_PIN 10 // Arduino डिजिटल पिन D10: SS #define OLED_SDC_PIN 9 // डिजिटल डिजिटल पिन D13। OLED_CSS_PIN 8 // Arduino डिजिटल पिन D13: ICP1
प्रारंभिक u8glib लाइब्रेरी।
U8GLIB_SH1106_128X64 u8g (OLED_CLK_PIN, OLED_MOSI_PIN, OLED_RES_PIN, OLED_SDC_PIN, OLED_CSS_PIN);
फिर उत्पन्न छवि सरणी को शामिल करें।
const uint8_t circuitdigest PROGMEM = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0x87, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0c, 0x01, 0x87, 0xf0, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7F, 0x31, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7F, 0x33, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x81, 0x8f, 0x310x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0x31, 0x80, 0x33, 0x81, 0x81, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf0, 0xf0, 0x81 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xb1, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x3, 0x3, 0x3 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0x1, 0x98, 0x33, 0x81, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff …..0xff, 0xff, …….. ………..0xff, 0xff, …….. ………..
ड्रा फ़ंक्शन का उपयोग u8g.drawBitmapP फ़ंक्शन की सहायता से OLED पर बिटमैप छवि (QR कोड) को खींचने के लिए किया जाता है।
शून्य ड्रा (शून्य) {// पूरी स्क्रीन को फिर से डिजाइन करने के लिए ग्राफिक कमांड यहां u8g.drawBitmapP (0, 0, 16, 64, सर्किटडिगेस्ट) को रखा जाना चाहिए; ….. ……
अंत में, लूप () फ़ंक्शन में, ओएलईडी पर छवि बनाने के लिए सभी आवश्यक प्रक्रियाओं को कॉल करें
शून्य लूप () {u8g.firstPage (); // इस प्रक्रिया के लिए एक कॉल, चित्र लूप की शुरुआत को चिह्नित करता है। do {ड्रा (); } जबकि (u8g.nextPage ()); // इस प्रक्रिया के लिए एक कॉल, चित्र लूप के शरीर के अंत को चिह्नित करता है। // कुछ देरी देरी (1000) के बाद तस्वीर को फिर से बनाना; }
कोड पूरा करने के बाद, अपने कंप्यूटर के USB पोर्ट में Arduino में प्लग करें, अपना COM पोर्ट चुनें और कोड अपलोड करें। यदि आपने सब कुछ सही ढंग से किया है, तो आपके पास OLED पर एक क्यूआर कोड के साथ काम करने वाला डिस्प्ले होगा।
मुझे उम्मीद है कि आपको यह परियोजना पसंद आई होगी और कुछ नया सीखने में मज़ा आएगा, पढ़ते रहिए सीखते रहिए और मैं आपको अगली बार देखूंगा।