Taula de continguts:

Tutorial Arduino Cellular Shield: 9 passos (amb imatges)
Tutorial Arduino Cellular Shield: 9 passos (amb imatges)

Vídeo: Tutorial Arduino Cellular Shield: 9 passos (amb imatges)

Vídeo: Tutorial Arduino Cellular Shield: 9 passos (amb imatges)
Vídeo: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, Juliol
Anonim
Tutorial Arduino Cellular Shield
Tutorial Arduino Cellular Shield

L'Arduino Cellular Shield us permet fer trucades telefòniques mòbils i enviar missatges de text. El cervell d’aquest escut és l’SM5100B, que és un mòdul mòbil robust capaç de realitzar moltes de les tasques de la majoria de telèfons mòbils estàndard. Aquest escut requereix l’ús d’una targeta SIM per connectar-se a una xarxa cel·lular. El tutorial que es presenta a continuació és un tutorial sobre els ossos per inicialitzar l’escut i enviar i rebre missatges de text i trucades telefòniques. Per obtenir més informació sobre la funcionalitat del mòdul, comproveu els fulls de dades de la pàgina del producte de Sparkfun.

Pas 1: aneu a buscar coses

Aneu a buscar coses
Aneu a buscar coses

Necessitarà:

(x1) Escut cel·lular (x1) Capçaleres Arduino apilables (x1) Antena de banda quadrada (x1) Arduino Uno

(Tingueu en compte que alguns dels enllaços d’aquesta pàgina són enllaços d’afiliació. Això no canvia el cost de l’article. Reinverteixo els beneficis que rebi per fer nous projectes. Si voleu suggeriments per a proveïdors alternatius, permeteu-me saber.)

Pas 2: capçaleres de soldadura

Capçaleres de soldadura
Capçaleres de soldadura
Capçaleres de soldadura
Capçaleres de soldadura
Capçaleres de soldadura
Capçaleres de soldadura

Inseriu les capçaleres a l’escut i soldeu-les al lloc.

Pas 3: inseriu

Insereix
Insereix
Insereix
Insereix

Introduïu els passadors de capçalera als endolls de l'Arduino.

Pas 4: tornar a vendre

Revenda
Revenda

La connexió del cable d'antena al mòdul SM5100B no sol ser molt bona. Torneu a vendre cadascuna de les connexions del cable al mòdul per garantir la connectivitat.

Pas 5: connecteu l'antena

Connecteu l’antena
Connecteu l’antena
Connecteu l’antena
Connecteu l’antena

Introduïu l'antena al cable de l'antena.

Pas 6: Inseriu la targeta SIM

Inseriu la targeta SIM
Inseriu la targeta SIM
Inseriu la targeta SIM
Inseriu la targeta SIM
Inseriu la targeta SIM
Inseriu la targeta SIM
Inseriu la targeta SIM
Inseriu la targeta SIM

Inseriu la targeta SIM de manera segura a la presa de la targeta SIM.

Pas 7: inicialitzar

Inicialitzar
Inicialitzar

Executeu el codi següent a l'Arduino:

/*

SparkFun Cellular Shield: esbós de mostres de pas SparkFun Electronics escrit per Ryan Owens 3 / Descripció: aquest esbós està escrit per connectar un Arduino Duemillanove a un Cellular Shield de SparkFun Electronics. L'escut mòbil es pot comprar aquí: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 En aquest esbós es passen les ordres en sèrie d'un programa terminal al mòdul cel·lular SM5100B; i les respostes del mòdul cel·lular es publiquen al terminal. Es pot trobar més informació als comentaris de l’esbós. Per poder utilitzar el dispositiu, cal inserir una targeta SIM activada al suport de la targeta SIM del tauler. Aquest esbós utilitza la biblioteca NewSoftSerial escrita per Mikal Hart d'Arduiniana. La biblioteca es pot descarregar en aquest URL: https://arduiniana.org/libraries/NewSoftSerial/ Aquest codi es proporciona sota la llicència de reconeixement de Creative Commons. Podeu trobar més informació aquí: https://creativecommons.org/licenses/by/3.0/ (utilitzeu el nostre codi lliurement! Recordeu-nos de donar-nos el crèdit on sigui degut. Gràcies!) * / #Include // Inclou el NewSoftSerial biblioteca per enviar ordres de sèrie al mòdul cel·lular. #include // S'utilitza per a manipulacions de cadenes char incoming_char = 0; // Mantindrà el caràcter entrant del port sèrie. SoftwareSerial cell (2, 3); // Creeu un port sèrie "fals". El pin 2 és el pin Rx, el pin 3 és el pin Tx. void setup () {// Inicialitza els ports sèrie per a la comunicació. Serial.begin (9600); cell.begin (9600); //Comencem! Serial.println ("Inici de la comunicació SM5100B …"); } void loop () {// Si un caràcter entra del mòdul cel·lular … if (cell.available ()> 0) {incoming_char = cell.read (); // Obteniu el caràcter del port sèrie cel·lular. Serial.print (incoming_char); // Imprimiu el caràcter entrant al terminal. } // Si un personatge prové del terminal a l'Arduino … if (Serial.available ()> 0) {incoming_char = Serial.read (); // Obteniu el caràcter provinent de la terminal if (incoming_char == '~') // Si es tracta d’una tilde … incoming_char = 0x0D; // … converteix-lo en un retorn de carro else if (incoming_char == '^') // Si es tracta d'un cursor ascendent … incoming_char = 0x1A; // … converteix a ctrl-Z cell.print (incoming_char); // Envieu el caràcter al mòdul cel·lular. Serial.print (incoming_char); // Torneu a fer-lo ressò al terminal}} / * Referència Quck SM5100B per al conjunt d'ordres AT * Tret que s'indiqui el contrari, les ordres AT es finalitzen prement la tecla "enter". 1.) Assegureu-vos que s'ha seleccionat la banda GSM adequada per al vostre país. Per als Estats Units, la banda s’ha d’establir a 7. Per configurar la banda, utilitzeu aquesta ordre: AT + SBAND = 7 2.) Després d’encendre l’Arduino amb el blindatge instal·lat, comproveu que el mòdul llegeixi i reconegui la targeta SIM. Amb una finestra terrible oberta i configurada al port Arduino i 9600 buad, enceneu l'Arduino. La seqüència d'inici hauria de ser semblant a això: Iniciar la comunicació SM5100B … + SIND: 1 + SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 La comunicació amb el mòdul s'inicia després que es mostri la primera línia. La segona línia de comunicació, + SIND: 10, ens indica si el mòdul pot veure una targeta SIM. Si es detecta la targeta SIM, tots els altres camps són 1; si la targeta SIM no es detecta, tots els altres camps són 0. 3.) Espereu una connexió de xarxa abans de començar a enviar ordres. Després de la resposta + SIND: 10, el mòdul començarà automàticament a intentar connectar-se a una xarxa. Espereu fins que rebeu les següents repsones: + SIND: 11 + SIND: 3 + SIND: 4 La resposta + SIND del mòdul cel·lular indica l'estat dels mòduls. A continuació, es descriu ràpidament els significats de resposta: 0 targeta SIM retirada 1 targeta SIM inserida 2 melodia sonora 3 el mòdul AT està parcialment preparat 4 el mòdul AT està totalment llest 5 identificador de trucades publicades 6 trucades publicades l’identificador = 7 del servei de xarxa disponible per a una trucada d'emergència 8 La xarxa s'ha perdut 9 Àudio ACTIVAT 10 Mostra l'estat de cada agenda telefònica després de la frase d'inici 11 Registrat a la xarxa Després de registrar-vos a la xarxa podeu començar la interacció. A continuació, es mostren algunes ordres senzilles i útils per començar: Per fer una trucada: ordre AT: número de telèfon ATDxxxyyyzzzz amb el format: (xxx) aaaa-zzz proveu ---- cell.print ("ATDxxxyyyzzzz"); Si feu una trucada telefònica, assegureu-vos de fer referència al full de dades del dispositiu per connectar un micròfon i un altaveu al blindatge. Per enviar un missatge txt: ordre AT - AT + CMGF = 1 Aquesta ordre estableix el mode de missatge de text a "text". Ordre AT = AT + CMGS = "xxxyyyzzzz" (retorn del carro) 'Text a enviar' (CTRL + Z) Aquesta ordre és una mica confusa de descriure. El número de telèfon, en el format (xxx) yyy-zzzz, va dins de cometes dobles. Premeu "Intro" després de tancar les cotitzacions. A continuació, introduïu el text a enviar. Finalitzeu l'ordre AT enviant CTRL + Z. Aquest personatge no es pot enviar des del terminal d'Arduino. Utilitzeu un programa de terminal alternatiu com Hyperterminal, Tera Term, Bray Terminal o X-CTU. El mòdul SM5100B pot fer molt més que això. Consulteu els fulls de dades de la pàgina del producte per obtenir més informació sobre el mòdul. * /Obriu el port sèrie al terminal. En un Mac, això s'aconsegueix escrivint: screen /dev/tty.usbmodemfa131 9600 (substituïu tty.usbmodemfa131 per l'adreça serial del vostre Arduino) Espereu a veure la següent seqüència retornada: Inici de la comunicació SM5100B … + SIND: 3 + SIND: 4 + SIND: 11 (Si no es torna aquesta seqüència, comproveu els codis d'error que apareixen a la part inferior del codi anterior i depureu-los adequadament. És possible que hàgiu de configurar el mòdul per a l'ús nord-americà (vegeu més avall) abans que es registri a la xarxa (és a dir, + SIND 11)) Envieu les ordres següents al port sèrie: Envieu-ho per a ús nord-americà: AT + SBAND = 7 Definiu l'hora actual - aa / mm / dd: AT + CCLK = "13/05/15, 11: 02:00 "Enviar trucada de prova: ATD4155551212

Pas 8: missatges de text

Missatges de text
Missatges de text

Descarregueu i instal·leu SerialGSM a la vostra biblioteca Arduino.

Per enviar un missatge de text, visiteu el tutorial del mòdul mòbil Tronixstuff i utilitzeu el codi d'exemple 26.3:

Si voleu executar el codi d'exemple per rebre un text, connecteu un LED al pin 8 i poseu-lo en sèrie amb una resistència de 220 ohm a terra.

Per enviar un missatge de text, visiteu el tutorial del mòdul mòbil Tronixstuff i utilitzeu el codi d'exemple 26.5:

Envieu un missatge de text a una de les ordres següents al mòdul mòbil:

// encén el LED # a1

// apaga el LED # a0

Pas 9: veu

Veu
Veu
Veu
Veu
Veu
Veu

Connecteu un micròfon i un altaveu a l'escut mitjançant un cable d'àudio a terra. El cable de senyal central hauria d’anar als terminals d’àudio plus i el blindatge hauria d’anar als terminals negatius respectius de l’escut. Aquests cables s’han de connectar de manera similar al micròfon i als altaveus.

Per inicialitzar una trucada de veu, pengeu el codi següent:

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

// FER UNA CONVOCAT //RIA // // CODI DE MÀSTER BASAT EN: // // //********************************************************************************** #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 // Configureu buffer array char at_buffer [BUFFSIZ]; char buffidx; // Variables d'estat de xarxa int network_registered; int network_AT_ready; // Variables d'estat del codi int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Mantindrà el caràcter entrant del port sèrie. char incoming_char = 0; // Creeu un port sèrie "fals". El pin 2 és el pin Rx, el pin 3 és el pin Tx. SoftwareSerial cell (2, 3); void setup () {// Inicialitzeu el port sèrie Arduino per depurar-lo. Serial.begin (9600); // Inicialitzeu el port sèrie virtual per parlar amb el telèfon. cell.begin (9600); //Hola món. Serial.println ("Inici de la comunicació SM5100B …"); retard (1000); // Estableix l'estat inicial de la xarxa network_registered = 0; network_AT_ready = 0; } // Llegiu cadenes AT des de l'escut cel·lular voAT readATString (void) {char c; buffidx = 0; // Comenceu per començar (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; tornar; } if (c == '\ n') {continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; tornar; } at_buffer [buffidx ++] = c; }}} // Processar les cadenes AT void ProcessATString () {if (strstr (at_buffer, "+ SIND: 8")! = 0) {network_registered = 0; Serial.println ("Xarxa de xarxa no disponible"); } if (strstr (at_buffer, "+ SIND: 11")! = 0) {network_registered = 1; Serial.println ("xarxa registrada"); } if (strstr (at_buffer, "+ SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("xarxa AT Ready"); }} void loop () {/ * Si es crida per primera vegada, feu un bucle fins que la xarxa i AT estiguin preparats * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Cerqueu trucades entrants if (strstr (at_buffer, "+ CPAS: 3")! = 0) {// Respondre al telèfon cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Imatge
Imatge

Us ha semblat útil, divertit o entretingut? Segueix @madeineuphoria per veure els meus darrers projectes.

Recomanat: