Sie sind auf Seite 1von 4

Arduino : SMS

1 de 4

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

ATENCIN: Est pgina est desactualizada, se mantiene en el servidor de Arduino.cc a ttulo ilustrativo y cmo documentacin, sin embargo,
no es posible editarla y no se harn modificaciones de la misma. Es posible que haya caracteres que no se muestren de la forma apropiada, no
se har nada por editarlos
Para ms informacin visite http://arduino.es
--> EN CONSTRUCCIN <--

Enva y recibe SMS-s mediante un modem GSM


Para la realizacin de ste ejemplo he utilizado un modem GSM Siemens MC35 Terminal que dispone de un interfaz serie. La conexin a
establecer para comunicarse con Arduino, segn la data sheet, debe ser una conexin serie a 9600 bps (8 data bits, no parity, 1 stop bit,
non-inverted).
Este ejemplo es vlido para cualquier modem GSM que cumpla la especificacin ETSI 07.05 del estndar GSM, es decir, casi todos. Se puede
reutilizar el cdigo con cualquier otro modem , bien como ste ... un terminal completo ... o solamente el mdulo.

Figura 1. Modem GSM Siemens MC35 Terminal

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

17/07/2012 1:14

Arduino : SMS

2 de 4

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

Figura 3. Foto del montaje


Cdigo fuente (PROVISIONAL)
/*

Envo/recepcin de SMS mediante un modem GSM conectado a Arduino por el puerto serie.
Es vlido para cualquier modem GSM que cumpla en estndar GSM 07.05 de la ETSI
(European Telecommunications Standards Institute). Este estndar 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 Gonzlez Martn. 05-04-2007
igor.gonzalez.martin@gmail.com
*/
int ledPin = 13;
char respuesta[250];
byte readByte=' ';
int contador=0;
char mensaje[160];
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
configurarCMC("+34609090909");
messageFormat(true);
vaciarBufferRespuesta();
vaciarMensaje();
digitalWrite(ledPin, LOW);
}

// PIN de test
// Donde almacenaremos las respuestas del modem
// Variable donde leemos del puerto serie

// Definir CMC
// Modo TEXTO

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(){

17/07/2012 1:14

Arduino : SMS

3 de 4

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

/*
Devuelve el texo del mensaje
*/
}
void configurarCMC(char* CMC){
/*
Configura el CMC a travs 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");
}else {
Serial.println("0");
}
delay(1000);

// Modo texto
// Modo PDU

}
void sendSMS (char* destinatario,char textoMensaje[]){
/*
Enva un SMS al nmero 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);
delay(100);
for (int i=0;i<160;i++){
if (textoMensaje[i]!='|'){
Serial.print(textoMensaje[i]);
}
}
Serial.println(26,BYTE);
delay(1000);

// Destinatario
// Texto del SMS

// Escibe el Ctrl+Z

}
void listSMS (int seleccion){
/*
Solicita el listado de los SMS que hay en la SIM.
Segn "seleccin" 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

17/07/2012 1:14

Arduino : SMS

4 de 4

http://www.arduino.cc/es_old/Tutoriales/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 posicin indicada por "posicion"
Ejemplo 1: Hay SMS almacenados en esa posicin
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 posicin
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 posicin indicada por "posicion"
Ejemplo 1: Hay SMS almacenados en esa posicin
Comando: AT+CMGD=2
Respuesta:OK
Ejemplo 2: No hay SMS almacenados en esa posicin
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 nmero.
*/
}

Referencias
Especificaciones del modem GSM Siemens MC35 Terminal
Data sheet del Siemens MC35 Terminal
Comandos AT para el envo y recepcin de SMS-s
Detalle de la especificacin 3GPP TS 07.05
Especificacin ETSI 07.05
by Igor Gonzlez Martn 08-04-2007

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


Powered by PmWiki

17/07/2012 1:14

Das könnte Ihnen auch gefallen