Turinys:
- 1 veiksmas: eikite gauti daiktų
- 2 žingsnis: litavimo antraštės
- 3 žingsnis: įdėkite
- 4 žingsnis: rezoliucija
- 5 žingsnis: pritvirtinkite anteną
- 6 veiksmas: įdėkite SIM kortelę
- 7 žingsnis: inicijuokite
- 8 veiksmas: teksto pranešimai
- 9 žingsnis: balsas
Video: „Arduino Cellular Shield“pamoka: 9 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
„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ų
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
Įdėkite antraštes į skydą ir lituokite jas į vietą.
3 žingsnis: įdėkite
Įdėkite antraštės kaiščius į „Arduino“lizdus.
4 žingsnis: rezoliucija
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ą prie antenos kabelio.
6 veiksmas: įdėkite SIM kortelę
Saugiai įstatykite SIM kortelę į SIM kortelės lizdą.
7 žingsnis: inicijuokite
„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
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
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; }}}
Ar jums tai buvo naudinga, smagu ar linksma? Sekite @madeineuphoria, kad pamatytumėte mano naujausius projektus.
Rekomenduojamas:
Valdykite savo šviesos diodus naudodami televizoriaus nuotolinio valdymo pultą ?! -- „Arduino IR“pamoka: 5 žingsniai (su nuotraukomis)
Valdykite savo šviesos diodus naudodami televizoriaus nuotolinio valdymo pultą ?! || „Arduino IR“pamoka: Šiame projekte parodysiu, kaip pertvarkiau nenaudingus televizoriaus nuotolinio valdymo pulto mygtukus, kad galėčiau valdyti šviesos diodus, esančius už televizoriaus. Taip pat galite naudoti šią techniką, norėdami valdyti įvairius dalykus, šiek tiek redaguodami kodą. Taip pat šiek tiek papasakosiu apie teoriją
„Arduino Uno“pamoka Nr. 2 - „Buzzer“daina: 4 žingsniai (su nuotraukomis)
„Arduino Uno“pamoka Nr. 2 - „Buzzer“daina: Sveiki visi, nes pamačiau, kad mano pirmoji pamoka buvo geras lošimas, nusprendžiau, kad padarysiu jums daugybę „Arduino Uno“pamokų
„Arduino“RFID užrakto pamoka: 6 žingsniai (su nuotraukomis)
„Arduino“RFID užrakto pamoka: Mieli draugai, sveiki atvykę į kitą „Instructable“. Tai Nikas iš edu8s.tv ir šiandien mes mokysimės naudoti šį RFID skaitytuvą su „Arduino“, kad sukurtume paprastą užrakto sistemą. Pirmą kartą su „Arduino“naudosime RFID žymes
„Arduino“pirštų atspaudų jutiklio pamoka: 6 žingsniai (su nuotraukomis)
„Arduino“pirštų atspaudų jutiklio pamoka: Mieli draugai, kviečiame į kitą pamoką! Šiandien mes sukursime įdomų „Arduino“projektą, kuriame naudojamas pirštų atspaudų jutiklio modulis. Nedelsdami pradėkime! Visada norėjau išbandyti pirštų atspaudų jutiklio modulį
„Arduino Servo“pamoka: 3 žingsniai (su nuotraukomis)
„Arduino Servo“pamoka: Šiandien jūs išmoksite naudoti servo variklius su „Arduino“. Labai svarbus įgūdis visiems, norintiems tobulėti namų automatikos ir elektronikos srityse. Kai baigsite projektą, tiesiog paspauskite mygtuką ir stebėkite, kaip servo sistema sukasi atsitiktinai