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
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
*/
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
/*
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
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
Top Related