Kazalo:
- 1. korak: Pojdite po stvari
- 2. korak: Spajkalne glave
- 3. korak: Vstavite
- 4. korak: Spajder
- 5. korak: pritrdite anteno
- 6. korak: Vstavite kartico SIM
- 7. korak: Inicializirajte
- 8. korak: Besedilna sporočila
- 9. korak: Glas
Video: Vadnica za Arduino Cellular Shield: 9 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Arduino Cellular Shield vam omogoča klicanje po mobilnih telefonih in pošiljanje besedilnih sporočil. Možgani tega ščita so SM5100B, ki je robusten celični modul, ki lahko opravlja številne naloge večine standardnih mobilnih telefonov. Ta ščit zahteva uporabo kartice SIM za povezavo z mobilnim omrežjem. Vadnica, ki sledi, je vadnica golih kosti za inicializacijo ščita ter pošiljanje in sprejemanje besedilnih sporočil ter telefonske klice. Če želite izvedeti več o funkcionalnosti modula, si oglejte podatkovne liste na strani izdelkov Sparkfun.
1. korak: Pojdite po stvari
Boste potrebovali:
(x1) Celični ščit (x1) Zložljive glave Arduino (x1) Štiripasovna antena (x1) Arduino Uno
(Upoštevajte, da so nekatere povezave na tej strani partnerske povezave. To za vas ne spremeni cene artikla. Vse prihodke, ki jih prejmem, reinvestiram v nove projekte. Če želite kakršne koli predloge za alternativne dobavitelje, mi dovolite veš.)
2. korak: Spajkalne glave
Glave vstavite v ščit in jih spajkajte na svoje mesto.
3. korak: Vstavite
Zatiči glave vstavite v vtičnice na Arduinu.
4. korak: Spajder
Povezava antenskega kabla z modulom SM5100B običajno ni dobra. Vsako od kabelskih povezav znova prilepite na modul, da zagotovite povezljivost.
5. korak: pritrdite anteno
Privijte anteno na antenski kabel.
6. korak: Vstavite kartico SIM
Kartico SIM varno vstavite v vtičnico za kartico SIM.
7. korak: Inicializirajte
Na Arduinu zaženite naslednjo kodo:
/*
SparkFun Cellular Shield - prehodna skica vzorca SparkFun Electronics Napisal Ryan Owens 3/Opis: Ta skica je napisana za vmesnik Arduino Duemillanove v Cellular Shield podjetja SparkFun Electronics. Celični ščit lahko kupite tukaj: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Na tej skici se serijski ukazi prenašajo iz terminalskega programa v celični modul SM5100B; in odgovori iz mobilnega modula so objavljeni v terminalu. Več informacij najdete v komentarjih skice. Aktivirano kartico SIM morate za uporabo naprave vstaviti v držalo za kartico SIM na plošči! Ta skica uporablja knjižnico NewSoftSerial, ki jo je napisal Mikal Hart iz Arduiniane. Knjižnico lahko prenesete s tega URL -ja: https://arduiniana.org/libraries/NewSoftSerial/ Ta koda je pod licenco za dodeljevanje avtorstva Creative Commons. Več informacij je na voljo tukaj: https://creativecommons.org/licenses/by/3.0/ (Uporabite našo kodo prosto! Prosimo, ne pozabite nam sporočiti, kje je treba. Hvala!) */#Include // Vključite NewSoftSerial knjižnico za pošiljanje serijskih ukazov v celični modul. #include // Uporablja se za manipulacije nizov char incoming_char = 0; // Zadrži dohodni znak iz zaporednih vrat. Programska opremaSerijska celica (2, 3); // Ustvarite "ponarejena" serijska vrata. Pin 2 je Rx pin, pin 3 je Tx pin. void setup () {// Inicializirajte serijska vrata za komunikacijo. Serial.begin (9600); cell.begin (9600); //Začnimo! Serial.println ("Zagon komunikacije SM5100B …"); } void loop () {// Če pride znak iz mobilnega modula … if (cell.available ()> 0) {incoming_char = cell.read (); // Pridobite znak iz mobilnih serijskih vrat. Serial.print (incoming_char); // Natisnite dohodni znak na terminal. } // Če znak prihaja iz terminala v Arduino… if (Serial.available ()> 0) {incoming_char = Serial.read (); // Pridobite znak, ki prihaja iz terminala if (incoming_char == '~') // Če je tilda … incoming_char = 0x0D; //… pretvori v vrnitev nosilca else if (incoming_char == '^') // Če gre za navpično črto… incoming_char = 0x1A; //… pretvori v ctrl-Z cell.print (dohodni_znak); // Pošljite znak v celični modul. Serial.print (incoming_char); // Pokličite ga nazaj v terminal}} / * SM5100B Quck Reference za nabor ukazov AT * Če ni drugače navedeno, se ukazi AT končajo s pritiskom na tipko 'enter'. 1.) Prepričajte se, da je za vašo državo izbran ustrezen pas GSM. Za ZDA mora biti pas nastavljen na 7. Če želite nastaviti pas, uporabite ta ukaz: AT+SBAND = 7 2.) Po vklopu Arduina z nameščenim ščitom preverite, ali modul bere in prepozna kartico SIM. Ko je okno odprto in nastavljeno na vrata Arduino in 9600 buad, vklopite Arduino. Zagonsko zaporedje bi moralo izgledati nekako tako: Zagon komunikacije SM5100B … +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Komunikacija z modulom se začne po prikazu prve vrstice. Druga vrstica komunikacije, +SIND: 10, nam pove, ali modul vidi kartico SIM. Če je kartica SIM zaznana, je vsako drugo polje 1; če kartica SIM ni zaznana, je vsako drugo polje 0. 3.) Počakajte na omrežno povezavo, preden začnete pošiljati ukaze. Po odzivu +SIND: 10 se bo modul samodejno začel povezovati v omrežje. Počakajte, da prejmete naslednje odgovore: +SIND: 11 +SIND: 3 +SIND: 4 Odziv +SIND iz mobilnega modula pove stanje modulov. Tu je hiter opis pomena odziva: 0 Odstranjena kartica SIM 1 Vstavljena kartica SIM 2 Melodija zvonjenja 3 Modul AT je delno pripravljen 4 Modul AT je popolnoma pripravljen 5 ID sproščenih klicev 6 Odpuščen klic, katerega ID = 7 Omrežna storitev je na voljo za klic v sili 8 Omrežje je izgubljeno 9 Zvok VKLOPLJEN 10 Prikaz stanja vsakega imenika po začetni frazi 11 Registrirano v omrežje Po registraciji v omrežju lahko začnete interakcijo. Tukaj je nekaj preprostih in uporabnih ukazov za začetek: Klicanje: Ukaz AT-ATDxxxyyyzzzz Telefonska številka v obliki: (xxx) yyy-zzz poskusite ---- cell.print ("ATDxxxyyyzzzz"); Če kličete, se obrnite na podatkovni list naprave, da priključite mikrofon in zvočnik na ščit. Če želite poslati sporočilo txt: Ukaz AT - AT+CMGF = 1 Ta ukaz nastavi način besedilnega sporočila na 'besedilo'. Ukaz AT = AT+CMGS = "xxxyyyzzzz" (vrnitev nosilca) 'Besedilo za pošiljanje' (CTRL+Z) Ta ukaz je rahlo zmeden za opis. Telefonska številka v obliki (xxx) yyy-zzzz je v dvojnih narekovajih. Ko zaprete ponudbe, pritisnite 'enter'. Nato vnesite besedilo, ki ga želite poslati. Ukaz AT zaključite tako, da pošljete CTRL+Z. Tega znaka ni mogoče poslati z Arduinovega terminala. Uporabite nadomestni terminalni program, kot so Hyperterminal, Tera Term, Bray Terminal ali X-CTU. Modul SM5100B lahko naredi veliko več kot to! Če želite izvedeti več o modulu, si oglejte podatkovne liste na strani izdelka.*/Odprite serijska vrata v terminalu. V računalniku Mac to dosežete z vnosom: screen /dev/tty.usbmodemfa131 9600 (zamenjajte tty.usbmodemfa131 s serijskim naslovom vašega Arduina) Počakajte, da se vrne naslednje zaporedje: Zagon komunikacije SM5100B … +SIND: 3 +SIND: 4 +SIND: 11 (Če se to zaporedje ne vrne, preverite kode napak, navedene na dnu zgornje kode, in ustrezno odpravite napake. Morda boste morali nastaviti modul za uporabo v Severni Ameriki - glejte spodaj - preden se registrira v omrežje (npr. +SIND 11)) Pošljite naslednje ukaze v serijska vrata: Pošljite to za severnoameriško uporabo: AT+SBAND = 7 Nastavite trenutni čas - yy/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Pošlji preskusni klic: ATD4155551212
8. korak: Besedilna sporočila
Prenesite in namestite SerialGSM v svojo knjižnico Arduino.
Če želite poslati besedilno sporočilo, obiščite vadnico za celični modul Tronixstuff in uporabite primer kode 26.3:
Če želite zagnati vzorčno kodo za prejemanje besedila, priključite LED na pin 8 in jo zaporedoma priključite z 220 ohmskim uporom na maso.
Če želite poslati besedilno sporočilo, obiščite vadnico za celični modul Tronixstuff in uporabite primer kode 26.5:
V mobilni telefon pošljite enega od naslednjih ukazov:
// prižge LED #a1
// izklopi LED #a0
9. korak: Glas
Z ozemljenim avdio kablom priključite mikrofon in zvočnik na ščit. Osrednja signalna žica mora iti na priključke audio plus, zaščita pa na ustrezne negativne sponke na ščitu. Ti kabli morajo biti podobno priključeni na strani mikrofona in zvočnikov.
Če želite inicializirati glasovni klic, naložite naslednjo kodo:
//**********************************************************************************
// KLICI // // KODA BUFERIRANJA NA OSNOVI: // // //********************************************************************************** #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 // Nastavitev vmesnega polja char at_buffer [BUFFSIZ]; char buffidx; // Spremenljivke stanja omrežja int network_registered; int network_AT_ready; // Spremenljivke stanja kode int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Zadrži dohodni znak iz zaporednih vrat. char incoming_char = 0; // Ustvarite "ponarejena" serijska vrata. Pin 2 je Rx pin, pin 3 je Tx pin. Programska opremaSerijska celica (2, 3); void setup () {// Inicializirajte serijska vrata Arduino za odpravljanje napak. Serial.begin (9600); // Inicializirajte navidezna serijska vrata za pogovor s telefonom. cell.begin (9600); //Pozdravljen, svet. Serial.println ("Zagon komunikacije SM5100B …"); zamuda (1000); // Nastavi začetno stanje omrežja network_registered = 0; network_AT_ready = 0; } // Branje nizov AT iz celičnega ščita void readATString (void) {char c; buffidx = 0; // pričnemo ob začetku za (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; vrnitev; } if (c == '\ n') {nadaljevanje; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; vrnitev; } at_buffer [buffidx ++] = c; }}} // Obdelaj nize AT void ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("omrežno omrežje ni na voljo"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("omrežje registrirano"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("omrežje AT Ready"); }} void loop () { / * Če se prvič pokliče, zankajte, dokler omrežje in AT nista pripravljena * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; medtem ko (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Poiščite dohodni klic if (strstr (at_buffer, "+CPAS: 3")! = 0) {// Odgovorite na telefonsko cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}
Se vam je zdelo to koristno, zabavno ali zabavno? Sledite @madeineuphoria in si oglejte moje najnovejše projekte.
Priporočena:
Upravljajte svoje LED z daljinskim upravljalnikom televizorja ?! -- Arduino IR vadnica: 5 korakov (s slikami)
Upravljajte svoje LED z daljinskim upravljalnikom televizorja ?! || Arduino IR Tutorial: V tem projektu vam bom pokazal, kako sem uporabil neuporabne gumbe na daljinskem upravljalniku televizorja za nadzor LED za televizorjem. To tehniko lahko uporabite tudi za nadzor vseh vrst stvari z malo urejanja kode. Govoril bom tudi o teoriji
BluBerriSix - TFT zaslon na dotik / Arduino Vadnica: 12 korakov (s slikami)
BluBerriSix - TFT zaslon na dotik / Arduino Vadnica: 2019 je 20. obletnica RIM Blackberry 850! Ta mali kanadski izum je spremenil način komuniciranja sveta. Davno ni več, vendar se njegova zapuščina nadaljuje! V tem navodilu se boste naučili uporabljati MCUfriend.com 2.4 " TFT diski
Arduino L293D Motor Driver Shield Vadnica: 8 korakov
Arduino L293D Motor Driver Shield Vadnica: To in številne druge neverjetne vaje lahko preberete na uradni spletni strani ElectroPeak Pregled V tej vadnici se boste naučili, kako poganjati enosmerne, koračne in servo motorje s ščitnikom motorja Arduino L293D. Kaj se boste naučili: Splošne informacije
Arduino GPS Shield Vadnica: Kalkulator razdalje: 5 korakov
Arduino GPS Shield Vadnica: Kalkulator razdalje: GPS ali sistem globalnega pozicioniranja je satelitski radijsko-navigacijski sistem, ki vam omogoča, da ugotovite svojo lokacijo in vas vodi po drugih lokacijah po dobro znanem in vnaprej določenem zemljevidu, kot so Google zemljevidi, in v svetu Arduino, ti
Sparkfun CAN Bus Shield Vadnica: 6 korakov
Sparkfun CAN Bus Shield Vadnica: Prejemajte in prenašajte sporočila z uporabo Sparkfun CAN Bus Shield Kaj je CAN? Vodilo CAN je razvil BOSCH kot sistem za pošiljanje sporočil z več masterji, ki določa največjo hitrost signalizacije 1 megabit na sekundo (bps). Za razliko od tradicionalnega omrežja