Πίνακας περιεχομένων:
- Βήμα 1: Πηγαίνετε για πράγματα
- Βήμα 2: Κεφαλίδες συγκόλλησης
- Βήμα 3: Εισαγωγή
- Βήμα 4: Μεταπωλητής
- Βήμα 5: Συνδέστε την κεραία
- Βήμα 6: Εισαγάγετε την κάρτα SIM
- Βήμα 7: Αρχικοποίηση
- Βήμα 8: Μηνύματα κειμένου
- Βήμα 9: Φωνή
Βίντεο: Σεμινάριο Arduino Cellular Shield: 9 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Το Arduino Cellular Shield σάς επιτρέπει να πραγματοποιείτε τηλεφωνικές κλήσεις και να στέλνετε μηνύματα κειμένου. Ο εγκέφαλος αυτής της ασπίδας είναι το SM5100B, το οποίο είναι μια ισχυρή κυψελοειδής μονάδα ικανή να εκτελέσει πολλές από τις εργασίες των περισσότερων τυπικών κινητών τηλεφώνων. Αυτή η ασπίδα απαιτεί τη χρήση κάρτας SIM για σύνδεση σε δίκτυο κινητής τηλεφωνίας. Το σεμινάριο που ακολουθεί είναι ένα σεμινάριο για την προετοιμασία της ασπίδας και την αποστολή και λήψη μηνυμάτων κειμένου και τηλεφωνικές κλήσεις. Για να μάθετε περισσότερα σχετικά με τη λειτουργικότητα της ενότητας, φροντίστε να δείτε τα φύλλα δεδομένων στη σελίδα προϊόντων του Sparkfun.
Βήμα 1: Πηγαίνετε για πράγματα
Θα χρειαστείτε:
(x1) Cellular shield (x1) Stackable Arduino headers (x1) Quad band antenna (x1) Arduino Uno
(Σημειώστε ότι ορισμένοι από τους συνδέσμους σε αυτήν τη σελίδα είναι σύνδεσμοι συνεργατών. Αυτό δεν αλλάζει το κόστος του προϊόντος για εσάς. Επενδύω ό, τι έσοδα λαμβάνω για την κατασκευή νέων έργων. Αν θέλετε προτάσεις για εναλλακτικούς προμηθευτές, παρακαλώ επιτρέψτε μου ξέρω.)
Βήμα 2: Κεφαλίδες συγκόλλησης
Τοποθετήστε τις κεφαλίδες στην ασπίδα και κολλήστε τις στη θέση τους.
Βήμα 3: Εισαγωγή
Τοποθετήστε τις καρφίτσες κεφαλίδας στις υποδοχές του Arduino.
Βήμα 4: Μεταπωλητής
Η σύνδεση του καλωδίου κεραίας με τη μονάδα SM5100B δεν είναι συνήθως πολύ καλή. Επανασυγκολλήστε κάθε σύνδεση του καλωδίου στη μονάδα για να διασφαλίσετε τη συνδεσιμότητα.
Βήμα 5: Συνδέστε την κεραία
Περάστε την κεραία στο καλώδιο της κεραίας.
Βήμα 6: Εισαγάγετε την κάρτα SIM
Τοποθετήστε την κάρτα SIM με ασφάλεια στην υποδοχή της κάρτας SIM.
Βήμα 7: Αρχικοποίηση
Εκτελέστε τον ακόλουθο κώδικα στο Arduino:
/*
SparkFun Cellular Shield - Pass -Through Sample Sketch SparkFun Electronics Γράφτηκε από τον Ryan Owens 3/Περιγραφή: Αυτό το σκίτσο είναι γραμμένο για τη διασύνδεση ενός Arduino Duemillanove σε ένα Cellular Shield από την SparkFun Electronics. Η κυψελοειδής ασπίδα μπορεί να αγοραστεί εδώ: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Σε αυτό το σκίτσο οι σειριακές εντολές περνούν από ένα τερματικό πρόγραμμα στην κυψελοειδή μονάδα SM5100B. και οι απαντήσεις από την κυψελοειδή μονάδα αναρτώνται στο τερματικό. Περισσότερες πληροφορίες υπάρχουν στα σκίτσα των σχολίων. Μια ενεργοποιημένη κάρτα SIM πρέπει να τοποθετηθεί στη θήκη της κάρτας SIM στον πίνακα για να χρησιμοποιήσετε τη συσκευή! Αυτό το σκίτσο χρησιμοποιεί τη βιβλιοθήκη NewSoftSerial που γράφτηκε από τον Mikal Hart της Arduiniana. Μπορείτε να κατεβάσετε τη βιβλιοθήκη σε αυτήν τη διεύθυνση URL: https://arduiniana.org/libraries/NewSoftSerial/ Αυτός ο κώδικας παρέχεται υπό την άδεια απόδοσης Creative Commons. Περισσότερες πληροφορίες μπορείτε να βρείτε εδώ: https://creativecommons.org/licenses/by/3.0/ (Χρησιμοποιήστε τον κωδικό μας ελεύθερα! Απλώς θυμηθείτε να μας δώσετε πίστωση όπου οφείλεται. Ευχαριστώ!) */#Include // Συμπεριλάβετε το NewSoftSerial βιβλιοθήκη για την αποστολή σειριακών εντολών στην κυψελοειδή μονάδα. #include // Χρησιμοποιείται για χειρισμούς συμβολοσειρών char incoming_char = 0; // Θα κρατήσει τον εισερχόμενο χαρακτήρα από τη σειριακή θύρα. SoftwareSerial cell (2, 3); // Δημιουργήστε μια «ψεύτικη» σειριακή θύρα. Ο πείρος 2 είναι ο πείρος Rx, ο ακροδέκτης 3 είναι ο πείρος Tx. void setup () {// Αρχικοποίηση σειριακών θυρών για επικοινωνία. Serial.begin (9600); cell.begin (9600); //Ας αρχίσουμε! Serial.println ("Έναρξη επικοινωνίας SM5100B …"); } void loop () {// Εάν ένας χαρακτήρας έρχεται από την κυψελοειδή μονάδα… if (cell.available ()> 0) {incoming_char = cell.read (); // Λάβετε τον χαρακτήρα από τη σειριακή θύρα κυψελοειδούς. Serial.print (incoming_char); // Εκτυπώστε τον εισερχόμενο χαρακτήρα στο τερματικό. } // Εάν ένας χαρακτήρας προέρχεται από το τερματικό στο Arduino… εάν (Serial.available ()> 0) {incoming_char = Serial.read (); // Λάβετε τον χαρακτήρα που προέρχεται από το τερματικό if (incoming_char == '~') // Εάν πρόκειται για μια tilde… incoming_char = 0x0D; //… μετατροπή σε επιστροφή μεταφοράς άλλου αν (incoming_char == '^') // Εάν πρόκειται για ένα up caret… incoming_char = 0x1A? //… μετατροπή σε ctrl-Z cell.print (incoming_char); // Αποστολή του χαρακτήρα στην κυψελοειδή μονάδα. Serial.print (incoming_char); // Επανάληψη στο τερματικό}} / * SM5100B Quck Reference for AT Command Set * Εκτός εάν σημειώνονται διαφορετικά οι εντολές AT τερματίζονται πατώντας το πλήκτρο "enter". 1.) Βεβαιωθείτε ότι η σωστή ζώνη GSM έχει επιλεγεί για τη χώρα σας. Για τις ΗΠΑ, η ζώνη πρέπει να ρυθμιστεί σε 7. Για να ορίσετε τη ζώνη, χρησιμοποιήστε αυτήν την εντολή: AT+SBAND = 7 2.) Αφού ενεργοποιήσετε το Arduino με εγκατεστημένη την ασπίδα, βεβαιωθείτε ότι η μονάδα διαβάζει και αναγνωρίζει την κάρτα SIM. Με ένα κεντρικό παράθυρο ανοιχτό και ρυθμισμένο στη θύρα Arduino και 9600 buad, ενεργοποιήστε το Arduino. Η ακολουθία εκκίνησης θα πρέπει να μοιάζει κάπως έτσι: Έναρξη επικοινωνίας SM5100B… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Η επικοινωνία με τη μονάδα ξεκινά μετά την εμφάνιση της πρώτης γραμμής. Η δεύτερη γραμμή επικοινωνίας, +SIND: 10, μας λέει εάν η μονάδα μπορεί να δει μια κάρτα SIM. Εάν εντοπιστεί η κάρτα SIM, κάθε άλλο πεδίο είναι 1. εάν η κάρτα SIM δεν ανιχνευθεί, κάθε άλλο πεδίο είναι 0. 3.) Περιμένετε για σύνδεση δικτύου πριν ξεκινήσετε την αποστολή εντολών. Μετά την απόκριση +SIND: 10, η μονάδα θα ξεκινήσει αυτόματα να προσπαθεί να συνδεθεί σε ένα δίκτυο. Περιμένετε έως ότου λάβετε τις ακόλουθες επαναλήψεις: +SIND: 11 +SIND: 3 +SIND: 4 Η απάντηση +SIND από την κυψελοειδή μονάδα υποδεικνύει την κατάσταση των ενοτήτων. Ακολουθεί μια γρήγορη μείωση των εννοιών απόκρισης: 0 Αφαιρέθηκε κάρτα SIM 1 Εισήχθη κάρτα SIM 2 Μελωδία κλήσης 3 Η μονάδα AT είναι εν μέρει έτοιμη διατίθεται για κλήση έκτακτης ανάγκης 8 Το δίκτυο έχει χαθεί 9 ioχος ΕΝΕΡΓΟΠΟΙΗΣΗ 10 Εμφάνιση της κατάστασης κάθε τηλεφωνικού καταλόγου μετά τη φράση έναρξης 11 Εγγραφή στο δίκτυο Αφού εγγραφείτε στο δίκτυο, μπορείτε να ξεκινήσετε την αλληλεπίδραση. Ακολουθούν μερικές απλές και χρήσιμες εντολές για να ξεκινήσετε: Για να πραγματοποιήσετε μια κλήση: AT εντολή-ATDxxxyyyzzzz Αριθμός τηλεφώνου με τη μορφή: (xxx) yyy-zzz try ---- cell.print ("ATDxxxyyyzzzz"); Εάν πραγματοποιείτε μια τηλεφωνική κλήση, φροντίστε να αναφέρετε το φύλλο δεδομένων των συσκευών για να συνδέσετε ένα μικρόφωνο και ηχείο στην ασπίδα. Για να στείλετε ένα μήνυμα txt: εντολή AT - AT+CMGF = 1 Αυτή η εντολή ορίζει τη λειτουργία μηνύματος κειμένου σε "κείμενο". AT command = AT+CMGS = "xxxyyyzzzz" (επιστροφή μεταφοράς) 'Text to send' (CTRL+Z) Αυτή η εντολή είναι λίγο συγκεχυμένη για περιγραφή. Ο αριθμός τηλεφώνου, σε μορφή (xxx) yyy-zzzz μπαίνει σε διπλές τιμές. Πατήστε 'enter' αφού κλείσετε τις προσφορές. Στη συνέχεια, εισάγετε το κείμενο προς αποστολή. Τερματίστε την εντολή AT στέλνοντας CTRL+Z. Αυτός ο χαρακτήρας δεν μπορεί να σταλεί από το τερματικό του Arduino. Χρησιμοποιήστε ένα εναλλακτικό πρόγραμμα τερματικού όπως Hyperterminal, Tera Term, Bray Terminal ή X-CTU. Η μονάδα SM5100B μπορεί να κάνει πολύ περισσότερα από αυτό! Ελέγξτε τα φύλλα δεδομένων στη σελίδα του προϊόντος για να μάθετε περισσότερα σχετικά με τη μονάδα.*/Ανοίξτε τη σειριακή θύρα στο τερματικό. Σε Mac αυτό επιτυγχάνεται πληκτρολογώντας: screen /dev/tty.usbmodemfa131 9600 (αντικαταστήστε το tty.usbmodemfa131 με τη σειριακή διεύθυνση του Arduino) Περιμένετε να εμφανιστεί η ακόλουθη ακολουθία: Έναρξη επικοινωνίας SM5100B… +SIND: 3 +SIND: 4 +SIND: 11 (Εάν αυτή η ακολουθία δεν επιστραφεί, ελέγξτε τους κωδικούς σφάλματος που αναφέρονται στο κάτω μέρος του παραπάνω κώδικα και κάντε τον κατάλληλο εντοπισμό σφαλμάτων. Mayσως χρειαστεί να ορίσετε τη μονάδα για χρήση στη Βόρεια Αμερική - δείτε παρακάτω - προτού εγγραφεί στο δίκτυο (δηλ. +SIND 11)) Στείλτε τις ακόλουθες εντολές στη σειριακή θύρα: Στείλτε το για χρήση στη Βόρεια Αμερική: AT+SBAND = 7 Ρυθμίστε την τρέχουσα ώρα - εε/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Αποστολή δοκιμαστικής κλήσης: ATD4155551212
Βήμα 8: Μηνύματα κειμένου
Κατεβάστε και εγκαταστήστε το SerialGSM στη βιβλιοθήκη σας Arduino.
Για να στείλετε ένα μήνυμα κειμένου επισκεφτείτε το σεμινάριο κυψελοειδούς μονάδας Tronixstuff και χρησιμοποιήστε τον κωδικό παραδείγματος 26.3:
Εάν θέλετε να εκτελέσετε τον παράδειγμα κώδικα για να λάβετε ένα κείμενο, συνδέστε ένα LED στο pin 8 και τοποθετήστε το σε σειρά με αντίσταση 220 ohm στη γείωση.
Για να στείλετε ένα μήνυμα κειμένου επισκεφτείτε το σεμινάριο κυψελοειδούς μονάδας Tronixstuff και χρησιμοποιήστε τον κωδικό παραδείγματος 26.5:
Στείλτε μία από τις ακόλουθες εντολές στην κυψελοειδή μονάδα σας:
// ανάβει το LED #a1
// απενεργοποιεί το LED #a0
Βήμα 9: Φωνή
Συνδέστε ένα μικρόφωνο και ένα ηχείο στην ασπίδα χρησιμοποιώντας γειωμένο καλώδιο ήχου. Το κεντρικό καλώδιο σήματος πρέπει να πηγαίνει στους ακροδέκτες ήχου συν και η θωράκιση πρέπει να πηγαίνει στους αντίστοιχους αρνητικούς ακροδέκτες της ασπίδας. Αυτά τα καλώδια θα πρέπει να συνδέονται παρόμοια στην πλευρά του μικροφώνου και του ηχείου.
Για να ξεκινήσετε μια φωνητική κλήση, ανεβάστε τον ακόλουθο κώδικα:
//**********************************************************************************
// ΚΑΝΤΕ ΚΛΗΣΗ // // ΚΩΔΙΚΟΣ ΜΠΟΥΦΕΡ ΒΑΣΕΙΣ: // // //********************************************************************************** #include #define BUFFSIZ 90 //Set up buffer array char at_buffer[BUFFSIZ]; char buffidx; //Network state variables int network_registered; int network_AT_ready; //Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Will hold the incoming character from the Serial Port. char incoming_char=0; //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin. SoftwareSerial cell(2, 3); void setup() { //Initialize Arduino serial port for debugging. Serial.begin(9600); //Initialize virtual serial port to talk to Phone. cell.begin(9600); //Hello World. Serial.println("Starting SM5100B Communication…"); delay(1000); //Set initial network state network_registered = 0; network_AT_ready = 0; } //Read AT strings from the cellular shield void readATString(void) { char c; buffidx= 0; // start at begninning for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; return; } if (c == '\n') { continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; return; } at_buffer[buffidx++]= c; } } } //Process the AT strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("network Network Not Available"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("network Registered"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* If called for the first time, loop until network and AT is ready */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } //LET'S MAKE A PHONE CALL! if(firstTimeInOtherLoop == 1){ //Change the 10 digit phone number to whatever you wish cell.println("ATD4155551212"); firstTimeInOtherLoop = 0; } }
To receive a voice call upload the following code
//**********************************************************************************
// ANSWER A CALL // // BUFFERING CODE BASED UPON: // // // ****************************************** ********************************* #include #define BUFFSIZ 90 // Ρύθμιση buffer array char at_buffer [BUFFSIZ]; char buffidx? // Μεταβλητές κατάστασης δικτύου int network_registered; int network_AT_ready; // Μεταβλητές κατάστασης κώδικα int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Θα κρατήσει τον εισερχόμενο χαρακτήρα από τη σειριακή θύρα. char incoming_char = 0; // Δημιουργήστε μια «ψεύτικη» σειριακή θύρα. Ο πείρος 2 είναι ο πείρος Rx, ο ακροδέκτης 3 είναι ο πείρος Tx. SoftwareSerial cell (2, 3); void setup () {// Αρχικοποίηση σειριακής θύρας Arduino για εντοπισμό σφαλμάτων. Serial.begin (9600); // Αρχικοποιήστε την εικονική σειριακή θύρα για να μιλήσετε στο τηλέφωνο. cell.begin (9600); //Γειά σου Κόσμε. Serial.println ("Έναρξη επικοινωνίας SM5100B …"); καθυστέρηση (1000)? // Ορισμός αρχικής κατάστασης δικτύου network_registered = 0; network_AT_ready = 0; } // Διαβάστε συμβολοσειρές AT από την κυψελοειδή ασπίδα void readATString (void) {char c; buffidx = 0; // ξεκινήστε από την αρχή για (x = 0; x 0) {c = cell.read (); εάν (c == -1) {at_buffer [buffidx] = '\ 0'; ΕΠΙΣΤΡΟΦΗ; } if (c == '\ n') {Continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; ΕΠΙΣΤΡΟΦΗ; } at_buffer [buffidx ++] = c; }}} // Επεξεργασία των συμβολοσειρών AT άκυρο ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("Δίκτυο δικτύου δεν είναι διαθέσιμο"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("εγγεγραμμένο δίκτυο"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("network AT Ready"); }} void loop () { / * Εάν κληθεί για πρώτη φορά, κάντε βρόχο έως ότου το δίκτυο και το AT είναι έτοιμα * / εάν (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Αναζητήστε εισερχόμενη κλήση εάν (strstr (at_buffer, "+CPAS: 3")! = 0) {// Απαντήστε στο cell.println του τηλεφώνου ("ATA"); firstTimeInOtherLoop = 0; }}}
Το βρήκατε χρήσιμο, διασκεδαστικό ή διασκεδαστικό; Ακολουθήστε @madeineuphoria για να δείτε τα τελευταία έργα μου.
Συνιστάται:
Σεμινάριο για τον αισθητήρα πυξίδας διασύνδεσης HMC5883L με Arduino: 10 βήματα (με εικόνες)
Οδηγίες για τον αισθητήρα πυξίδας διασύνδεσης HMC5883L με Arduino: Περιγραφή Το HMC5883L είναι μια ψηφιακή πυξίδα 3 αξόνων που χρησιμοποιείται για δύο γενικούς σκοπούς: για τη μέτρηση της μαγνήτισης ενός μαγνητικού υλικού όπως ένας σιδηρομαγνήτης ή για τη μέτρηση της αντοχής και, σε ορισμένες περιπτώσεις, της κατεύθυνσης του μαγνητικό πεδίο σε ένα σημείο της
Σεμινάριο Arduino L293D Motor Driver Shield: 8 βήματα
Arduino L293D Motor Driver Shield Tutorial: Μπορείτε να διαβάσετε αυτό και πολλά άλλα καταπληκτικά σεμινάρια στον επίσημο ιστότοπο του ElectroPeak Επισκόπηση Σε αυτό το σεμινάριο, θα μάθετε πώς να οδηγείτε DC, stepper και σερβοκινητήρες χρησιμοποιώντας ασπίδα οδηγού Arduino L293D. Τι θα μάθετε: Γενικές πληροφορίες
Σεμινάριο Sparkfun CAN Bus Shield: 6 βήματα
Sparkfun CAN Bus Shield Tutorial: Λάβετε και μεταδίδετε μηνύματα χρησιμοποιώντας το Sparkfun CAN Bus Shield Τι είναι το CAN; Το δίαυλο CAN αναπτύχθηκε από την BOSCH ως σύστημα μετάδοσης μηνυμάτων πολλαπλών βασικών, το οποίο καθορίζει μέγιστο ρυθμό σηματοδότησης 1 megabit ανά δευτερόλεπτο (bps). Σε αντίθεση με ένα παραδοσιακό δίκτυο
Σεμινάριο για τη διεπαφή RGB Led WS2812B με Arduino UNO: 7 βήματα (με εικόνες)
Σεμινάριο για τη διεπαφή RGB Led WS2812B με Arduino UNO: Αυτό το σεμινάριο θα σας διδάξει ορισμένα βασικά για τη χρήση του Sparkfun RGB Led WS2812B με Arduino UNO
Σεμινάριο για L298 2Amp Motor Driver Shield για Arduino: 6 βήματα
Οδηγίες για το L298 2Amp Motor Driver Shield για Arduino: Περιγραφή Το L298 2Amp Motor Driver Shield για το Arduino βασίζεται στο ενσωματωμένο κύκλωμα οδηγού κινητήρα L298, ένα πρόγραμμα οδήγησης μοτέρ πλήρους γέφυρας. Μπορεί να οδηγήσει δύο ξεχωριστούς κινητήρες 2A DC ή 1 μοτέρ βηματισμού 2Α. Η ταχύτητα και οι κατευθύνσεις του κινητήρα μπορούν να ελεγχθούν ξεχωριστά