- אז מה זה בכלל קוד QR הזה?
- יצירת קוד QR משלך
- המרת פורמט PNG ל- BMP
- המר את תמונת ה- BMP למערך של קודי HEX
- תרשים מעגל
- הסבר קוד
קוד "תגובה מהירה" או בקיצור קוד QR הפך לחלק חיוני בחיינו הדיגיטליים, רוב הסיכויים שאתה כבר מכיר אותם באופן לא מודע עד עכשיו, כנראה שאתה מסתובב בחנות המכולת המקומית שלך, או אולי אתה לקרוא את הספר האהוב עליך, או אולי אתה משלם תשלום מקוון באמצעות Google Pay, PhonePe או Paytm, או גולש באינטרנט וכו '(אני מניח שאוכל להמשיך ולהמשיך בדוגמאות, נכון?) ובמקרה הגעת על פני הדבר המרובע והמחשבה המוזרה הזו, מה זה בכלל הדבר המרובע הזה ואם לא… ובכן, אל תדאגי זה יקרה במוקדם או במאוחר, אז כדי להבין טוב יותר את הנושא אנחנו הולכים לעשות פרויקט קטן וכיפי עם Arduino ו- OLED וממחיש את הדברים הבאים:
- מושג בסיסי של קוד QR.
- איך זה עובד.
- כיצד ליצור קוד QR משלך באמצעות Arduino.
- ולסיום, הצג אותו במסך OLED (SSD1306).
אז מה זה בכלל קוד QR הזה?
קוד QR (קוד תגובה מהיר) הוא קוד דו ממדי מטריצה לקריאת נתונים במהירות גבוהה, שפותח על ידי DENSO WAVE בשנת 1994 עבור תעשיית הרכב ביפן. קוד QR דוחס נתונים ביעילות רבה בהשוואה לברקוד הסטנדרטי, כדי להשיג זאת הוא משתמש בארבעה מצבי קידוד סטנדרטיים (מספריים, אלפאנומריים, בתים / בינאריים וקאנג'י), הטכנולוגיה נעשתה "קוד פתוח" כלומר זמינה לכולם כך, זה צבר פופולריות במהירות רבה. היתרונות המשמעותיים של קודי QR בהשוואה לברקודים קונבנציונליים הם קיבולת נתונים גדולה יותר וסובלנות תקלות גבוהה.
איך עובד קוד QR?
קודי QR (וקודי מטריצת נתונים אחרים) נועדו לקריאה על ידי כלים מיוחדים, לא על ידי בני אדם, כך שיש רק כמות ספציפית שנוכל להבין על ידי לימוד חזותי, אם כי כל קוד שונה בדרכים שונות אם כי הם מכילים כמה נפוצים מעניינים תכונות על ידי התבוננות בקוד QR של circuitdigest.com נלמד כמה מהן
- דפוסי Finder: קופסאות מרובעות גדולות עם קופסה מוצקה בתוך שלוש פינות הקוד מקלות על האישור שמדובר בקוד QR מכיוון שיש רק שלוש מהן, ולכן די ברור שבאיזה אופן מכוון הקוד.
- תבנית יישור: זה מוודא כי יהיה כיוון שקוראים את הכיוון של הקוד.
- דפוס תזמון: זה עובר בצורה אופקית ואנכית בין שלושת דפוסי המאתר , באמצעות שורות אלה יכול הקורא לקבוע את גודל הקוד.
- מידע על גרסאות: קיימות כיום 40 גרסאות שונות של תקן קוד ה- QR, חלק זה של הקוד קובע את גרסת קוד ה- QR הנמצאת בשימוש, לצורך שימוש בגרסה 1-7 בשיווק רגיל.
- מידע על פורמט: לשותפי הפורמט יש מידע על סובלנות שגיאות ומיסוי נתונים.
- אזור נתונים: חלק זה של הקוד מכיל את כל רכיבי הנתונים וקוד תיקון השגיאות לאורך.
- צא מאזור: המרווח בכל קוד QR הוא חובה על מנת להבדיל את הקוד מסביבתו.
התמונה למטה תתן לך מושג ברור לגבי הקוד
חלקים אחרים בקוד הם קוד נתונים ויתירות.
ישנם מספר תכונות אחרות ונושאים מסובכים שלא אדון בהם במדריך זה. אם ברצונך לקרוא פרטים נוספים על קוד ה- QR אנא עקוב אחר הדרכה זו של קוד QR מאת Tan Jin Soon, EPCglobal Singapore Council. כתב העת לסינתזה, 2008.
מפרט קוד ה- QR
גודל הסמל |
דקה תא 21x21 - מקס. 177x177 תא (עם מרווח של 4 תאים) |
|
סוג מידע ונפח |
תווים מספריים |
7,089 תווים לכל היותר |
אלפביתים, שלטים |
4,296 תווים לכל היותר |
|
בינארי (8 סיביות) |
2,953 תווים לכל היותר |
|
דמויות קאנג'י |
1,817 תווים לכל היותר |
|
יעילות המרה |
מצב תווים מספרי |
3.3 תאים / תו |
מצב אלפאנומרי / סימנים |
5.5 תאים / תו |
|
מצב בינארי (8 סיביות) |
8 תאים / תו |
|
מצב תווים קאנג'י (13 סיביות) |
13 תאים / תו |
|
תיקון שגיאות פונקציונליות |
רמה L |
משוער. 7% משטח הסמל הוחזר במקסימום |
רמה M |
משוער. 15% משטח הסמל הוחזר במקסימום |
|
רמה ש |
משוער. 25% משטח הסמל הוחזר במקסימום |
|
דרגה ח ' |
משוער. 30% משטח הסמל הוחזר במקסימום |
|
פונקציונליות קישור |
אפשר לחלק ל 16 סמלים לכל היותר |
יצירת קוד QR משלך
בצע את הצעדים המוזכרים להלן כדי ליצור קוד QR משלך, בדוגמה זו אנו הולכים להכין קוד QR של אתר Circuit Digest האהוב שלנו.
להפקת קוד QR היכנסו לאתר זה ואם תסתכלו בחלקו העליון של האתר תוכלו לראות רשימת אפשרויות, במדריך זה אנו יוצרים קוד QR לכתובת אתר, לכן אנו הולכים
- לחץ על הכרטיסייה URL והדבק את כתובת ה- URL עבור Circuit Digest במקטע Enter URL.
- לחץ על שמור.
- תן שם קובץ עבור קובץ הפלט.
- בחר PNG כפורמט הקובץ המועדף עלינו.
- ולחץ על שמור.
התמונה למטה תתן לך מושג ברור לגבי התהליך
המיקרו-בקר היקר ביותר שלנו "ארדואינו" אינו מספיק אינטליגנטי כדי שהוא יכול רק לאסוף את תמונת ה- PNG הגולמית ולהציג אותה בתצוגת ה- OLED. לכן, כדי להציג את קוד ה- QR ל- OLED עלינו לבצע כמה צעדים פשוטים ולהמיר את תמונת ה- PNG למערך מפת סיביות הניתן לקריאה על ידי Arduino. המרה זו ביצענו בעבר תוך ממשק SSD1306 OLED עם Arduino וממשק LCD גרפי עם Arduino. בנוסף התממשקנו SSD1306 OLED עם Raspberry Pi, ESP32, NodeMCU ומיקרו-בקרים רבים אחרים. המרת מערך מפת סיביות יכולה להיעשות בשני שלבים למטה:
- המרת פורמט PNG ל- BMP.
- המר את תמונת ה- BMP למערך של קודי HEX.
המרת פורמט PNG ל- BMP
כדי להמיר את תמונת PNG שהורדת לתמונת BMP, היכנס לאתר זה ובקטע ממיר תמונות ו
- לחץ על התפריט הנפתח ובחר
- להמיר ל- BMP
- לחץ על המשך
התמונה למטה תתן לך מושג ברור לגבי התהליך:
יוצג בפניך דף חדש שנראה כמו התמונה למטה:
- לחץ על הכרטיסייה בחר קבצים ובחר את התמונה שהורדת
- בהגדרות האופציונליות, הקלד לוח בגודל הרצוי (אנו משתמשים ב- OLED בגודל 128x64)
- לחץ על כפתור התחל המרה
יוצג בפניך הדף הבא ולאחר מספר שניות התמונה שלך שהומרה תורד אם ההורדה לא תתחיל באופן אוטומטי לחץ על הורד אפשרות הקובץ שלך:
גדול! עכשיו קיבלנו את קובץ ה- BMP שהגיע הזמן להמיר אותו למערך קודי HEX הניתן לקריאה על ידי ארדואינו.
המר את תמונת ה- BMP למערך של קודי HEX
כדי להמיר את תמונת ה- BMP שהורדת למערך HEX, היכנס לאתר זה ולחץ על כלים -> image2cpp
התמונה למטה תתן לך מושג ברור לגבי התהליך
יוצג בפניך מסך שיש בו ארבע אפשרויות ונשוחח עליהם בפירוט
- בחר תמונה
- הגדרות תמונה
- תצוגה מקדימה
- תְפוּקָה
בחר קטע תמונה
בחלק זה אנו בוחרים את התמונה שהמרה זה עתה ל- BMP:
סעיף הגדרות תמונה
בחלק זה, נגדיר את גודל הבד, צבע הרקע, קנה המידה ואפשרויות המרכז לערך הנדרש.
- גודל בד (קבענו ל- 128x64 מכיוון שאנו משתמשים ב- OLED עם צפיפות פיקסל 128x64).
- בחלק זה נוכל להגדיר את צבע הרקע של ה- OLED (אנו בוחרים שהוא יהיה לבן).
- קנה המידה מוגדר לגודל המקורי.
- לבסוף, באפשרות המרכז לחץ על תיבות הסימון האופקיות והאנכיות, הדבר יגרום לתמונה להופיע במרכז.
התמונה למטה תתן לך מושג ברור
מקטע תצוגה מקדימה
בחלק התצוגה המקדימה אנו יכולים לראות תצוגה מקדימה ברורה של התמונה שתוצג ב- OLED כמו להלן:
מדור תפוקה
במקטע הפלט ניצור ונעתיק את הקוד שנוצר, לשם כך בצע את השלבים הבאים:
- פורמט פלט קוד (הגדרנו אותו כקוד ארדואינו מכיוון שאנחנו משתמשים בזה).
- מזהה (אפשרות זו מגדירה את השם למערך שנוצר, אנו משאירים אותו כברירת מחדל כפי שהוא).
- מצב ציור (אנו מגדירים את אופציית מצב הציור לרוחב).
- ולבסוף, אנו לוחצים על כפתור יצירת הקוד זה ייצור את קוד הפלט הסופי.
התמונה למטה תתן לך מושג ברור
תרשים מעגל
בתמונה למטה מוצגים חיבורי הממשק בין Arduino Nano ו- SSD1306:
פין ננו של ארדואינו |
PIN OLED |
GND |
GND |
3.3 וולט |
VCC |
D13 |
CLK |
D11 |
MOSI |
D8 |
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 #define OLED_RES_PIN 10 // Arduino Digital Pin D10: SS #define OLED_SDC_PIN 9 // Arduino Digital Pin D9: D 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, 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, 0x0f, 0xff, 0xff, 0xff, 0x 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7f, 0x31, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xf, 0xf, 0f 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, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xb1, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8, 0x1 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, …….. ………..
פונקציית Draw משמשת לציור תמונת מפת הסיביות (קוד QR) ב- OLED בעזרת פונקציית u8g.drawBitmapP.
חלל ציור (בטל) {// פקודות גרפיות לשרטוט מחדש של המסך השלם צריכות להיות ממוקמות כאן u8g.drawBitmapP (0, 0, 16, 64, circuitdigest);….. ……
לבסוף, בפונקציית loop () , קרא לכל ההליכים הדרושים לבניית התמונה ב- OLED
לולאה בטלה () {u8g.firstPage (); // קריאה להליך זה, מסמנת את תחילת לולאת התמונה. לעשות {לצייר (); } בעוד (u8g.nextPage ()); // קריאה להליך זה, מסמנת את סוף גוף לולאת התמונה. // לבנות מחדש את התמונה לאחר עיכוב כלשהו (1000); }
לאחר השלמת הקוד, חבר את Arduino ליציאת ה- USB במחשב שלך, בחר את יציאת ה- COM שלך והעלה את הקוד. אם עשית הכל נכון תהיה לך תצוגת עבודה עם קוד QR ב- OLED.
אני מקווה שאהבתם את הפרויקט הזה ונהניתם ללמוד משהו חדש, המשיכו לקרוא המשיכו ללמוד ואני אראה אתכם בפעם הבאה.