Pages: [1]   Go Down
Author Topic: enviar sms - numero como variavel  (Read 2088 times)
0 Members and 1 Guest are viewing this topic.
Brasil - SP
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ola pessoal,
estou usando o código abaixo para enviar sms. Mas preciso usar o numero de telefone como uma variável e não consigo.
Tentei algo como criar a variável. String numero =  "+551198151034"; e substituir a linha do telefone   mySerial.print("AT+CMGS=\"+5511981510340\"\r");  por

mySerial.print("AT+CMGS=\"");
mySerial.print(numero);
mySerial.print("\"\r");

mas o sms não sai.
Alguém já conseguiu algo parecido?

obrigado

 -----------codigo

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); //8 TX, 7 RX

void setup()
{
  mySerial.begin(4800);               
  Serial.begin(19200);
}
 
void loop()
{
  mySerial.print("\r");
  delay(1000);               
  mySerial.print("AT+CMGF=1\r"); 
  delay(1000);
  mySerial.print("AT+CMGS=\"+5511981510340\"\r"); 
  delay(1000);
  mySerial.print("SIM900 and Arduino say Hi!\r");
  delay(1000);
  mySerial.write(26);
}
Logged

RJ, Brazil
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Já tentaste:
mySerial.print("AT+CMGS=+5511981510340\r");
ou sem o + ?

À proposito, estou interessado em comprar um Arduino.
Saberia me dizer o que posso fazer com ele. Assim, quais são os limites dele, se tenho que comprar muitas peças externas à placa.
Este seu código, por exemplo, você está usando somente o Arduino ou teve que comprar algum "add-on" ?
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 41
Posts: 3113
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Não fizeste referência se o programa funciona quando não usas o número de telefone como uma variável. Eu assumo que sim, mas não faço ideia.

Outra coisa, este código que deixaste tem coisas estranhas.

Para que serve esta linha:

Code:
mySerial.print("\r");
??

Porquê os delays entre envios de dados para o módulo GSM? Já apareceram aqui vários exemplos sem delays que aparentemente estavam a funcionar.

Finalmente, não me parece correcto que coloques o código a enviar SMSs sem condições no loop... de 4 em 4 segundos o módulo GSM vai tentar mandar SMSs... já viste se tens saldo no cartão? Coloca algo como:


Code:
if (Serial.available() > 0) {
    if (Serial.read() == 'S') {
        //Código para envio de mensagens...
    }
}
Assim sempre que enviares um S pela Serial, o módulo manda a SMS. Muito mais controlado e simples.

Ahh e experimenta o programa depois de teres desligado tudo e voltado a ligar.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

'round the world...
Offline Offline
Faraday Member
**
Karma: 41
Posts: 3113
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

À proposito, estou interessado em comprar um Arduino.
Saberia me dizer o que posso fazer com ele. Assim, quais são os limites dele, se tenho que comprar muitas peças externas à placa.
Este seu código, por exemplo, você está usando somente o Arduino ou teve que comprar algum "add-on" ?

Por favor, coloca isto numa mensagem separada, ou procura no fórum... isto está escrito e descrito em várias threads.
O arduino é uma plataforma que apenas comunica com o computador e mexe com os pinos desse processador. Irás sempre precisar de add-ons para fazer coisas nele.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Portugal
Offline Offline
Edison Member
*
Karma: 28
Posts: 1434
Tomorrow I will know a BIT more than yesterday
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
mySerial.print("AT+CMGS=\"+5511981510340\"\r");  por
Aqui indicas para onde vai a SMS e o corpo dela ?
Logo a seguir a esse comando tens de indicar o texto e depois termina la com o CTRL+Z para que desta forma seja terminada o envio !!
Se apenas escreveres isso no modem passado uns segundos se ele nao receber o corpo da "ERROR"
Aconselho te a ligares o modem atravez de um cliente de hiperterminal no teu pc e testares la e depois passares para o arduino
De salientar que tambem deves por o modem em modo texto usando o comando AT+CMGF=1

Aqui tens um pouco de texto retirado do modem da Siemens mc35i que usa a mesma estrutura
Code:
AT+CMGF=1
AT+CMGS="####" where #### is the phone number you want to send the message to followed by a CR which will give you a prompt.

You can then type the message you want then follow it with a CTRL+Z (that is CONTROL button and Z button pressed together)
« Last Edit: October 30, 2012, 04:11:02 am by HugoPT » Logged

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


'round the world...
Offline Offline
Faraday Member
**
Karma: 41
Posts: 3113
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
mySerial.print("AT+CMGS=\"+5511981510340\"\r");  por
Aqui indicas para onde vai a SMS e o corpo dela ?
Code:
mySerial.print("AT+CMGF=1\r"); 
  delay(1000);
  mySerial.print("AT+CMGS=\"+5511981510340\"\r"); 
  delay(1000);
  mySerial.print("SIM900 and Arduino say Hi!\r");
  delay(1000);
  mySerial.write(26);//0x1a... 
O corpo e o Ctrl+Z estão aqui. Agora também fica a questão, para quê os delays de 1 segundo? Será que os delays fazem com que o módulo faca timeout?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Brasil - SP
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pessoal, obrigado a todos.
Consegui com o código abaixo.

char Vrsms = 1234567890;

char FtResp(String tMsg){
  mySerial.print("\r");
  delay(1000);               
  mySerial.print("AT+CMGF=1\r"); 
  delay(1000);
  Serial.print(mySerial.print("AT+CMGS=\""));
  Serial.print(mySerial.print(Vrsms));
  Serial.print(mySerial.println("\""));
  delay(1000);
  mySerial.print(tMsg);
  delay(1000);
  mySerial.write(26);
  delay(20000);
}
Logged

Pages: [1]   Go Up
Jump to: