Inhoudsopgave:

Arduino Cellular Shield-zelfstudie - Ajarnpa
Arduino Cellular Shield-zelfstudie - Ajarnpa

Video: Arduino Cellular Shield-zelfstudie - Ajarnpa

Video: Arduino Cellular Shield-zelfstudie - Ajarnpa
Video: You can learn Arduino in 15 minutes. 2024, November
Anonim
Arduino Cellular Shield-zelfstudie
Arduino Cellular Shield-zelfstudie

Met het Arduino Cellular Shield kun je mobiel bellen en sms'en. Het brein van dit schild is de SM5100B, een robuuste mobiele module die in staat is veel van de taken van de meeste standaard mobiele telefoons uit te voeren. Dit schild vereist het gebruik van een simkaart om verbinding te maken met een mobiel netwerk. De tutorial die volgt is een eenvoudige tutorial voor het initialiseren van het schild, en voor het verzenden en ontvangen van sms-berichten en telefoongesprekken. Bekijk de datasheets op de productpagina van Sparkfun voor meer informatie over de functionaliteit van de module.

Stap 1: Ga spullen halen

Ga spullen halen
Ga spullen halen

Je zal nodig hebben:

(x1) Cellulair schild (x1) Stapelbare Arduino-headers (x1) Quad-bandantenne (x1) Arduino Uno

(Merk op dat sommige van de links op deze pagina gelieerde links zijn. Dit verandert niets aan de kosten van het artikel voor u. Ik herinvesteer alle opbrengsten die ik ontvang in het maken van nieuwe projecten. Als u suggesties voor alternatieve leveranciers wilt, laat het me dan weten weten.)

Stap 2: Soldeerkoppen

Soldeerkoppen
Soldeerkoppen
Soldeerkoppen
Soldeerkoppen
Soldeerkoppen
Soldeerkoppen

Steek de headers in het schild en soldeer ze op hun plaats.

Stap 3: Invoegen

Invoegen
Invoegen
Invoegen
Invoegen

Steek de header-pinnen in de sockets op de Arduino.

Stap 4: Opnieuw solderen

Opnieuw solderen
Opnieuw solderen

De verbinding van de antennekabel met de SM5100B-module is meestal niet erg goed. Soldeer elke kabelverbinding opnieuw met de module om de connectiviteit te garanderen.

Stap 5: Bevestig de antenne

Bevestig de antenne
Bevestig de antenne
Bevestig de antenne
Bevestig de antenne

Rijg de antenne aan de antennekabel.

Stap 6: SIM-kaart plaatsen

Plaats simkaart
Plaats simkaart
Plaats simkaart
Plaats simkaart
Plaats simkaart
Plaats simkaart
Plaats simkaart
Plaats simkaart

Plaats de simkaart stevig in de simkaartsleuf.

Stap 7: Initialiseren

Initialiseren
Initialiseren

Voer de volgende code uit op de Arduino:

/*

SparkFun Cellular Shield - Voorbeeldschets voor doorgang SparkFun Electronics Geschreven door Ryan Owens 3/Beschrijving: Deze schets is geschreven om een Arduino Duemillanove te koppelen aan een Cellular Shield van SparkFun Electronics. Het cellulaire schild kan hier worden gekocht: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 In deze schets worden seriële commando's doorgegeven van een terminalprogramma naar de SM5100B cellulaire module; en antwoorden van de cellulaire module worden in de terminal gepost. Meer informatie is te vinden in de schetsopmerkingen. Om het apparaat te kunnen gebruiken, moet een geactiveerde simkaart in de simkaarthouder op het bord worden gestoken! Deze schets maakt gebruik van de NewSoftSerial-bibliotheek die is geschreven door Mikal Hart van Arduiniana. De bibliotheek kan worden gedownload op deze URL: https://arduiniana.org/libraries/NewSoftSerial/ Deze code wordt geleverd onder de Creative Commons Attribution License. Meer informatie is hier te vinden: https://creativecommons.org/licenses/by/3.0/ (Gebruik onze code vrij! Vergeet niet om ons de eer te geven waar het toekomt. Bedankt!) */ #include //Include the NewSoftSerial bibliotheek om seriële opdrachten naar de mobiele module te sturen. #include //Gebruikt voor stringmanipulaties char inkomende_char=0; // Zal het binnenkomende karakter van de seriële poort vasthouden. SoftwareSeriële cel (2, 3); //Maak een 'nep' seriële poort. Pin 2 is de Rx-pin, pin 3 is de Tx-pin. void setup () {// Initialiseer seriële poorten voor communicatie. Serieel.begin(9600); cel.begin(9600); //Laten we beginnen! Serial.println ("Start SM5100B-communicatie…"); } void loop() {//Als een teken binnenkomt vanuit de mobiele module… if(cell.available() >0) {inkomende_char=cell.read(); // Haal het personage uit de cellulaire seriële poort. Serial.print(inkomende_char); // Druk het inkomende teken af naar de terminal. } //Als een teken van de terminal naar de Arduino komt… if(Serial.available() > 0) {inkomend_char = Serial.read(); // Haal het teken uit de terminal if(incoming_char == '~') // Als het een tilde is… inkomende_char = 0x0D; // …converteer naar een regelterugloop else if(incoming_char == '^') // Als het een up-caret is… inkomende_char = 0x1A; // …converteren naar ctrl-Z cell.print(incoming_char); // Stuur het teken naar de mobiele module. Serial.print(inkomende_char); // Echo het terug naar de terminal } } /* SM5100B Snelle referentie voor AT-opdrachtenset *Tenzij anders vermeld, worden AT-opdrachten beëindigd door op de 'enter'-toets te drukken. 1.) Zorg ervoor dat de juiste GSM-band is geselecteerd voor uw land. Voor de VS moet de band worden ingesteld op 7. Gebruik deze opdracht om de band in te stellen: AT+SBAND=7 2.) Controleer na het inschakelen van de Arduino met het schild geïnstalleerd of de module de SIM-kaart leest en herkent. Met een terminalvenster open en ingesteld op Arduino-poort en 9600 buad, zet u de Arduino aan. De opstartvolgorde zou er ongeveer zo uit moeten zien: SM5100B-communicatie starten… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Communicatie met de module start nadat de eerste regel is weergegeven. De tweede communicatielijn, +SIND: 10, vertelt ons of de module een simkaart kan zien. Als de SIM-kaart wordt gedetecteerd, is elk ander veld een 1; als de SIM-kaart niet wordt gedetecteerd, is elk ander veld een 0. 3.) Wacht op een netwerkverbinding voordat u begint met het verzenden van opdrachten. Na de +SIND:10 reactie zal de module automatisch proberen verbinding te maken met een netwerk. Wacht tot u de volgende antwoorden ontvangt: +SIND: 11 +SIND: 3 +SIND: 4 Het +SIND-antwoord van de mobiele module geeft de status van de modules aan. Hier volgt een kort overzicht van de betekenis van de antwoorden: 0 SIM-kaart verwijderd 1 SIM-kaart geplaatst 2 Belmelodie 3 AT-module is gedeeltelijk gereed 4 AT-module is volledig gereed 5 ID van vrijgegeven oproepen 6 Vrijgegeven oproep waarvan ID= 7 De netwerkservice is beschikbaar voor een noodoproep 8 Het netwerk is verbroken 9 Audio AAN 10 Toon de status van elk telefoonboek na init frase 11 Geregistreerd bij netwerk Na registratie op het netwerk kunt u beginnen met interactie. Hier zijn een paar eenvoudige en handige commando's om te beginnen: Om te bellen: AT-commando - ATDxxxyyyzzzz Telefoonnummer met het formaat: (xxx)yyy-zzz try ---- cell.print("ATDxxxyyyyzzzz"); Als u een telefoongesprek voert, zorg er dan voor dat u het gegevensblad van het apparaat raadpleegt om een microfoon en luidspreker op het schild aan te sluiten. Een txt-bericht verzenden: AT-commando - AT+CMGF=1 Dit commando stelt de sms-modus in op 'text'. AT-commando = AT+CMGS="xxxyyyzzzz"(carriage return)'Text to send'(CTRL+Z) Dit commando is enigszins verwarrend om te beschrijven. Het telefoonnummer, in het formaat (xxx)yyy-zzzz staat tussen dubbele aanhalingstekens. Druk op 'enter' na het sluiten van de offertes. Voer vervolgens de te verzenden tekst in. Beëindig het AT-commando door CTRL+Z te sturen. Dit karakter kan niet worden verzonden vanaf de Arduino-terminal. Gebruik een alternatief terminalprogramma zoals Hyperterminal, Tera Term, Bray Terminal of X-CTU. De SM5100B-module kan veel meer dan dit! Bekijk de datasheets op de productpagina voor meer informatie over de module.*/Open de seriële poort in de terminal. Op een Mac wordt dit bereikt door te typen: screen /dev/tty.usbmodemfa131 9600 (vervang tty.usbmodemfa131 door het seriële adres van uw Arduino) Wacht tot de volgende volgorde wordt geretourneerd: SM5100B-communicatie starten… +SIND: 3 +SIND: 4 +SIND: 11 (Als deze reeks niet wordt geretourneerd, controleert u de foutcodes die onderaan de bovenstaande code staan vermeld en debugt u de juiste fouten. Mogelijk moet u de module instellen voor Noord-Amerikaans gebruik -- zie hieronder -- voordat deze zich bij het netwerk registreert (bijv. +SIND 11))Stuur de volgende opdrachten naar de seriële poort: Stuur dit voor Noord-Amerikaans gebruik: AT+SBAND=7 Stel de huidige tijd in - yy/mm/dd: AT+CCLK="13/05/15, 11: 02:00" Testoproep verzenden: ATD4155551212

Stap 8: SMS-berichten

Tekstberichten
Tekstberichten

Download en installeer SerialGSM in uw Arduino-bibliotheek.

Als u een sms-bericht wilt verzenden, gaat u naar de Tronixstuff mobiele module-tutorial en gebruikt u voorbeeldcode 26.3:

Als u de voorbeeldcode wilt gebruiken om een tekst te ontvangen, sluit dan een LED aan op pin 8 en plaats deze in serie met een 220 ohm-weerstand naar aarde.

Als u een sms-bericht wilt verzenden, gaat u naar de Tronixstuff mobiele module-tutorial en gebruikt u voorbeeldcode 26.5:

Sms een van de volgende opdrachten naar uw mobiele module:

// zet de LED aan #a1

// schakelt de LED uit #a0

Stap 9: Stem

Stem
Stem
Stem
Stem
Stem
Stem

Sluit een microfoon en luidspreker aan op de afscherming met behulp van een geaarde audiokabel. De middelste signaaldraad moet naar de audio plus-aansluitingen gaan en de afscherming moet naar de respectieve negatieve aansluitingen op de afscherming gaan. Deze kabels moeten op dezelfde manier worden aangesloten aan de kant van de microfoon en de luidspreker.

Upload de volgende code om een spraakoproep te initialiseren:

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

// BEL BELLEN // // BUFFERINGCODE GEBASEERD OP: // // //********************************************************************************** #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 //Bufferarray char at_buffer instellen [BUFFS]; char buffidx; // Netwerkstatusvariabelen int network_registered; int netwerk_AT_klaar; // Codestatusvariabelen int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Zal het inkomende teken van de seriële poort vasthouden. char inkomende_char=0; //Maak een 'nep' seriële poort. Pin 2 is de Rx-pin, pin 3 is de Tx-pin. SoftwareSeriële cel (2, 3); void setup () {// Initialiseer de seriële poort van Arduino voor foutopsporing. Serieel.begin(9600); // Initialiseer de virtuele seriële poort om met de telefoon te praten. cel.begin(9600); //Hallo Wereld. Serial.println ("Start SM5100B-communicatie…"); vertraging (1000); // Stel de initiële netwerkstatus in network_registered = 0; netwerk_AT_ready = 0; } // Lees AT-strings van het cellulaire schild void readATString (void) { char c; buffx= 0; // begin bij het begin voor (x = 0; x 0) {c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; opbrengst; } if (c == '\n') { doorgaan; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; opbrengst; } at_buffer[buffidx++]= c; } } } //Verwerk de AT-tekenreeksen void ProcessATString() {if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println ("netwerknetwerk niet beschikbaar"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("netwerk geregistreerd"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("netwerk AT Ready"); } } void loop() { /* Indien voor de eerste keer aangeroepen, loop totdat het netwerk en AT gereed is */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } if(firstTimeInOtherLoop == 1){ //Zoek naar inkomende oproep if(strstr(at_buffer, "+CPAS: 3") != 0) { //Answer the phone cell.println("ATA"); firstTimeInOtherLoop = 0; } } }

Afbeelding
Afbeelding

Vond je dit nuttig, leuk of vermakelijk? Volg @madeineuphoria om mijn laatste projecten te zien.

Aanbevolen: