מודול GSM משמש במכשירי תקשורת רבים המבוססים על טכנולוגיית GSM (Global System for Mobile Communications). הוא משמש לאינטראקציה עם רשת GSM באמצעות מחשב. מודול GSM מבין רק פקודות AT ויכול להגיב בהתאם. הפקודה הבסיסית ביותר היא "AT", אם GSM מגיב בסדר אז זה עובד טוב אחרת הוא מגיב עם "ERROR". ישנן פקודות AT שונות כמו ATA למענה לשיחה, ATD לחיוג לשיחה, AT + CMGR לקריאת ההודעה, AT + CMGS למשלוח SMS וכו '. אחרי פקודות AT צריך להחזיר Carriage כלומר \ r (0D ב- hex), כמו "AT + CMGS \ r". אנו יכולים להשתמש במודול GSM באמצעות פקודות אלה.
ממשק GSM עם 8051
במקום להשתמש במחשב, אנו יכולים להשתמש במיקרו-בקרים כדי ליצור אינטראקציה עם מודול GSM ו- LCD כדי לקבל את התגובה ממודול ה- GSM. אז אנחנו הולכים להתממשק GSM עם מיקרו-בקר 8051 (AT89S52). קל מאוד לממשק GSM עם 8051, אנחנו רק צריכים לשלוח פקודות AT ממיקרו-בקר ולקבל תגובה מ- GSM ולהציג אותו על גבי LCD. אנו יכולים להשתמש ביציאה הסדרתית של המיקרו-בקר כדי לתקשר עם GSM, כלומר באמצעות PIN 10 (RXD) ו- 11 (TXD).
ראשית עלינו לחבר LCD ל- 8051, תוכלו ללמוד זאת מכאן: ממשק LCD עם מיקרו-בקר 8051. אז אנחנו צריכים לחבר את מודול ה- GSM ל- 8051, עכשיו כאן אנחנו צריכים לשים לב. ראשית עליך לבדוק אם מודול ה- GSM שלך מסוגל לעבוד בהיגיון TTL או שהוא יכול לעבוד רק עם RS232. בעיקרון אם למודול שלך יש סיכות RX ו- TX (עם GND), הוא יכול לעבוד על היגיון TTL. ואם אין לו סיכות RX, TX ויש לו רק יציאת RS232 (יציאה טורית עם 9), עליך להשתמש ב- MAX232 IC כדי לחבר יציאה טורית למיקרו-בקר. בעיקרון MAX232משמש להמרת נתונים טוריים לוגיקה של TTL מכיוון שמיקרו-בקר יכול לעבוד רק על לוגיקה של TTL. אבל אם למודול GSM יש סיכות RX, TX אז אתה לא צריך להשתמש ב- MAX232 או בכל ממיר טורי, אתה יכול לחבר ישירות RX של GSM ל- TX (PIN 11) של 8051 ו- TX של GSM ל- RX (PIN 10) של 8051 במקרה שלנו השתמשתי במודול SIM900A ויש לו סיכות RX, TX כך שלא השתמשתי ב- MAX232.
תרשים מעגלים עבור ממשקי GSM עם מיקרו-בקר AT89S52 מוצג באיור לעיל. עכשיו אחרי החיבור, אנחנו רק צריכים לכתוב תוכנית כדי לשלוח פקודות AT ל- GSM ולקבל את תגובתה ב- LCD. ישנן פקודות AT רבות כפי שתואר לעיל, אך היקף המאמר שלנו הוא רק לממשק GSM עם 8051, לכן אנו רק נשלח את הפקודה "AT" ואחריה "\ r" (0D ב- hex). זה ייתן לנו תגובה "בסדר". אבל אתה יכול להרחיב תוכנית זו לשימוש בכל מתקני ה- GSM.
הסבר קוד
מלבד כל הפונקציות הקשורות ל- LCD, כאן השתמשנו ביציאה טורית ובמצב טיימר (TMOD). תוכל ללמוד על פונקציות LCD וקוד אחר על ידי מעבר לסעיף הפרויקטים שלנו ב- 8051, כאן אני מסביר על פונקציות קוד הקשורות לתקשורת טורית:
פונקציית GSM_init ():
פונקציה זו משמשת להגדרת Baudrate למיקרו-בקר. Baudrate אינו אלא ביט / שנייה שהועבר או התקבל. ועלינו להתאים את קצב השידור של 8051 לקצב ה- Baud של מודול ה- GSM כלומר 9600. השתמשנו בטיימר 1 במצב 2 (מצב טעינה אוטומטי של 8 סיביות) על ידי הגדרת רישום ה- TMOD ל- 0X20 ובית גבוה יותר של טיימר 1 (TH1) ל- 0XFD כדי לקבל את קצב השידור של 9600. כמו כן נעשה שימוש ב- SCON register כדי להגדיר את מצב התקשורת הטורית, השתמשנו ב- Mode1 (UART 8 סיביות) כאשר הקבלה מופעלת.
פונקציית GSM_write:
SBUF (רישום פונקציות מיוחדות למאגר סדרתי) משמש לתקשורת טורית, בכל פעם שאנחנו רוצים לשלוח בתים כלשהם למכשיר סדרתי אנו מכניסים את הבייט הזה לרשום SBUF, כאשר הבייט המלא נשלח אז TI bit נקבע על ידי חומרה. עלינו לאפס אותו למשלוח בתים הבאים. זהו דגל המציין כי בתים נשלחו בהצלחה. TI הוא הסיבית השנייה של רישום SCON. שלחנו "AT" באמצעות פונקציה זו.
פונקציית GSM_read:
זהה למשלוח, בכל פעם שאנו מקבלים בתים כלשהם מהתקן חיצוני אשר בתים מוכנסים לרשום SBUF, עלינו רק לקרוא אותו. ובכל פעם שהתקבל הבית המלא נקבע RI נקבע על ידי חומרה. עלינו לאפס אותו לקבלת בתים הבאים. RI הוא החלק הראשון של רישום SCON. קראנו את התגובה "אישור" באמצעות פונקציה זו.