- إذن ، ما هو رمز الاستجابة السريعة هذا على أي حال؟
- إنشاء رمز الاستجابة السريعة الخاص بك
- تحويل PNG إلى تنسيق BMP
- قم بتحويل صورة BMP إلى مجموعة من أكواد HEX
- مخطط الرسم البياني
- شرح الكود
أصبح رمز "الاستجابة السريعة" أو المختصر كرمز الاستجابة السريعة جزءًا أساسيًا من حياتنا الرقمية ، ومن المحتمل أنك بالفعل على دراية بها لا شعوريًا حتى الآن ربما كنت تتجول في متجر البقالة المحلي لديك ، أو ربما تكون كذلك قراءة كتابك المفضل ، أو ربما تقوم بإجراء دفعة عبر الإنترنت باستخدام Google Pay أو PhonePe أو Paytm ، أو تتصفح الويب ، وما إلى ذلك (أفترض أنه يمكنني متابعة الأمثلة ، أليس كذلك؟) عبر هذا الشيء المربّع ذو المظهر الغريب والفكر ، ما هو هذا الشيء المربّع على أي حال ، وإذا لم تكن قد فعلت ذلك… حسنًا ، لا تقلق من أنه سيحدث عاجلاً أم آجلاً ، لذلك لفهم الموضوع بشكل أفضل ، سنقوم بعمل مشروع صغير ممتع مع Arduino و OLED وإزالة الغموض عن الأشياء التالية:
- المفهوم الأساسي لرمز الاستجابة السريعة.
- كيف تعمل.
- كيف تصنع كود QR الخاص بك باستخدام Arduino.
- وأخيرًا ، قم بعرضه في شاشة OLED (SSD1306).
إذن ، ما هو رمز الاستجابة السريعة هذا على أي حال؟
رمز الاستجابة السريعة (رمز الاستجابة السريعة) هو رمز مصفوفة ثنائي الأبعاد لقراءة البيانات بسرعة عالية ، تم تطويره بواسطة DENSO WAVE في عام 1994 لصناعة السيارات في اليابان. يقوم رمز الاستجابة السريعة بضغط البيانات بكفاءة عالية مقارنةً بالباركود القياسي ، ولتحقيق ذلك ، فإنه يستخدم أربعة أوضاع ترميز قياسية (رقمية ، أبجدية رقمية ، بايت / ثنائي ، كانجي) ، تم جعل التقنية "مفتوحة المصدر" أي متاحة للجميع ، اكتسبت شعبية بسرعة كبيرة.المزايا الهامة لأكواد QR على الرموز الشريطية التقليدية هي سعة بيانات أكبر وتحمل عالي للأخطاء.
كيف يعمل رمز الاستجابة السريعة؟
تم تصميم أكواد QR (وأكواد مصفوفة البيانات الأخرى) لتتم قراءتها بواسطة أدوات خاصة ، وليس بواسطة البشر ، لذلك لا يوجد سوى مقدار معين يمكننا فهمه من خلال الدراسة بصريًا ، على الرغم من أن كل رمز يختلف بطرق مختلفة على الرغم من احتوائه على عدد قليل من الأشياء الشائعة المثيرة للاهتمام الميزات من خلال مراقبة رمز الاستجابة السريعة Circdigest.com ، وسوف ندرس بعضًا منها
- أنماط الباحث: الصناديق المربعة الكبيرة التي تحتوي على صندوق صلب بداخله في الزوايا الثلاث للرمز تجعل من السهل التأكد من أنه رمز QR نظرًا لوجود ثلاثة منها فقط ، لذلك من الواضح تمامًا أن الطريقة التي يتم بها توجيه الكود.
- نمط المحاذاة: هذا يجعل من المؤكد أنه مهما كان الاتجاه فإن الكود يمكن قراءته.
- نمط التوقيت: يعمل هذا أفقيًا ورأسيًا بين أنماط الباحث الثلاثة ، باستخدام هذه الأسطر ، يمكن للقارئ تحديد حجم الكود.
- معلومات الإصدار: يوجد حاليًا 40 إصدارًا مختلفًا من معيار رمز الاستجابة السريعة ، ويحدد هذا القسم من الكود إصدار رمز الاستجابة السريعة الذي يتم استخدامه ، للإصدار التسويقي 1-7 المستخدم بشكل طبيعي.
- معلومات التنسيق: لدى شركاء التنسيق معلومات حول التسامح مع الخطأ وإخفاء البيانات.
- منطقة البيانات: يحتوي هذا القسم من الكود على جميع عناصر البيانات وكود تصحيح الخطأ.
- منطقة الخروج: التباعد في كل رمز QR إلزامي للتمييز بين الكود ومحيطه.
ستمنحك الصورة أدناه فكرة واضحة عن الكود
الأقسام الأخرى من الكود هي البيانات ورمز التكرار.
هناك عدد من الميزات الأخرى والموضوعات المعقدة التي لن أناقشها في هذا البرنامج التعليمي ، إذا كنت ترغب في قراءة المزيد من التفاصيل حول رمز الاستجابة السريعة ، فيرجى اتباع هذا البرنامج التعليمي لرمز الاستجابة السريعة بواسطة Tan Jin Soon ، EPCglobal Singapore Council. مجلة التوليف ، 2008.
مواصفات QR Code
حجم الرمز |
دقيقة. 21x21 خلية - بحد أقصى. 177x177 خلية (بفاصل 4 خلايا) |
|
نوع المعلومات وحجمها |
أحرف رقمية |
7089 حرفًا كحد أقصى |
الحروف الهجائية والعلامات |
4296 حرفًا كحد أقصى |
|
ثنائي (8 بت) |
2953 حرفًا كحد أقصى |
|
شخصيات كانجي |
1817 حرفًا كحد أقصى |
|
كفاءة التحويل |
وضع الأحرف الرقمية |
3.3 خلايا / حرف |
الأبجدية الرقمية / وضع العلامات |
5.5 خلية / حرف |
|
الوضع الثنائي (8 بت) |
8 خلايا / حرف |
|
وضع أحرف كانجي (13 بت) |
13 خلية / حرف |
|
تصحيح الاخطاء وظائف |
المستوى L |
تقريبا. تمت استعادة 7٪ من مساحة الرمز كحد أقصى |
المستوى م |
تقريبا. تمت استعادة 15٪ من مساحة الرمز كحد أقصى |
|
المستوى Q |
تقريبا. تمت استعادة 25٪ من مساحة الرمز كحد أقصى |
|
المستوى ح |
تقريبا. تمت استعادة 30٪ من مساحة الرمز كحد أقصى |
|
ربط الوظائف |
يمكن تقسيمها إلى 16 رمزًا كحد أقصى |
إنشاء رمز الاستجابة السريعة الخاص بك
اتبع الخطوات المذكورة أدناه لتوليد رمز الاستجابة السريعة الخاصة جدا، في هذا المثال، نحن ذاهبون لجعل رمز الاستجابة السريعة من حبيبنا حلبة دايجست الموقع
لإنشاء رمز QR ، انتقل إلى موقع الويب هذا ، وإذا نظرت إلى الجانب العلوي من موقع الويب ، يمكنك رؤية قائمة بالخيارات ، في هذا البرنامج التعليمي ، نقوم بإنشاء رمز QR لعنوان URL ، لذلك سنقوم
- انقر فوق علامة التبويب URL والصق عنوان URL لخلاصة الدائرة في قسم إدخال عنوان URL.
- انقر فوق حفظ.
- أعط اسم ملف لملف الإخراج.
- حدد PNG كتنسيق الملف المفضل لدينا.
- وانقر فوق حفظ.
ستمنحك الصورة أدناه فكرة واضحة عن العملية
إن أعز متحكم "Arduino" لدينا ليس ذكيًا بدرجة كافية بحيث يمكنه فقط تجميع صورة PNG الخام وعرضها على شاشة OLED. لذلك ، لعرض رمز الاستجابة السريعة على OLED ، نحتاج إلى اتباع بعض الخطوات البسيطة وتحويل صورة PNG إلى مجموعة صور نقطية يمكن قراءتها بواسطة Arduino. هذا التحويل الذي قمنا به سابقًا أثناء توصيل SSD1306 OLED مع Arduino وربط شاشة LCD الرسومية مع Arduino. لقد قمنا أيضًا بتوصيل SSD1306 OLED مع Raspberry Pi و ESP32 و NodeMCU والعديد من وحدات التحكم الدقيقة الأخرى. يمكن إجراء تحويل مجموعة الصور النقطية في خطوتين أدناه:
- تحويل PNG إلى تنسيق BMP.
- قم بتحويل صورة BMP إلى مجموعة من أكواد HEX.
تحويل PNG إلى تنسيق BMP
لتحويل صورة PNG التي تم تنزيلها إلى صورة BMP ، انتقل إلى هذا الموقع وفي قسم محول الصور و
- انقر على القائمة المنسدلة واختر
- قم بالتحويل إلى BMP
- انقر فوق انتقال
ستمنحك الصورة أدناه فكرة واضحة عن العملية:
ستظهر لك صفحة جديدة تشبه الصورة أدناه:
- انقر فوق علامة التبويب اختيار الملفات وحدد الصورة التي تم تنزيلها
- في الإعدادات الاختيارية ، اكتب اللوحة الحجم الذي تريده (نستخدم 128x64 OLED)
- انقر فوق زر بدء التحويل
ستظهر لك الصفحة التالية وبعد بضع ثوانٍ سيتم تنزيل صورتك المحولة إذا لم يبدأ التنزيل تلقائيًا ، انقر فوق خيار تنزيل ملفك:
عظيم! الآن حصلنا على ملف BMP حان الوقت لتحويله إلى مجموعة من رموز HEX يمكن قراءتها بواسطة Arduino.
قم بتحويل صورة BMP إلى مجموعة من أكواد HEX
لتحويل صورة BMP التي تم تنزيلها إلى مصفوفة HEX ، انتقل إلى موقع الويب هذا وانقر فوق أدوات -> image2cpp
ستمنحك الصورة أدناه فكرة واضحة عن العملية
ستظهر لك شاشة بها أربعة خيارات وسنناقشها بالتفصيل
- اختر صورة
- إعدادات الصورة
- معاينة
- انتاج |
حدد قسم الصورة
في هذا القسم ، سنختار الصورة التي قمنا بتحويلها للتو إلى BMP:
قسم إعدادات الصورة
في هذا القسم ، سنقوم بتعيين حجم اللوحة القماشية ولون الخلفية والقياس وخيارات المركز على القيمة المطلوبة.
- حجم اللوحة القماشية (قمنا بتعيين 128 × 64 لأننا نستخدم OLED بكثافة 128 × 64 بكسل).
- في هذا القسم ، يمكننا ضبط لون خلفية OLED (نختاره ليكون أبيض).
- تم ضبط القياس على الحجم الأصلي.
- أخيرًا ، في خيار المركز ، انقر فوق مربعات الاختيار الأفقية والرأسية ، وهذا سيجعل الصورة تظهر في المركز.
الصورة أدناه ستعطيك فكرة واضحة
قسم المعاينة
في قسم المعاينة يمكننا أن نرى معاينة واضحة للصورة التي سيتم عرضها في OLED كما هو موضح أدناه:
قسم الإخراج
سنقوم في قسم الإخراج بإنشاء ونسخ الكود الذي تم إنشاؤه ، للقيام بذلك اتبع الخطوات التالية:
- تنسيق إخراج الكود (قمنا بتعيينه كرمز Arduino لأننا نستخدم واحدًا).
- المعرف (يحدد هذا الخيار اسم المصفوفة التي تم إنشاؤها ونتركه افتراضيًا كما هو).
- وضع الرسم (وضعنا خيار وضع الرسم على الوضع الأفقي).
- وأخيرًا ، نضغط على زر إنشاء الكود وهذا سيولد كود الإخراج النهائي.
الصورة أدناه ستعطيك فكرة واضحة
مخطط الرسم البياني
تظهر الصورة أدناه الاتصالات البينية بين Arduino Nano و SSD1306:
اردوينو نانو دبوس |
OLED PIN |
GND |
GND |
3.3 فولت |
VCC |
D13 |
CLK |
D11 |
MOSI |
د 8 |
RES |
D9 |
SDC |
D10 |
CCS |
شرح الكود
لإظهار الصورة على OLED ، نحتاج إلى مساعدة مكتبة Arduino ، والتي يمكن تنزيلها من مستودع GitHub هذا. قم بتنزيل إصدار U8glib-1.19.1.zip للمكتبة واستورده في Arduino IDE. إذا كنت جديدًا في Arduino ، فاستعن بهذا الرابط الذي يصف كيفية استيراد مكتبة. في القسم أدناه ، سنقوم بتعديل الكود لعرض مجموعة HEX التي تم إنشاؤها مسبقًا على OLED. يتم تقديم رمز كامل مع فيديو عملي في نهاية هذه المقالة. الشرح التفصيلي للكود موضح أدناه.
أولاً ، قم بتضمين المكتبة التي تم تنزيلها.
# تضمين "U8glib.h" // بما في ذلك مكتبة U8glib
ثم حدد جميع المسامير اللازمة لـ OLED.
#define OLED_CLK_PIN 13 // Arduino Digital Pin D13: SCK #define OLED_MOSI_PIN 11 // Arduino Digital Pin D11: MOSI # تعريف OLED_RES_PIN 10 // Arduino Digital Pin D10: SS # تعريف OLED_SDC_PIN 9 // Arduino Digital Pin D9: O OLED_CSS_PIN 8 // Arduino Digital Pin 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 ، 0xff ، 0xf0 ، 0x00 ، 0x1c ، 0x01 ، 0x87 ، 0xf0 ، 0x00 ، 0x0f ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xf0 ، 0x00 ، 0x0c ، 0x01 ، 0x87 ، 0xf0 ، 0x00 ، 0x0f ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 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 ، 0x31 ،0x80 ، 0x33 ، 0x81 ، 0xcf ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xf3 ، 0x01 ، 0x8f ، 0x31 ، 0x80 ، 0x33 ، 0x81 ، 0xcf ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ،: 0x81 ، 0xcf ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xf3 ، 0x01 ، 0x8f ، 0xc1 ، 0x98 ، 0x33 ، 0x81 ، 0xcf ، 0xff ، 0xff ، 0xff ، 0xff ، …….. …… …..0xff ، 0xff ، …….. ………..0xff ، 0xff ، …….. ………..
تُستخدم وظيفة الرسم لرسم صورة نقطية (رمز الاستجابة السريعة) على OLED بمساعدة وظيفة u8g.drawBitmapP.
رسم باطل (باطل) {// يجب وضع أوامر الرسم لإعادة رسم الشاشة بالكامل هنا u8g.drawBitmapP (0، 0، 16، 64، circuitdigest) ؛ ….. ……
أخيرًا ، في دالة loop () ، قم باستدعاء جميع الإجراءات اللازمة لبناء الصورة على OLED
حلقة باطلة () {u8g.firstPage () ، // استدعاء لهذا الإجراء ، يمثل بداية حلقة الصورة. افعل {draw () ؛ } while (u8g.nextPage ()) ؛ // استدعاء لهذا الإجراء ، يشير إلى نهاية جسم حلقة الصورة. // إعادة بناء الصورة بعد بعض التأخير (1000) ؛ }
بعد إكمال الرمز ، قم بتوصيل Arduino بمنفذ USB بجهاز الكمبيوتر الخاص بك ، وحدد منفذ COM الخاص بك وقم بتحميل الرمز. إذا كنت قد فعلت كل شيء بشكل صحيح ، فسيكون لديك شاشة تعمل مع رمز الاستجابة السريعة على OLED.
أتمنى أن تكون قد أحببت هذا المشروع واستمتعت بتعلم شيء جديد ، واصل القراءة واستمر في التعلم وسأراكم في المرة القادمة.