Η μονάδα GSM χρησιμοποιείται σε πολλές συσκευές επικοινωνίας που βασίζονται στην τεχνολογία GSM (Παγκόσμιο Σύστημα για Κινητές Επικοινωνίες). Χρησιμοποιείται για την αλληλεπίδραση με το δίκτυο GSM χρησιμοποιώντας έναν υπολογιστή. Η μονάδα GSM κατανοεί μόνο τις εντολές AT και μπορεί να ανταποκριθεί ανάλογα. Η πιο βασική εντολή είναι "AT", εάν το GSM ανταποκρίνεται εντάξει τότε λειτουργεί καλά διαφορετικά αποκρίνεται με "ERROR". Υπάρχουν διάφορες εντολές AT, όπως ATA για να απαντήσετε σε μια κλήση, ATD για να καλέσετε μια κλήση, AT + CMGR για να διαβάσετε το μήνυμα, AT + CMGS για να στείλετε το sms κ.λπ.), όπως "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 Interfacing με 8051 Microcontroller. Τότε πρέπει να συνδέσουμε τη μονάδα 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 δεν είναι παρά τα Bits / δευτερόλεπτα που μεταδίδονται ή λαμβάνονται. Και πρέπει να αντιστοιχίσουμε τον ρυθμό baud του 8051 με τον ρυθμό Baud της μονάδας GSM, δηλαδή 9600. Έχουμε χρησιμοποιήσει το χρονοδιακόπτη 1 στη λειτουργία 2 (λειτουργία αυτόματης επαναφόρτωσης 8-bit) ρυθμίζοντας τον καταχωρητή TMOD σε 0X20 και υψηλότερο byte του χρονοδιακόπτη 1 (TH1) έως 0XFD για να λάβετε το ρυθμό baud 9600. Επίσης, ο καταχωρητής SCON χρησιμοποιείται για τον καθορισμό της λειτουργίας σειριακής επικοινωνίας, έχουμε χρησιμοποιήσει τη λειτουργία1 (8-bit UART) με ενεργοποιημένη τη λήψη.
Λειτουργία GSM_write:
Το SBUF (serial buffer special function register) χρησιμοποιείται για σειριακή επικοινωνία, όποτε θέλουμε να στείλουμε οποιοδήποτε byte σε σειριακή συσκευή, βάζουμε αυτό το byte στον SBUF register, όταν έχει αποσταλεί το πλήρες byte, τότε το TI bit ρυθμίζεται από το υλικό. Πρέπει να το επαναφέρουμε για αποστολή επόμενου byte. Είναι μια σημαία που δείχνει ότι το byte έχει σταλεί με επιτυχία. Το TI είναι το δεύτερο bit του καταχωρητή SCON. Έχουμε στείλει το "AT" χρησιμοποιώντας αυτήν τη λειτουργία.
Συνάρτηση GSM_read:
Όπως και με την αποστολή, όποτε λαμβάνουμε οποιοδήποτε byte από εξωτερική συσκευή που το byte τοποθετείται στο μητρώο SBUF, πρέπει απλώς να το διαβάσουμε. Και όποτε έχει ληφθεί το πλήρες byte, το bit RI ρυθμίζεται από υλικό. Πρέπει να το επαναφέρουμε για να λάβουμε το επόμενο byte. Το RI είναι το πρώτο κομμάτι του καταχωρητή SCON. Έχουμε διαβάσει την απάντηση "OK" χρησιμοποιώντας αυτήν τη λειτουργία.