Indholdsfortegnelse:

Arduino Cellular Shield Tutorial: 9 trin (med billeder)
Arduino Cellular Shield Tutorial: 9 trin (med billeder)

Video: Arduino Cellular Shield Tutorial: 9 trin (med billeder)

Video: Arduino Cellular Shield Tutorial: 9 trin (med billeder)
Video: Огромный обзор отеля Albatros Palace Resort Sharm El Sheikh 5* в Египте - Шарм Эль Шейх 2024, November
Anonim
Tutorial om Arduino Cellular Shield
Tutorial om Arduino Cellular Shield

Arduino Cellular Shield giver dig mulighed for at foretage mobiltelefonopkald og sende tekstbeskeder. Hjernen i dette skjold er SM5100B, som er et robust mobilmodul, der er i stand til at udføre mange af opgaverne for de fleste standard mobiltelefoner. Dette skjold kræver brug af et SIM -kort for at oprette forbindelse til et mobilnetværk. Vejledningen, der følger, er en tutorial med bare knogler til initialisering af skjoldet, og både afsendelse og modtagelse af tekstbeskeder og telefonopkald. Hvis du vil vide mere om modulets funktionalitet, skal du tjekke databladene på Sparkfun's produktside.

Trin 1: Gå Få ting

Gå og få ting
Gå og få ting

Du får brug for:

(x1) Cellular shield (x1) Stabelbare Arduino -headere (x1) Quad -band antenne (x1) Arduino Uno

(Bemærk, at nogle af linkene på denne side er tilknyttede links. Dette ændrer ikke varens omkostninger for dig. Jeg geninvesterer det overskud, jeg modtager, til at lave nye projekter. Hvis du vil have forslag til alternative leverandører, så lad mig venligst ved godt.)

Trin 2: Loddehoveder

Loddehoveder
Loddehoveder
Loddehoveder
Loddehoveder
Loddehoveder
Loddehoveder

Sæt overskrifterne i skærmen og lod dem på plads.

Trin 3: Indsæt

Indsæt
Indsæt
Indsæt
Indsæt

Sæt hovedstifterne i stikkene på Arduino.

Trin 4: Resolder

Resolder
Resolder

Antennekablets forbindelse til SM5100B -modulet er normalt ikke særlig god. Resolder hver af kablets forbindelser til modulet for at sikre forbindelse.

Trin 5: Monter antennen

Fastgør antennen
Fastgør antennen
Sæt antennen på
Sæt antennen på

Træk antennen til antennekablet.

Trin 6: Indsæt SIM -kort

Indsæt SIM -kort
Indsæt SIM -kort
Indsæt SIM -kort
Indsæt SIM -kort
Indsæt SIM -kort
Indsæt SIM -kort
Indsæt SIM -kort
Indsæt SIM -kort

Indsæt SIM -kortet sikkert i SIM -kortstikket.

Trin 7: Initialiser

Initialiser
Initialiser

Kør følgende kode på Arduino:

/*

SparkFun Cellular Shield - Pass -Through Sample Sketch SparkFun Electronics Skrevet af Ryan Owens 3/Beskrivelse: Denne skitse er skrevet for at interface en Arduino Duemillanove til et Cellular Shield fra SparkFun Electronics. Cellular -skjoldet kan købes her: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 I denne skitse sendes serielle kommandoer fra et terminalprogram til SM5100B -mobilmodulet; og svar fra mobilmodulet er indsendt i terminalen. Flere oplysninger findes i skitsekommentarer. Et aktiveret SIM -kort skal indsættes i SIM -kortholderen på kortet for at kunne bruge enheden! Denne skitse anvender NewSoftSerial -biblioteket skrevet af Mikal Hart fra Arduiniana. Biblioteket kan downloades på denne URL: https://arduiniana.org/libraries/NewSoftSerial/ Denne kode findes under Creative Commons Attribution License. Flere oplysninger findes her: https://creativecommons.org/licenses/by/3.0/ (Brug vores kode frit! Husk bare at give os kredit, hvor det skyldes. Tak!) */#Include // Inkluder NewSoftSerial bibliotek for at sende serielle kommandoer til mobilmodulet. #include // Anvendes til strengmanipulationer char incoming_char = 0; // Vil gemme det indgående tegn fra den serielle port. SoftwareSerial celle (2, 3); // Opret en 'falsk' seriel port. Pin 2 er Rx pin, pin 3 er Tx pin. void setup () {// Initialiser serielle porte til kommunikation. Serial.begin (9600); celle. begyndte (9600); //Lad os komme igang! Serial.println ("Start af SM5100B -kommunikation …"); } void loop () {// Hvis et tegn kommer ind fra mobilmodulet … if (cell.available ()> 0) {incoming_char = cell.read (); // Hent tegnet fra den cellulære serielle port. Serial.print (indgående_char); // Udskriv det indgående tegn til terminalen. } // Hvis et tegn kommer fra terminalen til Arduino … hvis (Serial.available ()> 0) {incoming_char = Serial.read (); // Få tegnet fra terminalen hvis (incoming_char == '~') // Hvis det er en tilde … incoming_char = 0x0D; // … konverter til en vognretur ellers if (incoming_char == '^') // Hvis det er en up caret … incoming_char = 0x1A; // … konverter til ctrl-Z cell.print (indgående_char); // Send karakteren til mobilmodulet. Serial.print (indgående_char); // Ekko det tilbage til terminalen}} / * SM5100B Quck Reference til AT -kommandosæt * Medmindre andet er angivet, afsluttes AT -kommandoer ved at trykke på "enter" -tasten. 1.) Sørg for, at det korrekte GSM -bånd er valgt til dit land. For USA skal båndet sættes til 7. For at indstille båndet skal du bruge denne kommando: AT+SBAND = 7 2.) Efter at du har tændt for Arduino med skærmen installeret, skal du kontrollere, at modulet læser og genkender SIM -kortet. Med et stort vindue åbent og indstillet til Arduino -port og 9600 buad, tænd for Arduino. Opstartssekvensen skal se sådan ud: Start SM5100B Communication … +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Kommunikation med modulet starter, efter at den første linje er vist. Den anden kommunikationslinje, +SIND: 10, fortæller os, om modulet kan se et SIM -kort. Hvis SIM -kortet opdages, er hvert andet felt et 1; hvis SIM -kortet ikke opdages, er hvert andet felt et 0. 3.) Vent på en netværksforbindelse, før du begynder at sende kommandoer. Efter svaret +SIND: 10 begynder modulet automatisk at forsøge at oprette forbindelse til et netværk. Vent, indtil du modtager følgende reponer: +SIND: 11 +SIND: 3 +SIND: 4 +SIND -svaret fra mobilmodulet fortæller modulernes status. Her er en hurtig gennemgang af svarbetydningerne: 0 SIM-kort fjernet 1 SIM-kort isat 2 Ringemelodi 3 AT-modul er delvist klar 4 AT-modul er helt klar 5 ID for frigivne opkald 6 Udgivet opkald, hvis ID = 7 Netværkstjenesten er tilgængelig for et nødopkald 8 Netværket er tabt 9 Lyd TIL 10 Vis status for hver telefonbog efter init -sætning 11 Registreret til netværk Efter registrering på netværket kan du begynde interaktion. Her er et par enkle og nyttige kommandoer til at komme i gang: For at foretage et opkald: AT-kommando-ATDxxxyyyzzzz Telefonnummer med formatet: (xxx) yyy-zzz prøv ---- cell.print ("ATDxxxyyyzzzz"); Hvis du foretager et telefonopkald, skal du referere til enhedsdatabladet for at tilslutte en mikrofon og højttaler til skærmen. Sådan sender du en txt -besked: AT -kommando - AT+CMGF = 1 Denne kommando indstiller tekstbeskedstilstanden til 'tekst'. AT -kommando = AT+CMGS = "xxxyyyzzzz" (vognretur) 'Tekst til afsendelse' (CTRL+Z) Denne kommando er lidt forvirrende at beskrive. Telefonnummeret i formatet (xxx) yyy-zzzz går inde i dobbelte citater. Tryk på 'enter' efter at have lukket tilbudene. Indtast derefter den tekst, der skal sendes. Afslut AT -kommandoen ved at sende CTRL+Z. Dette tegn kan ikke sendes fra Arduinos terminal. Brug et alternativt terminalprogram som Hyperterminal, Tera Term, Bray Terminal eller X-CTU. SM5100B -modulet kan meget mere end dette! Tjek databladene på produktsiden for at lære mere om modulet.*/Åbn den serielle port i terminalen. På en Mac opnås dette ved at skrive: screen /dev/tty.usbmodemfa131 9600 (udskift tty.usbmodemfa131 med din Arduinos serielle adresse) Vent med at se følgende rækkefølge returneret: Start af SM5100B Communication … +SIND: 3 +SIND: 4 +SIND: 11 (Hvis denne sekvens ikke returneres, skal du kontrollere fejlkoderne, der er angivet nederst i koden ovenfor, og fejlsøge korrekt. Du skal muligvis indstille modulet til nordamerikansk brug - se nedenfor - før det registreres til netværk (dvs. +SIND 11)) Send følgende kommandoer til den serielle port: Send dette til brug i Nordamerika: AT+SBAND = 7 Indstil det aktuelle tidspunkt - åå/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Send testopkald: ATD4155551212

Trin 8: Tekstbeskeder

Tekstbeskeder
Tekstbeskeder

Download og installer SerialGSM i dit Arduino -bibliotek.

For at sende en tekstbesked skal du besøge Tronixstuff-modulet til selvstudier og bruge eksempelkode 26.3:

Hvis du gerne vil køre eksempelkoden for at modtage en tekst, skal du tilslutte en LED til pin 8 og sætte den i serie med en 220 ohm modstand til jorden.

For at sende en tekstbesked skal du besøge Tronixstuff-modulet til selvstudier og bruge eksempelkode 26.5:

Send en af følgende kommandoer til dit mobilmodul:

// tænder lysdioden #a1

// slukker LED'en #a0

Trin 9: Stemme

Stemme
Stemme
Stemme
Stemme
Stemme
Stemme

Tilslut en mikrofon og højttaler til skærmen ved hjælp af jordet lydkabel. Centersignaltråden skal gå til audio plus -terminalerne, og afskærmningen skal gå til de respektive negative terminaler på skærmen. Disse kabler skal tilsluttes på samme måde på mikrofon- og højttalersiden.

For at initialisere et taleopkald skal du uploade følgende kode:

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

// RING // // BUFFERING CODE BASED UPON: // // //********************************************************************************** #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 // Opsæt buffer array char at_buffer [BUFFSIZ]; char buffidx; // Netværksstatusvariabler int network_registered; int network_AT_ready; // Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Vil gemme det indgående tegn fra den serielle port. char indkommende_char = 0; // Opret en 'falsk' seriel port. Pin 2 er Rx pin, pin 3 er Tx pin. SoftwareSerial celle (2, 3); void setup () {// Initialiser Arduino seriel port til fejlfinding. Serial.begin (9600); // Initialiser den virtuelle serielle port for at tale med telefonen. celle. begyndte (9600); //Hej Verden. Serial.println ("Start af SM5100B -kommunikation …"); forsinkelse (1000); // Indstil indledende netværkstilstand network_registered = 0; network_AT_ready = 0; } // Læs AT -strenge fra cellular shield void readATString (void) {char c; buffidx = 0; // start ved begyndelsen for (x = 0; x 0) {c = cell.read (); hvis (c == -1) {at_buffer [buffidx] = '\ 0'; Vend tilbage; } hvis (c == '\ n') {fortsæt; } hvis ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; Vend tilbage; } at_buffer [buffidx ++] = c; }}}} // Behandl AT -strengene tom ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("netværksnetværk ikke tilgængeligt"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("netværk registreret"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("netværk AT Klar"); }} void loop () { / * Hvis der ringes til for første gang, skal du sløjfe, indtil netværket og AT er klar * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; mens (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Kig efter indgående opkald if (strstr (at_buffer, "+CPAS: 3")! = 0) {// Besvar telefonens cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Billede
Billede

Fandt du dette nyttigt, sjovt eller underholdende? Følg @madeineuphoria for at se mine seneste projekter.

Anbefalede: