- חומרים בשימוש
- מודול GPS NEO6M
- 1.3 אינץ 'I2C תצוגת OLED
- תרשים מעגל
- תכנות Arduino עבור מד מהירות OLED של Arduino
מדדי מהירות משמשים למדידת מהירות הנסיעה של הרכב. בעבר השתמשנו בחיישן IR ובחיישן אולם לבניית מד מהירות אנלוגי ומד מהירות דיגיטלי בהתאמה. היום נשתמש ב- GPS למדידת מהירות הרכב הנוסע. מדדי מהירות GPS מדויקים יותר ממדי מהירות סטנדרטיים מכיוון שהוא יכול לאתר את הרכב ברציפות ויכול לחשב את המהירות. טכנולוגיית GPS נמצאת בשימוש נרחב בסמארטפונים וברכבים לצורך התראות ניווט ותנועה.
בפרויקט זה נבנה מד מהירות GPS של Arduino באמצעות מודול GPS NEO6M עם תצוגת OLED.
חומרים בשימוש
- ארדואינו ננו
- מודול GPS NEO6M
- 1.3 אינץ 'I2C תצוגת OLED
- קרש לחם
- מחברים מגשרים
מודול GPS NEO6M
כאן אנו משתמשים במודול ה- GPS NEO6M. מודול ה- GPS NEO-6M הוא מקלט GPS פופולרי עם אנטנה קרמית מובנית, המספקת יכולת חיפוש לוויינית חזקה. למקלט זה יכול לחוש מיקומים ולעקוב אחר עד 22 לוויינים ומזהה מיקומים בכל מקום בעולם. באמצעות מחוון האות על הלוח, אנו יכולים לפקח על מצב הרשת של המודול. יש לו סוללת גיבוי נתונים כך שהמודול יכול לשמור את הנתונים כאשר הכוח הראשי נכבה בטעות.
לב הליבה בתוך מודול מקלט ה- GPS הוא שבב ה- GPS NEO-6M מ- u-blox. זה יכול לעקוב אחר עד 22 לוויינים על 50 ערוצים ובעל רמת רגישות מרשימה מאוד שהיא -161 dBm. מנוע מיצוב u-blox 6 זה בעל 50 ערוצים מתגאה בתיקון זמן ראשון לתיקון (TTFF) של פחות משנייה. מודול זה תומך בקצב שידור בין 4800-230400 bps ובעל ברירת המחדל של שידור 9600.
תכונות:
- מתח הפעלה: (2.7-3.6) V DC
- זרם הפעלה: 67 mA
- קצב שידור: 4800-230400 bps (9600 ברירת מחדל)
- פרוטוקול תקשורת: NEMA
- ממשק: UART
- אנטנה חיצונית ו- EEPROM מובנית.
Pinout של מודול GPS:
- VCC: סיכת מתח כניסה של מודול
- GND: סיכה קרקעית
- RX, TX: סיכות תקשורת UART עם מיקרו-בקר
בעבר התממשקנו GPS עם Arduino ובנו פרויקטים רבים באמצעות מודולי GPS כולל מעקב אחר רכב.
1.3 אינץ 'I2C תצוגת OLED
המונח OLED מייצג " דיודה פולטת אור אורגנית", היא משתמשת באותה הטכנולוגיה המשמשת ברוב הטלוויזיות שלנו אך יש בה פחות פיקסלים לעומתם. זה ממש כיף שמודולי התצוגה המגניבים האלה יתממשקו עם Arduino מכיוון שזה יגרום לפרויקטים שלנו להיראות מגניבים. סקרנו כאן מאמר מלא על תצוגות OLED וסוגיה. כאן אנו משתמשים בתצוגת OLED בגודל 1.28 "OLED מונוכרום עם 4 פינים. תצוגה זו יכולה לעבוד רק במצב I2C.
מפרט טכני:
- נהג IC: SH1106
- מתח כניסה: 3.3V-5V DC
- רזולוציה: 128x64
- ממשק: I2C
- צריכת זרם: 8 mA
- צבע פיקסל: כחול
- זווית צפייה:> 160 מעלות
תיאור סיכה:
VCC: ספק כוח כניסה 3.3-5V DC
GND: סיכת ייחוס לקרקע
SCL: סיכת שעון של ממשק I2C
SDA: סיכה של נתונים סידוריים של ממשק I2C
קהילת ארדואינו כבר נתנה לנו הרבה ספריות שניתן להשתמש בהן ישירות כדי להפוך את זה להרבה יותר פשוט. ניסיתי כמה ספריות ומצאתי שספריית Adafruit_SH1106.h הייתה קלה מאוד לשימוש והיתה לה קומץ אפשרויות גרפיות, ולכן נשתמש בהן במדריך זה.
OLED נראה מגניב מאוד וניתן להתממשק בקלות עם מיקרו-בקרים אחרים כדי לבנות כמה פרויקטים מעניינים:
- ממשק תצוגת OLED SSD1306 עם פטל פטל
- ממשק תצוגת OLED SSD1306 עם Arduino
- שעון אינטרנט באמצעות ESP32 ותצוגת OLED
- בקר טמפרטורת AC אוטומטי באמצעות Arduino, DHT11 ו- IR Blaster
תרשים מעגל
תרשים מעגלים עבור מד מהירות GPS זה של Arduino באמצעות OLED מופיע להלן.
ההתקנה השלמה תיראה להלן:
תכנות Arduino עבור מד מהירות OLED של Arduino
הקוד השלם של הפרויקט מופיע בתחתית ההדרכה. כאן אנו מסבירים את הקוד השלם שורה אחר שורה.
קודם כל, כלול את כל הספריות. כאן נעשה שימוש בספריית TinyGPS ++.h כדי להשיג את קואורדינטות ה- GPS באמצעות מודול מקלט ה- GPS ו- Adafruit_SH1106.h משמש ל- OLED.
#לִכלוֹל
ואז מוגדרת כתובת ה- OLED I2C, שיכולה להיות OX3C או OX3D, הנה זו OX3C במקרה שלי. כמו כן, יש להגדיר את סיכת האיפוס של התצוגה. במקרה שלי, זה מוגדר כ -1, שכן התצוגה חולקת את סיכת האיפוס של Arduino.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 display (OLED_RESET);
הבא, האובייקטים עבור TinyGPSPlus ו Softwareserial הכיתה מוגדרים כמוצג להלן. מחלקה סדרתית של תוכנה זקוקה לסיכה של ארדואינו. לתקשורת סדרתית, שמוגדרת כ -2 ו -3 כאן.
int RX = 2, TX = 3; GPS של TinyGPSPlus; SoftwareSerial gpssoft (RX, TX);
בתוך ההתקנה () , האתחול נעשה עבור תקשורת טורית ו- OLED. קצב השידור המוגדר כברירת מחדל עבור תקשורת טורית של התוכנה מוגדר כ- 9600. כאן נעשה שימוש ב- SH1106_SWITCHCAPVCC להפקת מתח תצוגה מ- 3.3 וולט פנימי ולפונקציית display.begin משמש לאתחול התצוגה.
הגדרת חלל () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
בתוך בעוד לולאה נכונה, נתון סדרה קבלו תאומתנה אם אותות GPS תקפים מתקבלים, אז displayspeed () נקרא להראות את הערך המהיר על OLED.
בעוד (gpssoft.available ()> 0) אם (gps.encode (gpssoft.read ())) מציג מהירות ();
בתוך פונקציית displayspeed () , נתוני המהירות ממודול ה- GPS נבדקים באמצעות פונקציה gps.speed.isValid () ואם הם מחזירים ערך אמיתי, ערך המהירות מוצג בתצוגת OLED. כאן מוגדר גודל הטקסט ב- OLED באמצעות פונקציית display.setTextSize ומיקום הסמן מוגדרים באמצעות פונקציית display.setCursor . נתוני המהירות ממודול ה- GPS מפוענחים באמצעות פונקציית gps.speed.kmph () ולבסוף הם מוצגים באמצעות display.display () .
אם (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
לסיום, העלה את הקוד בארדואינו אונו והכניס את המערכת לרכב נע, ותוכל לראות את המהירות בתצוגת ה- OLED כפי שמוצג בתמונה למטה.
הקוד המלא עם סרטון הדגמה ניתן להלן.