Turinys:

„Arduino Cellular Shield“pamoka: 9 žingsniai (su nuotraukomis)
„Arduino Cellular Shield“pamoka: 9 žingsniai (su nuotraukomis)

Video: „Arduino Cellular Shield“pamoka: 9 žingsniai (su nuotraukomis)

Video: „Arduino Cellular Shield“pamoka: 9 žingsniai (su nuotraukomis)
Video: SKR Pro V1.2 - Dual Z-axis steppers with TMC2208 UART 2024, Liepa
Anonim
„Arduino Cellular Shield“pamoka
„Arduino Cellular Shield“pamoka

„Arduino Cellular Shield“leidžia skambinti koriniu telefonu ir siųsti tekstinius pranešimus. Šio skydo smegenys yra SM5100B, kuris yra tvirtas korinis modulis, galintis atlikti daugelį standartinių mobiliųjų telefonų užduočių. Norint naudoti šį skydą, norint prisijungti prie korinio tinklo, reikia naudoti SIM kortelę. Toliau pateikiama pamoka yra plikų kaulų pamoka, skirta skydo inicijavimui, tekstinių pranešimų siuntimui ir priėmimui bei telefono skambučiams. Norėdami sužinoti daugiau apie modulio funkcijas, būtinai peržiūrėkite „Sparkfun“produkto puslapio duomenų lapus.

1 veiksmas: eikite gauti daiktų

Eik „Daiktų“
Eik „Daiktų“

Jums reikės:

(x1) mobilusis skydas (x1) sukraunamos „Arduino“antraštės (x1) keturių juostų antena (x1) „Arduino Uno“

(Atminkite, kad kai kurios šiame puslapyje esančios nuorodos yra filialų nuorodos. Tai nekeičia jūsų prekės kainos. Visas gautas pajamas reinvestuoju į naujų projektų kūrimą. Jei norite pasiūlyti alternatyvių tiekėjų, leiskite man žinoti.)

2 žingsnis: litavimo antraštės

Lituoklių antraštės
Lituoklių antraštės
Lituoklių antraštės
Lituoklių antraštės
Lituoklių antraštės
Lituoklių antraštės

Įdėkite antraštes į skydą ir lituokite jas į vietą.

3 žingsnis: įdėkite

Įdėti
Įdėti
Įdėti
Įdėti

Įdėkite antraštės kaiščius į „Arduino“lizdus.

4 žingsnis: rezoliucija

Tvirtesnis
Tvirtesnis

Antenos kabelio prijungimas prie SM5100B modulio paprastai nėra labai geras. Nustatykite kiekvieną kabelio jungtį prie modulio, kad užtikrintumėte ryšį.

5 žingsnis: pritvirtinkite anteną

Prijunkite anteną
Prijunkite anteną
Prijunkite anteną
Prijunkite anteną

Prijunkite anteną prie antenos kabelio.

6 veiksmas: įdėkite SIM kortelę

Įdėkite SIM kortelę
Įdėkite SIM kortelę
Įdėkite SIM kortelę
Įdėkite SIM kortelę
Įdėkite SIM kortelę
Įdėkite SIM kortelę
Įdėkite SIM kortelę
Įdėkite SIM kortelę

Saugiai įstatykite SIM kortelę į SIM kortelės lizdą.

7 žingsnis: inicijuokite

Inicijuoti
Inicijuoti

„Arduino“paleiskite šį kodą:

/*

„SparkFun Cellular Shield“- praeinamojo pavyzdžio eskizas „SparkFun Electronics“Parašė Ryanas Owensas 3/Aprašymas: Šis eskizas parašytas taip, kad sujungtų „Arduino Duemillanove“į „SparkFun Electronics“korinį skydą. Korinį skydą galima įsigyti čia: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Šiame eskize serijinės komandos perduodamos iš terminalo programos į SM5100B korinį modulį; ir atsakymai iš korinio modulio skelbiami terminale. Daugiau informacijos rasite eskizo komentaruose. Kad galėtumėte naudotis prietaisu, į plokštėje esantį SIM kortelės laikiklį turi būti įdėta aktyvuota SIM kortelė! Šiame eskize naudojama „NewSoftSerial“biblioteka, kurią parašė Mikal Hart iš Arduiniana. Biblioteką galima atsisiųsti šiuo adresu: https://arduiniana.org/libraries/NewSoftSerial/ Šis kodas pateikiamas pagal „Creative Commons“priskyrimo licenciją. Daugiau informacijos galite rasti čia: https://creativecommons.org/licenses/by/3.0/ (Naudokite mūsų kodą laisvai! Tik nepamirškite mums suteikti kredito, kai reikia. Dėkojame!) */#Include // Įtraukti „NewSoftSerial“biblioteką, kad galėtų siųsti serijines komandas į korinį modulį. #include // Naudojamas manipuliacijoms eilutėmis char emering_char = 0; // Laikys įeinantį simbolį iš nuoseklaus prievado. Programinė įrangaSerijinė ląstelė (2, 3); // Sukurkite „netikrą“nuoseklųjį prievadą. 2 kaištis yra Rx kaištis, 3 kaištis yra Tx kaištis. void setup () {// Inicijuokite nuoseklius prievadus ryšiui. Serial.begin (9600); ląstelė.pradis (9600); //Pradėkime! Serial.println („Paleidžiamas SM5100B ryšys …“); } void loop () {// Jei simbolis ateina iš korinio modulio… if (cell.available ()> 0) {gaunamas_žene = ląstelė. skaitymas (); // Gaukite simbolį iš korinio nuoseklaus prievado. Serijinis atspaudas (gaunamas_ženklas); // Spausdinkite gaunamą simbolį į terminalą. } // Jei simbolis ateina iš terminalo į „Arduino“… if (Serial.available ()> 0) {inputing_char = Serial.read (); // Gaukite simbolį iš terminalo, jei (gaunamas_ženklis == '~') // Jei tai tildė… gaunama_žene = 0x0D; //… konvertuoti į vežimo grąžą kitaip, jei (gaunamas_ženklas == '^') // Jei tai aukštyn nukreipta sąskaita… gaunama_žene = 0x1A; // … konvertuoti į ctrl-Z ląstelę.print (gaunamas_ženklas); // Siųsti simbolį į korinį modulį. Serijinis atspaudas (gaunamas_ženklas); // Atkartokite jį atgal į terminalą}} / * SM5100B „Quck“nuoroda į AT komandų rinkinį * Jei nenurodyta kitaip, AT komandos baigiamos paspaudus „Enter“klavišą. 1.) Įsitikinkite, kad jūsų šaliai pasirinkta tinkama GSM juosta. JAV juosta turi būti nustatyta į 7. Norėdami nustatyti juostą, naudokite šią komandą: AT+SBAND = 7 2.) Įjungę „Arduino“, kai yra sumontuotas skydas, patikrinkite, ar modulis nuskaito ir atpažįsta SIM kortelę. Atidarius žemės langą, esantį Arduino uoste ir 9600 buad, įjunkite „Arduino“. Paleidimo seka turėtų atrodyti maždaug taip: SM5100B ryšio paleidimas… +SIND: 1 +SIND: 10, „SM“, 1, „FD“, 1, „LD“, 1, „MC“, 1, „RC“, 1, "ME", 1 Ryšys su moduliu prasideda po to, kai rodoma pirmoji eilutė. Antroji ryšio linija +SIND: 10 nurodo, ar modulis gali matyti SIM kortelę. Jei aptinkama SIM kortelė, kiekvienas kitas laukas yra 1; jei SIM kortelė neaptinkama, kiekvienas kitas laukas yra 0. 3.) Prieš pradėdami siųsti komandas, palaukite tinklo ryšio. Po atsakymo +SIND: 10 modulis automatiškai pradės bandyti prisijungti prie tinklo. Palaukite, kol gausite šiuos pakartojimus: +SIND: 11 +SIND: 3 +SIND: 4 +SIND atsakas iš korinio modulio nurodo modulių būseną. Štai greitas atsakymo reikšmių sumažėjimas: 0 SIM kortelė išimta 1 įdėta SIM kortelė 2 Skambėjimo melodija 3 AT modulis iš dalies paruoštas 4 AT modulis visiškai paruoštas 5 Atleistų skambučių ID 6 Išleistas skambutis, kurio ID = 7 Tinklo paslauga yra galima skambinti skubios pagalbos skambučiui 8 Tinklas prarastas 9 Garsas įjungtas 10 Rodykite kiekvienos telefonų knygos būseną po pradinės frazės 11 Užregistruotas tinkle Užregistravę tinklą, galite pradėti sąveiką. Štai keletas paprastų ir naudingų komandų, kaip pradėti: Skambinti: AT komanda-ATDxxxyyyzzzz Telefono numeris tokiu formatu: (xxx) yyy-zzz try ---- cell.print ("ATDxxxyyyzzzz"); Jei skambinate telefonu, būtinai nurodykite prietaisų duomenų lapą, kad prijungtumėte mikrofoną ir garsiakalbį prie skydo. Norėdami išsiųsti txt pranešimą: AT komanda - AT+CMGF = 1 Ši komanda nustato teksto pranešimo režimą į „text“. AT komanda = AT+CMGS = "xxxyyyzzzz" (vežimo grąžinimas) 'Siunčiamas tekstas' (CTRL+Z) Ši komanda yra šiek tiek paini. Telefono numeris (xxx) formatu yyy-zzzz pateikiamas dvigubose kabutėse. Uždarę citatas, paspauskite „Enter“. Tada įveskite tekstą, kurį norite išsiųsti. Užbaikite AT komandą siųsdami CTRL+Z. Šio simbolio negalima išsiųsti iš „Arduino“terminalo. Naudokite kitą terminalo programą, pvz., „Hyperterminal“, „Tera Term“, „Bray Terminal“ar „X-CTU“. SM5100B modulis gali padaryti daug daugiau nei tai! Norėdami sužinoti daugiau apie modulį, peržiūrėkite gaminio puslapyje esančius duomenų lapus.*/Atidarykite serijos prievadą terminale. „Mac“sistemoje tai pasiekiama įvedus: screen /dev/tty.usbmodemfa131 9600 (pakeiskite tty.usbmodemfa131 savo „Arduino“serijos adresu) Palaukite, kol bus pateikta tokia seka: SM5100B ryšio paleidimas… +SIND: 3 +SIND: 4 +SIND: 11 (Jei ši seka negrąžinama, patikrinkite aukščiau esančio kodo apačioje išvardytus klaidų kodus ir atitinkamai derinkite. Jums gali reikėti nustatyti modulį, skirtą naudoti Šiaurės Amerikoje (žr. Toliau), kol jis užsiregistruos tinkle (pvz. +SIND 11)) Siųskite šias komandas į nuoseklųjį prievadą: Siųskite tai naudoti Šiaurės Amerikoje: AT+SBAND = 7 Nustatykite dabartinį laiką - yy/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Siųsti bandomąjį skambutį: ATD4155551212

8 veiksmas: teksto pranešimai

Teksto žinutės
Teksto žinutės

Atsisiųskite ir įdiekite „SerialGSM“į savo „Arduino“biblioteką.

Norėdami išsiųsti tekstinį pranešimą, apsilankykite „Tronixstuff“korinio modulio mokymo programoje ir naudokite 26.3 pavyzdinį kodą:

Jei norite paleisti pavyzdinį kodą, kad gautumėte tekstą, prijunkite šviesos diodą prie 8 kaiščio ir sudėkite jį į seriją su 220 omų rezistoriumi.

Norėdami išsiųsti tekstinį pranešimą, apsilankykite „Tronixstuff“korinio modulio mokymo programoje ir naudokite pavyzdinį kodą 26.5:

Į mobiliojo ryšio modulį nusiųskite vieną iš šių komandų:

// įjungia šviesos diodą #a1

// išjungia šviesos diodą #a0

9 žingsnis: balsas

Balsas
Balsas
Balsas
Balsas
Balsas
Balsas

Prijunkite mikrofoną ir garsiakalbį prie skydo naudodami įžemintą garso kabelį. Centrinis signalo laidas turi eiti į garso pliuso gnybtus, o ekranavimas - į atitinkamus neigiamus skydo gnybtus. Šie kabeliai turi būti panašiai prijungti prie mikrofono ir garsiakalbio pusės.

Norėdami inicijuoti balso skambutį, įkelkite šį kodą:

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

KVIETIMAS // PUSLAPIO KODAS PAGRINDANT: // // //********************************************************************************** #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 // Buferio masyvo nustatymas char at_buffer [BUFFSIZ]; char buffidx; // Tinklo būsenos kintamieji int network_registered; int network_AT_ready; // Kodo būsenos kintamieji int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Laikys įeinantį simbolį iš nuoseklaus prievado. įeinanti anglis = 0; // Sukurkite „netikrą“nuoseklųjį prievadą. 2 kaištis yra Rx kaištis, 3 kaištis yra Tx kaištis. Programinė įrangaSerijinė ląstelė (2, 3); void setup () {// Inicijuokite „Arduino“nuoseklųjį prievadą derinimui. Serial.begin (9600); // Inicijuokite virtualų nuoseklųjį prievadą, kad galėtumėte kalbėtis su telefonu. ląstelė.pradis (9600); //Labas pasauli. Serial.println („Paleidžiamas SM5100B ryšys …“); vėlavimas (1000); // Nustatyti pradinę tinklo būseną network_registered = 0; network_AT_ready = 0; } // Skaityti AT eilutes iš korinio skydo void readATString (void) {char c; buffidx = 0; // pradėti nuo pradžios (x = 0; x 0) {c = cell.read (); jei (c == -1) {at_buffer [buffidx] = '\ 0'; grįžti; } if (c == '\ n') {tęsti; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; grįžti; } at_buffer [buffidx ++] = c; }}} // Apdorokite AT eilutes void ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("tinklo tinklas nepasiekiamas"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println („tinklas registruotas“); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println („tinklas AT paruoštas“); }} void loop () { / * Jei iškviečiamas pirmą kartą, kartokite, kol tinklas ir AT bus parengti * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (tinklas_registruotas == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Ieškokite gaunamo skambučio, jei (strstr (at_buffer, "+CPAS: 3")! = 0) {// Atsakykite į telefono ląstelę.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Vaizdas
Vaizdas

Ar jums tai buvo naudinga, smagu ar linksma? Sekite @madeineuphoria, kad pamatytumėte mano naujausius projektus.

Rekomenduojamas: