Montamos uma comunicação entre os dispositivos, agora vamos executar ações!
Nesse exemplo vamos enviar uma SMS do modulo SIM900.
Para isso temos que usar os seguinte comandos AT:
Esse comando AT+CMGF=1 coloca o SIM900 em modo texto de SMS.
<CTRL-Z> = ASCII caracter 26 sinaliza que o corpo da SMS terminou.
Bom esses são os comandos separados, aqui vai um escopo para o arduino, coisa simples, que funciona como testes e pode ser aprimorada:
- #include <SoftwareSerial.h>
- SoftwareSerial mySerial(2,3);
- char flag=0;
- void setup()
- {
- delay(30000);
- mySerial.begin(19200);
- Serial.begin(19200);
- }
- void loop()
- {
- if(flag==0)
- {
- mySerial.print("AT+CMGF=1\r"); //mandando SMS em modo texto
- delay(1000);
- mySerial.print("AT+CMGS=\"+NUMERO\"\r"); // numero que vamos mandar o SMS
- delay(1000);
- flag=1;
- }
- if(flag==1)
- {
- mySerial.print("Teste SIM900 e Arduino!\r"); // corpo da msg
- delay(1000);
- mySerial.write(0x1A); //equivalente a mandar Ctrl+Z(finaliza corpo do SMS)
- delay(1000);
- flag=2;
- }
- if(flag==2)
- {
- Serial.println("SMS Enviado com sucesso!");
- delay(5000);
- flag=3;
- }}
Bom é isso a, simples e pratico, exemplificando uma coisa que futuramente vai ser agregada a um programa complexo.
Atenção aos pinos D3 e D2!
no comando mySerial.print("AT+CMGS=\"+NUMERO\"\r");
ResponderExcluireu tenho que colocar no meu codigo mySerial.print("AT+CMGS=\"+55149999999999\"\r");
por exemplo? sendo 55 o codigo do país, 14 o codigo de area e os 9999 o numero do cel? o resto eu deixo da mesma forma, certo?
não tem necessidade, apenas o numero XXXXXXXX já funciona, se for fazer interurbano ou internacional ai sim tem que colocar operadora
Excluireu consegui fazer mostrar a mensagem apenas no serial monitor.. eu vi que voce disse que o chip tem que estar sem PIN.. acho q eh por isso q eu nao estou conseguindo enviar a mensagem.. meu chip acho q tem um PIN.. tem uma dica facil ai q eu consigo tirar o pin?
ResponderExcluircoloca em um celular qualquer e desabilita o PIN
Excluirainda acho que estou fazendo coisa errada haha.. apenas copiei e colei o codigo.. coloquei o numero do meu cel e nada =/
Excluirfiz o teste e coloquei o chip no cel, desabilitei o pin.. fiz uma ligacao e mandei uma msg do celular pra ver que tava funcionando o chip certinho..
estou utilizando um chip da claro, desses novos e tal.. sera q tem alguma coisa a ver?
Vanderlei, já sei qual é o erro, no s_rx, coloque o jumprer nos 2 primeiros pinos, deixando o ultimo vago. Para s_tx, deixe o primeiro pino vago e coloque o jumper nos dois últimos como na foto que anexei ao projeto. Agora vai dar certo
ExcluirVinicius se for no IComsat como eu faço pra rodar ??
ExcluirObrigado!!
Fala Tulio,
ExcluirGeralmente os IComsat usam BAUD RATE diferente, 9600,19200, essa é a unica coisa que altera.
abs
Tendi Vinicius, so nao entendi onde faço o jumper correto na IComsat para rodar corretamente ???
Excluirabraços !!
Em cima do seu modulo deve haver alguns jumpers para selecionar pinos TX/RX, na programação seleciona os mesmo pinos usando essa linha:
ExcluirSoftwareSerial mySerial(RX TX);
Para conectar os fios lembre-se que o TX do arduino vai no RX do IComsat, assim como RX do arquino vai no TX do IComsat
Vanderlei, já sei qual é o erro, no s_rx, coloque o jumprer nos 2 primeiros pinos, deixando o ultimo vago. Para s_tx, deixe o primeiro pino vago e coloque o jumper nos dois últimos como na foto que anexei ao projeto. Agora vai dar certo
ResponderExcluireles estavam dessa forma, alterei para o canto oposto.. de qualquer forma vou chegar em casa e fazer o teste novamente hehe.. valeu Vinicius.. jaja eu te encho o saco aqui novamente =p
ExcluirOlá, tenho um shield sim 900 icomsat 1.1 e nao estou sabendo configurar o tx e rx ,por causa disso nao consigo enviar as mensagens ,estou usando o seu codigo ele aparece
ResponderExcluirsms enviado mas nao chega no celular .
OI,
ExcluirVerifique seus pinos TX e RX, lembrando que o TX do arduino tem que ir no RX do SIM900, assim como RX do arduino tem que ir no TX do SIM900.
Um teste bom é ligar os modulos separados e conectar apenas os pares TX/RX com um fio e fazer os testes de comunicação... de uma olhada em http://microembarcado.blogspot.com.br/2013/09/arduino-gprs-sim900-introducao-i.html
lá tem o exemplo mais simples pra testar isso!
Eu mudei a posição do tx e rx mas nao consigo mandar a mensagem para celular ,você tem alguma dica para montar o tx e rx o meu e o Arduino 2560 a ultima versão,e o meu sim e diferente do seu mostrado no exemplo o meu sim900 S2-1040s-z0955 por favor tem alguma dica.
ExcluirObrigado.
Eu mudei a posição do tx e rx mas nao consigo mandar a mensagem para celular ,você tem alguma dica para montar o tx e rx o meu e o Arduino 2560 a ultima versão,e o meu sim e diferente do seu mostrado no exemplo o meu sim900 S2-1040s-z0955 por favor tem alguma dica.
ResponderExcluirObrigado.
Verifique seus pinos TX e RX, lembrando que o TX do arduino tem que ir no RX do SIM900, assim como RX do arduino tem que ir no TX do SIM900.
ExcluirLembrando que o arduino usa TX/RX de hardware e uma outra porta TX/RX por SoftwareSerial
Um teste bom é ligar os modulos separados e conectar apenas os pares TX/RX com um fio e fazer os testes de comunicação... de uma olhada em http://microembarcado.blogspot.com.br/2013/09/arduino-gprs-sim900-introducao-i.html
lá tem o exemplo mais simples pra testar isso!
Olá Vinícius, eu estou querendo ligar o meu ar-condicionado pelo gsm shield, mas o programa que tenho não responde, você tem algum que possa fazer essa função liga desliga por sms?
ResponderExcluirDesde já agradeço.
Fala Robson, estou terminando um post sobre isso.
ExcluirEssa samana eu publico, vai te ajudar a desenvolver essa função liga/desliga.
http://microembarcado.blogspot.com.br/2013/09/arduino-gprs-sim900-ler-sms-executar.html
ExcluirObrigado irmão, é para um projeto da faculdade, e parabéns pelo blog.
ResponderExcluirOlá, Vinicius, parabéns pelas postagem.
ResponderExcluireu envio esse código para o arduino no final da compilação fala que foi enviado porem da um erro embaixo:
"avrdude: stk500_getsync(): not in sync: resp=0x00"
o tx e o rx estao igual na imagem sua.
tento comunicar com o sim900 porem nao aprece nada!
me socorre!
Fala parceiro, qual placa arduino você esta usando? talvez o TX/RX do modulo GSM esteja nos mesmos pinos da serial do arduino pino 0 e 1.
ExcluirO ideal nesses casos é isolar os problemas, primeiro tenta gravar o código sem o modulo GSM conectado. Eu sugiro seguir esse post:
http://microembarcado.blogspot.com.br/2013/09/arduino-gprs-sim900-introducao-i.html
E ter certeza que a comunicação com modem esta funcionando. Depois disso passar para programas mais elaborados.
Qualquer coisa so perguntar ai.
Abs!
Este comentário foi removido pelo autor.
ExcluirEstou usando o UNO.
Excluirrealmente o erro que eu comentei, foi resolvido, era so retirar o modulo.
porem ele mostra que o sms foi enviado, porem eu nao recebo no meu celular.
Ola Vinicius, ja li varios artigos do seu blog e voce esta de parabens... eu e muitos amigos meus tiramos muitas duvidas com seus post.
ResponderExcluirEstou com meu arduino Uno REV 3 e com um shield sim900 assim como o seu... Tento mandar a sms com essa programacao , mais meu nao recebo a sms, o programa roda no monitor serial aparece a mensagem que foi enviada com sucesso , porem nao chega...
utilizo chip da vivo no sim900 e um arduino UNO rev 3....
poderia me ajudar a resolver esse problema?
desde j`a agradeco.
Vlw
Fala Gabriel! fico feliz que esteja gostando do blog :D
ExcluirEntão sobre o seu problema, vamos começar do inicio, vamos primeiro ter certeza que seu arduino esta comunicando com o seu modem GSM, para isso eu recomendo seguir esse post:
http://microembarcado.blogspot.com.br/2013/09/arduino-gprs-sim900-introducao-i.html
Logo depois que a comunicação estiver OK, passe para codigos mais avançados.
Qualquer duvidas estamos ai,
abs
o sim900 `e compativel com o arduino uno rev 3?
ResponderExcluirobrigadoo ;)
Sim compatível com qualquer microcontrolador, e com todos Arduinos.
ExcluirCara com essa sua programacao nao deu certo pra mim...
ResponderExcluirmais essa funcionou perfeitamente
Segue:
#include
SoftwareSerial mySerial(2, 3);
#define BUF_LEN 84
char comm_buf[256];
void setup()
{
mySerial.begin(9600); // the GPRS baud rate
Serial.begin(9600); // the GPRS baud rate
mySerial.println("AT+CNMI = 3,3,0,0,0");
delay(2000);
mySerial.println("AT+CMGF=1");
delay(2000);
Serial.println("----------------------------- ENVIA SMS ----------------------------");
mySerial.println("AT+CMGS=\"+5517TELEFONE\"\r"); //nº do celular
delay(1000);
mySerial.println("TESTE ENVIO DE SMS ARDUINO!"); // mensagem a ser enviada
delay(1000);
mySerial.println((char)26);
Serial.println(comm_buf);
memset(comm_buf,'\0',BUF_LEN);
mySerial.flush();
delay(5000);
Serial.println("---------------------------- F I M ----------------------------");
}
void loop()
{
}
quem bom que esse funcionou, me parece que seu modem funciona com mySerial.begin(9600); o modem usado no post usa mySerial.begin(19200); talvez esse tenha sido o problema
Excluirvc tem algum contato
ResponderExcluirOlá Vinícius, parabéns pelo projeto, como eu faria para adicionar mais números de telefone?
ResponderExcluir