Kazalo:

Vadnica za Arduino Cellular Shield: 9 korakov (s slikami)
Vadnica za Arduino Cellular Shield: 9 korakov (s slikami)

Video: Vadnica za Arduino Cellular Shield: 9 korakov (s slikami)

Video: Vadnica za Arduino Cellular Shield: 9 korakov (s slikami)
Video: Программируем ардуино с телефона. Program arduino with smartphone 2024, Julij
Anonim
Vadnica za Arduino Cellular Shield
Vadnica za Arduino Cellular Shield

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

Pojdi po stvari
Pojdi 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

Spajkalne glave
Spajkalne glave
Spajkalne glave
Spajkalne glave
Spajkalne glave
Spajkalne glave

Glave vstavite v ščit in jih spajkajte na svoje mesto.

3. korak: Vstavite

Vstavi
Vstavi
Vstavi
Vstavi

Zatiči glave vstavite v vtičnice na Arduinu.

4. korak: Spajder

Spajder
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

Pritrdite anteno
Pritrdite anteno
Pritrdite anteno
Pritrdite anteno

Privijte anteno na antenski kabel.

6. korak: Vstavite kartico SIM

Vstavite kartico SIM
Vstavite kartico SIM
Vstavite kartico SIM
Vstavite kartico SIM
Vstavite kartico SIM
Vstavite kartico SIM
Vstavite kartico SIM
Vstavite kartico SIM

Kartico SIM varno vstavite v vtičnico za kartico SIM.

7. korak: Inicializirajte

Inicializirajte
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

Tekstovna sporočila
Tekstovna 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

Glas
Glas
Glas
Glas
Glas
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; }}}

Slika
Slika

Se vam je zdelo to koristno, zabavno ali zabavno? Sledite @madeineuphoria in si oglejte moje najnovejše projekte.

Priporočena: