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

ניטור GPS עם פרויקט תצוגת OLED: 5 שלבים (עם תמונות)
ניטור GPS עם פרויקט תצוגת OLED: 5 שלבים (עם תמונות)

וִידֵאוֹ: ניטור GPS עם פרויקט תצוגת OLED: 5 שלבים (עם תמונות)

וִידֵאוֹ: ניטור GPS עם פרויקט תצוגת OLED: 5 שלבים (עם תמונות)
וִידֵאוֹ: הכירו את הלוויין החדש של ישראל - ונוס 2024, נוֹבֶמבֶּר
Anonim
ניטור GPS עם פרויקט תצוגת OLED
ניטור GPS עם פרויקט תצוגת OLED
ניטור GPS עם פרויקט תצוגת OLED
ניטור GPS עם פרויקט תצוגת OLED
ניטור GPS עם פרויקט תצוגת OLED
ניטור GPS עם פרויקט תצוגת OLED
ניטור GPS עם פרויקט תצוגת OLED
ניטור GPS עם פרויקט תצוגת OLED

שלום לכולם, במאמר מהיר זה אשתף אתכם בפרויקט שלי: מודול GPS ATGM332D עם מיקרו -בקר SAMD21J18 ותצוגת SSD1306 OLED 128*64, בניתי עבורו PCB מיוחד ב- Eagle Autodesk ותכנת אותו באמצעות Atmel studio 7.0 ו- ASF4 כך במאמר זה אשתף אתכם במסע הזה ובקבצים בהם השתמשתי אם מעניין אתכם לעשות זאת בעצמכם.

עכשיו אם אתה מתכנת את לוח MCU/פיתוח שלך באמצעות Arduino, הפרויקט הזה אמור להיות קל עבורך יחסית, אך כאן אשתמש ב- ASF4 (מסגרת תוכנה מתקדמת 4) מאת Atmel/Microchip המבוסס על שפת C וייתן לך מושג. כיצד לקרוא את הודעת ה- NMEA של GPS באמצעות מנהל ההתקן האסינכרוני של USART (Callback) ולספק לך ספרייה פשוטה שתוכל להשתמש בה עם כל מיקרו-בקר ופלטפורמה אחרת פשוט הוסף את מנהל ההתקן המתאים בו אתה משתמש לקבלת הודעה מה- GPS (הודעת NMEA).

אני אחלק את המאמר ל:

  1. עיצוב PCB.
  2. BOM אתה צריך להרכיב את ה- PCB
  3. מבט מהיר לתוכנה ולקוד עצמו ובדיקה לחומרה ולתוכנה.
  4. לבסוף אך לא פחות מנקודת שיפור לפרויקט זה.

תוכלו למצוא את כל החומרים הקשורים לפרויקט זה ב- Github (כאן)

שלב 1: עיצוב PCB באמצעות Eagle

עיצוב PCB באמצעות נשר
עיצוב PCB באמצעות נשר
עיצוב PCB באמצעות נשר
עיצוב PCB באמצעות נשר
עיצוב PCB באמצעות נשר
עיצוב PCB באמצעות נשר
עיצוב PCB באמצעות נשר
עיצוב PCB באמצעות נשר

פרויקט זה מבוסס בעיקר על מודול GPS ATGM332D, GPS פשוט לשימוש מכיוון שהוא צריך רק כמה רכיבים פסיביים לעבודה, ונוכל להוסיף סוללת גיבוי כדי לחסוך את הזמן/תאריך אם נכבית את מקור החשמל הראשי מהמודול.

וכדי לשלוט בכל האותות במעגל הלכתי עם מיקרו -בקר ATSAMD21J18B, חבילת TQFP64 מכיוון שיש לו 128KByte של אחסון זיכרון תוכנה ו -32KByte של זיכרון נתונים (ויש לי הרבה מהם מונחים סביב שולחן העבודה שלי).

המעגל יופעל על ידי מקור USB 5V, גם ה- USB יכול לשמש כיציאת COM וירטואלית (CDC USB) ותוכל להוסיף לו קוד אם ברצונך לתקשר עם המכשיר באמצעות USB.

לתצוגה בחרתי SSD1306 תצוגת OLED בגודל 0.96 'עם אוטובוס SPI, היא קטנה אך מתאימה לגודל ה- PCB שרציתי, ממד הלוח 100x31 מ מ.

התכנות של המיקרו -בקר יהיה באמצעות מתכנת SWD (אני משתמש ב- Atmel ICE) ויחבר אותו דרך כותרת 10 סיכות 1.27 מ מ.

גם אני השתמשתי ב- Fusion360 כדי לקבל תצוגת תלת מימד ללוח ותוכל לראות גם תמונה מעובדת עבורו.

שלב 2: הלחמת ה- PCB

הלחמת ה- PCB
הלחמת ה- PCB
הלחמת ה- PCB
הלחמת ה- PCB
הלחמת ה- PCB
הלחמת ה- PCB

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

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

לפני שאתה מחבר את המעגל לכל מקור חשמל USB, בדוק אם קיים קצר.

חבר את אנטנת ה- GPS שלך וודא שאתה מלחם את המחבר כראוי, תיקנתי את האנטנה בצד התחתון של הלוח.

שלב 3: תוכנה … פונקציונליות … תוצאות

Image
Image
תוכנה … פונקציונליות … תוצאות
תוכנה … פונקציונליות … תוצאות
תוכנה … פונקציונליות … תוצאות
תוכנה … פונקציונליות … תוצאות

התוכנה תחולק ל -4 חלקים:

  1. USART לתקשר עם מודול GPS ATGM332.
  2. SPI לתקשר עם OLED.
  3. USB CDC.
  4. GPIO לשליטה בלדים

תחילה תחבר את מחבר ה- USB כדי להפעיל את המעגל ולאחר מכן חבר את כבל הסרט עם מחבר SWD.

הורד את הקוד מ- github (קישור כאן).

כדי לקבל את המיקום הגיאוגרפי יש לך 3 אפשרויות הודעות NMEA שונות:

  1. GPGGA
  2. GPRMC
  3. GPGLL

השתמשתי במשפט GPRMC כדי להשיג את המיקום, השעה והתאריך (השעה היא 0.0 GMT) כך שבקוד תמצא:

GPRMC. Enable = 1;/*0 אם אין צורך בהודעה זו*/

GPGGA. Enable = 0;/*0 אם אין צורך בהודעה זו*/

GPGLL. Enable = 0;/*0 אם אין צורך בהודעה זו*/

אתה יכול להפעיל את כולם ביחד ולקרוא אותם במקביל לקבל את הנתונים הדרושים לך.

ברגע שיש משפט GPRMC תקף, ה- GPRMC. Ready יהפוך ל -1 ותוכל להשיג את כל הנתונים הזמינים במשפט זה, בדוק את הקישור הזה כדי לראות את הנתונים הזמינים במשפט זה.

פשוט אם התיקון הוא 'A' כלומר המיקום זמין, אם התיקון הוא 'V' כלומר המיקום אינו זמין.

שים לב של- ATSAMD21 יש RTC פנימי, אבל כאן אני לא משתמש בו ובמקום זאת אני משתמש בזמן ותאריך ישירות מה- GPS, כך שאם אינך רוצה להשתמש בסוללת הגיבוי CR1220, לאחר שתנתק את מקור הכוח של ה- USB, תאבד את הזמן/תאריך ובפעם הבאה שתפעיל את המעגל אזור הזמן/התאריך בתצוגה יהיה ריק עד של- GPS יש ערך חוקי של תאריך/תאריך.

התצוגה תציג לך את הסטטוס הנוכחי של ה- GPS ותציג את המיקום הגיאוגרפי ברגע שהוא יהיה זמין, אולם ישנם 3 נוריות LED על הלוח:

  1. נורית LED ירוקה המחוברת ל- PA06, ותמצמץ אם יש ערך מיקום גיאוגרפי תקף.
  2. LED כתום מחובר ל- PA07 ויבהב פעם בשנייה אם אין מיקום גיאוגרפי תקף.
  3. LED אדום זה מחובר לסיכת PPS של מודול ה- GPS וימצמץ רק כאשר יש אות תקף הקשור למיקום.

תוצאות

המעגל עבד איתי טוב מאוד, קח את המיקום הגיאוגרפי מה- GPS לקח 20-30 שניות בחוץ עם ראייה ברורה לשמיים ובין בניינים ללא שום בעיה אפילו עם אנטנה בצד התחתון של הלוח.

שלב 4: מארז מודפס בתלת מימד … סוג של

מארז מודפס בתלת מימד … סוג של
מארז מודפס בתלת מימד … סוג של

הכנתי מארז פשוט (מחזיק מדויק יותר) למעגל זה, אך בגלל מגיפת COVID-19 והמנעול שאני נמצא בו כרגע, לא הצלחתי להגיע למדפסת התלת מימד שלי כדי להדפיס אותו, אז אעדכן את הקטע הזה ב- stl קובץ ותמונות למחזיק ברגע שהוא זמין.

שלב 5: דברים שיש לשפר …

דברים שיש לשפר…
דברים שיש לשפר…
דברים שיש לשפר…
דברים שיש לשפר…
דברים שיש לשפר…
דברים שיש לשפר…
  1. הזזת מחבר ה- SWD לצד העליון מכיוון שקל יותר לחבר אותו עם המתכנת שלך.
  2. הפעלתי את המעגל מסוללת ליתיום, עשיתי את זה על ידי הלחמת מגשר וזה עבד מצוין, בלי לזכור שלווסת הליניארי (LDO) יש מתח ירידה V אם (Vbat - Vout) פחות ממגבלת Vdrop המעגל אולי לא יעבוד כראוי.
  3. מה שהופך את כפתור המשתמש למעט גדול יותר כך שיהיה קל יותר ללחוץ עליו.
  4. הוספת קוד CDC USB כך שתוכל לתקשר/לעצב תוכנית מיוחדת עבור MAC/PC/לינוקס.
  5. עבור אנטנת ה- GPS השתמשתי באנטנה אקטיבית לפרויקט זה, שימוש באנטנה פסיבית אפשרי על ידי הוספת רעש נמוך Amp כמו AT2659 (בדוק גם את הסכימה בגיליון הנתונים של ATGM332 P.14).
  6. עבור OLED 0.96 'SSD1306, הספרייה הרשמית של שבב מיקרו במקור לתצוגת 128*32, כדי לשנות את הקוד לעבודה עם 128*64 עליך לעבור אל ssd1306.c ולשנות את הקוד (בדוק את התמונה).

מוּמלָץ: