Cuprins:

Tutorial Arduino Cellular Shield: 9 pași (cu imagini)
Tutorial Arduino Cellular Shield: 9 pași (cu imagini)

Video: Tutorial Arduino Cellular Shield: 9 pași (cu imagini)

Video: Tutorial Arduino Cellular Shield: 9 pași (cu imagini)
Video: ESP32 Tutorial 22 - Feeling The light using LED Arduino | SunFounder's ESP32 IoT Learnig kit 2024, Iulie
Anonim
Tutorial Arduino Cellular Shield
Tutorial Arduino Cellular Shield

Arduino Cellular Shield vă permite să efectuați apeluri telefonice celulare și să trimiteți mesaje text. Creierul acestui scut este SM5100B, care este un modul celular robust, capabil să îndeplinească multe dintre sarcinile celor mai multe telefoane mobile standard. Acest ecran necesită utilizarea unei cartele SIM pentru a vă conecta la o rețea celulară. Tutorialul care urmează este un tutorial pentru oasele goale pentru inițializarea scutului și trimiterea și primirea de mesaje text și apeluri telefonice. Pentru a afla mai multe despre funcționalitatea modulului, asigurați-vă că consultați fișele tehnice de pe pagina produsului Sparkfun.

Pasul 1: Du-te la lucruri

Du-te și primește lucruri
Du-te și primește lucruri

Vei avea nevoie:

(x1) Scut celular (x1) Anteturi Arduino stivuibile (x1) Antena cu bandă quad (x1) Arduino Uno

(Rețineți că unele dintre linkurile de pe această pagină sunt linkuri afiliate. Acest lucru nu schimbă costul articolului pentru dvs. Reinvestesc orice încasări primesc în realizarea de noi proiecte. Dacă doriți sugestii pentru furnizori alternativi, vă rog să-mi permiteți știu.)

Pasul 2: anteturi de lipit

Anteturi de lipit
Anteturi de lipit
Anteturi de lipit
Anteturi de lipit
Anteturi de lipit
Anteturi de lipit

Introduceți anteturile în scut și lipiți-le în loc.

Pasul 3: introduceți

Introduce
Introduce
Introduce
Introduce

Introduceți știfturile antet în prizele de pe Arduino.

Pasul 4: Resolder

Resolder
Resolder

Conexiunea cablului antenei la modulul SM5100B nu este de obicei foarte bună. Resoldați fiecare dintre conexiunile cablului la modul pentru a asigura conectivitatea.

Pasul 5: Atașați antena

Atașați antena
Atașați antena
Atașați antena
Atașați antena

Infilați antena la cablul antenei.

Pasul 6: Introduceți cartela SIM

Introduceți cartela SIM
Introduceți cartela SIM
Introduceți cartela SIM
Introduceți cartela SIM
Introduceți cartela SIM
Introduceți cartela SIM
Introduceți cartela SIM
Introduceți cartela SIM

Introduceți cartela SIM în siguranță în mufa cartelei SIM.

Pasul 7: inițializați

Inițializați
Inițializați

Rulați următorul cod pe Arduino:

/*

SparkFun Cellular Shield - Schiță de eșantion de trecere SparkFun Electronics Scris de Ryan Owens 3 / Descriere: Această schiță este scrisă pentru a interfața un Arduino Duemillanove cu un Cellular Shield de la SparkFun Electronics. Scutul celular poate fi achiziționat aici: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 În această schiță, comenzile seriale sunt transmise de la un program terminal la modulul celular SM5100B; iar răspunsurile de la modulul celular sunt postate în terminal. Mai multe informații se găsesc în comentariile schiței. Pentru a utiliza dispozitivul, trebuie să introduceți o cartelă SIM activată în suportul cartelei SIM de pe tablă! Această schiță utilizează biblioteca NewSoftSerial scrisă de Mikal Hart din Arduiniana. Biblioteca poate fi descărcată la această adresă URL: https://arduiniana.org/libraries/NewSoftSerial/ Acest cod este furnizat sub Licența de atribuire Creative Commons. Mai multe informații pot fi găsite aici: https://creativecommons.org/licenses/by/3.0/ (Folosiți codul nostru în mod liber! Vă rugăm să nu uitați să ne acordați credit acolo unde trebuie. Mulțumesc!) * / #Include // Includeți NewSoftSerial bibliotecă pentru a trimite comenzi seriale către modulul celular. #include // Folosit pentru manipulări de șiruri char incoming_char = 0; // Va reține caracterul de intrare din portul serial. SoftwareSerial cell (2, 3); // Creați un port serial „fals”. Pinul 2 este pinul Rx, pinul 3 este pinul Tx. void setup () {// Inițializați porturile seriale pentru comunicare. Serial.begin (9600); cell.begin (9600); //Să începem! Serial.println („Pornirea comunicării SM5100B …”); } void loop () {// Dacă un caracter vine din modulul celular … if (cell.available ()> 0) {incoming_char = cell.read (); // Obțineți caracterul din portul serial celular. Serial.print (incoming_char); // Imprimați caracterul primit pe terminal. } // Dacă un caracter vine de la terminal către Arduino … if (Serial.available ()> 0) {incoming_char = Serial.read (); // Obțineți caracterul care vine de la terminal dacă (incoming_char == '~') // Dacă este o tilde … incoming_char = 0x0D; // … convertiți într-o cărucior returnează altfel dacă (incoming_char == '^') // Dacă este un cursor în sus … incoming_char = 0x1A; // … convertiți la ctrl-Z cell.print (incoming_char); // Trimiteți caracterul la modulul celular. Serial.print (incoming_char); // Echo-l înapoi la terminal}} / * Referință Quck SM5100B pentru setul de comenzi AT * Dacă nu se specifică altfel, comenzile AT sunt încheiate prin apăsarea tastei „enter”. 1.) Asigurați-vă că banda GSM adecvată a fost selectată pentru țara dvs. Pentru SUA banda trebuie setată la 7. Pentru a seta banda, utilizați această comandă: AT + SBAND = 7 2.) După ce ați alimentat Arduino cu ecranul instalat, verificați dacă modulul citește și recunoaște cartela SIM. Cu o fereastră teribilă deschisă și setată la portul Arduino și 9600 buad, porniți Arduino. Secvența de pornire ar trebui să arate cam așa: Pornirea comunicării SM5100B … + SIND: 1 + SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, „ME”, 1 Comunicarea cu modulul începe după afișarea primei linii. A doua linie de comunicație, + SIND: 10, ne spune dacă modulul poate vedea o cartelă SIM. Dacă cartela SIM este detectată, fiecare alt câmp este 1; dacă cartela SIM nu este detectată, fiecare alt câmp este 0. 3.) Așteptați o conexiune la rețea înainte de a începe să trimiteți comenzi. După răspunsul + SIND: 10 modulul va începe automat să încerce să se conecteze la o rețea. Așteptați până când primiți următoarele repsone: + SIND: 11 + SIND: 3 + SIND: 4 Răspunsul + SIND din modulul celular indică starea modulelor. Iată o scurtare rapidă a semnificațiilor răspunsului: 0 Cartelă SIM scoasă 1 Cartelă SIM introdusă 2 Melodie sonerie 3 Modulul AT este parțial gata 4 Modulul AT este complet gata 5 ID-ul apelurilor lansate 6 Apel lansat al cărui ID = 7 Serviciul de rețea este disponibil pentru un apel de urgență 8 Rețeaua este pierdută 9 Audio PORNIT 10 Afișează starea fiecărei agende după expresia inițială 11 Înregistrat în rețea După înregistrarea în rețea puteți începe interacțiunea. Iată câteva comenzi simple și utile pentru a începe: Pentru a efectua un apel: comanda AT - ATDxxxyyyzzzz Număr de telefon cu formatul: (xxx) aaaa-zzz încercați ---- cell.print ("ATDxxxyyyzzzz"); Dacă efectuați un apel telefonic, asigurați-vă că faceți referire la fișa tehnică a dispozitivelor pentru a conecta un microfon și difuzor la ecran. Pentru a trimite un mesaj txt: comanda AT - AT + CMGF = 1 Această comandă setează modul de mesaj text la „text”. Comandă AT = AT + CMGS = "xxxyyyzzzz" (returnare transport) 'Text de trimis' (CTRL + Z) Această comandă este ușor confuză pentru a descrie. Numărul de telefon, în format (xxx) yyy-zzzz intră în ghilimele duble. Apăsați „enter” după închiderea ofertelor. Apoi introduceți textul de trimis. Terminați comanda AT trimițând CTRL + Z. Acest personaj nu poate fi trimis de la terminalul Arduino. Utilizați un program de terminal alternativ precum Hyperterminal, Tera Term, Bray Terminal sau X-CTU. Modulul SM5100B poate face mult mai mult decât atât! Consultați fișele tehnice de pe pagina produsului pentru a afla mai multe despre modul. * /Deschideți portul serial din terminal. Pe un Mac, acest lucru se realizează tastând: screen /dev/tty.usbmodemfa131 9600 (înlocuiți tty.usbmodemfa131 cu adresa serială Arduino) Așteptați să vedeți următoarea secvență returnată: Pornirea comunicării SM5100B … + SIND: 3 + SIND: 4 + SIND: 11 (Dacă această secvență nu este returnată verificați codurile de eroare enumerate în partea de jos a codului de mai sus și depanați corect. Poate fi necesar să setați modulul pentru utilizarea în America de Nord - vezi mai jos - înainte ca acesta să se înregistreze în rețea (adică + SIND 11)) Trimiteți următoarele comenzi la portul serial: Trimiteți acest lucru pentru utilizare în America de Nord: AT + SBAND = 7 Setați ora curentă - aa / ll / zz: AT + CCLK = "13/05/15, 11: 02:00 „Trimiteți un apel de testare: ATD4155551212

Pasul 8: Mesaje text

Mesaje text
Mesaje text

Descărcați și instalați SerialGSM în biblioteca Arduino.

Pentru a trimite un mesaj text, vizitați tutorialul modulului celular Tronixstuff și utilizați codul de exemplu 26.3:

Dacă doriți să rulați exemplul de cod pentru a primi un text, conectați un LED la pinul 8 și puneți-l în serie cu un rezistor de 220 ohm la masă.

Pentru a trimite un mesaj text, vizitați tutorialul modulului Tronixstuff și utilizați codul de exemplu 26.5:

Trimiteți textului una dintre următoarele comenzi la modulul dvs. celular:

// aprinde LED-ul # a1

// stinge LED-ul # a0

Pasul 9: voce

Voce
Voce
Voce
Voce
Voce
Voce

Conectați un microfon și difuzor la ecran folosind un cablu audio împământat. Cablul de semnal central ar trebui să meargă la terminalele audio plus și ecranarea ar trebui să meargă la bornele negative respective de pe ecran. Aceste cabluri ar trebui conectate în mod similar la partea microfonului și a difuzoarelor.

Pentru a inițializa un apel vocal, încărcați următorul cod:

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

// REALIZAȚI UN APEL // // COD DE BUFERARE PE BAZĂ: // // //********************************************************************************** #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 // Configurare buffer array char at_buffer [BUFFSIZ]; char buffidx; // Variabile de stare ale rețelei int network_registered; int network_AT_ready; // Variabilele de stare a codului int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Va reține caracterul de intrare din portul serial. char incoming_char = 0; // Creați un port serial „fals”. Pinul 2 este pinul Rx, pinul 3 este pinul Tx. SoftwareSerial cell (2, 3); void setup () {// Inițializați portul serial Arduino pentru depanare. Serial.begin (9600); // Inițializați portul serial virtual pentru a vorbi cu telefonul. cell.begin (9600); //Salut Lume. Serial.println („Pornirea comunicării SM5100B …”); întârziere (1000); // Setați starea inițială a rețelei network_registered = 0; network_AT_ready = 0; } // Citiți șiruri AT din scutul celular void readATString (void) {char c; buffidx = 0; // începe la începutul pentru (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; întoarcere; } if (c == '\ n') {continuare; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; întoarcere; } at_buffer [buffidx ++] = c; }}} // Procesați șirurile AT void ProcessATString () {if (strstr (at_buffer, "+ SIND: 8")! = 0) {network_registered = 0; Serial.println ("Rețeaua de rețea nu este disponibilă"); } if (strstr (at_buffer, "+ SIND: 11")! = 0) {network_registered = 1; Serial.println ("rețea înregistrată"); } if (strstr (at_buffer, "+ SIND: 4")! = 0) {network_AT_ready = 1; Serial.println („rețea AT Ready”); }} void loop () {/ * Dacă este apelat pentru prima dată, buclați până când rețeaua și AT sunt gata * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Căutați apelurile primite if (strstr (at_buffer, "+ CPAS: 3")! = 0) {// Răspundeți la telefonul cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Imagine
Imagine

Ați găsit acest lucru util, distractiv sau distractiv? Urmăriți @madeineuphoria pentru a vedea ultimele mele proiecte.

Recomandat: