תוכן עניינים:

מודול מגן לוח מקשים 1602 עם תרמיל I2C: 6 שלבים
מודול מגן לוח מקשים 1602 עם תרמיל I2C: 6 שלבים

וִידֵאוֹ: מודול מגן לוח מקשים 1602 עם תרמיל I2C: 6 שלבים

וִידֵאוֹ: מודול מגן לוח מקשים 1602 עם תרמיל I2C: 6 שלבים
וִידֵאוֹ: חיבור לוח מקשים 1/3 keypad למיקרו מעבד- איך זה עובד? כתיבת רוטינת סריקה ללא חומרה 2024, יולי
Anonim
מודול מגן לוח מקשים 1602 עם תרמיל I2C
מודול מגן לוח מקשים 1602 עם תרמיל I2C

כחלק מפרויקט גדול יותר, רציתי לקבל צג LCD ולוח מקשים לניווט של כמה תפריטים פשוטים. אני אשתמש בהרבה מיציאות הקלט/פלט בארדואינו לעבודות אחרות, אז רציתי ממשק I2C עבור ה- LCD. אז קניתי חומרה כלשהי, המורכבת ממודול מגן LCD של לוח המקשים של 1602 מ- DFRobot וממודול טורי I2C אנונימי עבור מסכי LCD. אני רוצה להשתמש באלה עם Arduino Nano. ואז גיליתי שיש כמה אתגרים לגרום לרכיבים האלה לעבוד יחד - אבל זה אפשרי. אז אני רוצה לשתף בניסיון שלי ואולי לעזור לכמה אחרים.

תמונה זו היא של לוח הלחם העובד, שיכול להציג הודעות על ה- LCD ולזהות לחיצות על מקשים. ה- LCD נשלט באמצעות ממשק I2C, כולל התאורה האחורית של ה- LCD. לחיצות המקשים מתקבלות על ידי ה- Arduino על סיכה A0 (זה יכול להיות כל אחד מהסיכות האנלוגיות, למעט A4 ו- A5 המחוברות לממשק I2C).

שלב 1: תיאור חלקים - מודול מגן לוח מקשים LCD

תיאור חלקים - מודול מגן לוח מקשים LCD
תיאור חלקים - מודול מגן לוח מקשים LCD

מודול המגן של לוח המקשים LCD מורכב מ- 1602 LCD נפוץ המותקן על גבי מעגל המכיל את המפתחות, ואשר לוקח קבוצת משנה של חיבורי ה- LCD והופך אותם לזמינים לסיכות הכותרת בחלק התחתון של הלוח. אני מבין שלוח זה נועד להיות מותקן על גבי Arduino Uno או דומה ומספק את פריסת הסיכה הנכונה כדי שיעבוד בסביבה זו. קניתי מודול זה ב- Ebay אצל ספק בסין. סיכות הכותרת בצד התחתון (לוח המקשים) של הלוח מסומנות ברובן אך הסיכות בצד העליון, שהוא ממשק ה- LCD, אינן מסומנות. עם זאת הסיכות על ה- LCD עצמו מסומנות.

שלב 2: תיאור חלקים - מודול סידורי I2C

תיאור חלקים - מודול סידורי I2C
תיאור חלקים - מודול סידורי I2C

המודול הטורי מכיל את הכותרת הרגילה של 4 פינים ל- I2C, וערכת סיכות כותרת ללא סימון, שלדעתי מיועדות להתחבר ישירות לחלק התחתון של מודול ה- LCD. על ידי לימוד התוויות על ה- LCD, הצלחתי לזהות את הפונקציות של הסיכות במודול הסדרתי.

מודול זה מבוסס על IC PCF8574T המסיים את פרוטוקול I2C, כולל 3 סיכות לבקרת כתובות (20 עד 27) ויש לו 8 סיכות קלט/פלט דיגיטליות P0 עד P7. על פי גליון הנתונים של PCF8574T, לכל סיכת קלט/פלט יש FET למשוך אותו לקרקע למצב LOW, והוא יכול לשקוע לפחות 20ma. במצב גבוה, יש לו משיכה פעילה חולפת ולאחר מכן זרם משיכה מתמשך של כ -0.1 mA.

במודול זה, כל סיכות הקלט/פלט הדיגיטליות, פרט ל- P3, מוציאות פשוט אל סיכות הכותרת (מימין בתמונה). במקרה של P3, הוא מחובר לבסיס טרנזיסטור (גלוי בתמונה בחלק הימני העליון ממש מתחת לתווית "LED"). הפולט של הטרנזיסטור הזה מחובר ל- Vss (קרקע) והאספן מחובר לסיכת כותרת 16, שם ניתן להשתמש בו כדי לשלוט על התאורה האחורית של ה- LCD. בגלל הטרנזיסטור, המצב הלוגי הפוך ביחס לזה שהונח בספריית התוכנה. כלומר, התאורה האחורית של LCD מופעלת כאשר סיכת ה- P3 נמוכה, וכיבוי כאשר סיכת ה- P3 גבוהה.

התווית על הטרנזיסטור אומרת L6 שעל פי המחקר שלי כנראה הופך אותו ל- MMBC1623L6 בעל רווח מינימלי של 200. עם 0.1 mA של זרם בסיס, הוא אמור להיות מסוגל לשמור על מצב נמוך באספן שלו (מודול פין 16) עם זרם אספן של 20mA לפחות.

בנוסף למודול זה יש פוטנציומטר 10K המחובר בין +5 לקרקע, שההובלה המשתנה שלו מובאת לפין 3 (שלישי מלמטה בתמונה). כאשר הוא מחובר ישירות ל- LCD, סיר זה ישלוט בניגודיות ה- LCD. עם זאת, פונקציה זו מסופקת על ידי סיר דומה נפרד על מגן ה- LCD, כך שלסיר הזה במודול הטורי אין פונקציה.

לא הצלחתי למצוא כל חיבור לסיכת INT של ה- PCF8574T.

עדכון 22 באוגוסט 2019

כפי שצוין לעיל, ל- PCF8574 יש 3 סיכות בקרת כתובת. נראה כי אלה מוצאים לרפידות שעל לוח התרמיל, שם הם מסומנים A0, A1 ו- A2. ניתן לראות אותם בתמונה. לא בדקתי זאת, אך נראה כמעט בטוח שעל ידי גישור אחד או יותר מהסיכות הללו לרפידות הסמוכות, ניתן לשלוט בכתובת I2C בטווח שבין 20 ל 27. יתר על כן, קיים מכשיר שני כמעט זהה, PCF8574A בעל פונקציונליות זהה ל- PCF8574 אך מכסה את טווח הכתובות בין 0x38 ל 0x3F.

ניתן לבדוק את הכתובת שבה המכשיר שלך משתמש בפועל באמצעות I2CScanner. ישנם מספר סורקי I2C פשוטים הזמינים ממקורות שונים. זה בכתובת https://github.com/farmerkeith/I2CScanner מזהה גם כמה מהמכשירים שנמצאו.

שלב 3: חיבורים

חיבורים
חיבורים

תודה ל- ChaitanyaM17 שסיפק את תרשים Fritzing המתאר את הקשרים, המתואר להלן.

כּוֹחַ:

מודול ה- LCD כולל סיכה בצד התחתון שכותרתו "5.0V". מימין, סמוך לזה שני סיכות ללא סימון ששניהם טחונים.

מחזיק את המודול הטורי עם ממשק I2C בקצה השמאלי, יש 16 פינים בקצה התחתון. הראשון מאלה טחון, והשני מאלה הוא +5v. אפשרות נוספת היא להשתמש בשני הפינים התחתונים בממשק I2C לצורך הספק, אך מצאתי שנוח יותר להשתמש בסיכות כמתואר לעיל.

ממשק I2C. במודול הטורי, הסיכה העליונה היא SCL (שעון) והיא עוברת ל- A5 Arduino. הסיכה השנייה למטה היא SDA (נתונים) והיא עוברת ל- Arduino A4.

ממשק הדפסה LCD. ישנם 6 חיבורים בין המודול הטורי למגן לוח המקשים LCD, כולם בין סיכות ללא תוויות. אני אזהה אותם במודול ה- LCD על ידי ספירה מימין לשמאל, עם הסיכה הראשונה כ- 1. ישנם 2 בלוקים של 8, כך שהם עוברים מ -1 עד 16. אני מזהה אותם במודול הטורי של I2C על ידי ספירה משמאל ל- נכון, יש גם 16 כאלה. בנוסף אני נותן לכל חוט תווית, שהיא הסיכה המקבילה בארדואינו המקושרת בדרך כלל לפונקציה הזו, במקרה של חיבור ישיר ללא המודול הטורי.

אז 6 חיבורי הנתונים הם:

מקבילה של Arduino // סיכת מודול סידורי // סיכת מודול לוח מקשים LCD

D4 // 11 // 5 D5 // 12 // 6 D6 // 13 // 7 D7 // 14 // 8 D8 // 4 // 9D9 // 6 // 10

בקרת תאורה אחורית LCD: זה משתמש בחיבור אחד נוסף:

מקבילה של Arduino // סיכת מודול סידורי // סיכת מודול לוח מקשים LCD

D10 // 16 // 11

ממשק לוח מקשים: זה משתמש בחוט יחיד מסיכת מודול ה- LCD בצד התחתון שכותרתו "A0", כדי להצמיד A0 על הארדואינו. לפחות זה היה די קל!

שלב 4: הפיכת מפתח ה- RST לשמיש בדומה ל -5 המפתחות האחרים

ניתן לחבר את ה- RST ישירות לכניסת RESTART של ה- Arduino Nano.

אולם אם אתה רוצה שמפתח RST יהיה שמיש בתוכנה לדברים אחרים, ניתן לעשות זאת על ידי חיבור נגד 15K בין סיכת RST לבין סיכת A0 בצד התחתון של מגן לוח המקשים LCD.

זה עובד כדלקמן: יש נגד 2K בין +5V למפתח הימני. לאחר מכן שרשרת של נגדים גדולים בהדרגה לכל אחד מהמקשים האחרים (330R עד מקש UP, 620R למקש למטה, 1K למקש LEFT ו- 3K3 למקש SELECT. כל המקשים (כולל מקש RST) מתחברים ל- כאשר הם מחוברים לממיר A/D של 10 ביט (באשר ל- Arduino Nano A0) הם מספקים בערך את הערכים הבאים:

ימין = 0; למעלה = 100; למטה = 260; שמאל = 410; בחר = 640.

עם הנגד של 15 k ל- RST, הוא מספק כ- 850.

התוכנה תשתמש בערכים סביב נקודות האמצע שבין ערכים אלה כדי להחליט על איזה מקש נלחץ.

שלב 5: תוכנה

תוכנה שימושית היא כמובן תרגיל עבור הקורא. עם זאת, בכדי שתוכל להתחיל, תוכל לעיין בתוכנת הבדיקה שלי. השתמשתי בספריית NewLiquidCrystal, המכילה תמיכה בממשק I2C. הכל פשוט עבד, לאחר שהתקנתי את הספריות כראוי.

הנקודה העיקרית הייתה להפוך את הקוטביות של פקודות ה- OFF ו- ON של תאורה אחורית (בשל הטרנזיסטור במודול I2C כפי שהוסבר בסעיף תיאור החלקים).

עדכון 22 באוגוסט 2019

אם אתה נתקל בבעיות עם צג ה- LCD שאינו פועל, בדוק את כתובת I2C של תרמיל הסידורי שלך באמצעות סורק I2C. מצורף סורק מתאים. לאחר מכן במידת הצורך התאם את הפרמטר הראשון בהצהרה

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

שלב 6: סקירה ודיון

כפי שאתה יכול לראות הפונקציות העיקריות שלי עובדות.

הכוונה הבאה שלי היא להכניס את זה לקופסת פרויקטים כחלק מפרויקט אחר. אולם לאחר שיצאתי לדרך זו למדתי שישנו קושי נוסף שלא ציפיתי לו.

הקושי הוא שמודול לוח המקשים הזה של LCD אינו מוגדר להתקנה בקופסה. כל סוג של קופסא. הלחצנים של 6 המקשים נמצאים הרבה מתחת לרמת מסך ה- LCD, כך שאם המודול מותקן בקופסה (למשל במכסה) כשהחלק העליון של לוח המעגל LCD מיושר עם החלק התחתון של המכסה, החלק העליון המפתחות נמצאים בערך 7 מ מ מתחת לחלק העליון של המכסה.

פתרונות אפשריים הם:

א) תשלים עם זה. מקדחים חורי גישה במכסה והשתמשו בכלי (למשל מחט סריגה קצוצה בקוטר מתאים) כדי ללחוץ על הכפתורים.

ב) הסר את ה- LCD מלוח המודולים ובצע ניתוח בלוח המקשים, כך שניתן יהיה לתקן את שני הרכיבים באופן עצמאי במכסה של תיבת הפרויקט (אני חושב שייתכן שעדיין ישנה בעיה בכפתורים קצרים מדי)

ג) הסר את הכפתורים הקיימים והחלף אותם בכפתורים גבוהים יותר. הכפתורים החדשים חייבים להיות בגובה של כ -13 מ"מ על מנת שניתן יהיה להפעיל אותם באמצעות מכסה תיבת הפרויקט). מתגי כפתור להחלפה זמינים בטווחי גבהים, כולל 13 מ"מ.

ד) זרוק את מודול מגן לוח המקשים של LCD והשתמש ביחידות LCD ולוח מקשים נפרדות (כלומר התחל מחדש). יש מגוון רחב של יחידות לוח מקשים, אולם לא ראיתי אחת עם פריסה זהה של 6 מקשים כמו במודול זה (כלומר בחר, שמאל, למעלה, למטה, ימינה, הפעל מחדש). זה אולי לא בעיה גדולה, אבל אחת הסיבות שהתחלתי עם מודול זה הייתה שחשבתי שפריסת המפתח הזו היא מה שרציתי.

אני מתכנן ללכת עם פתרון ג) למעלה, ולראות איך אני מסתדר.

קטע מידע נוסף שעשוי לעניין:

עם התאורה האחורית, הצריכה הנוכחית של פרויקט זה היא: Arduino Nano 21.5 ma; מודול סידורי 3.6 ma; מודול LCD 27.5 mA; סה כ 52 mA.

כאשר התאורה האחורית כבויה, הצריכה הנוכחית של הפרויקט היא: Arduino Nano 21.5 ma; מודול סידורי 4.6 ma; מודול LCD 9.8 mA; סה כ 36 mA.

מוּמלָץ: