- Απαιτούμενα υλικά
- Χρησιμοποιημένο λογισμικό
- Ενότητα GSM
- Επικοινωνία με μονάδα GSM χρησιμοποιώντας εντολές AT
- Διάγραμμα κυκλώματος διασύνδεσης μονάδας ATMega16 GSM
- Δημιουργία του έργου για ATmega16 χρησιμοποιώντας το CodeVision
- Κωδικός και επεξήγηση
- Δημιουργήστε το Έργο
- Ανεβάστε τον κωδικό στο Atmega16
Οι ενότητες GSM είναι ενδιαφέρουσες να χρησιμοποιηθούν ειδικά όταν το έργο μας απαιτεί απομακρυσμένη πρόσβαση. Αυτές οι λειτουργικές μονάδες θα μπορούσαν να κάνουν όλες τις ενέργειες που θα μπορούσε να κάνει το κανονικό κινητό μας τηλέφωνο, όπως πραγματοποίηση / λήψη κλήσης, αποστολή / λήψη SMS, σύνδεση στο Διαδίκτυο με χρήση GPRS κ.λπ. Μπορείτε επίσης να συνδέσετε ένα κανονικό μικρόφωνο και ηχείο σε αυτήν την ενότητα και να συνομιλείτε στο κινητές κλήσεις. Αυτό θα ανοίξει πόρτες σε πολλά δημιουργικά έργα, εάν μπορούσε να συνδεθεί με έναν Μικροελεγκτή. Ως εκ τούτου, σε αυτό το σεμινάριο θα μάθουμε πώς μπορούμε να διασυνδέσουμε τη μονάδα GSM (SIM900A) με τον μικροελεγκτή AVR ATmega16 και θα το επιδείξουμε στέλνοντας και λαμβάνοντας μηνύματα χρησιμοποιώντας τη μονάδα GSM.
Απαιτούμενα υλικά
- Atmega16
- Μονάδα GSM (SIM900 ή οποιαδήποτε άλλη)
- οθόνη LCD
- Πιέστε τα κουμπιά
- 10k αντιστάσεις, Ποτενσιόμετρο
- Σύνδεση καλωδίων
- Προσαρμογέας 12V
- Προγραμματιστής USBasp
- Καλώδιο FRC 10 ακίδων
Χρησιμοποιημένο λογισμικό
Θα χρησιμοποιήσουμε το λογισμικό CodeVisionAVR για τη σύνταξη του κώδικα και το λογισμικό SinaProg για τη μεταφόρτωση του κωδικού μας στο Atmega16 χρησιμοποιώντας τον προγραμματιστή USBASP.
Μπορείτε να κατεβάσετε αυτά τα λογισμικά από τους δεδομένους συνδέσμους:
CodeVisionAVR:
SinaProg:
Πριν πάμε στα σχήματα και τους κωδικούς, μαθαίνουμε για την ενότητα GSM και τη λειτουργία της.
Ενότητα GSM
Η μονάδα GSM μπορεί να χρησιμοποιηθεί ακόμα και χωρίς μικροελεγκτή χρησιμοποιώντας τη λειτουργία εντολών AT. Όπως φαίνεται παραπάνω, η μονάδα GSM συνοδεύεται από έναν προσαρμογέα USART που μπορεί να συνδεθεί απευθείας στον υπολογιστή χρησιμοποιώντας μια μονάδα MAX232 ή οι ακίδες Tx και Rx μπορούν να χρησιμοποιηθούν για τη σύνδεσή της σε έναν μικροελεγκτή. Μπορείτε επίσης να παρατηρήσετε τις άλλες ακίδες όπως MIC +, MIC-, SP +, SP- κλπ όπου μπορεί να συνδεθεί ένα μικρόφωνο ή ένα ηχείο. Η μονάδα μπορεί να τροφοδοτηθεί από έναν προσαρμογέα 12V μέσω ενός κανονικού γρύλου βαρελιών DC.
Τοποθετήστε την κάρτα SIM στην υποδοχή της μονάδας και ενεργοποιήστε την, θα πρέπει να παρατηρήσετε ότι ανάβει ένα LED τροφοδοσίας. Τώρα περιμένετε ένα λεπτό περίπου και θα πρέπει να βλέπετε μια κόκκινη (ή οποιοδήποτε άλλο χρώμα) LED να αναβοσβήνει μία φορά για κάθε 3 δευτερόλεπτα. Αυτό σημαίνει ότι η Μονάδα σας μπόρεσε να δημιουργήσει σύνδεση με την κάρτα SIM. Τώρα μπορείτε να συνεχίσετε τη σύνδεση της μονάδας σας με τηλέφωνο ή οποιονδήποτε μικροελεγκτή.
Μπορείτε να δημιουργήσετε πολλά δροσερά έργα χρησιμοποιώντας την ενότητα GSM όπως:
- Wireless Notice Board χρησιμοποιώντας GSM και Arduino
- Αυτόματη αυτόματη απάντηση κλήσεων χρησιμοποιώντας Arduino και GSM Module
- Οικιακός αυτοματισμός με βάση το GSM χρησιμοποιώντας το Arduino
- Αισθητήρας PIR και σύστημα ασφαλείας με βάση GSM
Δείτε επίσης όλα τα σχετικά έργα GSM εδώ.
Επικοινωνία με μονάδα GSM χρησιμοποιώντας εντολές AT
Όπως ίσως το μαντέψατε, η μονάδα GSM μπορεί να επικοινωνήσει μέσω της σειριακής επικοινωνίας και θα μπορούσε να καταλάβει μόνο μία γλώσσα και αυτή είναι « εντολές AT ». Ό, τι κι αν θέλετε να πείτε ή να ρωτήσετε στη μονάδα GSM θα πρέπει να γίνεται μόνο μέσω εντολών AT. Για παράδειγμα, εάν θέλετε να μάθετε εάν η ενότητα σας είναι ενεργή. Θα πρέπει να ρωτήσετε (στείλετε) μια εντολή όπως "AT" και η ενότητα σας θα απαντήσει "OK".
Αυτές οι εντολές AT εξηγούνται καλά στο φύλλο δεδομένων και μπορούν να βρεθούν εδώ στο επίσημο δελτίο δεδομένων. Εντάξει! Εντάξει! Πρόκειται για ένα φύλλο δεδομένων 271 σελίδων και μπορεί να χρειαστούν ημέρες για να τα διαβάσετε. Γι 'αυτό έχω δώσει μερικές πιο σημαντικές εντολές AT για να ξεκινήσετε και να ξεκινήσετε σύντομα.
ΣΤΟ |
Απαντήσεις με ΟΚ για αναγνώριση |
AT + CPIN; |
Ελέγξτε την ποιότητα σήματος |
AT + COPS; |
Βρείτε το όνομα του φορέα παροχής υπηρεσιών |
ATD96XXXXXXXX; |
Κλήση στον συγκεκριμένο αριθμό, τελειώνει με τελεία άνω και κάτω τελείας |
AT + CNUM |
Βρείτε τον αριθμό της κάρτας SIM (ενδέχεται να μην λειτουργεί για κάποια κάρτα SIM) |
ΑΤΑ |
Απαντήστε στην εισερχόμενη κλήση |
ΑΘ |
Κλείστε την τρέχουσα εισερχόμενη κλήση |
AT + COLP |
Εμφάνιση αριθμού εισερχόμενης κλήσης |
AT + VTS = (αριθμός) |
Αποστολή αριθμού DTMF. Μπορείτε να χρησιμοποιήσετε οποιονδήποτε αριθμό στο πληκτρολόγιο του κινητού σας για (αριθμός) |
AT + CMGR |
Το AT + CMGR = 1 διαβάζει το μήνυμα στην πρώτη θέση |
AT + CMGD = 1 |
Διαγραφή μηνύματος στην πρώτη θέση |
AT + CMGDA = "DEL ALL" |
Διαγραφή όλων των μηνυμάτων από την κάρτα SIM |
AT + CMGL = "ΟΛΑ" |
Διαβάστε όλα τα μηνύματα από τη SIM |
AT + CMGF = 1 |
Ορισμός διαμόρφωσης SMS. Το "1" προορίζεται για λειτουργία μόνο κειμένου |
AT + CMGS = "+91 968837XXXX" > Κείμενο CircuitDigest
|
Στέλνει SMS σε έναν συγκεκριμένο αριθμό εδώ 968837XXXX. Όταν δείτε το ">" αρχίστε να εισάγετε το κείμενο. Πατήστε Ctrl + Z για να στείλετε το κείμενο. |
AT + CGATT; |
Για να ελέγξετε για σύνδεση στο Διαδίκτυο στην κάρτα SIM |
AT + CIPSHUT |
Για να κλείσετε τη σύνδεση TCP, που σημαίνει αποσύνδεση φόρμας διαδικτύου |
AT + CSTT = "APN", "όνομα χρήστη", "Pass" |
Συνδεθείτε στο GPRS με το κλειδί APN και Pass. Μπορεί να ληφθεί από τον Πάροχο δικτύου. |
AT + CIICR |
Ελέγξτε εάν η κάρτα SIM διαθέτει πακέτο δεδομένων |
AT + CIFSR |
Λήψη IP του δικτύου SIM |
AT + CIPSTART = "TCP", "SERVER IP", "PORT" |
Χρησιμοποιείται για τη ρύθμιση σύνδεσης TCP IP |
AT + CIPSEND |
Αυτή η εντολή χρησιμοποιείται για την αποστολή δεδομένων στο διακομιστή |
Εδώ θα χρησιμοποιήσουμε την εντολή AT + CMGF και AT + CMGS για την αποστολή μηνυμάτων.
Εάν έχετε χρησιμοποιήσει τη μονάδα GSM με το Arduino, ενώ λαμβάνετε μηνύματα, μπορείτε να χρησιμοποιήσετε την εντολή + CMT: για να δείτε τον αριθμό του κινητού και το μήνυμα κειμένου στη σειριακή οθόνη. Το μήνυμα κειμένου έρχεται στη δεύτερη γραμμή όπως φαίνεται στην εικόνα.
Θα σαρώσουμε αυτήν την εντολή + CMT: για να ελέγξουμε εάν το μήνυμα είναι διαθέσιμο ή όχι.
Διάγραμμα κυκλώματος διασύνδεσης μονάδας ATMega16 GSM
Οι συνδέσεις θα έχουν ως εξής
- Tx και Rx της μονάδας GSM σε Rx (Pin14) και Tx (Pin15) του Atmega16 αντίστοιχα.
- Πιέστε τα κουμπιά στο PD5 (Pin19) και στο PD6 (Pin20).
- Συνδέσεις LCD:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Δημιουργία του έργου για ATmega16 χρησιμοποιώντας το CodeVision
Μετά την εγκατάσταση των λογισμικών CodeVisionAVR και SinaProg , ακολουθήστε τα παρακάτω βήματα για να δημιουργήσετε κώδικα έργου και σύνταξης:
Έχει ήδη μεταφορτωθεί
Βήμα 1. Άνοιγμα CodeVision Κάντε κλικ στο Αρχείο -> Νέο -> Έργο . Θα εμφανιστεί το πλαίσιο διαλόγου επιβεβαίωσης. Κάντε κλικ στο Ναι
Βήμα 2. Θα ανοίξει το CodeWizard. Κάντε κλικ στην πρώτη επιλογή, δηλαδή AT90 , και κάντε κλικ στο OK.
Βήμα 3: - Επιλέξτε το τσιπ μικροελεγκτή σας, εδώ θα πάρουμε το Atmega16L όπως φαίνεται.
Βήμα 4: - Κάντε κλικ στο USART . Επιλέξτε δέκτη και πομπό κάνοντας κλικ σε αυτό. Οπως φαίνεται παρακάτω:
Βήμα 5: - Κάντε κλικ στο Αλφαριθμητικό LCD και επιλέξτε Ενεργοποίηση υποστήριξης αλφαριθμητικών LCD .
Βήμα 6: - Κάντε κλικ στο Πρόγραμμα -> Δημιουργία, αποθήκευση και έξοδος . Τώρα, περισσότερες από τις μισές εργασίες μας έχουν ολοκληρωθεί
Βήμα 7: - Δημιουργήστε έναν νέο φάκελο στην επιφάνεια εργασίας, έτσι ώστε τα αρχεία μας να παραμένουν σε φάκελο αλλιώς θα διασκορπιστούμε σε ολόκληρο το παράθυρο της επιφάνειας εργασίας. Ονομάστε το φάκελό σας όπως θέλετε και προτείνω να χρησιμοποιήσετε το ίδιο όνομα για να αποθηκεύσετε αρχεία προγράμματος.
Θα έχουμε ένα κουτί διαλόγου το ένα μετά το άλλο για να αποθηκεύσουμε αρχεία.
Κάντε το ίδιο με άλλα δύο πλαίσια διαλόγου που θα εμφανιστούν μετά την αποθήκευση του πρώτου.
Τώρα, ο χώρος εργασίας σας μοιάζει με αυτόν.
Το μεγαλύτερο μέρος της δουλειάς μας ολοκληρώνεται με τη βοήθεια του οδηγού. Τώρα, πρέπει να γράψουμε κώδικα μόνο για GSM.
Κωδικός και επεξήγηση
Όλα τα αρχεία κεφαλίδας επισυνάπτονται αυτόματα μετά τη δημιουργία του έργου, πρέπει απλώς να συμπεριλάβετε το αρχείο κεφαλίδας delay.h και να δηλώσετε όλες τις μεταβλητές. Ο πλήρης κωδικός δίνεται στο τέλος αυτού του σεμιναρίου.
#περιλαμβάνω
Πραγματοποιήστε μια συνάρτηση για τη λήψη δεδομένων από το μητρώο UDR. Αυτή η συνάρτηση θα επιστρέψει τα ληφθέντα δεδομένα.
unsigned char accept_value (void) { ενώ (! (UCSRA & (1 <
Ελάτε στην ενώ βρόχο στον οποίο δημιουργούμε δύο , αν δηλώσεις, μία για την αποστολή μηνυμάτων και άλλων για την παραλαβή. Το κουμπί αποστολής συνδέεται με το PIND6 του ATmega και λαμβάνετε το κουμπί μηνύματος με το PIND5.
Όταν πατηθεί πρώτα το PIND6 (Κουμπί αποστολής) εάν θα εκτελεστεί η δήλωση και όλες οι εντολές αποστολής μηνύματος θα εκτελούνται μία προς μία.
ενώ (1) { // lcd_clear (); lcd_putsf ("Αποστολή-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Λήψη-> buttn 2"); εάν (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Αποστολή μηνυμάτων…"); για (z = 0; cmd_1! = "; z ++) { UDR = cmd_1; καθυστέρηση_ms (100); } UDR = ('\ r'); καθυστέρηση_ms (500); για (z = 0; cmd_2! = "; z ++) { UDR = cmd_2; καθυστέρηση_ms (100); } …..
Εάν πατηθεί το κουμπί Λήψη μηνύματος, ενώ ο βρόχος (b! = '+') Θα ελέγξει εάν υπάρχει εντολή CMT ή όχι. Εάν υπάρχει, το δεύτερο while loop θα εκτελεστεί και θα μεταβεί στη δεύτερη γραμμή της εντολής και θα εκτυπώσει το μήνυμα στην οθόνη LCD μία προς μία.
ενώ (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Λήψη μηνυμάτων…"); b = ληφθείσα_αξία (); ενώ (b! = '+') { b = ληφθείσα_αξία (); } b = ληφθείσα τιμή (); αν (b == 'C') { b = ληφθείσα_αξία (); … ..
Αυτός ο βρόχος μεταφέρει το πρόγραμμα στη δεύτερη γραμμή εντολών και αποθηκεύει το μήνυμα στον πίνακα.
ενώ (b! = 0x0a) { b = ληφθείσα_αξία (); } για (b = 0; b <3; b ++) { c = ληφθείσα_τιμή (); msg = γ; } .. ..
Αυτό για βρόχο είναι να εμφανιστεί το μήνυμα σε LCD.
για (z = 0; z <3; z ++) { a = msg; lcd_putchar (α); // ΕΚΤΥΠΩΣΗ ΣΤΟ lcd delay_ms (10); }
Ο πλήρης κώδικας με το Demo Video δίνεται παρακάτω, τώρα πρέπει να χτίσουμε το έργο μας.
Δημιουργήστε το Έργο
Κάντε κλικ στο εικονίδιο Build the project όπως φαίνεται.
Μετά τη δημιουργία του έργου, δημιουργείται ένα αρχείο HEX στο φάκελο Debug-> Exe που μπορεί να βρεθεί στο φάκελο που είχατε δημιουργήσει προηγουμένως για να αποθηκεύσετε το έργο σας. Θα χρησιμοποιήσουμε αυτό το αρχείο HEX για αποστολή στο Atmega16 χρησιμοποιώντας το λογισμικό Sinaprog.
Ανεβάστε τον κωδικό στο Atmega16
Συνδέστε τα κυκλώματά σας σύμφωνα με το δεδομένο διάγραμμα στο πρόγραμμα Atmega16. Συνδέστε τη μία πλευρά του καλωδίου FRC στον προγραμματιστή USBASP και η άλλη πλευρά θα συνδεθεί με τις ακίδες SPI του μικροελεγκτή όπως περιγράφεται παρακάτω:
- Pin1 του θηλυκού συνδετήρα FRC -> Pin 6, MOSI του Atmega16
- Pin 2 συνδεδεμένο με Vcc του atmega16, δηλαδή Pin 10
- Ο ακροδέκτης 5 είναι συνδεδεμένος στο Reset του atmega16, δηλαδή στο Pin 9
- Ο ακροδέκτης 7 είναι συνδεδεμένος με το SCK του atmega16, δηλαδή το Pin 8
- Pin 9 συνδεδεμένο με MISO του atmega16, δηλαδή Pin 7
- Ο ακροδέκτης 8 συνδέεται με το GND του atmega16, δηλαδή το Pin 11
Θα ανεβάσουμε το παραπάνω αρχείο Hex που δημιουργήθηκε χρησιμοποιώντας το Sinaprog, οπότε ανοίξτε το και επιλέξτε Atmega16 από το αναπτυσσόμενο μενού Συσκευή. Επιλέξτε το αρχείο HEX από το φάκελο Debug-> Exe όπως φαίνεται.
Τώρα, κάντε κλικ στο Πρόγραμμα και ο κωδικός σας θα εγγραφεί στον Μικροελεγκτή ATmega16.
Ολοκληρώσατε και ο Μικροελεγκτής σας έχει προγραμματιστεί. Απλώς πατήστε τα κουμπιά για να στείλετε και να λάβετε τα μηνύματα από τον μικροελεγκτή GSM και ATmega16.
Ο πλήρης κώδικας και το βίντεο επίδειξης δίνονται παρακάτω.