INHOUDSOPGAWE:

Handleiding Arduino Cellular Shield: 9 stappe (met foto's)
Handleiding Arduino Cellular Shield: 9 stappe (met foto's)

Video: Handleiding Arduino Cellular Shield: 9 stappe (met foto's)

Video: Handleiding Arduino Cellular Shield: 9 stappe (met foto's)
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, November
Anonim
Tutoriaal vir Arduino Cellular Shield
Tutoriaal vir Arduino Cellular Shield

Met die Arduino Cellular Shield kan u selfoonoproepe maak en teksboodskappe stuur. Die brein van hierdie skild is die SM5100B, 'n robuuste mobiele module wat baie van die take van die meeste standaard selfone kan verrig. Hierdie skild vereis dat u 'n SIM -kaart gebruik om aan te sluit op 'n mobiele netwerk. Die onderstaande tutoriaal is 'n kaal bene -tutoriaal vir die initialisering van die skild, sowel as die stuur en ontvang van sms'e en telefoonoproepe. Raadpleeg die gegewensblaaie op die produkblad van Sparkfun vir meer inligting oor die funksie van die module.

Stap 1: Gaan haal dinge

Gaan haal dinge
Gaan haal dinge

Jy sal nodig hê:

(x1) Sellulêre skild (x1) Stapelbare Arduino -koppe (x1) Quad -band antenna (x1) Arduino Uno

(Let daarop dat sommige van die skakels op hierdie bladsy geaffilieerde skakels is. Dit verander nie die koste van die item vir u nie. Ek herbelê die opbrengs wat ek ontvang om nuwe projekte te maak. Laat my asseblief weet as u voorstelle vir alternatiewe verskaffers wil hê. weet.)

Stap 2: Soldeerkoppe

Soldeerkoppe
Soldeerkoppe
Soldeerkoppe
Soldeerkoppe
Soldeerkoppe
Soldeerkoppe

Steek die kopstukke in die skild en soldeer dit op hul plek.

Stap 3: Voeg in

Voeg in
Voeg in
Voeg in
Voeg in

Steek die koppenne in die voetstukke op die Arduino.

Stap 4: Herlaai

Resolder
Resolder

Die verbinding van die antennekabel met die SM5100B -module is gewoonlik nie so goed nie. Bevestig elk van die kabel se verbindings met die module om verbinding te verseker.

Stap 5: Bevestig die antenna

Heg die antenna aan
Heg die antenna aan
Heg die antenna aan
Heg die antenna aan

Ryg die antenna aan die antennekabel.

Stap 6: Plaas die SIM -kaart

Plaas die SIM -kaart
Plaas die SIM -kaart
Plaas die SIM -kaart
Plaas die SIM -kaart
Plaas die SIM -kaart
Plaas die SIM -kaart
Plaas die SIM -kaart
Plaas die SIM -kaart

Steek die SIM -kaart veilig in die SIM -kaartaansluiting.

Stap 7: Initialiseer

Initialiseer
Initialiseer

Begin die volgende kode op die Arduino:

/*

SparkFun Cellular Shield - Voorbeeld van skets SparkFun Electronics Geskryf deur Ryan Owens 3/Beskrywing: Hierdie skets is geskryf om 'n Arduino Duemillanove te koppel aan 'n Cellular Shield van SparkFun Electronics. Die sellulêre skild kan hier gekoop word: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 In hierdie skets word reeksopdragte van 'n terminale program na die SM5100B -sellulêre module oorgedra; en antwoorde van die sellulêre module word in die terminale geplaas. Meer inligting word gevind in die sketsopmerkings. 'N Geaktiveerde SIM -kaart moet in die SIM -kaarthouer op die bord geplaas word om die toestel te kan gebruik! Hierdie skets maak gebruik van die NewSoftSerial -biblioteek wat deur Mikal Hart van Arduiniana geskryf is. Die biblioteek kan afgelaai word op hierdie URL: https://arduiniana.org/libraries/NewSoftSerial/ Hierdie kode word verskaf onder die Creative Commons Erkenningslisensie. Meer inligting kan hier gevind word: https://creativecommons.org/licenses/by/3.0/ (Gebruik ons kode vrylik! Onthou net om ons krediet te gee waar dit verskuldig is. Dankie!) */#Include // Sluit die NewSoftSerial in biblioteek om reeksopdragte na die sellulêre module te stuur. #include // Gebruik vir string manipulasies char incoming_char = 0; // Sal die inkomende karakter van die seriële poort hou. SoftwareSerial sel (2, 3); // Skep 'n 'vals' reekspoort. Speld 2 is die Rx -pen, pen 3 is die Tx -pen. leemte -opstelling () {// Initialiseer seriële poorte vir kommunikasie. Serial.begin (9600); cell.begin (9600); //Laat ons begin! Serial.println ("Begin met kommunikasie met SM5100B …"); } leemte -lus () {// As 'n karakter uit die sellulêre module kom … if (cell.available ()> 0) {incoming_char = cell.read (); // Haal die karakter uit die mobiele seriële poort. Serial.print (inkomende_char); // Druk die inkomende karakter na die terminale. } // As 'n karakter van die terminale na die Arduino kom … if (Serial.available ()> 0) {incoming_char = Serial.read (); // Kry die karakter wat uit die terminale kom as (incoming_char == '~') // As dit 'n tilde is … incoming_char = 0x0D; // … omskakel na 'n koetsopgawe anders as (inkomende_char == '^') // As dit 'n opwaartse punt is … inkomende_char = 0x1A; // … omskakel na ctrl-Z cell.print (inkomende_char); // Stuur die karakter na die sellulêre module. Serial.print (inkomende_char); // Echo dit terug na die terminale}} / * SM5100B Quck -verwysing vir AT -opdragstel * Tensy anders aangedui, word AT -bevele beëindig deur op die 'enter' -sleutel te druk. 1.) Maak seker dat die regte GSM -band vir u land gekies is. Vir die VSA moet die band op 7. gestel word. Om die band te stel, gebruik hierdie opdrag: AT+SBAND = 7 2.) Nadat u die Arduino aangeskakel het met die geïnstalleerde skild, moet u seker maak dat die module die SIM -kaart lees en herken. Met 'n groot venster oop na die Arduino -poort en 9600 buad, skakel die Arduino aan. Die opstartvolgorde moet so lyk: SM5100B Communication begin … +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Kommunikasie met die module begin nadat die eerste reël vertoon is. Die tweede kommunikasielyn, +SIND: 10, vertel ons of die module 'n SIM -kaart kan sien. As die SIM -kaart opgespoor word, is elke ander veld 'n 1; as die SIM -kaart nie opgespoor word nie, is elke ander veld 'n 0. 3.) Wag vir 'n netwerkverbinding voordat u opdragte begin stuur. Na die reaksie +SIND: 10, sal die module outomaties probeer om aan te sluit op 'n netwerk. Wag totdat u die volgende klanke ontvang: +SIND: 11 +SIND: 3 +SIND: 4 Die +SIND -antwoord van die sellulêre module vertel die status van die modules. Hier is 'n vinnige uiteensetting van die antwoordbetekenisse: 0 SIM-kaart verwyder 1 SIM-kaart ingesit 2 Ringmelodie 3 AT-module is gedeeltelik gereed 4 AT-module is heeltemal gereed 5 ID van vrygestelde oproepe 6 Vrygestelde oproep waarvan ID = 7 Die netwerkdiens is Beskikbaar vir 'n noodoproep Hier is 'n paar eenvoudige en nuttige opdragte om aan die gang te kom: Om 'n oproep te maak: AT-opdrag-ATDxxxyyyzzzz Telefoonnommer met die formaat: (xxx) yyy-zzz probeer ---- cell.print ("ATDxxxyyyzzzz"); As u 'n oproep maak, moet u die datablad van die toestel raadpleeg om 'n mikrofoon en luidspreker aan die skerm te koppel. Om 'n txt -boodskap te stuur: AT -opdrag - AT+CMGF = 1 Hierdie opdrag stel die teksboodskapmodus in op 'teks'. AT -opdrag = AT+CMGS = "xxxyyyzzzz" (koetsopgawe) 'Teks om te stuur' (CTRL+Z) Hierdie opdrag is effens verwarrend om te beskryf. Die telefoonnommer, in die formaat (xxx) yyy-zzzz, bevat dubbele aanhalings. Druk 'enter' nadat u die kwotasies gesluit het. Voer vervolgens die teks in wat gestuur moet word. Beëindig die AT -opdrag deur CTRL+Z te stuur. Hierdie karakter kan nie vanaf die terminal van Arduino gestuur word nie. Gebruik 'n alternatiewe terminale program soos Hyperterminal, Tera Term, Bray Terminal of X-CTU. Die SM5100B -module kan veel meer as dit doen! Lees die gegewensblaaie op die produkbladsy vir meer inligting oor die module.*/Maak die seriële poort in die terminale oop. Op 'n Mac word dit bereik deur te tik: screen /dev/tty.usbmodemfa131 9600 (vervang tty.usbmodemfa131 met die reeksadres van u Arduino) Wag om die volgende volgorde te sien: SM5100B Communication begin … +SIND: 3 +SIND: 4 +SIND: 11 (As hierdie volgorde nie teruggegee word nie, kyk dan na die foutkodes wat onderaan die kode hierbo verskyn, en ontfout behoorlik. U moet die module moontlik instel vir Noord -Amerikaanse gebruik - sien hieronder - voordat dit by die netwerk registreer (dws +SIND 11)) Stuur die volgende opdragte na die seriële poort: Stuur dit vir Noord -Amerikaanse gebruik: AT+SBAND = 7 Stel die huidige tyd in - jj/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Stuur toetsoproep: ATD4155551212

Stap 8: Teksboodskappe

Teksboodskappe
Teksboodskappe

Laai SerialGSM af en installeer dit in u Arduino -biblioteek.

Besoek die selfoonmodule van Tronixstuff vir 'n teksboodskap en gebruik voorbeeldkode 26.3:

As u die voorbeeldkode wil gebruik om 'n teks te ontvang, koppel 'n LED aan pen 8 en plaas dit in serie met 'n weerstand van 220 ohm op die aarde.

Besoek die selfoonmodule van Tronixstuff vir 'n SMS, en gebruik voorbeeldkode 26.5:

SMS een van die volgende opdragte na u selfoonmodule:

// skakel die LED aan #a1

// skakel die LED af #a0

Stap 9: Stem

Stem
Stem
Stem
Stem
Stem
Stem

Koppel 'n mikrofoon en luidspreker aan die skerm met 'n geaarde klankabel. Die middelste seindraad moet na die klank plus terminale gaan en die afskerming moet na die onderskeie negatiewe terminale op die skerm gaan. Hierdie kabels moet op dieselfde manier aan die mikrofoon- en luidsprekerkant gekoppel word.

Laai die volgende kode op om 'n stemoproep te begin:

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

// BEL 'n BEL // // BUFFERKODE GEBASEER 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 // Stel buffer array char op_buffer op [BUFFSIZ]; char buffidx; // Netwerkstaat veranderlikes int netwerk_registered; int netwerk_AT_gereed; // Kode toestand veranderlikes int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Sal die inkomende karakter van die seriële poort hou. char inkomende_char = 0; // Skep 'n 'vals' seriële poort. Speld 2 is die Rx -pen, pen 3 is die Tx -pen. SoftwareSerial sel (2, 3); leemte -opstelling () {// Begin die Arduino -seriële poort vir ontfouting. Serial.begin (9600); // Begin die virtuele reekspoort om met die telefoon te praat. cell.begin (9600); //Hello Wêreld. Serial.println ("Begin met kommunikasie met SM5100B …"); vertraging (1000); // Stel aanvanklike netwerktoestand netwerk_registered = 0; netwerk_AT_ready = 0; } // Lees AT -snare van die sellulêre skild leegte readATString (leeg) {char c; buffidx = 0; // begin by begin vir (x = 0; x 0) {c = cell.read (); as (c == -1) {at_buffer [buffidx] = '\ 0'; terugkeer; } as (c == '\ n') {vervolg; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; terugkeer; } at_buffer [buffidx ++] = c; }}}} // Verwerk die AT strings void ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("netwerk netwerk nie beskikbaar nie"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("netwerk geregistreer"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("netwerk AT gereed"); }} leemte -lus () { / * As dit vir die eerste keer gebel word, loop totdat netwerk en AT gereed is * / as (firstTimeInLoop == 1) {firstTimeInLoop = 0; terwyl (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Soek inkomende oproep as (strstr (at_buffer, "+CPAS: 3")! = 0) {// Beantwoord die telefoon cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Beeld
Beeld

Het u dit nuttig, pret of vermaaklik gevind? Volg @madeineuphoria om my nuutste projekte te sien.

Aanbeveel: