Tabla de contenido:

Tutorial de Arduino Cellular Shield: 9 pasos (con imágenes)
Tutorial de Arduino Cellular Shield: 9 pasos (con imágenes)

Video: Tutorial de Arduino Cellular Shield: 9 pasos (con imágenes)

Video: Tutorial de Arduino Cellular Shield: 9 pasos (con imágenes)
Video: ⚡ 01 | SIM900 usando arduino UNO | Encendido por software 2024, Noviembre
Anonim
Tutorial de Arduino Cellular Shield
Tutorial de Arduino Cellular Shield

El Arduino Cellular Shield le permite realizar llamadas de teléfono celular y enviar mensajes de texto. El cerebro de este escudo es el SM5100B, que es un módulo celular robusto capaz de realizar muchas de las tareas de la mayoría de los teléfonos celulares estándar. Este escudo requiere el uso de una tarjeta SIM para conectarse a una red celular. El tutorial que sigue es un tutorial básico para inicializar el escudo y enviar y recibir mensajes de texto y llamadas telefónicas. Para obtener más información sobre la funcionalidad del módulo, asegúrese de consultar las hojas de datos en la página del producto de Sparkfun.

Paso 1: Ve a buscar cosas

Ir a buscar cosas
Ir a buscar cosas

Necesitará:

(x1) Escudo celular (x1) Encabezados Arduino apilables (x1) Antena de banda cuádruple (x1) Arduino Uno

(Tenga en cuenta que algunos de los enlaces en esta página son enlaces de afiliados. Esto no cambia el costo del artículo para usted. Reinvierto los ingresos que recibo en la realización de nuevos proyectos. Si desea alguna sugerencia de proveedores alternativos, permítame saber.)

Paso 2: encabezados de soldadura

Encabezados de soldadura
Encabezados de soldadura
Encabezados de soldadura
Encabezados de soldadura
Encabezados de soldadura
Encabezados de soldadura

Inserte los encabezados en el escudo y suéldelos en su lugar.

Paso 3: Insertar

Insertar
Insertar
Insertar
Insertar

Inserte los pines del encabezado en los enchufes del Arduino.

Paso 4: Resolder

Resolder
Resolder

La conexión del cable de la antena al módulo SM5100B generalmente no es muy buena. Vuelva a soldar cada una de las conexiones del cable al módulo para garantizar la conectividad.

Paso 5: coloque la antena

Coloque la antena
Coloque la antena
Coloque la antena
Coloque la antena

Pase la antena al cable de la antena.

Paso 6: inserte la tarjeta SIM

Insertar tarjeta SIM
Insertar tarjeta SIM
Insertar tarjeta SIM
Insertar tarjeta SIM
Insertar tarjeta SIM
Insertar tarjeta SIM
Insertar tarjeta SIM
Insertar tarjeta SIM

Inserte la tarjeta SIM de forma segura en el zócalo de la tarjeta SIM.

Paso 7: inicializar

Inicializar
Inicializar

Ejecute el siguiente código en Arduino:

/*

SparkFun Cellular Shield - Bosquejo de muestra de paso a través SparkFun Electronics Escrito por Ryan Owens 3 / Descripción: Este bosquejo está escrito para conectar un Arduino Duemillanove a un Cellular Shield de SparkFun Electronics. El protector celular se puede comprar aquí: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 En este esquema, los comandos seriales se pasan desde un programa de terminal al módulo celular SM5100B; y las respuestas del módulo celular se publican en la terminal. Más información se encuentra en los comentarios del boceto. ¡Se debe insertar una tarjeta SIM activada en el soporte de la tarjeta SIM en la placa para poder usar el dispositivo! Este boceto utiliza la biblioteca NewSoftSerial escrita por Mikal Hart de Arduiniana. La biblioteca se puede descargar en esta URL: https://arduiniana.org/libraries/NewSoftSerial/ Este código se proporciona bajo la licencia de atribución Creative Commons. Puede encontrar más información aquí: https://creativecommons.org/licenses/by/3.0/ (¡Use nuestro código libremente! Por favor, recuerde darnos el crédito que corresponde. ¡Gracias!) * / #Include // Incluya el NewSoftSerial biblioteca para enviar comandos en serie al módulo celular. #include // Usado para manipulaciones de cadenas char entrante_char = 0; // Contendrá el carácter entrante del puerto serie. Software Celda en serie (2, 3); // Crea un puerto serie 'falso'. El pin 2 es el pin Rx, el pin 3 es el pin Tx. void setup () {// Inicializa los puertos seriales para la comunicación. Serial.begin (9600); cell.begin (9600); //¡Empecemos! Serial.println ("Iniciando comunicación SM5100B…"); } void loop () {// Si un carácter viene del módulo celular… if (cell.available ()> 0) {entrante_char = cell.read (); // Obtiene el carácter del puerto serie celular. Serial.print (entrante_char); // Imprime el carácter entrante en la terminal. } // Si un personaje viene de la terminal al Arduino… if (Serial.available ()> 0) {entrante_char = Serial.read (); // Obtiene el carácter que viene de la terminal if (entrante_char == '~') // Si es una tilde… entrante_char = 0x0D; //… convertir a un retorno de carro else if (entrante_char == '^') // Si es un signo de intercalación hacia arriba… entrante_char = 0x1A; //… convertir a ctrl-Z cell.print (entrante_char); // Envía el personaje al módulo celular. Serial.print (entrante_char); // Repítelo al terminal}} / * Referencia rápida SM5100B para el conjunto de comandos AT * A menos que se indique lo contrario, los comandos AT finalizan presionando la tecla 'enter'. 1.) Asegúrese de que se haya seleccionado la banda GSM adecuada para su país. Para los EE. UU., La banda debe establecerse en 7. Para establecer la banda, use este comando: AT + SBAND = 7 2.) Después de encender el Arduino con el escudo instalado, verifique que el módulo lee y reconoce la tarjeta SIM. Con una ventana terimal abierta y configurada en el puerto Arduino y 9600 buad, encienda el Arduino. La secuencia de inicio debería verse así: Iniciando comunicación SM5100B… + SIND: 1 + SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 La comunicación con el módulo comienza después de que se muestra la primera línea. La segunda línea de comunicación, + SIND: 10, nos dice si el módulo puede ver una tarjeta SIM. Si se detecta la tarjeta SIM, cada campo es un 1; si no se detecta la tarjeta SIM, cada campo es un 0. 3.) Espere una conexión de red antes de comenzar a enviar comandos. Después de la respuesta + SIND: 10, el módulo comenzará automáticamente a intentar conectarse a una red. Espere hasta que reciba las siguientes respuestas: + SIND: 11 + SIND: 3 + SIND: 4 La respuesta + SIND del módulo celular le indica el estado de los módulos. Aquí hay un resumen rápido de los significados de la respuesta: 0 Tarjeta SIM extraída 1 Tarjeta SIM insertada 2 Melodía de timbre 3 El módulo AT está parcialmente listo 4 El módulo AT está totalmente listo 5 ID de llamadas liberadas 6 Llamada liberada cuyo ID = 7 El servicio de red está disponible para una llamada de emergencia 8 La red se pierde 9 Audio ENCENDIDO 10 Muestra el estado de cada directorio telefónico después de la frase de inicio 11 Registrado en la red Después de registrarse en la red, puede comenzar la interacción. Aquí hay algunos comandos simples y útiles para comenzar: Para hacer una llamada: Comando AT - ATDxxxyyyzzzz Número de teléfono con el formato: (xxx) yyy-zzz try ---- cell.print ("ATDxxxyyyzzzz"); Si realiza una llamada telefónica, asegúrese de consultar la hoja de datos del dispositivo para conectar un micrófono y un altavoz al protector. Para enviar un mensaje de texto: Comando AT - AT + CMGF = 1 Este comando establece el modo de mensaje de texto en 'texto'. Comando AT = AT + CMGS = "xxxyyyzzzz" (retorno de carro) 'Texto para enviar' (CTRL + Z) Este comando es un poco confuso de describir. El número de teléfono, en el formato (xxx) yyy-zzzz, va entre comillas dobles. Presione 'enter' después de cerrar las cotizaciones. Luego ingrese el texto que se enviará. Finalice el comando AT enviando CTRL + Z. Este carácter no se puede enviar desde la terminal de Arduino. Utilice un programa de terminal alternativo como Hyperterminal, Tera Term, Bray Terminal o X-CTU. ¡El módulo SM5100B puede hacer mucho más que esto! Consulte las hojas de datos en la página del producto para obtener más información sobre el módulo. * /Abra el puerto serie en el terminal. En una Mac, esto se logra escribiendo: screen /dev/tty.usbmodemfa131 9600 (reemplace tty.usbmodemfa131 con la dirección serial de su Arduino) Espere a ver la siguiente secuencia regresada: Iniciando comunicación SM5100B… + SIND: 3 + SIND: 4 + SIND: 11 (Si no se devuelve esta secuencia, verifique los códigos de error que se enumeran en la parte inferior del código anterior y depure adecuadamente. Es posible que deba configurar el módulo para uso en América del Norte, consulte a continuación, antes de que se registre en la red (es decir, + SIND 11)) Envíe los siguientes comandos al puerto serie: Envíe esto para uso en Norteamérica: AT + SBAND = 7 Establezca la hora actual - aa / mm / dd: AT + CCLK = "13/05/15, 11: 02:00 "Enviar llamada de prueba: ATD4155551212

Paso 8: mensajes de texto

Mensajes de texto
Mensajes de texto

Descargue e instale SerialGSM en su biblioteca Arduino.

Para enviar un mensaje de texto, visite el tutorial del módulo celular Tronixstuff y use el código de ejemplo 26.3:

Si desea ejecutar el código de ejemplo para recibir un texto, conecte un LED al pin 8 y colóquelo en serie con una resistencia de 220 ohmios a tierra.

Para enviar un mensaje de texto, visite el tutorial del módulo celular Tronixstuff y use el código de ejemplo 26.5:

Envía uno de los siguientes comandos a tu módulo celular:

// enciende el LED # a1

// apaga el LED # a0

Paso 9: Voz

Voz
Voz
Voz
Voz
Voz
Voz

Conecte un micrófono y un altavoz al blindaje mediante un cable de audio con conexión a tierra. El cable de señal central debe ir a los terminales de audio plus y el blindaje debe ir a los respectivos terminales negativos en el blindaje. Estos cables deben conectarse de manera similar en el lado del micrófono y del altavoz.

Para inicializar una llamada de voz, cargue el siguiente código:

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

// HACER UNA LLAMADA // // CÓDIGO DE BÚFER BASADO 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 // Configure la matriz de búfer char at_buffer [BUFFSIZ]; char buffidx; // Variables de estado de la red int network_registered; int network_AT_ready; // Variables de estado de código int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Contendrá el carácter entrante del puerto serie. char entrante_char = 0; // Crea un puerto serie 'falso'. El pin 2 es el pin Rx, el pin 3 es el pin Tx. Software Celda en serie (2, 3); void setup () {// Inicializa el puerto serie de Arduino para la depuración. Serial.begin (9600); // Inicializa el puerto serie virtual para hablar con el teléfono. cell.begin (9600); //Hola Mundo. Serial.println ("Iniciando comunicación SM5100B…"); retraso (1000); // Establecer el estado inicial de la red network_registered = 0; network_AT_ready = 0; } // Leer cadenas AT del escudo celular void readATString (void) {char c; buffidx = 0; // empezar al principio para (x = 0; x 0) {c = celda.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; regreso; } if (c == '\ n') {continuar; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; regreso; } at_buffer [buffidx ++] = c; }}} // Procesar las cadenas AT void ProcessATString () {if (strstr (at_buffer, "+ SIND: 8")! = 0) {network_registered = 0; Serial.println ("red de red no disponible"); } if (strstr (at_buffer, "+ SIND: 11")! = 0) {network_registered = 1; Serial.println ("red registrada"); } if (strstr (at_buffer, "+ SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("red AT Ready"); }} void loop () {/ * Si se llama por primera vez, repite hasta que la red y el AT estén listos * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Busque la llamada entrante if (strstr (at_buffer, "+ CPAS: 3")! = 0) {// Responda el teléfono cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Imagen
Imagen

¿Te pareció útil, divertido o entretenido? Siga a @madeineuphoria para ver mis últimos proyectos.

Recomendado: