Innehållsförteckning:

Arduino Cellular Shield -handledning: 9 steg (med bilder)
Arduino Cellular Shield -handledning: 9 steg (med bilder)

Video: Arduino Cellular Shield -handledning: 9 steg (med bilder)

Video: Arduino Cellular Shield -handledning: 9 steg (med bilder)
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, November
Anonim
Arduino Cellular Shield Handledning
Arduino Cellular Shield Handledning

Med Arduino Cellular Shield kan du ringa mobiltelefonsamtal och skicka textmeddelanden. Hjärnan i denna sköld är SM5100B som är en robust mobilmodul som kan utföra många av uppgifterna för de flesta vanliga mobiltelefoner. Denna skärm kräver användning av ett SIM -kort för att ansluta till ett mobilnät. Handledningen som följer är en skeletthandledning för att initiera skölden, och både skicka och ta emot textmeddelanden och telefonsamtal. För att lära dig mer om modulens funktionalitet, kolla in databladen på Sparkfun produktsida.

Steg 1: Gå på Hämta saker

Gå och hämta saker
Gå och hämta saker

Du kommer behöva:

(x1) Cellular shield (x1) Stackable Arduino headers (x1) Quad band antenne (x1) Arduino Uno

(Observera att några av länkarna på denna sida är affiliatelänkar. Detta ändrar inte kostnaden för varan för dig. Jag återinvesterar vad jag får för att göra nya projekt. Om du vill ha förslag på alternativa leverantörer, låt mig känna till.)

Steg 2: Lödhuvuden

Lödhuvuden
Lödhuvuden
Lödhuvuden
Lödhuvuden
Lödhuvuden
Lödhuvuden

Sätt in rubrikerna i skölden och löd dem på plats.

Steg 3: Infoga

Föra in
Föra in
Föra in
Föra in

Sätt in huvudstiften i uttagen på Arduino.

Steg 4: Lösning

Resolder
Resolder

Antennkabelns anslutning till SM5100B -modulen är vanligtvis inte särskilt bra. Lossa var och en av kabelns anslutningar till modulen för att säkerställa anslutning.

Steg 5: Fäst antennen

Sätt fast antennen
Sätt fast antennen
Sätt fast antennen
Sätt fast antennen

Trä antennen på antennkabeln.

Steg 6: Sätt i SIM -kortet

Sätt in SIMkort
Sätt in SIMkort
Sätt in SIMkort
Sätt in SIMkort
Sätt in SIMkort
Sätt in SIMkort
Sätt in SIMkort
Sätt in SIMkort

Sätt in SIM -kortet ordentligt i SIM -kortets uttag.

Steg 7: Initiera

Initiera
Initiera

Kör följande kod på Arduino:

/*

SparkFun Cellular Shield - Pass -Through Sample Sketch SparkFun Electronics Skrivet av Ryan Owens 3/Beskrivning: Denna skiss är skriven för att ansluta en Arduino Duemillanove till en Cellular Shield från SparkFun Electronics. Cellskärmen kan köpas här: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 I denna skiss överförs seriella kommandon från ett terminalprogram till mobilmodulen SM5100B; och svar från mobilmodulen publiceras i terminalen. Mer information finns i skisskommentarer. Ett aktiverat SIM -kort måste sättas in i SIM -korthållaren på kortet för att enheten ska kunna användas! Denna skiss använder NewSoftSerial -biblioteket skrivet av Mikal Hart från Arduiniana. Biblioteket kan laddas ner på denna URL: https://arduiniana.org/libraries/NewSoftSerial/ Denna kod finns under Creative Commons Erkännande Licens. Mer information finns här: https://creativecommons.org/licenses/by/3.0/ (Använd vår kod fritt! Kom bara ihåg att ge oss kredit där den beror på. Tack!) */#Include // Inkludera NewSoftSerial bibliotek för att skicka seriella kommandon till mobilmodulen. #include // Används för strängmanipulationer char incoming_char = 0; // Kommer att hålla det inkommande tecknet från serieporten. SoftwareSerial cell (2, 3); // Skapa en "falsk" serieport. Stift 2 är Rx -stiftet, stift 3 är Tx -stiftet. void setup () {// Initiera seriella portar för kommunikation. Serial.begin (9600); cell. började (9600); //Låt oss börja! Serial.println ("Startar SM5100B -kommunikation …"); } void loop () {// Om ett tecken kommer in från mobilmodulen … if (cell.available ()> 0) {incoming_char = cell.read (); // Hämta tecknet från den cellulära seriella porten. Serial.print (inkommande_char); // Skriv ut det inkommande tecknet till terminalen. } // Om ett tecken kommer från terminalen till Arduino … if (Serial.available ()> 0) {incoming_char = Serial.read (); // Få tecknet som kommer från terminalen om (incoming_char == '~') // Om det är en tilde … incoming_char = 0x0D; // … konvertera till en vagnretur annars om (inkommande_char == '^') // Om det är en uppåtvals … inkommande_char = 0x1A; // … konvertera till ctrl-Z cell.print (inkommande_char); // Skicka tecknet till mobilmodulen. Serial.print (inkommande_char); // Echo det tillbaka till terminalen}} / * SM5100B Quck -referens för AT -kommandoset * Om inte annat anges AT -kommandon avslutas genom att trycka på "enter" -knappen. 1.) Se till att rätt GSM -band har valts för ditt land. För USA måste bandet vara inställt på 7. För att ställa in bandet, använd det här kommandot: AT+SBAND = 7 2.) Efter att du har slagit på Arduino med skärmen installerad, kontrollera att modulen läser och känner igen SIM -kortet. Med ett stort fönster öppet och inställt på Arduino -port och 9600 buad, slå på Arduino. Startsekvensen ska se ut ungefär så här: Starta SM5100B Communication … +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Kommunikation med modulen startar efter att den första raden visas. Den andra kommunikationslinjen, +SIND: 10, berättar om modulen kan se ett SIM -kort. Om SIM -kortet upptäcks är alla andra fält ett 1; om SIM -kortet inte upptäcks är alla andra fält ett 0. 3.) Vänta på en nätverksanslutning innan du börjar skicka kommandon. Efter svaret +SIND: 10 börjar modulen automatiskt försöka ansluta till ett nätverk. Vänta tills du får följande reponer: +SIND: 11 +SIND: 3 +SIND: 4 +SIND -svaret från mobilmodulen berättar modulernas status. Här är en snabb genomgång av svarsbetydelserna: 0 SIM-kort borttaget 1 SIM-kort isatt 2 Ringmelodi 3 AT-modulen är delvis klar 4 AT-modulen är helt klar 5 ID för släppta samtal 6 Släppt samtal vars ID = 7 Nättjänsten är tillgängligt för ett nödsamtal 8 Nätverket är förlorat 9 Ljud PÅ 10 Visa status för varje telefonbok efter initfras 11 Registrerad i nätverk Efter registrering i nätverket kan du påbörja interaktion. Här är några enkla och användbara kommandon för att komma igång: Att ringa ett samtal: AT-kommando-ATDxxxyyyzzzz Telefonnummer med formatet: (xxx) yyy-zzz försök ---- cell.print ("ATDxxxyyyzzzz"); Om du ringer ett telefonsamtal, se till att hänvisa till enhetsdatabladet för att ansluta en mikrofon och högtalare till skärmen. För att skicka ett txt -meddelande: AT -kommando - AT+CMGF = 1 Detta kommando anger textmeddelandeläget till "text". AT -kommando = AT+CMGS = "xxxyyyzzzz" (vagnretur) 'Text att skicka' (CTRL+Z) Detta kommando är lite förvirrande att beskriva. Telefonnumret, i formatet (xxx) yyy-zzzz går in i dubbla citat. Tryck på "enter" när du har stängt offerten. Ange sedan texten som ska skickas. Avsluta AT -kommandot genom att skicka CTRL+Z. Det här tecknet kan inte skickas från Arduinos terminal. Använd ett alternativt terminalprogram som Hyperterminal, Tera Term, Bray Terminal eller X-CTU. SM5100B -modulen kan mycket mer än så här! Kolla in databladen på produktsidan för att lära dig mer om modulen.*/Öppna serieporten i terminalen. På en Mac uppnås detta genom att skriva: skärm /dev/tty.usbmodemfa131 9600 (byt ut tty.usbmodemfa131 med din Arduinos serieadress) Vänta med att se följande sekvens: Starta SM5100B Communication … +SIND: 3 +SIND: 4 +SIND: 11 (Om denna sekvens inte returneras, kontrollera felkoderna som listas längst ner i koden ovan och felsök på rätt sätt. Du kan behöva ställa in modulen för nordamerikansk användning - se nedan - innan den registrerar sig till nätverket (dvs. +SIND 11)) Skicka följande kommandon till serieporten: Skicka detta för nordamerikansk användning: AT+SBAND = 7 Ställ in aktuell tid - åå/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Skicka testsamtal: ATD4155551212

Steg 8: Textmeddelanden

Textmeddelanden
Textmeddelanden

Ladda ner och installera SerialGSM i ditt Arduino -bibliotek.

För att skicka ett textmeddelande, besök Tronixstuff-modulen och använd exempelkod 26.3:

Om du vill köra exempelkoden för att ta emot en text, ansluter du en lysdiod till stift 8 och sätter den i serie med ett 220 ohm motstånd till jord.

Om du vill skicka ett textmeddelande besöker du Tronixstuff-modulen och använder exempelkod 26.5:

Skicka ett av följande kommandon till din mobilmodul:

// tänder lysdioden #a1

// släcker lysdioden #a0

Steg 9: Röst

Röst
Röst
Röst
Röst
Röst
Röst

Anslut en mikrofon och högtalare till skärmen med hjälp av en jordad ljudkabel. Mittsignalkabeln ska gå till audio plus -terminalerna och skärmen ska gå till respektive negativa terminaler på skärmen. Dessa kablar ska anslutas på samma sätt på mikrofon- och högtalarsidan.

För att initiera ett röstsamtal ladda upp följande kod:

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

// 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 // Konfigurera buffertmatris char at_buffer [BUFFSIZ]; röding buffidx; // Nätverksstatusvariabler int network_registered; int network_AT_ready; // Kodtillståndsvariabler int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Kommer att hålla det inkommande tecknet från serieporten. char inkommande_char = 0; // Skapa en "falsk" serieport. Stift 2 är Rx -stiftet, stift 3 är Tx -stiftet. SoftwareSerial cell (2, 3); void setup () {// Initiera Arduino seriell port för felsökning. Serial.begin (9600); // Initiera virtuell serieport för att prata med telefon. cell. började (9600); //Hej världen. Serial.println ("Startar SM5100B -kommunikation …"); fördröjning (1000); // Ställ in initialt nätverkstillstånd network_registered = 0; network_AT_ready = 0; } // Läs AT -strängar från den mobila skärmens tomrum readATString (void) {char c; buffidx = 0; // börja vid början för (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; lämna tillbaka; } om (c == '\ n') {fortsätt; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; lämna tillbaka; } at_buffer [buffidx ++] = c; }}} // Bearbeta AT -strängarna void ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("nätverksnätverk ej tillgängligt"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("nätverksregistrerat"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("nätverk AT Ready"); }} void loop () { / * Om den uppmanas för första gången, loopa tills nätverket och AT är redo * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; medan (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Leta efter inkommande samtal if (strstr (at_buffer, "+CPAS: 3")! = 0) {// Svara på telefonen cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Bild
Bild

Tyckte du att det här var användbart, roligt eller underhållande? Följ @madeineuphoria för att se mina senaste projekt.

Rekommenderad: