Përmbajtje:

Udhëzues Arduino Cellular Shield: 9 hapa (me fotografi)
Udhëzues Arduino Cellular Shield: 9 hapa (me fotografi)

Video: Udhëzues Arduino Cellular Shield: 9 hapa (me fotografi)

Video: Udhëzues Arduino Cellular Shield: 9 hapa (me fotografi)
Video: Lesson 2: Getting Arduino Software and using Documentation for SunFounder Arduino Kit | SunFounder 2024, Nëntor
Anonim
Tutoriali i Arduino Cellular Shield
Tutoriali i Arduino Cellular Shield

Mburoja celulare Arduino ju lejon të bëni telefonata celulare dhe të dërgoni mesazhe me tekst. Truri i kësaj mburoje është SM5100B i cili është një modul i fuqishëm qelizor i aftë për të kryer shumë nga detyrat e shumicës së telefonave celularë standardë. Ky mburojë kërkon përdorimin e një karte SIM për t'u lidhur me një rrjet celular. Udhëzimi që vijon është një mësim për kockat e zhveshura për fillimin e mburojës, dhe dërgimin dhe marrjen e mesazheve me tekst, dhe thirrjet telefonike. Për të mësuar më shumë rreth funksionimit të modulit, sigurohuni që të shikoni fletët e të dhënave në faqen e produktit të Sparkfun.

Hapi 1: Shkoni të merrni gjëra

Shko Merr Gjera
Shko Merr Gjera

Do t'ju duhet:

(x1) Mburoja celulare (x1) Titujt e grumbulluar Arduino (x1) Antena me katër banda (x1) Arduino Uno

(Vini re se disa nga lidhjet në këtë faqe janë lidhje të lidhura. Kjo nuk e ndryshon koston e artikullit për ju. Unë riinvestoj çdo të ardhur që marr në bërjen e projekteve të reja. Nëse dëshironi ndonjë sugjerim për furnizuesit alternativë, ju lutem më lejoni e di.)

Hapi 2: Tituj për saldim

Tituj të bashkuar
Tituj të bashkuar
Kokat e saldimit
Kokat e saldimit
Kokat e saldimit
Kokat e saldimit

Futni titujt në mburojë dhe ngjitini ato në vend.

Hapi 3: Futni

Fut
Fut
Fut
Fut

Futni kunjat e kokës në bazat në Arduino.

Hapi 4: Rishitës

Rishites
Rishites

Lidhja e kabllit të antenës me modulin SM5100B zakonisht nuk është shumë e mirë. Rilidhni secilën prej lidhjeve të kabllit me modulin për të siguruar lidhshmërinë.

Hapi 5: Bashkojeni Antenën

Bashkangjit Antenën
Bashkangjit Antenën
Bashkangjit Antenën
Bashkangjit Antenën

Kalojeni antenën në kabllon e antenës.

Hapi 6: Futni kartën SIM

Fut kartën SIM
Fut kartën SIM
Fut kartën SIM
Fut kartën SIM
Fut kartën SIM
Fut kartën SIM
Fut kartën SIM
Fut kartën SIM

Futeni kartën SIM në mënyrë të sigurt në prizën e kartës SIM.

Hapi 7: Filloni

Filloni
Filloni

Drejtoni kodin e mëposhtëm në Arduino:

/*

Mburoja celulare SparkFun - Skicë mostre e përcjelljes Elektronika SparkFun e shkruar nga Ryan Owens 3/Përshkrimi: Ky skicë është shkruar për të ndërlidhur një Arduino Duemillanove në një Mburojë Cellular nga SparkFun Electronics. Mburoja celulare mund të blihet këtu: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Në këtë skicë komandat serike kalohen nga një program terminal në modulin celular SM5100B; dhe përgjigjet nga moduli qelizor postohen në terminal. Më shumë informacion gjendet në komentet e skicës. Një kartë SIM e aktivizuar duhet të futet në mbajtësen e kartës SIM në tabelë për të përdorur pajisjen! Ky skicë përdor bibliotekën NewSoftSerial të shkruar nga Mikal Hart nga Arduiniana. Biblioteka mund të shkarkohet në këtë URL: https://arduiniana.org/libraries/NewSoftSerial/ Ky kod sigurohet nën licencën e atribuimit Creative Commons. Më shumë informacion mund të gjeni këtu: https://creativecommons.org/licenses/by/3.0/ (Përdorni kodin tonë lirshëm! Ju lutemi mos harroni të na jepni kredit aty ku duhet. Faleminderit!) */#Include // Përfshini NewSoftSerial bibliotekë për të dërguar komanda serike në modulin celular. #include // Përdoret për manipulime me vargje char incoming_char = 0; // Do të mbajë karakterin hyrës nga Porti Serial. Software Qeliza serike (2, 3); // Krijoni një port serial 'të rremë'. Pin 2 është pin Rx, pin 3 është pin Tx. void setup () {// Filloni portat serike për komunikim. Serial.filloj (9600); qeliza.filloj (9600); //Le të fillojmë! Serial.println ("Fillimi i komunikimit SM5100B …"); } void loop () {// Nëse hyn një karakter nga moduli celular… if (cell.available ()> 0) {incoming_char = cell.read (); // Merrni karakterin nga porta seriale celulare. Serial.print (inchar_char); // Shtypni karakterin hyrës në terminal. } // Nëse një karakter vjen nga terminali në Arduino … nëse (Serial.available ()> 0) {incoming_char = Serial.read (); // Merr karakterin që vjen nga terminali nëse (incoming_char == '~') // Nëse është një tildë… incoming_char = 0x0D; //… shndërrohuni në një karrocë kthimi tjetër nëse (incoming_char == '^') // Nëse është një up caret… incoming_char = 0x1A; //… konvertohet në qelizën ctrl-Z.print (inchar_char); // Dërgoni karakterin në modulin celular. Serial.print (inchar_char); // Përsëriteni përsëri në terminal}} / * SM5100B Quck Referenca për Komandën e Komandës AT * Përveç nëse komandat e shënuara ndryshe AT përfundojnë duke shtypur butonin 'fut'. 1.) Sigurohuni që brezi i duhur GSM është zgjedhur për vendin tuaj. Për SHBA brezi duhet të vendoset në 7. Për të vendosur brezin, përdorni këtë komandë: AT+SBAND = 7 2.) Pasi të keni ndezur Arduino me mburojën e instaluar, verifikoni që moduli lexon dhe njeh kartën SIM. Me një dritare të hapur të hapur dhe të vendosur në portin Arduino dhe 9600 bateri, ndizni sistemin Arduino. Sekuenca e fillimit duhet të duket diçka si kjo: Fillimi i komunikimit SM5100B… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Komunikimi me modulin fillon pasi të shfaqet rreshti i parë. Linja e dytë e komunikimit, +SIND: 10, na tregon nëse moduli mund të shohë një kartë SIM. Nëse karta SIM zbulohet, çdo fushë tjetër është 1; nëse karta SIM nuk zbulohet çdo fushë tjetër është 0. 3.) Prisni për një lidhje rrjeti para se të filloni të dërgoni komanda. Pas përgjigjes +SIND: 10 moduli automatikisht do të fillojë të përpiqet të lidhet me një rrjet. Prisni derisa të merrni përsëritjet e mëposhtme: +SIND: 11 +SIND: 3 +SIND: 4 Përgjigja +SIND nga moduli celular tregon statusin e moduleve. Këtu keni një përmbledhje të shpejtë të kuptimeve të përgjigjes: 0 Karta SIM e hequr 1 Kartë SIM e futur 2 Melodia e ziles 3 Moduli AT është pjesërisht gati 4 Moduli AT është plotësisht i gatshëm 5 ID e thirrjeve të lëshuara 6 Thirrje e lëshuar ID e të cilit = 7 Shërbimi i rrjetit është i disponueshëm për një thirrje urgjente 8 Rrjeti humbet 9 Audio ON 10 Trego statusin e secilit libër telefoni pas frazës fillestare 11 Regjistruar në rrjet Pasi të regjistroheni në rrjet mund të filloni ndërveprimin. Këtu janë disa komanda të thjeshta dhe të dobishme për të filluar: Për të bërë një telefonatë: AT komandë-ATDxxxyyyzzzz Numri i telefonit me formatin: (xxx) yyy-zzz provoni ---- cell.print ("ATDxxxyyyzzzz"); Nëse bëni një telefonatë sigurohuni që të referoni fletën e të dhënave të pajisjeve për të lidhur mikrofonin dhe altoparlantin në mburojë. Për të dërguar një mesazh txt: Komanda AT - AT+CMGF = 1 Kjo komandë e vendos modalitetin e mesazhit me tekst në 'tekst'. Komanda AT = AT+CMGS = "xxxyyyzzzz" (kthimi i karrocës) 'Tekst për t'u dërguar' (CTRL+Z) Ky komandë është pak konfuz për t'u përshkruar. Numri i telefonit, në formatin (xxx) yyy-zzzz hyn brenda kuotimeve të dyfishta. Shtypni 'enter' pasi mbyllni citimet. Tjetra futni tekstin që do të dërgohet. Përfundoni komandën AT duke dërguar CTRL+Z. Ky personazh nuk mund të dërgohet nga terminali i Arduino. Përdorni një program terminal alternativ si Hyperterminal, Tera Term, Bray Terminal ose X-CTU. Moduli SM5100B mund të bëjë shumë më tepër se kaq! Shikoni fletët e të dhënave në faqen e produktit për të mësuar më shumë rreth modulit.*/Hapni portin serik në terminal. Në një Mac kjo arrihet duke shtypur: screen /dev/tty.usbmodemfa131 9600 (zëvendësoni tty.usbmodemfa131 me adresën seriale të Arduino -s tuaj) Prisni që të shihni sekuencën e mëposhtme të kthyer: Fillimi i komunikimit SM5100B… +SIND: 3 +SIND: 4 +SIND: 11 (Nëse kjo sekuencë nuk kthehet kontrolloni kodet e gabimit të listuara në fund të kodit të mësipërm dhe korrigjoni në mënyrë të përshtatshme. Ju mund të keni nevojë të vendosni modulin për përdorim në Amerikën e Veriut - shiko më poshtë - para se të regjistrohet në rrjet (p.sh. +SIND 11)) Dërgo komandat e mëposhtme në portin serik: Dërgo këtë për përdorim në Amerikën e Veriut: AT+SBAND = 7 Cakto kohën aktuale - yy/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Dërgo telefonatë testuese: ATD4155551212

Hapi 8: Mesazhet me tekst

Mesazhe me tekst
Mesazhe me tekst

Shkarkoni dhe instaloni SerialGSM në bibliotekën tuaj Arduino.

Për të dërguar një mesazh me tekst vizitoni tutorialin e modulit celular Tronixstuff dhe përdorni kodin shembull 26.3:

Nëse dëshironi të ekzekutoni kodin shembull për të marrë një tekst, lidhni një LED në pin 8 dhe vendoseni në seri me një rezistencë 220 ohm në tokë.

Për të dërguar një mesazh me tekst vizitoni tutorialin e modulit celular Tronixstuff dhe përdorni kodin shembull 26.5:

Shkruani një nga komandat e mëposhtme në modulin tuaj celular:

// ndez LED -në #a1

// fik LED -in #a0

Hapi 9: Zëri

Zë
Zë
Zë

Lidhni një mikrofon dhe altoparlant me mburojën duke përdorur kabllon audio të bazuar. Teli i sinjalit qendror duhet të shkojë në terminalet audio plus dhe mbrojtja duhet të shkojë në terminalet përkatëse negative në mburojë. Këto kabllo duhet të lidhen në mënyrë të ngjashme në anën e mikrofonit dhe altoparlantit.

Për të nisur një thirrje zanore ngarkoni kodin e mëposhtëm:

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

// BAKJ A NJ THIRRJE // // KODI I BUFERIMIT BAZUAR PPR M:PAR: // // //********************************************************************************** #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 // Konfiguro tampon array char at_buffer [BUFFSIZ]; char buffidx; // Variablat e gjendjes së rrjetit int network_registered; int network_AT_ gati; // Ndryshoret e gjendjes së kodit int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Do të mbajë karakterin hyrës nga Porti Serial. char hyres_char = 0; // Krijoni një port serial 'të rremë'. Pin 2 është pin Rx, pin 3 është pin Tx. Software Qeliza serike (2, 3); void setup () {// Filloni portën serike Arduino për korrigjim. Serial.filloj (9600); // Filloni portën seriale virtuale për të folur me telefonin. qeliza.filloj (9600); //Përshendetje Botë. Serial.println ("Fillimi i komunikimit SM5100B …"); vonesa (1000); // Cakto gjendjen fillestare të rrjetit network_registered = 0; network_AT_ gati = 0; } // Lexo vargjet AT nga mburoja celulare void readATString (void) {char c; buffidx = 0; // filloni në fillim për (x = 0; x 0) {c = cell.read (); nëse (c == -1) {at_buffer [buffidx] = '\ 0'; kthim; } nëse (c == '\ n') {vazhdoni; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; kthim; } at_buffer [buffidx ++] = c; }}} // Përpunoni vargjet AT të pavlefshëm ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("Rrjeti i rrjetit nuk është i disponueshëm"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("rrjeti i regjistruar"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ gati = 1; Serial.println ("rrjeti AT Ready"); }} void loop () { / * Nëse thirret për herë të parë, lakoni derisa rrjeti dhe AT të jenë gati * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; ndërsa (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Kërko thirrjen hyrëse nëse (strstr (at_buffer, "+CPAS: 3")! = 0) {// Përgjigju celulës së telefonit.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Imazhi
Imazhi

A ju duket e dobishme, argëtuese apo argëtuese kjo? Ndiqni @madeineuphoria për të parë projektet e mia të fundit.

Recommended: