Innholdsfortegnelse:

Arduino Cellular Shield Tutorial: 9 trinn (med bilder)
Arduino Cellular Shield Tutorial: 9 trinn (med bilder)

Video: Arduino Cellular Shield Tutorial: 9 trinn (med bilder)

Video: Arduino Cellular Shield Tutorial: 9 trinn (med bilder)
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, November
Anonim
Opplæring i Arduino Cellular Shield
Opplæring i Arduino Cellular Shield

Arduino Cellular Shield lar deg ringe mobiltelefoner og sende tekstmeldinger. Hjernen til dette skjoldet er SM5100B, som er en robust mobilmodul som kan utføre mange av oppgavene til de fleste vanlige mobiltelefoner. Dette skjoldet krever bruk av et SIM -kort for å koble til et mobilnett. Opplæringen som følger er en tutorial for bare bein for å initialisere skjoldet, og både sende og motta tekstmeldinger og telefonsamtaler. For å lære mer om modulens funksjonalitet, må du sjekke databladene på Sparkfun sin produktside.

Trinn 1: Gå Få ting

Gå Få ting
Gå Få ting

Du vil trenge:

(x1) Mobilskjerm (x1) Stabelbare Arduino -hoder (x1) Quad band antenne (x1) Arduino Uno

(Vær oppmerksom på at noen av koblingene på denne siden er tilknyttede lenker. Dette endrer ikke kostnaden for varen for deg. Jeg reinvesterer inntektene jeg mottar til å lage nye prosjekter. Hvis du ønsker forslag til alternative leverandører, kan du la meg vet.)

Trinn 2: Loddehoder

Loddehoder
Loddehoder
Loddehoder
Loddehoder
Loddehoder
Loddehoder

Sett hodene inn i skjoldet og lodd dem på plass.

Trinn 3: Sett inn

Sett inn
Sett inn
Sett inn
Sett inn

Sett toppnålene inn i kontaktene på Arduino.

Trinn 4: Resolder

Resolder
Resolder

Antennekablets tilkobling til SM5100B -modulen er vanligvis ikke veldig bra. Løs hver av kabels tilkoblinger til modulen for å sikre tilkobling.

Trinn 5: Fest antennen

Fest antennen
Fest antennen
Fest antennen
Fest antennen

Tre antennen til antennekabelen.

Trinn 6: Sett inn SIM -kortet

Sett inn SIM -kortet
Sett inn SIM -kortet
Sett inn SIM -kortet
Sett inn SIM -kortet
Sett inn SIM -kortet
Sett inn SIM -kortet
Sett inn SIM -kortet
Sett inn SIM -kortet

Sett SIM -kortet godt inn i SIM -kortstikkontakten.

Trinn 7: Initialiser

Initialiser
Initialiser

Kjør følgende kode på Arduino:

/*

SparkFun Cellular Shield - Pass -Through Sample Sketch SparkFun Electronics Skrevet av Ryan Owens 3/Beskrivelse: Denne skissen er skrevet for å koble et Arduino Duemillanove til et Cellular Shield fra SparkFun Electronics. Mobilskjermen kan kjøpes her: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 I denne skissen sendes serielle kommandoer fra et terminalprogram til mobilmodulen SM5100B; og svar fra mobilmodulen legges ut i terminalen. Mer informasjon finnes i skissekommentarene. Et aktivert SIM -kort må settes inn i SIM -kortholderen på brettet for å kunne bruke enheten! Denne skissen bruker NewSoftSerial -biblioteket skrevet av Mikal Hart fra Arduiniana. Biblioteket kan lastes ned på denne URL -adressen: https://arduiniana.org/libraries/NewSoftSerial/ Denne koden er gitt under Creative Commons Attribution License. Mer informasjon finner du her: https://creativecommons.org/licenses/by/3.0/ (Bruk koden vår fritt! Husk å gi oss æren der den skyldes. Takk!) */#Include // Inkluder NewSoftSerial bibliotek for å sende serielle kommandoer til mobilmodulen. #include // Brukes til strengmanipulasjoner char incoming_char = 0; // Vil beholde det innkommende tegnet fra serieporten. SoftwareSerial celle (2, 3); // Lag en "falsk" serieport. Pin 2 er Rx pin, pin 3 er Tx pin. ugyldig oppsett () {// Initialiser serielle porter for kommunikasjon. Serial.begin (9600); celle. begynte (9600); //La oss komme i gang! Serial.println ("Starter SM5100B -kommunikasjon …"); } void loop () {// Hvis et tegn kommer inn fra mobilmodulen … if (cell.available ()> 0) {incoming_char = cell.read (); // Få tegnet fra den mobile serielle porten. Serial.print (innkommende_char); // Skriv ut det innkommende tegnet til terminalen. } // Hvis et tegn kommer fra terminalen til Arduino … if (Serial.available ()> 0) {incoming_char = Serial.read (); // Få tegnet som kommer 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; // … konvertere til ctrl-Z cell.print (innkommende_char); // Send karakteren til mobilmodulen. Serial.print (innkommende_char); // ekko det tilbake til terminalen}} / * SM5100B Quck -referanse for AT -kommandosett * Med mindre annet er angitt, AT -kommandoer avsluttes ved å trykke "enter" -tasten. 1.) Sørg for at riktig GSM -bånd er valgt for ditt land. For USA må båndet settes til 7. For å sette båndet, bruk denne kommandoen: AT+SBAND = 7 2.) Etter at du har slått på Arduino med skjermen installert, må du kontrollere at modulen leser og gjenkjenner SIM -kortet. Med et stort vindu åpent og satt til Arduino -port og 9600 buad, slå på Arduino. Oppstartssekvensen skal se slik ut: Start SM5100B Communication … +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Kommunikasjon med modulen starter etter at den første linjen er vist. Den andre kommunikasjonslinjen, +SIND: 10, forteller oss om modulen kan se et SIM -kort. Hvis SIM -kortet oppdages, er hvert annet felt et 1; hvis SIM -kortet ikke blir oppdaget, er hvert annet felt et 0. 3.) Vent på en nettverkstilkobling før du begynner å sende kommandoer. Etter svaret +SIND: 10, begynner modulen automatisk å prøve å koble til et nettverk. Vent til du mottar følgende reponer: +SIND: 11 +SIND: 3 +SIND: 4 +SIND -responsen fra mobilmodulen forteller modulenes status. Her er en rask nedfelling av svarbetydningene: 0 SIM-kort fjernet 1 SIM-kort satt inn 2 Ringemelodi 3 AT-modulen er delvis klar 4 AT-modulen er helt klar 5 ID for frigitte anrop 6 Utgitt anrop hvis ID = 7 Nettverkstjenesten er tilgjengelig for en nødanrop 8 Nettverket er tapt 9 Lyd PÅ 10 Vis statusen for hver telefonbok etter init -setning 11 Registrert i nettverket Etter registrering i nettverket kan du starte interaksjonen. Her er noen enkle og nyttige kommandoer for å komme i gang: For å ringe: AT-kommando-ATDxxxyyyzzzz Telefonnummer med formatet: (xxx) ååå-zzz, prøv ---- cell.print ("ATDxxxyyyzzzz"); Hvis du ringer, må du referere til databladet for å koble en mikrofon og høyttaler til skjermen. Slik sender du en txt -melding: AT -kommando - AT+CMGF = 1 Denne kommandoen setter tekstmeldingsmodus til 'tekst'. AT -kommando = AT+CMGS = "xxxyyyzzzz" (vognretur) 'Tekst som skal sendes' (CTRL+Z) Denne kommandoen er litt forvirrende å beskrive. Telefonnummeret, i formatet (xxx) yyy-zzzz går inne i doble anførselstegn. Trykk "enter" etter at du har lukket tilbudene. Deretter skriver du inn teksten som skal sendes. Avslutt AT -kommandoen ved å sende CTRL+Z. Dette tegnet kan ikke sendes fra Arduinos terminal. Bruk et alternativt terminalprogram som Hyperterminal, Tera Term, Bray Terminal eller X-CTU. SM5100B -modulen kan mye mer enn dette! Sjekk databladene på produktsiden for å lære mer om modulen.*/Åpne serieporten i terminalen. På en Mac oppnås dette ved å skrive: screen /dev/tty.usbmodemfa131 9600 (bytt ut tty.usbmodemfa131 med Arduinos serielle adresse) Vent med å se følgende sekvens returnert: Starter SM5100B Communication … +SIND: 3 +SIND: 4 +SIND: 11 (Hvis denne sekvensen ikke returneres, sjekk feilkodene som er oppført nederst i koden ovenfor, og feilsøk på riktig måte. Du må kanskje sette modulen for nordamerikansk bruk - se nedenfor - før den registreres til nettverk (dvs. +SIND 11)) Send følgende kommandoer til serieporten: Send dette for nordamerikansk bruk: AT+SBAND = 7 Angi gjeldende tid - åå/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Send testanrop: ATD4155551212

Trinn 8: Tekstmeldinger

Tekstmeldinger
Tekstmeldinger

Last ned og installer SerialGSM i Arduino -biblioteket.

For å sende en tekstmelding, besøk Tronixstuff mobilmodulopplæring og bruk eksempelkode 26.3:

Hvis du vil kjøre eksempelkoden for å motta en tekst, kobler du en LED til pinne 8 og setter den i serie med en 220 ohm motstand til bakken.

For å sende en tekstmelding, besøk Tronixstuff mobilmodulopplæring og bruk eksempelkode 26.5:

Send en av følgende kommandoer til mobilmodulen:

// slår LED -en på #a1

// slår av lysdioden #a0

Trinn 9: Stemme

Stemme
Stemme
Stemme
Stemme
Stemme
Stemme

Koble en mikrofon og høyttaler til skjermen ved hjelp av jordet lydkabel. Den midterste signalkabelen skal gå til audio plus -terminalene, og skjermen skal gå til de respektive negative terminalene på skjermen. Disse kablene bør kobles på samme måte på mikrofon- og høyttalersiden.

Last opp følgende kode for å initialisere et taleanrop:

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

// 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 // Sett opp buffer array char at_buffer [BUFFSIZ]; røye buffidx; // Nettverkstilstandsvariabler int network_registered; int network_AT_ready; // Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Vil beholde det innkommende tegnet fra serieporten. char innkommende_char = 0; // Lag en "falsk" serieport. Pin 2 er Rx pin, pin 3 er Tx pin. SoftwareSerial celle (2, 3); ugyldig oppsett () {// Initialiser Arduino seriell port for feilsøking. Serial.begin (9600); // Initialiser virtuell serieport for å snakke med telefon. celle. begynte (9600); //Hei Verden. Serial.println ("Starter SM5100B -kommunikasjon …"); forsinkelse (1000); // Angi innledende nettverkstilstand network_registered = 0; network_AT_ready = 0; } // Les AT -strenger fra cellular shield void readATString (void) {char c; buffidx = 0; // start ved begynnelsen for (x = 0; x 0) {c = cell.read (); hvis (c == -1) {at_buffer [buffidx] = '\ 0'; komme tilbake; } hvis (c == '\ n') {fortsette; } hvis ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; komme tilbake; } at_buffer [buffidx ++] = c; }}} // Behandle AT -strengene tom ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("nettverksnettverk ikke tilgjengelig"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("nettverk registrert"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("nettverk AT klar"); }} void loop () { / * Hvis du ringte for første gang, sløyfe til nettverk og AT er klare * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; mens (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Se etter innkommende anrop if (strstr (at_buffer, "+CPAS: 3")! = 0) {// Svar på telefonen cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Bilde
Bilde

Synes du dette var nyttig, morsomt eller underholdende? Følg @madeineuphoria for å se mine siste prosjekter.

Anbefalt: