Inhaltsverzeichnis:

Arduino Cellular Shield Tutorial - Gunook
Arduino Cellular Shield Tutorial - Gunook

Video: Arduino Cellular Shield Tutorial - Gunook

Video: Arduino Cellular Shield Tutorial - Gunook
Video: Arduino GSM Shield Tutorial 2024, Juli
Anonim
Arduino Cellular Shield Tutorial
Arduino Cellular Shield Tutorial

Mit dem Arduino Cellular Shield können Sie Mobiltelefonanrufe tätigen und Textnachrichten senden. Das Gehirn dieses Shields ist das SM5100B, ein robustes Mobilfunkmodul, das viele der Aufgaben der meisten Standard-Mobiltelefone erfüllen kann. Dieser Schild erfordert die Verwendung einer SIM-Karte, um eine Verbindung zu einem Mobilfunknetz herzustellen. Das folgende Tutorial ist ein einfaches Tutorial zum Initialisieren des Schilds und zum Senden und Empfangen von Textnachrichten und Telefonanrufen. Um mehr über die Funktionalität des Moduls zu erfahren, lesen Sie unbedingt die Datenblätter auf der Produktseite von Sparkfun.

Schritt 1: Holen Sie sich Sachen

Holen Sie sich Sachen
Holen Sie sich Sachen

Du wirst brauchen:

(x1) Mobilfunkabschirmung (x1) Stapelbare Arduino-Header (x1) Quad-Band-Antenne (x1) Arduino Uno

(Beachten Sie, dass einige der Links auf dieser Seite Affiliate-Links sind. Dies ändert nichts an den Kosten des Artikels für Sie. Ich reinvestiere alle Einnahmen, die ich erhalte, in neue Projekte. Wenn Sie Vorschläge für alternative Lieferanten wünschen, lassen Sie es mich bitte kennt.)

Schritt 2: Lötstifte

Lötstifte
Lötstifte
Lötstifte
Lötstifte
Lötstifte
Lötstifte

Stecken Sie die Header in die Abschirmung und verlöten Sie sie.

Schritt 3: Einfügen

Einfügung
Einfügung
Einfügung
Einfügung

Stecken Sie die Header-Pins in die Buchsen des Arduino.

Schritt 4: Wiederlöten

Wiederlöten
Wiederlöten

Die Verbindung des Antennenkabels zum SM5100B-Modul ist meist nicht sehr gut. Löten Sie jede der Kabelverbindungen erneut mit dem Modul, um die Konnektivität sicherzustellen.

Schritt 5: Befestigen Sie die Antenne

Befestigen Sie die Antenne
Befestigen Sie die Antenne
Befestigen Sie die Antenne
Befestigen Sie die Antenne

Fädeln Sie die Antenne auf das Antennenkabel.

Schritt 6: SIM-Karte einlegen

Sim Karte einlegen
Sim Karte einlegen
Sim Karte einlegen
Sim Karte einlegen
Sim Karte einlegen
Sim Karte einlegen
Sim Karte einlegen
Sim Karte einlegen

Setzen Sie die SIM-Karte fest in den SIM-Kartensteckplatz ein.

Schritt 7: Initialisieren

Initialisieren
Initialisieren

Führen Sie den folgenden Code auf dem Arduino aus:

/*

SparkFun Cellular Shield - Pass-Through-Beispielskizze SparkFun Electronics Geschrieben von Ryan Owens 3/Beschreibung: Diese Skizze wurde geschrieben, um ein Arduino Duemillanove mit einem Cellular Shield von SparkFun Electronics zu verbinden. Das Mobilfunkschild kann hier erworben werden: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 In dieser Skizze werden serielle Befehle von einem Terminalprogramm an das Mobilfunkmodul SM5100B übergeben; und Antworten vom zellularen Modul werden im Endgerät veröffentlicht. Weitere Informationen finden Sie in den Skizzenkommentaren. Um das Gerät nutzen zu können, muss eine aktivierte SIM-Karte in den SIM-Kartenhalter auf dem Board eingelegt sein! Diese Skizze verwendet die NewSoftSerial-Bibliothek, die von Mikal Hart von Arduiniana geschrieben wurde. Die Bibliothek kann unter dieser URL heruntergeladen werden: https://arduiniana.org/libraries/NewSoftSerial/ Dieser Code wird unter der Creative Commons Attribution License bereitgestellt. Weitere Informationen finden Sie hier: https://creativecommons.org/licenses/by/3.0/ (Verwenden Sie unseren Code frei! Bitte denken Sie daran, uns zu erwähnen, wo er fällig ist. Danke!) */ #include //Die NewSoftSerial einschließen Bibliothek, um serielle Befehle an das Mobilfunkmodul zu senden. #include //Wird für String-Manipulationen verwendet char eingehend_char=0; // Hält das eingehende Zeichen vom seriellen Port. SoftwareSerielle Zelle (2, 3); // Erstellen Sie einen 'gefälschten' seriellen Port. Pin 2 ist der Rx-Pin, Pin 3 ist der Tx-Pin. Void setup () { // Serielle Ports für die Kommunikation initialisieren. Serial.begin (9600); cell.begin(9600); //Lass uns anfangen! Serial.println ("Starten der SM5100B-Kommunikation …"); aufrechtzuerhalten. Void loop () { // Wenn ein Zeichen vom Mobilfunkmodul eingeht … if (cell.available () > 0) { eingehend_char = cell.read (); // Rufen Sie das Zeichen vom seriellen Mobilfunkanschluss ab. Serial.print (incoming_char); //Drucken Sie das eingehende Zeichen an das Terminal. } // Wenn ein Zeichen vom Terminal zum Arduino kommt … if (Serial.available () > 0) {eingang_char = Serial.read (); // Hole das Zeichen, das vom Terminal kommt if(incoming_char == '~') // Wenn es eine Tilde ist… eingehend_char = 0x0D; // …in einen Wagenrücklauf umwandeln else if(incoming_char == '^') // Wenn es ein Aufwärtscursor ist… eingehende_char = 0x1A; // …konvertieren in Strg-Z cell.print(incoming_char); // Senden Sie das Zeichen an das Mobilfunkmodul. Serial.print (incoming_char); // Zurück zum Terminal senden } } /* SM5100B Schnellreferenz für AT-Befehlssatz *Wenn nicht anders angegeben, werden AT-Befehle durch Drücken der 'Enter'-Taste beendet. 1.) Stellen Sie sicher, dass das richtige GSM-Band für Ihr Land ausgewählt wurde. Für die USA muss das Band auf 7 eingestellt werden. Um das Band einzustellen, verwenden Sie diesen Befehl: AT+SBAND=7 2.) Nachdem Sie den Arduino mit installiertem Shield eingeschaltet haben, überprüfen Sie, ob das Modul die SIM-Karte liest und erkennt. Schalten Sie das Arduino mit einem geöffneten Terimalfenster und eingestellt auf Arduino-Port und 9600 buad ein. Die Startreihenfolge sollte ungefähr so aussehen: SM5100B Kommunikation starten… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, „ME“, 1 Die Kommunikation mit dem Modul beginnt nach Anzeige der ersten Zeile. Die zweite Kommunikationslinie, +SIND: 10, sagt uns, ob das Modul eine SIM-Karte sehen kann. Wenn die SIM-Karte erkannt wird, ist jedes andere Feld eine 1; Wenn die SIM-Karte nicht erkannt wird, ist jedes andere Feld eine 0. 3.) Warten Sie auf eine Netzwerkverbindung, bevor Sie mit dem Senden von Befehlen beginnen. Nach der Antwort +SIND: 10 versucht das Modul automatisch, eine Verbindung zu einem Netzwerk herzustellen. Warten Sie, bis Sie die folgenden Antworten erhalten: +SIND: 11 +SIND: 3 +SIND: 4 Die +SIND-Antwort vom Mobilfunkmodul informiert über den Modulstatus. Hier eine kurze Zusammenfassung der Antwortbedeutungen: 0 SIM-Karte entfernt 1 SIM-Karte eingelegt 2 Klingelmelodie 3 AT-Modul ist teilweise betriebsbereit 4 AT-Modul ist vollständig betriebsbereit 5 ID der freigegebenen Rufe 6 Freigegebener Ruf mit ID= 7 Der Netzdienst ist für einen Notruf verfügbar 8 Das Netz geht verloren 9 Audio EIN 10 Zeigen Sie den Status jedes Telefonbuchs nach der Init-Phrase an 11 Im Netzwerk registriert Nachdem Sie sich im Netzwerk registriert haben, können Sie mit der Interaktion beginnen. Hier sind ein paar einfache und nützliche Befehle für den Anfang: Um einen Anruf zu tätigen: AT-Befehl - ATDxxxyyyzzzz Telefonnummer im Format: (xxx)yyy-zzz try ---- cell.print("ATDxxxyyyzzzz"); Wenn Sie telefonieren, beachten Sie unbedingt das Gerätedatenblatt, um ein Mikrofon und einen Lautsprecher an die Abschirmung anzuschließen. So senden Sie eine txt-Nachricht: AT-Befehl - AT+CMGF=1 Dieser Befehl setzt den Textnachrichtenmodus auf 'Text'. AT-Befehl = AT+CMGS="xxxyyyzzzz"(Wagenrücklauf)'Text to send'(STRG+Z) Dieser Befehl ist etwas verwirrend zu beschreiben. Die Telefonnummer im Format (xxx)yyy-zzzz steht in doppelten Anführungszeichen. Drücken Sie die Eingabetaste, nachdem Sie die Zitate geschlossen haben. Geben Sie als Nächstes den zu sendenden Text ein. Beenden Sie den AT-Befehl, indem Sie STRG+Z senden. Dieses Zeichen kann nicht vom Arduino-Terminal gesendet werden. Verwenden Sie ein alternatives Terminalprogramm wie Hyperterminal, Tera Term, Bray Terminal oder X-CTU. Das Modul SM5100B kann noch viel mehr! Sehen Sie sich die Datenblätter auf der Produktseite an, um mehr über das Modul zu erfahren.*/Öffnen Sie die serielle Schnittstelle im Terminal. Auf einem Mac geschieht dies durch Eingabe von: screen /dev/tty.usbmodemfa131 9600 (ersetzen Sie tty.usbmodemfa131 durch die serielle Adresse Ihres Arduino) Warten Sie, bis die folgende Sequenz zurückgegeben wird: SM5100B-Kommunikation starten… +SIND: 3 +SIND: 4 +SIND: 11 (Wenn diese Sequenz nicht zurückgegeben wird, überprüfen Sie die Fehlercodes, die am Ende des obigen Codes aufgeführt sind, und führen Sie eine entsprechende Fehlersuche durch. Möglicherweise müssen Sie das Modul für die Verwendung in Nordamerika einstellen -- siehe unten -- bevor es sich im Netzwerk registriert (dh +SIND 11))Senden Sie die folgenden Befehle an die serielle Schnittstelle: Senden Sie dies für die Verwendung in Nordamerika: AT+SBAND=7 Stellen Sie die aktuelle Uhrzeit ein - yy/mm/dd: AT+CCLK="13/05/15, 11: 02:00" Testanruf senden: ATD4155551212

Schritt 8: Textnachrichten

Textnachrichten
Textnachrichten

Laden Sie SerialGSM herunter und installieren Sie es in Ihrer Arduino-Bibliothek.

Um eine Textnachricht zu senden, besuchen Sie das Tutorial zum Tronixstuff-Mobilfunkmodul und verwenden Sie den Beispielcode 26.3:https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

Wenn Sie den Beispielcode ausführen möchten, um einen Text zu erhalten, schließen Sie eine LED an Pin 8 an und schalten Sie sie in Reihe mit einem 220-Ohm-Widerstand auf Masse.

Um eine Textnachricht zu senden, besuchen Sie das Tutorial zum Tronixstuff-Mobilfunkmodul und verwenden Sie den Beispielcode 26.5:https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

Senden Sie einen der folgenden Befehle an Ihr Mobilfunkmodul:

// schaltet die LED ein #a1

// schaltet die LED aus #a0

Schritt 9: Stimme

Stimme
Stimme
Stimme
Stimme
Stimme
Stimme

Schließen Sie ein Mikrofon und einen Lautsprecher mit einem geerdeten Audiokabel an die Abschirmung an. Der mittlere Signaldraht sollte zu den Audio-Plus-Anschlüssen und die Abschirmung sollte zu den entsprechenden Minus-Anschlüssen der Abschirmung gehen. Diese Kabel sollten auf der Mikrofon- und Lautsprecherseite ähnlich angeschlossen werden.

Um einen Sprachanruf zu initialisieren, laden Sie den folgenden Code hoch:

//**********************************************************************************

// ANRUFEN // // BUFFERCODE BASIEREND AUF: // // //********************************************************************************** #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 //Puffer-Array char at_buffer einrichten [BUFFSIZ]; char buffidx; //Netzwerkstatusvariablen int network_registered; int network_AT_ready; //Code-Zustandsvariablen int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; intx; // Hält das eingehende Zeichen vom seriellen Port. char eingehendes_char=0; // Erstellen Sie einen 'gefälschten' seriellen Port. Pin 2 ist der Rx-Pin, Pin 3 ist der Tx-Pin. SoftwareSerielle Zelle (2, 3); Void setup () {// Initialisieren Sie den seriellen Arduino-Port zum Debuggen. Serial.begin (9600); // Virtuellen seriellen Port initialisieren, um mit dem Telefon zu sprechen. cell.begin(9600); //Hallo Welt. Serial.println ("Starten der SM5100B-Kommunikation …"); Verzögerung (1000); //Setze den anfänglichen Netzwerkzustand network_registered = 0; network_AT_ready = 0; } // AT-Strings aus dem Mobilfunkschild lesen void readATString(void) { char c; buffidx= 0; // Beginnen Sie am Anfang für (x = 0; x 0) { c = cell.read (); if (c == -1) { at_buffer[buffidx] = '\0'; Rückkehr; } if (c == '\n') { weiter; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; Rückkehr; } at_buffer[buffidx++]= c; } } } //Verarbeite die AT-Strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println ("Netzwerknetzwerk nicht verfügbar"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println ("Netzwerk registriert"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println ("Netzwerk AT Ready"); } } void loop() {/* Wenn zum ersten Mal aufgerufen, Schleife, bis Netzwerk und AT bereit sind */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); aufrechtzuerhalten. firstTimeInOtherLoop = 0; } } }

Bild
Bild

Fanden Sie das nützlich, lustig oder unterhaltsam? Folgen Sie @madeineuphoria, um meine neuesten Projekte zu sehen.

Empfohlen: