Pages: [1]   Go Down
Author Topic: Lendo SMS para controlo com modem Siemens MC35  (Read 1284 times)
0 Members and 1 Guest are viewing this topic.
Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1583
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ola a todos
estou tentando desenvolver um projecto com um modem gsm que consiste em ler a sms recebida e mediante o conteudo da sms ir ligar ou reenviar sms de volta a pessoa que mandou a sms.
Em geral e pretendido que se o utilizador enviar a sms com 123 faça ligar o led 13 no arduino , para ja uma coisa muito simples
o modem funciona com AT commands e tenho o arduino a ler a sms pela Serial port 1 do arduino Mega
O meu problema e separar o que e devoldido do modem
Quando o arduino solicita ao modem a mensagem na primeira localiçacao ele devolve algo deste genero:
Code:
AT+CMGF=1

OK
AT+CMGR=1

+CMGR: "REC READ","+35196XXXXXXX",,"12/02/08,10:23:30+00"
123

OK
Tentei fazer alguns ciclos if apenas para filtrar que mandou a sms que é indicado no +351XXXXXXXXX e o conteudo da sms que neste exemplo é 123

Estou com enormes dificuldades em apenas filtrar isto no Serial1.read para depois poder fazer instruçoes de comparaçao algo como

if (char sms == "123" && "+35196XXXXXXX "){digitalWrite(13, HIGH);
No fundo era isto o pretendido
Abaixo o codigo que ja tenho construido
Alguem me pode ajudar com a filtragem ?
Obrigado a todos
Code:
//Read new SMS from Motorola C168i to Arduino and print to LED panels
//Program developed by Matthew Mosher ©2010


//#include <NewSoftSerial.h>

//NewSoftSerialSerial1(10, 11);
char sms[150];
int i = 0 ;


void setup() 
{
  Serial.begin(9600);
  Serial.println("Inicia Leitura de SMS");


  Serial1.begin(9600);//Modem conectado nesta porta
  delay(500);
  Serial1.println("AT+CMGF=1\r\n");  // Coloca o modem em modo Texto
  delay(500);

  Serial1.print("AT+CMGR=1");  //Da ordem ao modem para ler a sms no local 1 e devolvela para a o buffer do arduino
  Serial1.println("\r\n");

}



void loop()           
{
  while (Serial1.available() >0) {
    sms[i] = Serial1.read();
    Serial.print(sms[i], BYTE);
    delay(100);


  }

  Serial1.flush();
  numero_array();


}
void numero_array(){
 
  Serial.println(sms[96]);
  Serial.println(sms[97]);
  Serial.println(sms[98]);
  Serial.println(sms[99]);
  Serial.println(sms[100]);
 
  // }


}
Neste exemplo tentei carregar todos os bytes recebidos para um array para depois poder fazer a comparaçao mas sem sucesso


Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

amigo, posso tentar te ajudar, na configuração do modem para termos um retorno mais facil para se tratar o codigo, sem retorno de data, hora, etc.
tente mudar a configuração messaging handling metodo de entrada de cmgl para outro
http://www.ozeki.hu/index.php?owpn=670

ve pelo menos um jeito da mensagem vir em uma só linha, pq ai eu posso fazer uma rotina para voce onde filtraremos o codigo até chegar realmente a mensagem
tipo
rele1:on,rele2:off,rele3:on,rele4:on
abraço
leon, espero ter ajudado pelo menos quanto ao caminho

Logged

Pages: [1]   Go Up
Jump to: