כיצד לחבר צג OLED I2C ל-ARDUINO
הקדמה: מבוא לתצוגת OLED I2C 128*64 / 128*32.
שלום! בהיותי חובב אלקטרוניקה חובב, אני בטוח שכל מה שאנחנו עושים - צעצועים אלקטרוניים - מוצרים תוצרת בית, או פרויקטים גדולים - הכל מתוך סקרנות ועצלנות. הסקרנות שואפת להבין ולהבין את העצום, הלא נודע, כדי להבין איך הוא עובד שם, מה הוא עושה, איך הוא זז. והעצלות ממציאה על מה להמציא, כדי לא לקום, לא להתקרב, לא להרים, לא להתלכלך או כל דבר אחר חשוב.
מכיוון שראיית מידע טובה יותר מאשר להבין מה עומד לקרות במכשיר שלנו, או שכבר קרה, או קורה, אנחנו בהחלט נרצה לקבל את המידע השימושי ביותר הזה מהמיקרו-בקרים, החיישנים או מכשירים אחרים שלנו. ובכל מקרה, אני רוצה לקבל כל הודעה כמו שאלות, אזהרות, תזכורות, אמוטיקונים, כוכבים, לבבות וכדומה.
למי שיש גם רצון דומה, הנה מדריך קצר לחיבור ובדיקה של צגי OLED קטנים וזולים.
לאחר מכן, נדבר על אחד מדגמי תצוגת ה-OLED הזמינים באופן נרחב עבור חובבי רדיו, הנשלט על ידי שבב SSD1306, עם גודל מסך של 0.96 אינץ' ורזולוציה של 128*64 או 128*32 פיקסלים. תצוגות אלה אידיאליות עבור עיצובים קטנים של רדיו חובבים ופרויקטים תוצרת בית.
נחבר אותו ל-Arduino UNO / NANO, וגם נתכנת אותו דרך Arduino.
עקוב אחר ההוראות כדי להבין כיצד לחבר ולהגדיר כראוי את תצוגת ה-OLED ל-Arduino וכיצד להציג הודעה מותאמת אישית על הצג שלו.
אנחנו עושים הכל צעד אחר צעד.
אנחנו צריכים רק ארבעה דברים:
באופן כללי, קניית חלקים לפרויקטים שונים ב- Aliexpress וב-Ebay היא דבר מאוד מגניב, בזמן שאתה עובד על פרויקט אחד, חלקים למשנהו כבר בדרך. העיקר לא לשכוח לבצע הזמנה.
התצוגה נשלטת על ידי שבב SSD1306, התומך בחמישה פרוטוקולי תקשורת, אחד מהם הוא I2C. נתונים באמצעות פרוטוקול זה מועברים על פני שני חוטים בלבד, וככל שפחות חוטים במארז, כך ייטב, כך שהוא מתאים לנו למדי.אבל! ישנם מודולים עם פרוטוקול SPI ואפילו עם החלפת פרוטוקול, אז היזהר בעת רכישת מודול זה.
סיכות בשימוש:
תצוגת OLED - SCL/SCK (שעון) ו-SDA (נתונים), כוח "פלוס" (VCC) וכוח "מינוס" (GND).
סיכות בשימוש:
Arduino UNO - SCL/SCK ב-A5 ו-SSD ב-A4, הספק "פלוס" (+5V) והספק "מינוס" (GND).
חיבור הצג לארדואינו:
לכל מכשיר באוטובוס I2C יש כתובת הקסדצימלית, לא ניתן לשנות אותה, היא מחוברת לחיבורים, כל יצרן אחראי חייב לציין זאת איפשהו על המארז או בהוראות. ישנם מודולים עם מתגים ומגשרים שניתן להשתמש בהם כדי לשנות את הכתובת, אבל... אם המכשירים זולים עד כדי גיחוך, אז אולי היצרן לא יטרח להתעסק בפרט כזה, אז תצטרכו לקבוע זאת בעצמכם.
בסך הכל ניתן להשתמש באפיק עד 127 כתובות - 119 למכשירים ו-8 כתובות שירות. התקשורת מתבצעת בכתובות אלו. יש עיקר, הלא הוא מאסטר, ויש עבד, הלא הוא עבד - המאסטרים שואלים, העבדים עונים, הכל פשוט.
מכיוון שתצוגת ה-OLED שלנו משתמשת בפרוטוקול התקשורת I2C, וייתכן שהכתובת לא תצוין, ננסה לברר את הכתובת הזו בעצמנו.
אתה יכול לעשות זאת על ידי העלאת סקיצה קצרה ללוח Arduino שלך עם ה-OLED מחובר. אבל!
אל תמהרו להעלות את הסקיצה לארדואינו מיד! בוא נוריד תחילה את ה"דרייברים", כלומר. בואו נחבר את הספריות, וכדי לעשות זאת נעבור מיד ל"שלב מס' 5", ואז נחזור ונמשיך.
הורד את CODE Finder_I2C_Hex_Address.ino, העלה ל-Arduino.
פתחו את "מוניטור יציאות", הגדר את המהירות ל-9600 ואם הכל מחובר כהלכה, התוכנה תציג את כתובת המכשיר, במקרה שלי OLED עם כתובת 0x3F.
כדי שהכל יעבוד כמו שצריך, ואתה לא צריך להמציא את הגלגל מחדש, אתה צריך לחבר כמה ספריות לסביבת ArduinoIDE, כלומר: ADAFRUIT GFX ו-ADAFRUIT SSD1306, הם נחוצים כדי שארדואינו יוכל לתקשר באופן עצמאי עם תצוגת OLED.
אתה יכול לכלול ספריות אלה על ידי ביצוע השלבים הבאים.
עם הגרסאות העדכניות ביותר של הספריות, התצוגה שלי עבדה בצורה עקומה, זה כמובן יכול להיות בגלל עקמומיות הידיים שלי, אבל אחרי שהתקנתי את הגרסאות הראשונות של הספריות האלה, הכל התחיל להראות חלק ויפה. מסיבה כלשהי, השורות של פושקין עולות בראש:
...וניסיון, בן הטעויות הקשות,
וגאון, חבר הפרדוקסים.
דרך נוספת להתקין ספריות היא למצוא, להוריד ולהתקין ספריות אלו בעצמך.
לדוגמא של Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
אלו הן אותן ספריות Adafruit, אך ספריות דומות ניתן לחפש בקלות במנועי חיפוש, לבקשת OLED I2C. חובבים רבים כותבים ספריות "לעצמם" ואז מפרסמים אותן באינטרנט. באיזו ספרייה להשתמש תלוי בך.
על מנת שהתצוגה תציג אותיות רוסיות, יש צורך גם בספריות מיוחדות, אך זהו נושא נפרד למאמר נפרד.
לאחר התקנת הספריות, תוכל לחזור לשלב 4 ולברר לבסוף את הכתובת ההקסדצימלית של התצוגה שלך.
כדי לבדוק אם הכל עובד כמצופה, הפעל את דוגמת הבדיקה מ- ArduinoIDE.
לזה:
עבור אל קובץ > דוגמאות > SSD 1306 > בחר 128x64 i2c
אם אתה מקבל "שגיאה", נסה לבחור SSD 1306 > 128x32 i2c.
אם "שגיאה" מתרחשת שוב, נסה לשנות את כתובת ה-I2C בשורה 61 של קוד ההדגמה והחלף אותה בכתובת התצוגה שלך שקבעת בשלב מס' 4.
אם השגיאה מתרחשת שוב, אתה יכול לנסות לערוך את הקובץ Adafruit_SSD1306.h, הוא ממוקם בתיקיית Arduino libraries.
פתח את הקובץ Adafruit_SSD1306.h בעורך טקסט ומצא את השורות:
בטל את ההערה על השורה:
זה אמור להיראות כך:
אם השגיאה מתרחשת שוב, עליך לבדוק את החיבורים הנכונים.
לאחר השלמת ההורדה, תראה אנימציית בדיקה על המסך, מה שאומר שהגדרת בהצלחה את תצוגת ה-OLED שלך.
כאשר נהנית ביסודיות מהאנימציה הזו, תוכל לעבור לשלב הבא.
כדי לכתוב הודעה משלך, תחילה צור סקיצה חדשה בסביבת התכנות ArduinoIDE.
בכותרת אנחנו כוללים 4 ספריות:
לאחר מכן נכתוב את פרוטוקול האיפוס:
ב-VOID SETUP אנו מציינים את הכתובת ההקסדצימלית של התצוגה שלנו 0x3C, שלמדנו ב"שלב מס' 4".
לאחר מכן, אנו מאתחלים את התצוגה ומנקים אותה:
לאחר מכן, ב-VOID LOOP אנו כותבים את הקוד הראשי, כלומר את ההודעה שלנו שאנו רוצים להציג בתצוגה.
לשם כך, אנו מתארים את גודל הטקסט, צבע הטקסט, מיקום הסמן, ולבסוף, מציגים את ההודעה באמצעות הפקודה println:
בסוף אל תשכח לכתוב display.displayכך שהתמונה תוצג על המסך, אחרת תקבל חלל.
אם עשית הכל נכון, תופיע הודעה על המסכים.
הנה הקוד Starting_with_Arduino_OLED.ino של התוכנית שלנו:
שלום! בהיותי חובב אלקטרוניקה חובב, אני בטוח שכל מה שאנחנו עושים - צעצועים אלקטרוניים - מוצרים תוצרת בית, או פרויקטים גדולים - הכל מתוך סקרנות ועצלנות. הסקרנות שואפת להבין ולהבין את העצום, הלא נודע, כדי להבין איך הוא עובד שם, מה הוא עושה, איך הוא זז. והעצלות ממציאה על מה להמציא, כדי לא לקום, לא להתקרב, לא להרים, לא להתלכלך או כל דבר אחר חשוב.
מכיוון שראיית מידע טובה יותר מאשר להבין מה עומד לקרות במכשיר שלנו, או שכבר קרה, או קורה, אנחנו בהחלט נרצה לקבל את המידע השימושי ביותר הזה מהמיקרו-בקרים, החיישנים או מכשירים אחרים שלנו. ובכל מקרה, אני רוצה לקבל כל הודעה כמו שאלות, אזהרות, תזכורות, אמוטיקונים, כוכבים, לבבות וכדומה.
למי שיש גם רצון דומה, הנה מדריך קצר לחיבור ובדיקה של צגי OLED קטנים וזולים.
לאחר מכן, נדבר על אחד מדגמי תצוגת ה-OLED הזמינים באופן נרחב עבור חובבי רדיו, הנשלט על ידי שבב SSD1306, עם גודל מסך של 0.96 אינץ' ורזולוציה של 128*64 או 128*32 פיקסלים. תצוגות אלה אידיאליות עבור עיצובים קטנים של רדיו חובבים ופרויקטים תוצרת בית.
שלב 1: מושגים בסיסיים
נחבר אותו ל-Arduino UNO / NANO, וגם נתכנת אותו דרך Arduino.
- OLED היא דיודה פולטת אור אורגנית, כלומר, מכשיר מוליכים למחצה העשוי מתרכובות אורגניות שמתחיל לפלוט אור כאשר זרם חשמלי עובר דרכה.
- ARDUINO היא פלטפורמה להדרכה ובניית מערכות אוטומציה ורובוטיקה.
- ArduinoIDE - סביבת פיתוח. זוהי תוכנית תכנות חינם של Arduino.
- I2C – Inter-Integrated Circuits, קו תקשורת בין שבבים.
- Sketch, aka code, aka program - טרמינולוגיה של ארדואינו.
עקוב אחר ההוראות כדי להבין כיצד לחבר ולהגדיר כראוי את תצוגת ה-OLED ל-Arduino וכיצד להציג הודעה מותאמת אישית על הצג שלו.
אנחנו עושים הכל צעד אחר צעד.
שלב 2: אביזרים
אנחנו צריכים רק ארבעה דברים:
- 1. תצוגת ה-OLED עצמה היא בגודל 0.96 אינץ' (תוכלו לקנות אותה ב- Aliexpress או Ebay, היא ארוכה, אבל זולה!).
- 2. Arduino UNO / Nano (אותו מקום כמו התצוגה).
- 3. חוטי חיבור (שם).
- 4. מחשב או מחשב נייד עם ArduinoIDE מותקן.
באופן כללי, קניית חלקים לפרויקטים שונים ב- Aliexpress וב-Ebay היא דבר מאוד מגניב, בזמן שאתה עובד על פרויקט אחד, חלקים למשנהו כבר בדרך. העיקר לא לשכוח לבצע הזמנה.
שלב 3: חיבור הצג
התצוגה נשלטת על ידי שבב SSD1306, התומך בחמישה פרוטוקולי תקשורת, אחד מהם הוא I2C. נתונים באמצעות פרוטוקול זה מועברים על פני שני חוטים בלבד, וככל שפחות חוטים במארז, כך ייטב, כך שהוא מתאים לנו למדי.אבל! ישנם מודולים עם פרוטוקול SPI ואפילו עם החלפת פרוטוקול, אז היזהר בעת רכישת מודול זה.
סיכות בשימוש:
תצוגת OLED - SCL/SCK (שעון) ו-SDA (נתונים), כוח "פלוס" (VCC) וכוח "מינוס" (GND).
סיכות בשימוש:
Arduino UNO - SCL/SCK ב-A5 ו-SSD ב-A4, הספק "פלוס" (+5V) והספק "מינוס" (GND).
חיבור הצג לארדואינו:
- Vcc - 5V
- GND - GND
- SDA-A4
- SCL-A5
שלב 4: סורק I2C
לכל מכשיר באוטובוס I2C יש כתובת הקסדצימלית, לא ניתן לשנות אותה, היא מחוברת לחיבורים, כל יצרן אחראי חייב לציין זאת איפשהו על המארז או בהוראות. ישנם מודולים עם מתגים ומגשרים שניתן להשתמש בהם כדי לשנות את הכתובת, אבל... אם המכשירים זולים עד כדי גיחוך, אז אולי היצרן לא יטרח להתעסק בפרט כזה, אז תצטרכו לקבוע זאת בעצמכם.
בסך הכל ניתן להשתמש באפיק עד 127 כתובות - 119 למכשירים ו-8 כתובות שירות. התקשורת מתבצעת בכתובות אלו. יש עיקר, הלא הוא מאסטר, ויש עבד, הלא הוא עבד - המאסטרים שואלים, העבדים עונים, הכל פשוט.
מכיוון שתצוגת ה-OLED שלנו משתמשת בפרוטוקול התקשורת I2C, וייתכן שהכתובת לא תצוין, ננסה לברר את הכתובת הזו בעצמנו.
אתה יכול לעשות זאת על ידי העלאת סקיצה קצרה ללוח Arduino שלך עם ה-OLED מחובר. אבל!
אל תמהרו להעלות את הסקיצה לארדואינו מיד! בוא נוריד תחילה את ה"דרייברים", כלומר. בואו נחבר את הספריות, וכדי לעשות זאת נעבור מיד ל"שלב מס' 5", ואז נחזור ונמשיך.
שלב 4: המשך:
הורד את CODE Finder_I2C_Hex_Address.ino, העלה ל-Arduino.
פתחו את "מוניטור יציאות", הגדר את המהירות ל-9600 ואם הכל מחובר כהלכה, התוכנה תציג את כתובת המכשיר, במקרה שלי OLED עם כתובת 0x3F.
שלב 5: הורד וחבר ספריות
כדי שהכל יעבוד כמו שצריך, ואתה לא צריך להמציא את הגלגל מחדש, אתה צריך לחבר כמה ספריות לסביבת ArduinoIDE, כלומר: ADAFRUIT GFX ו-ADAFRUIT SSD1306, הם נחוצים כדי שארדואינו יוכל לתקשר באופן עצמאי עם תצוגת OLED.
אתה יכול לכלול ספריות אלה על ידי ביצוע השלבים הבאים.
- 1. ב-ArduinoIDE, עבור לתפריט Sketch.
- 2. בחר "כלול ספריות".
- 3. בחר "נהל ספריות".
- 4. מצא את ADAFRUIT GFX והתקן אותם.
- 5. מצא את ADAFRUIT SSD1306 והתקן אותם.
עם הגרסאות העדכניות ביותר של הספריות, התצוגה שלי עבדה בצורה עקומה, זה כמובן יכול להיות בגלל עקמומיות הידיים שלי, אבל אחרי שהתקנתי את הגרסאות הראשונות של הספריות האלה, הכל התחיל להראות חלק ויפה. מסיבה כלשהי, השורות של פושקין עולות בראש:
...וניסיון, בן הטעויות הקשות,
וגאון, חבר הפרדוקסים.
דרך נוספת להתקין ספריות היא למצוא, להוריד ולהתקין ספריות אלו בעצמך.
לדוגמא של Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
אלו הן אותן ספריות Adafruit, אך ספריות דומות ניתן לחפש בקלות במנועי חיפוש, לבקשת OLED I2C. חובבים רבים כותבים ספריות "לעצמם" ואז מפרסמים אותן באינטרנט. באיזו ספרייה להשתמש תלוי בך.
על מנת שהתצוגה תציג אותיות רוסיות, יש צורך גם בספריות מיוחדות, אך זהו נושא נפרד למאמר נפרד.
לאחר התקנת הספריות, תוכל לחזור לשלב 4 ולברר לבסוף את הכתובת ההקסדצימלית של התצוגה שלך.
שלב 6: בדיקת תצוגה
כדי לבדוק אם הכל עובד כמצופה, הפעל את דוגמת הבדיקה מ- ArduinoIDE.
לזה:
עבור אל קובץ > דוגמאות > SSD 1306 > בחר 128x64 i2c
אם אתה מקבל "שגיאה", נסה לבחור SSD 1306 > 128x32 i2c.
אם "שגיאה" מתרחשת שוב, נסה לשנות את כתובת ה-I2C בשורה 61 של קוד ההדגמה והחלף אותה בכתובת התצוגה שלך שקבעת בשלב מס' 4.
אם השגיאה מתרחשת שוב, אתה יכול לנסות לערוך את הקובץ Adafruit_SSD1306.h, הוא ממוקם בתיקיית Arduino libraries.
פתח את הקובץ Adafruit_SSD1306.h בעורך טקסט ומצא את השורות:
//#define SSD1306_128_64
#define SSD1306_128_32
// #define SSD1306_96_16
בטל את ההערה על השורה:
#define SSD1306_128_64.
זה אמור להיראות כך:
#define SSD1306_128_64
//#define SSD1306_128_32
// #define SSD1306_96_16
אם השגיאה מתרחשת שוב, עליך לבדוק את החיבורים הנכונים.
לאחר השלמת ההורדה, תראה אנימציית בדיקה על המסך, מה שאומר שהגדרת בהצלחה את תצוגת ה-OLED שלך.
כאשר נהנית ביסודיות מהאנימציה הזו, תוכל לעבור לשלב הבא.
שלב 7: כתוב הודעה משלך
כדי לכתוב הודעה משלך, תחילה צור סקיצה חדשה בסביבת התכנות ArduinoIDE.
בכותרת אנחנו כוללים 4 ספריות:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
לאחר מכן נכתוב את פרוטוקול האיפוס:
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
ב-VOID SETUP אנו מציינים את הכתובת ההקסדצימלית של התצוגה שלנו 0x3C, שלמדנו ב"שלב מס' 4".
לאחר מכן, אנו מאתחלים את התצוגה ומנקים אותה:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
לאחר מכן, ב-VOID LOOP אנו כותבים את הקוד הראשי, כלומר את ההודעה שלנו שאנו רוצים להציג בתצוגה.
לשם כך, אנו מתארים את גודל הטקסט, צבע הטקסט, מיקום הסמן, ולבסוף, מציגים את ההודעה באמצעות הפקודה println:
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("כל הכבוד!");
display.display();
בסוף אל תשכח לכתוב display.displayכך שהתמונה תוצג על המסך, אחרת תקבל חלל.
אם עשית הכל נכון, תופיע הודעה על המסכים.
הנה הקוד Starting_with_Arduino_OLED.ino של התוכנית שלנו:
code.zip
[946 ב] (הורדות: 4908)
כיתות אמן דומות
מעניין במיוחד
הערות (10)