Arduino _ SMS

4
ATENCIÓN: Está página está desactualizada, se mantiene en el servidor de Arduino.cc a título ilustrativo y cómo documentación, sin embargo, no es posible editarla y no se harán modificaciones de la misma. Es posible que haya caracteres que no se muestren de la forma apropiada, no se hará nada por editarlos Para más información visite http://arduino.es --> EN CONSTRUCCIÓN <-- Envía y recibe SMS-s mediante un modem GSM Para la realización de éste ejemplo he utilizado un modem GSM Siemens MC35 Terminal que dispone de un interfaz serie. La conexión a establecer para comunicarse con Arduino, según la data sheet, debe ser una conexión serie a 9600 bps (8 data bits, no parity, 1 stop bit, non-inverted). Este ejemplo es válido para cualquier modem GSM que cumpla la especificación ETSI 07.05 del estándar GSM, es decir, casi todos. Se puede reutilizar el código con cualquier otro modem , bien como éste ... un terminal completo ... o solamente el módulo. Figura 1. Modem GSM Siemens MC35 Terminal Figura 2. Esquema de conexionado a una una placa Arduino serie. Arduino : SMS http://www.arduino.cc/es_old/Tutoriales/SMS 1 de 4 17/07/2012 1:14

description

ARDUINO

Transcript of Arduino _ SMS

Page 1: Arduino _ SMS

ATENCIÓN: Está página está desactualizada, se mantiene en el servidor de Arduino.cc a título ilustrativo y cómo documentación, sin embargo,no es posible editarla y no se harán modificaciones de la misma. Es posible que haya caracteres que no se muestren de la forma apropiada, nose hará nada por editarlos

Para más información visite http://arduino.es

--> EN CONSTRUCCIÓN <--

Envía y recibe SMS-s mediante un modem GSMPara la realización de éste ejemplo he utilizado un modem GSM Siemens MC35 Terminal que dispone de un interfaz serie. La conexión aestablecer para comunicarse con Arduino, según la data sheet, debe ser una conexión serie a 9600 bps (8 data bits, no parity, 1 stop bit,non-inverted).

Este ejemplo es válido para cualquier modem GSM que cumpla la especificación ETSI 07.05 del estándar GSM, es decir, casi todos. Se puedereutilizar el código con cualquier otro modem , bien como éste ... un terminal completo ... o solamente el módulo.

Figura 1. Modem GSM Siemens MC35 Terminal

Figura 2. Esquema de conexionado a una una placa Arduino serie.

Arduino : SMS http://www.arduino.cc/es_old/Tutoriales/SMS

1 de 4 17/07/2012 1:14

Page 2: Arduino _ SMS

Figura 3. Foto del montaje

Código fuente (PROVISIONAL)

/*

Envío/recepción de SMS mediante un modem GSM conectado a Arduino por el puerto serie.

Es válido para cualquier modem GSM que cumpla en estándar GSM 07.05 de la ETSI

(European Telecommunications Standards Institute). Este estándar lo implementan

casi todos los modems GSM.

http://www.3gpp.org/ftp/Specs/html-info/0705.htm

http://pda.etsi.org/pda/home.asp?wkr=RTS/SMG-040705Q7

En mi caso lo he probado con un modem SIEMENS MC35 Terminal que he conseguido.

Igor González Martín. 05-04-2007

[email protected]

*/

int ledPin = 13; // PIN de test

char respuesta[250]; // Donde almacenaremos las respuestas del modem

byte readByte=' '; // Variable donde leemos del puerto serie

int contador=0;

char mensaje[160];

void setup() {

pinMode(ledPin, OUTPUT);

Serial.begin(9600);

configurarCMC("+34609090909"); // Definir CMC

messageFormat(true); // Modo TEXTO

vaciarBufferRespuesta();

vaciarMensaje();

digitalWrite(ledPin, LOW);

}

void parpadea(int num){

for (int i=0;i<num;i++){

digitalWrite(ledPin, HIGH);

delay(200);

digitalWrite(ledPin, LOW);

delay(200);

}

}

void vaciarMensaje(){

for(int i=0;i<160;i++){

mensaje[i]='|';

}

}

void vaciarBufferRespuesta(){

for(int i=0;i<250;i++){

respuesta[i]='|';

}

}

void buscarTextoSMS(){

Arduino : SMS http://www.arduino.cc/es_old/Tutoriales/SMS

2 de 4 17/07/2012 1:14

Page 3: Arduino _ SMS

/*

Devuelve el texo del mensaje

*/

}

void configurarCMC(char* CMC){

/*

Configura el CMC a través del cual se van a remitir los SMS

MoviStar +34609090909

Orange +34?????????

Vodafone +34?????????

Ejemplo:

Comando: AT+CSCA=+34609090909

Respuesta: OK

*/

Serial.print("at+csca=");

Serial.println(CMC);

delay(1000);

}

void messageFormat(boolean formato){

/*

Elige el formato con el que vamos a trabajar

Ejemplo:

Comando: AT+CMFG=1

Respuesta: OK

*/

Serial.print("at+cmgf=");

if (formato) {

Serial.println("1"); // Modo texto

}else {

Serial.println("0"); // Modo PDU

}

delay(1000);

}

void sendSMS (char* destinatario,char textoMensaje[]){

/*

Envía un SMS al número indicado en "destinatario" con el texto

incluido en "mensaje".

Ejemplo:

Comando: AT+CMGS=609090909

Respuesta: >

Comando: "Texto a enviar"<Ctrl+Z>

Respuesta: OK

*/

Serial.print("at+cmgs=");

Serial.println(destinatario); // Destinatario

delay(100);

for (int i=0;i<160;i++){ // Texto del SMS

if (textoMensaje[i]!='|'){

Serial.print(textoMensaje[i]);

}

}

Serial.println(26,BYTE); // Escibe el Ctrl+Z

delay(1000);

}

void listSMS (int seleccion){

/*

Solicita el listado de los SMS que hay en la SIM.

Según "selección" se muestran:

0 Menssajes no leidos

1 Mensajes leidos

2 Mensajes almacenados sin enviar

3 Mensajes almacenados y enviados

4 Todos

Ejemplo 1: Hay SMS almacenados

Comando: AT+CMGL=ALL

Respuesta:

+CMGL: 1,"REC UNREAD","609090909",,"07/04/05,22:03:33+08"

Mensaje de prueba

+CMGL: 2,"REC UNREAD","609090909",,"07/04/05,22:03:35+08"

Mensaje de prueba

+CMGL: 3,"REC UNREAD","609090909",,"07/04/05,22:03:42+08"

Mensaje de prueba

OK

Ejemplo 2: No hay SMS almacenados

Arduino : SMS http://www.arduino.cc/es_old/Tutoriales/SMS

3 de 4 17/07/2012 1:14

Page 4: Arduino _ SMS

Comando: AT+CMGL=ALL

Respuesta: OK

*/

Serial.print("at+cmgl=");

switch (seleccion) {

case 0: Serial.println("REC UNREAD");

break;

case 1: Serial.println("REC READ");

break;

case 2: Serial.println("STO UNSENT");

break;

case 3: Serial.println("STO SENT");

break;

case 4: Serial.println("ALL");

break;

}

delay(1000);

}

void readSMS(int posicion){

/*

Solicita la lectura del mensaje en la posición indicada por "posicion"

Ejemplo 1: Hay SMS almacenados en esa posición

Comando: AT+CMGR=2

Respuesta:

+CMGR: "REC READ","609090909",,"07/04/05,22:03:35+08"

Mensaje de prueba

OK

Ejemplo 2: No hay SMS almacenados en esa posición

Comando: AT+CMGR=4

Respuesta:

+CMGR: 0,,0

OK

*/

Serial.print("at+cmgr=");

Serial.println(posicion);

delay(1000);

}

void deleteSMS(int posicion){

/*

Borra el mensaje en la posición indicada por "posicion"

Ejemplo 1: Hay SMS almacenados en esa posición

Comando: AT+CMGD=2

Respuesta:OK

Ejemplo 2: No hay SMS almacenados en esa posición

Comando: AT+CMGD=4

Respuesta: OK

*/

Serial.print("at+cmgd=");

Serial.println(posicion);

delay(1000);

}

void loop() {

/*

Es un programa muy tonto. Lee los mensajes que le llegan/tiene almacenados

la tarjeta SIM y los remite a otro número.

*/

}

Referencias

Especificaciones del modem GSM Siemens MC35 TerminalData sheet del Siemens MC35 TerminalComandos AT para el envío y recepción de SMS-sDetalle de la especificación 3GPP TS 07.05Especificación ETSI 07.05

by Igor González Martín 08-04-2007

Page last modified on August 19, 2008, at 01:47 PM

Powered by PmWiki

Arduino : SMS http://www.arduino.cc/es_old/Tutoriales/SMS

4 de 4 17/07/2012 1:14