Enviando SMS e Fazendo Chamadas com o Arduino GSM Shield

Enviando SMS e Fazendo Chamadas com o Arduino GSM Shield

Realize chamadas telefônicas, envio de SMS, conecte o seu Arduino à internet e faça muito mais com o Arduino GSM GPRS Shield. Com esse shield você pode enviar alertas informando o estado de um sensor ou sistema de alarmes, realizar chamadas telefônicas sem precisar de um celular ou automatizar algum processo existente e que envolva telefonia celular.

Tutorial Arduino Gsm Gprs Shield

Este Arduino Gsm Shield é Quad-Band (850/900/1800/1900 Mhz), e é capaz não só de efetuar chamadas de voz e envio de SMS, como também suporta serviços de internet e fax. Funciona tanto com o Arduino Uno e Mega como também com outras placas que tenham a pinagem padrão do Arduino. Gostou? Então vamos ao tutorial.

Estrutura da placa e conexões

No parte central do Shield temos o chip SIM900 (datasheet), responsável pelo controle da placa. Um conector permite a instalação de um display LCD Nokia 5110 (versão 3.3v). Nas laterais, temos os pinos comuns do Arduino (portas analógicas/digitais), e na parte interna da placa outros pinos para acesso direto ao SIM900 (SIM IIC, SIM900 GPIO, etc). Na parte de trás, encontramos o adaptador para o cartão SIM. Para uma lista completa com as especificações dos pinos deste shield, acesse esse link.

Arduino GSM Shield - Detalhes

A porta serial do Arduino Gsm Shield pode ser configurada por meio de jumpers, que permitem o uso dos pinos 0 e 1 (RX e TX) do Arduino, ou os pinos 2 e 3, mediante o uso da biblioteca SoftwareSerial. A vantagem de usar as portas 2 e 3 é que o Arduino fica livre para comunicação com o computador, e assim podemos utilizar o Serial Monitor para verificar o funcionamento do shield.

Nos nossos testes, usamos o shield com a seguinte configuração de jumpers:

Configuração serial

Nessa configuração, estamos utilizando o pino D3 (digital 3) como RX (recepção), e o pino D2 como TX (transmissão).

Instalação do cartão SIM e alimentação do shield

Antes de encaixar o shield no Arduino, tenha em mãos um cartão SIM desbloqueado. Na parte inferior da placa, abra o suporte do cartão SIM conforme mostrado na imagem abaixo, encaixe o cartão e retorne o suporte à posição original:

Slot Cartão SIM

Depois disso, basta encaixar o shield no Arduino e conectar a antena.

Para alimentação, a recomendação do fabricante é que você utilize uma fonte externa de pelo menos 9V/1A para o Arduino quando estiver utilizando esse shield.

Quando você ligar a alimentação do shield na primeira vez, os 3 leds (PWR, STA e NET) estarão acesos ao mesmo tempo. Para inicializar a parte de comunicação, pressione o botão S_PWR por 3 segundos até que o led NET comece a piscar rapidamente.

Funcionamento e bibliotecas

O Arduino Gsm Shield funciona basicamente com uma série de comandos AT, que podem ser utilizados para configurar as chamadas, armazenar SMS, verificar a qualidade do sinal e modificar muitos outros parâmetros. Nos nossos exemplos, quem faz tudo isso é a biblioteca GSM-GPRS-GPS-Shield, disponível nesse link.

Após baixar a biblioteca, descompacte o arquivo ZIP e você terá uma pasta chamada GSM-GPRS-GPS-Shield. Para funcionar com o Arduino, temos que renomear essa pasta para, por exemplo, GSM_Shield, e copiar essa pasta para dentro da pasta Libraries da IDE do Arduino.

Enviando e recebendo SMS

O programa abaixo foi baseado no arquivo de exemplo da própria biblioteca. Ele envia um SMS utilizando o comando SendSMS(), e depois aguarda por novos SMS enviados ao shield e mostra tanto o texto como o telefone de quem enviou no serial monitor:

//Progama : Envio SMS com o GSM Shield
//Alteracoes e adaptacoes : FILIPEFLOP

#include "SIM900.h"
#include <SoftwareSerial.h>
//Carrega a biblioteca SMS
#include "sms.h"

SMSGSM sms;

int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];

void setup()
{
     //Inicializa a serial 
     Serial.begin(9600);
     Serial.println("Testando GSM shield...");
     //Inicia a configuracao do Shield
     if (gsm.begin(2400)) 
     {
       Serial.println("nstatus=READY");
       started=true;
     } 
     else Serial.println("nstatus=IDLE");

     if(started) 
     {
       //Envia um SMS para o numero selecionado
       //Formato sms.SendSMS(<numero>,<mensagem>)
       if (sms.SendSMS("912345678", "Arduino SMS"))
       Serial.println("nSMS sent OK");
     }
}

void loop()
{
     if(started) 
     {
       //Aguarda SMS e mostra o texto no serial monitor
       if(gsm.readSMS(smsbuffer, 160, n, 20)) 
       {
          Serial.println(n);
          Serial.println(smsbuffer);
          delay(5000);
       }
       delay(1000);
     }
}

Ao carregar o programa, ele faz uma série de testes com o Arduino Gsm Shield e envio de comandos AT, o que pode atrasar um pouco o envio do SMS. De qualquer forma, você pode acompanhar o andamento do processo pelo serial monitor.

Realizando uma chamada telefônica

Aqui nós adaptamos um outro programa exemplo da biblioteca, que originalmente recebe chamadas, reduzindo o código e fazendo com que ele efetue uma chamada e desligue depois de 10 segundos.

Para isso, usamos a função call.Call(), que recebe como parâmetro o número a ser chamado, e depois a função call.HangUP(), que encerra a ligação.

//Progama : Chamada usando o GSM Shield
//Alteracoes e adaptacoes : FILIPEFLOP

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "call.h"

CallGSM call;

void setup()
{
     Serial.begin(9600);
     Serial.println("Testando GSM Shield...");
     //Inicia a configuracao do Shield
     if (gsm.begin(2400))
          Serial.println("nstatus=READY");
     else Serial.println("nstatus=IDLE");
}

void loop()
{
  Serial.println("Discando....");
  //Efetua a chamada formato call.Call(<numero a ser chamado>)
  call.Call("912345678");
  delay(10000);
  
  Serial.println("Desligando...");
  call.HangUp();
  
  do {} while (1); //Loop parando o programa
}

Teste o funcionamento do shield conectando um microfone e um fone de ouvido (conectores padrão P2) à placa.

Comandos AT

Por último, um programa que permite que você digite os comandos AT diretamente no serial monitor, explorando todas as funções do shield.

//Progama : Comandos AT no GSM Shield
//Alteracoes e adaptacoes : FILIPEFLOP

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "call.h"

int numdata;
char inSerial[40];
int i=0;

void setup()
{
     //Inicializa a serial
     Serial.begin(9600);
     Serial.println("Testando GSM Shield...");
     //Inicia a configuracao do Shield
     if (gsm.begin(9600))
          Serial.println("nstatus=Pronto, digite os comandos AT");
     else Serial.println("nstatus=IDLE");
}

void loop()
{
   //Le um novo byte na serial por hardware, e
   //o escreve na NewSoftSerial
   serialhwread();
   //Le um novo byte na NewSoftSerial
   serialswread();
}

void serialhwread()
{
     i=0;
     if (Serial.available() > 0) 
     {
       while (Serial.available() > 0) 
       {
         inSerial[i]=(Serial.read());
         delay(10);
         i++;
       }
       
       inSerial[i]='';
       if(!strcmp(inSerial,"/END")) 
       {
         Serial.println("_");
         inSerial[0]=0x1a;
         inSerial[1]='';
         gsm.SimpleWriteln(inSerial);
        }
        //Envia um comando AT utilizando a serial
        if(!strcmp(inSerial,"TEST")) 
        {
          Serial.println("SIGNAL QUALITY");
          gsm.SimpleWriteln("AT+CSQ");
        } 
        else 
        {
          Serial.println(inSerial);
          gsm.SimpleWriteln(inSerial);
         }
         inSerial[0]='';
     }
}

void serialswread()
{
   gsm.SimpleRead();
}

Este programa inicialmente também faz uma série de testes e configuração no shield, depois entra no modo de espera, aguardando os comandos AT:

Serial Monitor comandos AT

Você pode usar os comandos AT para alterar os parâmetros do shield, digitando os comandos no serial monitor, conforme indicado na imagem acima.  Alguns comandos que você pode utilizar são:

  • AT – Retorna “OK” se a comunicação com o shield estiver OK
  • A/ – Reenvia o último comando
  • ATD NUMERO – Efetua uma ligação para o telefone especificado em NUMERO
  • ATDL – Repete a última ligação feita
  • ATZ – Carrega as configurações padrão
  • AT&F – Retorna às configurações de fábrica
  • AT+CSQ – Mostra a qualidade do sinal

A lista de comandos AT do SIM900 é bem extensa e oferece inúmeras possibilidades de configuração, podendo ser encontrada nesse link.

Utilizando GSM Shield com Arduino Mega

Para que este shield funcione com o Arduino Mega, acesse a pasta da biblioteca e altere o arquivo GSM.cpp, configurando os pinos TX e RX como 50 e 51, respectivamente, conforme destacado:

Edição GSM.cpp

Retire também os jumpers de configuração da serial, efetuando a ligação ao Arduino Mega conforme a imagem abaixo:

Pinos Serial

A conexão do GSM Shield ao Arduino Mega ficará assim:

Conexao_GSM_Mega

Compile normalmente os programas, não esquecendo de alterar a configuração da IDE para Arduino Mega, no menu Ferramentas => Placas.

Gostou? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo) e visite nossa loja FILIPEFLOP!

13
Enviando SMS e Fazendo Chamadas com o Arduino GSM Shield
120 votos, 4.79 classificação média (95% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

306 Comentários

  1. Cristiano - 17 de julho de 2017

    Esse shield terá algum problema com a regulação de IMEI da anatel? Li que vão bloquear dispositivos sem o IMEI autenticado na GSM

  2. LUIZ - 16 de julho de 2017

    Olá, estou com dificuldades, o Arduino GSM GPRS Shield. que tenho é diferente mesmo sendo do mesmo modelo. No consigo fazer um simples teste.

    Segue a imagem
    https://http2.mlstatic.com/arduino-shield-modulo-gsm-gprs-sim900-com-antena-D_NQ_NP_200121-MLB20694060118_042016-F.webp

  3. Leonardo Simões - 19 de maio de 2017

    Comprei recentemente essa placa de vcs, gostaria saber como ligo ela sem acoplar ao Arduíno, ligar através de fios Jumper mesmo.. Obs: Ela só ira mandar um SMS, então demais função pode ser desabilitada.

  4. Stella Marques - 20 de abril de 2017

    Boa tarde,
    na hora da compilação aparece esse erro :

    Arduino: 1.8.1 (Windows 10), Placa:”Arduino/Genuino Uno”

    C:\Program Files (x86)\Arduino\libraries\GSM_Shield\GSM_Shield.cpp:7:22: fatal error: WProgram.h: No such file or directory

    #include “WProgram.h”

    ^

    compilation terminated.

    exit status 1
    Erro compilando para a placa Arduino/Genuino Uno

    Este relatório teria mais informações com
    “Mostrar a saida detalhada durante a compilação”
    opção pode ser ativada em “Arquivo -> Preferências”

    Pode me ajudar?

  5. vinicius - 15 de abril de 2017

    bom dia!

    você poderia me enviar uma imagem do jumper que voce fez nos pinos rx e tx, pois estou com dificuldades para poder entender

  6. Venancio - 29 de março de 2017

    Olá! Boa noite. Gostaria de saber como enviar um numero que está armazenado em uma variável pelo sim900. Muito obrigado, abraço.

  7. Giovanni Grossi - 25 de março de 2017

    Bom dia,
    Gostaria de saber se esse tutorial e esses programas funcionam com outros modelos do shield SIM900?
    Pois eu possuo um diferente desse, ele é um SIM900 Quad-band GSM/GPRS, possui a entrada do chip em cima do shield, comprei ele no exterior, sei que ele funciona, mas não encontrei um tutorial tão bom quanto esse, por isso gostaria de saber se esses programas também funcionariam com meu shield.
    Grato

  8. Eduardo - 15 de março de 2017

    Bom dia. É possível, quando o Arduino faz a ligação para um telefone, esse celular que foi chamado, a pessoa que atendeU, digitar algum número, o Arduino receberia esses números, para poder executar algo dependendo da seqüência digitada?

  9. Victor - 27 de fevereiro de 2017

    Gostaria de saber se é possível enviar SMS com uma condição por exemplo, se um sensor ligado ao Arduino estiver ligado, ele envia um SMS quando ele for desligado?

  10. Felipe Faria - 15 de fevereiro de 2017

    Boa Tarde adilson,

    Será que é possivel com esta placa instalar um botão que ao pulsá-lo ele envia as mensagens para os numeros de celulares programado nele??

    desde ja agradeço a atenção.

  11. silvio cavalcante - 1 de fevereiro de 2017

    Olá Adilson parabéns por mais um artigo muito bom.
    será que e possivel colocar 2 numeros para o envio de mensagem de alerta.
    grato

  12. jose luiz figueredo - 12 de dezembro de 2016

    parabens pelo valorosos esclarescimentos a equipe desta materia. eu gostaria de adicionar um teclado 4×3 ou 4×4 neste projeto pra fazer e receber ligações tem alguem disposto a me ajudar neste sentido? valeu turma!!!!!!!!

  13. George Bentes - 11 de dezembro de 2016

    Olá, eu gostaria de saber se tem que ter um SIM Card M2M para poder fazer o envio de SMS e/ou até usar métodos HTTP (POST, GET)?

    Comprei um SIM Card comum, ativei ele junto a operadora, porém quando eu coloquei no shield ele não reconhecia… Depois de uma breve pesquisada na WEB fiquei sabendo que tinha que ser um SIM Card M2M… Procede essa informação?

    • Adilson Thomsen - 12 de dezembro de 2016

      Bom dia George,

      Usei um SIM “comum”… tanto para mandar sms como também realizar ligações e conexão à internet. Dê uma olhada neste post, por favor: http://www.arduinoecia.com.br/2015/11/acessar-internet-arduino-gsm-shield-sim-900.html

      Abraço!

      Adilson – Equipe FILIPEFLOP

    • Ricardo Mariz - 14 de dezembro de 2016

      George, sobre a segunda pergunta: Os leds PWR e STA estão acendendo? Se só o PWR estiver aceso nada vai funcionar. Se for esse o caso, existe um comando para ativá-lo via Arduíno, mas vamos começar pelo básico; pressione por uns dois segundos o botão central da placa do SIM900 (versão FilipeFlop) PWR. Daí o STA vai acender e o led NET vai começar a piscar rápido tentando conectar com a operadora, depois se ele ficar piscando lentamente é porque conectou. Existem dois pinos de I/O que não podem ser usados, caso isso aconteça o SIM900 pode ser “resetado” ou “desligado” quando da execução do programa. Os pinos são: Arduino UNO – pinos 8 e 9 e Ardunio Mega 2560 – pinos 5 e 6. Um desses pinos é utilizado para ligar o SIM900 pelo Arduino, é só na inicialização permanecer com ele em “1” por 4 segundos e depois retornando-o para “0”. Pino 9 para o UNO e pino 6 para o Mega. Ele também serve para desligar o PWR, é só dar um novo delay de alguns segundos.

    • Pedro Henrique Pinheiro Lima - 17 de abril de 2017

      Bom dia george. voce teve realmente que usar um sim m2m ou conseguiu com o normal?
      obrigado

  14. weslley - 6 de dezembro de 2016

    tem como intalar aplicativo wdsap no microcontrolador para enviar mensagens

  15. Marcus Vinicius - 11 de novembro de 2016

    Bom dia.

    Tenho um ARDUINO MEGA 2560 R3 e um Ethernet Shield W5100 e esta GSM-GPRS Shield.

    Em minha aplicação precisaria usar os dois shields, tanto o Ethernet quanto o GSM, mas há um conflito no uso dos pinos 50 e 51, segundo as orientações de mudança que li no artigo, para uso do Shield GSM com o MEGA.

    Li em alguns sites que posso alterar os pinos TX e RX para 18 e 19. Assim garanto a compatibilidade e o funcionamento.

    Você saberia me confirmar se isso é possível?

  16. Alisson jesus - 26 de outubro de 2016

    Caro Adilson gosto muito do seu trabalho parabéns. Uma pergunta eu consigo enviar uma mensagem do meu cel para estar acionando uma saida no arduino?

  17. Leandro - 26 de outubro de 2016

    Boa tarde ! primeiro quero parabenizar pelas excelentes postagens ! Muito bom mesmo ! Queria tirar uma dúvida sobre o módulo GSM. É possível através do código fazer com que ele envie mensagem para 3 números diferentes ? quando recebe a detecção de um sensor por exemplo.
    Abraço

  18. Marcus Vinicius - 24 de outubro de 2016

    Bom dia,

    Vou usar o UNO e o MEGA em um projeto ((pois tenho ambas as placas disponíveis).

    Tenho como alterar a biblioteca (GSM-GPRS-GPS-Shield)de forma e renomear de forma a poder utilizar as duas placas sem ter que alterar os conteúdos a cada mudança?

    Parabéns pelo blog e pela loja… atendimento nota 10

  19. EDUARDO - 18 de outubro de 2016

    OLÁ , AMIGO
    Poderia me ajudar estou com um problema na hora de testar o gsm
    aparece a seguinte mensagem na tela do serial monitor :
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp
    nstatus=IDLE

  20. Everton Santos - 3 de outubro de 2016

    Boa tarde.
    Este shield funciona com os chips atuais das operadoras Vivo, Claro ou Tim?
    Testei um shield parecido (icomsat v1.1) e ele só reconhece os chips antigos.

  21. Luiz Felipe - 22 de setembro de 2016

    Vocês possuem alguma aplicação voltada apenas para a conexão deste shield via internet?

  22. Adilson Guilherme - 10 de junho de 2016

    Bom dia!
    Sou completamente novo nessa área, me surgiu uma dúvida, estou fazendo um sistema que realize ligações para diversos celulares, entretanto, gostaria de saber como programa-lo para que, caso o destinatário não atenda a ligação, o sistema reconheça que a mesma foi para caixa postal e encerre a chamada automaticamente.

    Muito obrigado.

  23. Daniel Tsuneo - 17 de maio de 2016

    Estou tendo problemas com o Shield e Arduino Mega fonte 9v, 1A… as vezes funciona normalmente envio e recebo vários sms, ai desligo e quando ligo novamente não funciona mais, estou com este problema desde que comprei a placa de vocês a uns 2 meses.

    • Adilson Thomsen - 17 de maio de 2016

      Bom dia Daniel,

      Percebeu se o shield está desligando sozinho ? Se possível, tente com uma fonte de pelo menos 2A.

      Abraço!

      Adilson – Equipe FILIPEFLOP

      • Daniel Tsuneo - 17 de maio de 2016

        Estou tentando agora com uma fonte 12v 4A, aparece tudo até que foi enviado porem não envia. Segue resposta do Serial Monitor

        DEBUG:SMS TEST
        ATT: >
        RIC:
        OK

        +PACSP: 1
        ÿÿÿÿÿÿÿÿ
        RDY
        AT+CMGS=”991053814″

        ERROR

        Enviado

      • Victo Miranda - 25 de novembro de 2016

        Estou trabalhando com o shield SIM900 conectado com um ARDUINO UNO e com uma fonte 9V e 1A. Sempre encontro problemas como ” DB: NO RESP” . Tem ligação com a fonte que estou utilizando ?

  24. Rui - 16 de maio de 2016

    Boa tarde, gostava de saber se era possivel fazer envio de sms em massa atraves do modulo GSM.

  25. willy - 5 de maio de 2016

    boa tarde, parabéns pelo blog. fiz o projeto descrito, mas acontece um problema, as vezes a msg não chega , poderia me ajudar?

    • Adilson Thomsen - 6 de maio de 2016

      Boa tarde Willy,

      Você consegue acompanhar no serial monitor para ver se a msg está sendo enviada corretamente ?

      Abraço e obrigado!

      Adilson – Equipe FILIPEFLOP

      • willy - 8 de maio de 2016

        quando chega sim, mas as vezes a msg não chega. mas no serial monitor, consigo ver a msg e quando chega os caracteres estão corretos.

        obrigado

        • Adilson Thomsen - 9 de maio de 2016

          Bom dia,

          O programa é configurado para mandar uma única mensagem, depois ele fica aguardando o recebimento de SMS pelo shield. Pode ser esse o problema ? Quando você reinicia o Arduino ele manda a msg ?

          Abraço!

          Adilson – Equipe FILIPEFLOP

  26. Cassia - 4 de maio de 2016

    Boa tarde,
    vcs tem algum exemplo de código para essa shield junto com o display nokia 5110?
    Já consegui as bibliotecas para o display, mas não consigo usar os dois juntos, nem montando em protoboard.

    Obrigada

    • Adilson Thomsen - 9 de maio de 2016

      Bom dia Cassia,

      Ainda não temos esse esquema de ligação, mas eu fiz alguns testes e a pinagem que vem no GSM shield não é “padrão”, ou seja, não consegui simplesmente encaixar o display Nokia no shield e utilizar as bibliotecas que já usei em outros posts. Vou tentar na protoboard.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  27. Antonio Lopes - 13 de abril de 2016

    Ola Boa tarde,
    Estou fazendo uma aplicação embarcada que preciso enviar mensagem SMS e localização.
    Ai gostaria de saber se é possível ligar esse shield de GSM + um shield de GPS, tudo em uma unica placa de Arduino Mega?

  28. Chico - 30 de março de 2016

    estou começando agora com ardoino, mas me interessei por esse projeto.
    estou disposto a pagar por uma consultoria inicial… você aceita?

  29. Chico - 30 de março de 2016

    seria possível ter uma entrada RJ 11 para ligar um aparelho de telefone comum ?

  30. Rivelto - 25 de março de 2016

    Essas programações serve para o modelo sim 800?
    Estou com dificuldades ele não envia o sms, alguém poderia me ajudar ?
    grato.

  31. michael - 23 de março de 2016

    ola boa tarde..

    com esse projeto consigo ter a identificação do telefone que esta me ligando pela comunicação serial do pc para identificar ligações no computador?

    • Adilson Thomsen - 23 de março de 2016

      Boa tarde Michael,

      É possível sim, você pode utilizar este comando no programa, que habilita a identificação de chamada:

      SIM900.print(“AT+CLIP=1\r”);

      Abraço!

      Adilson – Equipe FILIPEFLOP

  32. Felipe Ferreira Mendes - 23 de março de 2016

    Prezados bom dia,

    Será que é possível ligar esse arduíno a um segundo (BMP180) , para que consiga enviar instruções de temperatura para um telefone celular configurável ?

    Minha idéia é através do controle de temperatura , enviar alertas para números responsáveis.

    Muito bom o Blog de vocês! Parabéns.

  33. Bruno Melo - 19 de março de 2016

    Boa tarde,

    Gostaria de saber se consigo aplica envio de chamadas e SMS através do PIC?

    se tiver pode me dar alguma dica?

    Att

    Bruno Melo

  34. Evandro Michel Picolotto - 17 de março de 2016

    Boa tarde, segundo as especificações o módulo contem um relógio interno, gostaria de saber como posso obter data/hora do módulo.
    Evandro

    • Moura - 18 de março de 2016

      Evandro, tambem estou procurando esta resposta. o mais proximo que cheguei foi o AT+CCLK, mas o codigo que consegui só funciona sozinho. quando insiro outras linhas de codigo retorna tudo zerado. nem na elecfreaks eles sabem como funciona o rtc. mais continuo procurando…

  35. Lorraine - 16 de março de 2016

    Olá, Pessoal.

    Primeiramente, muito obrigado pelo trabalho de vocês. É fantástico.

    Eu tô com um SIM900 + Arduino Mega e com as instruções de vocês consegui fazê-lo funcioná-lo sem maiores problemas. Porém, ao abrir o monitor serial para acompanhar o status, assim que o programa rola normalmente, depois da mensagem ter sido enviada uma constante mensagem aparece e não para de rolar. Segue a mensagem abaixo:
    “This method is deprecated! Please use GetSMS in the SMS class.
    ATT: +CMGL
    RIC: ”

    Alguém pode me dizer o que significa e como dá pra tirá-la?!
    Desde já agradeço.

  36. Jampierre - 29 de fevereiro de 2016

    Vocês tem algum exemplo usando o Arduino Zero? Estou tentando Usar o shield GSM mas ele sempre me retorna um erro na porta serial.

  37. Tainara - 16 de fevereiro de 2016

    Bom Dia, Filipeflop!
    Estou a dias tentando enviar e receber mms com o modulo sim800l com o arduino mega, ao fazer o GSM PIN Management aparece PIN & PUK locked. Use PIN2/PUK2 in a mobile phone, e ao fazer o GSM Scan Networks aparece notConnected, teria como dar uma ajudinha??~
    Desde ja muito grata!

  38. Felipe - 13 de fevereiro de 2016

    Bom dia,
    também posso está utilizando ele como GPS? e utilizar as outras funções ao mesmo tempo?
    se sim, vc teria exemplos de programações?

  39. Giovani Ceron - 11 de janeiro de 2016

    Boa Tarde, Tudo Certo?

    Estou testando a shield com o Arduino Mega, mas por enquanto não obtive sucesso.
    Ja troquei ate a fonte de energia mas ela sempre apresenta erros e chega ate a demorar para mostrar os resultados dos testes.

    Andei reparando os leds NET, STA e PWR, o NET pisca a cada 3 segundos, o PWR fica sempre ligado, mas o STA que deveria ficar sempre ligado, ele desliga as vezes e liga logo em seguida.

    O que pode ser? Podem me ajudar ?

    • FILIPEFLOP - 11 de janeiro de 2016

      Boa tarde Giovani,

      Qual a especificação da fonte que você está usando ? Quantos ampéres ?

      Abraço

      Adilson – Equipe FILIPEFLOP

    • francisco - 11 de janeiro de 2016

      1º Bom dia, a sua fonte é de 9V e 1A? Em caso afirmativo passe para a segunda opção!
      2º Você tem que dar reset na placa, pode-se fazer manualmente ou por sotfware!
      obs.: desligue o seu shield, se ele estiver ligado (se o pwr e o sta estiverem ligado), apertando no S_PWR. e ligue-o por software:

      void powerUpOrDown()
      {
      //Liga o GSM Shield
      Serial.print(F(“Liga GSM…”));
      pinMode(6, OUTPUT);
      digitalWrite(6, LOW);
      delay(1000);
      digitalWrite(6, HIGH);
      delay(1000);
      Serial.println(F(“OK!”));
      digitalWrite(6, LOW);
      delay(500);
      }

      e no void setup deixa assim:

      void setup()
      {
      Serial.begin(4800);
      powerUpOrDown();
      Serial.println(F(“Testando GSM Shield SIM900″));
      if (gsm.begin(9600))
      {
      Serial.println(F(“\nstatus=READY”));
      started = true;
      }
      else Serial.println(F(“\nstatus=IDLE”));
      }

      3º- a biblioteca foi atualizada, então alguns comando estão diferentes.
      4º- aparentemente, o shield não funciona com alguns chips. então experimente trocar por outro!

    • francisco - 11 de janeiro de 2016

      E mais uma coisa: você tem que ir na biblioteca e alterar o GSM.cpp, configurando os pinos TX e RX (como mostrado acima).

  40. francisco - 9 de janeiro de 2016

    Bom dia, sou eu de novo no pedaço!
    Depois de algumas tentativas, consegui fazer o shield funcionar! E segundo minhas tentativas, acabei encontrando algumas observações:
    1º para uma boa comunicação com o shield o ideal é o Serial.begin(4800); e gsm.begin(9600);
    2º aparentemente, o shield não funciona com cartão da claro! (testei com ele e depois mudei pra oi e funcionou perfeitamente, só não sei se está relacionado com o sinal da rede)
    3º quando for manda uma mensagem que contem um codigo ascii, ela vai parar no codigo ascii e não vai mandar o resto!

  41. Francisco - 8 de janeiro de 2016

    Bom dia, alguém pode me explicar como procedo para enviar mensagens e efetuar uma ligação?
    tento fazer com aqui em casa e não acontece nada, o nº é 84******, já tentei de diversas formas:
    1- tentei com o nº normal: 84******
    2- tentei com o ddd : 5384******
    3- tentei com o ddd e o codigo: 0315384******

  42. francisco - 6 de janeiro de 2016

    Bom dia, gostaria de saber como posso fazer um programa para ficar mostrando a qualidade do sinal na serial.

  43. Gilmar - 5 de janeiro de 2016

    Boa tarde,

    tem alguma forma de checar se o SMS foi enviado/recebido?

    Abs.

  44. Jampierre - 31 de dezembro de 2015

    Estou com um problema, fiz tudo como esta descrito, aperto o botão s_pwr por 3s e ate então está tudo ok, porem depois de alguns segundos apenas a luz pwr fica acesa e a placa para de responder. Alguma ideia de como resolver esse problema?

  45. francisco - 24 de dezembro de 2015

    Bom dia, gostaria de saber como posso utilizar mostrar os resultados do comando at no display?
    Tipo, estou querendo mostrar por exemplo a qualidade do sinal no display e gostaria de saber como procedo!

  46. Daniel - 21 de dezembro de 2015

    Amigo, qual fonte vc utilizou? Pergunto porque “falam” que este shield consome mais de 2A, é verdade? Utilizo 12V e 2A, mas tem hora que fica caindo.

    • FILIPEFLOP - 22 de dezembro de 2015

      Bom dia Daniel,

      Realmente isso acontece, a fonte tem que ser forte, senão o shield desliga sozinho.

      Eu estou usando uma fonte de 9V e 2A, e não tive problemas de quedas.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  47. Lucas Lima - 19 de dezembro de 2015

    Ótimo tutorial FILIPEFLOP ! Parabéns, agora me tire uma dúvida por favor ele se comunica de forma Serial através do RX TX certo ? Caso eu queira usar essa placa em um Standalone, eu só preciso conectar esses dois pinos + a alimentação do Shield ?

  48. Luan David - 8 de dezembro de 2015

    Como faço para que a sim900 envie para mais de um numero e como faço para ligar a shield via software, pode me ajudar?

  49. erica - 17 de novembro de 2015

    sketch_nov16benvia_e_recebe_sms:9: error: ‘SMSGSM’ does not name a type
    sketch_nov16benvia_e_recebe_sms.ino: In function ‘void setup()':
    sketch_nov16benvia_e_recebe_sms:22: error: ‘gsm’ was not declared in this scope
    sketch_nov16benvia_e_recebe_sms:33: error: ‘sms’ was not declared in this scope
    sketch_nov16benvia_e_recebe_sms.ino: In function ‘void loop()':
    sketch_nov16benvia_e_recebe_sms:43: error: ‘gsm’ was not declared in this scope

  50. Kaio Santos - 12 de novembro de 2015

    Falaa galera… adquiri o Shield testei tudo certinho mas não consegui ligar ele separado, alguem conseguiu ligar ele no UNO somente pelas portas necessarias ? ou tenho que ligar ele em todos os pinos mesmo ?

  51. Marcus - 10 de novembro de 2015

    Senhores, boa noite.

    Adquiri o shield com vocês a algum tempo, mas já testei três microfones e o celular que recebe a ligação só fica chiando. Vocês sabem o que pode ser? Estes microfones para pc de eletreto funcionam?

    No aguardo,

  52. Júnior Freires - 27 de outubro de 2015

    Alguém pode me ajudar (enviar), uma programação para Shield de SMS , que quando um sensor de toque for acionado envie um SMS para o número desejado?

  53. edgar - 17 de outubro de 2015

    boa tarde!
    sou novo no muno arduino, comprei GSM/GPRS fiz alguns testes que deram certo. Mas gostaria de saber se existe um maneira de enviar uma leitura da medição, exemplo temperatura (32ºC), em vez de uma mensagem texto?

  54. Marcus - 9 de outubro de 2015

    Boa noite!

    Como ficaria o código para o Arduíno ler um botão, caso o mesmo for acionado, liga para determinado número.

  55. Jonas dos Santos - 23 de setembro de 2015

    Boa noite amigos! Estou desenvolvendo um projeto no qual é necessário o envio de SMS’s para vários contatos telefônicos. Consigo fazer varias operações por SMS usando este shield sim900, mas quando coloco ele dentro de um laço for, as mensagens não são enviadas, salvo algumas vezes. Estou usando o Arduíno mega junto com o shield GSM do exemplo. Alguém tem alguma ideia de como enviar varias mensagens para destinatários diferentes? obrigado.

  56. Moura - 18 de setembro de 2015

    Luis Fernando da Silva; em 23 de julho , voce diz que “Não está sendo necessário resetar/ligar a shield porque programei em software o GSM_RESET e o GSM_ON na biblioteca. ”

    isso quer dizer que voce não precisa apertar o sbotão S_PWR por 3 segundos quando liga? Se afirmativo, por favor me ensine pois meu projeto empacou nesta questão. Explico: o sistema monitora um ambiente e a falta de energia é uma possibilidade. Mesmo com um UPS, sempre existe a possibilidade da bateria exaurir. dai quando a energia voltar o sistema liga mas não manda os SMS porque não tem ninguem pra apertar o botão. :(

  57. Pedro Gonçalves - 14 de setembro de 2015

    Adilson Boa tarde!

    Um pergunta, como faço para conectar ele na internet para que o mesmo possa enviar “GET”s com dados para meu servidor?
    Exemplo: client.print(F(“GET /~teste/teste2.php?codtag=”));

    Tem algum tutorial para conexão e envio de dados via a internet do chip?
    att

  58. Giovani Ceron - 14 de setembro de 2015

    Boa Tarde

    Estou pensando em comprar essa SHIELD para um projeto e Gostaria de saber, se é possível e como é possível conectar sensores ao shield, coletando informações e mandando via sms.
    Tem como?

  59. Rennan Lopes de lima - 28 de agosto de 2015

    já fiz de tudo para conectar o meu GSM GPRS Shield para Arduino EFCom SIM900 com a internet.
    eu li que vcs fizeram usando um chip da oi poderia me mandar a linha de código utilizada para eu fazer o meu trabalho de faculdade ou para saber se o produto não esta funcionando

  60. bartz - 25 de agosto de 2015

    boa tarde comprei um shield deste com vocês queria uma informação
    se eu ligar ele externamente via jumpers pois espaço onde via e limitado
    eu so tneho que ligar o vcc o gnd e a rx pino 0 e tx pino 1 na placa invertido so isto?

    obrigado

    rafael

  61. lucas - 24 de agosto de 2015

    Testando GSM Shield…
    DB:NO RESP
    DB:NO RESP
    DB:NO RESP
    Trying to force the baud-rate to 9600

    1200
    2400
    4800
    9600
    19200
    38400
    57600
    115200
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cppERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp
    nstatus=IDLE

    • FILIPEFLOP - 24 de agosto de 2015

      Bom dia Lucas,

      Verifique se a fonte de alimentação está sendo suficiente para o shield (mínimo de 9V, 1A), e também se o shield está sendo ligado corretamente pelo botão central (liga/desliga), conforme informações do post.

      Abraço

      Adilson – Equipe FILIPEFLOP

  62. Claudio - 21 de agosto de 2015

    Prezados,
    Primeiramente gostaria de parabenizar o blog pela ajuda que é MUITO bem vinda.
    Tenho um Shield SIM900 ligado com o Arduino UNO e através dos exemplos aqui postados consegui enviar SMS e realizar chamadas (operadora CLARO).
    Porém, notei que nos exemplos aqui mencionados sempre que executamos o skecth fazemos tbm uma inicialização no shield. E isso nem sempre será necessário pois parece que hora ligo e hora desligo o shield.
    Em virtude disso , é que tenho algumas dúvidas:
    1. Como checar se a placa está ou não respondendo via software dentro do loop;
    2. Quais são os comandos AT necessários para registrarmos o shield na rede?
    3. Ao final da inicialização os comandos AT não respondem de imediato, ou seja, as vezes tenho que digitá-los mais de uma vez (delay no shield?)…

    Ah propósito, descobri que no meu shield o pino 7 permite resetar via software.

  63. Cândido Miguel - 18 de agosto de 2015

    Ola, boa tarde. Tenho um projecto que é de abertura de porta por intermedio de chamada. Mas tenho tido dificuldades em programar a minha placa.
    Estou usando uma arduino UNO e o meu módulo GSM é o da Tinysine.
    Por favor me ajudem na criacao do codigo.

  64. rafael - 10 de agosto de 2015

    boa tarde como faço para ligar ele externamente ao arduino? pois terei que colocar ele do lado por falta de espaço

  65. Bruno - 28 de julho de 2015

    Pessoal, estou tentando acionar uma led atraves de chamada de determinado numero, mas ainda nao consegui finalizar o sketch, sera que alguem pode me ajudar, fiz algumas buscas, e alterei alguns codigos, vejam o que consegui, mas infelizmente ainda nao funciona. Alguem pode me ajudar??
    #include
    char inchar; // Will hold the incoming character from the GSM shield
    SoftwareSerial SIM900(7, 8);

    int onoff=0; // 0 = off, 1 = on

    void setup()
    {
    Serial.begin(9600);
    // set up the digital pins to control
    pinMode(12, OUTPUT);
    pinMode(13, OUTPUT); // LEDs – off = red, on = green
    digitalWrite(12, HIGH);
    digitalWrite(13, LOW);

    // wake up the GSM shield
    SIM900power();
    SIM900.begin(9600);
    delay(20000); // give time to log on to network.
    SIM900.print(“AT+CLIP=1\r”); // turn on caller ID notification
    delay(100);
    }

    void SIM900power()
    // software equivalent of pressing the GSM shield “power” button
    {
    digitalWrite(9, HIGH);
    delay(1000);
    digitalWrite(9, LOW);
    delay(7000);
    }

    void doSomething()
    {
    if (onoff==0)
    {
    onoff=1;
    digitalWrite(12, HIGH);
    digitalWrite(13, LOW);
    Serial.println(“D12 high D13 low”);
    }
    else
    if (onoff==1)
    {
    onoff=0;
    digitalWrite(12, LOW);
    digitalWrite(13, HIGH);
    Serial.println(“D12 low D13 high”);
    }
    }

    void loop()
    {
    if(SIM900.available() >0)
    {
    inchar=SIM900.read();
    if (inchar==’2′)
    {
    delay(10);
    inchar=SIM900.read();
    if (inchar==’1′)
    {
    delay(10);
    inchar=SIM900.read();
    if (inchar==’2′)
    {
    delay(10);
    inchar=SIM900.read();
    if (inchar==’8′)
    {
    delay(10);
    inchar=SIM900.read();
    if (inchar==’6′)
    {
    delay(10);
    inchar=SIM900.read();
    if (inchar==’7′)
    {
    delay(10);
    inchar=SIM900.read();
    if (inchar==’5′)
    {
    delay(10);
    inchar=SIM900.read();
    if (inchar==’3′)
    {
    delay(10);
    inchar=SIM900.read();
    if (inchar==’0′)
    {
    delay(10);
    inchar=SIM900.read();
    if (inchar==’9′)
    {
    Serial.println(“do sometehing”);
    delay(10);
    // now the number is matched, do something
    doSomething();
    // arbitrary delay so the function isn’t called again on the same phone call
    delay(60000);
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }

  66. Luiz Fernando da Silva - 23 de julho de 2015

    Eu vi que muita gente está tendo o mesmo problema que eu, usando o efcom sim900 com arduino mega. Usando o programa de testes de comandos AT, o monitor mostra isso:

    Testando GSM Shield…
    DB:NO RESP
    DB:NO RESP
    DB:NO RESP
    Trying to force the baud-rate to 9600

    1200
    2400
    4800
    9600
    19200
    38400
    57600
    115200
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cppERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp
    nstatus=IDLE

    Segui o tutorial, já troquei o RX TX do GSM.cpp para 50,51, estou usando alimentação externa de 9v (até mais, talvez), descomentei a linha lá #define MEGA e tudo mais, simplesmente não funciona. Os leds estão ligados, mas o NET pisca com pouca frequência. Não está sendo necessário resetar/ligar a shield porque programei em software o GSM_RESET e o GSM_ON na biblioteca. Cheguei a pensar que fosse o contato do sim card, então eu até prensei mais ele com um elástico, mas ficou na mesma.

    O sim card tem que ser específico para transmissão de dados? Ou pode ser qualquer um (desbloqueado), mesmo um pré-pago, que tenha algum plano de dados? Eu estava testando com o do meu telefone, que é da OI.

    Alguém conseguiu a solução? Obrigado

    • FILIPEFLOP - 23 de julho de 2015

      Boa tarde Luiz,

      Nos testes usamos um SIM comum, desbloqueado. O problema pode estar no GSM Shield mesmo. Você consegue testar essa placa com um Arduino Uno ?

      Abraço

      Adilson – Equipe FILIPEFLOP

      • francisco - 24 de julho de 2015

        bom dia, aconteceu isso aqui também, mas, quando apertei S_POWER e deixei um tempo até o net ficar piscando começou a funcionar!

        • Luiz Fernando da Silva - 25 de julho de 2015

          Francisco, com que frequência o net tava piscando? Você só precisou mudar o RX TX lá no GSM.cpp?

          Adilson, vou fazer o teste com um arduino UNO, mas eu precisava mesmo que fosse no mega por conta do meu projeto. Quando eu fizer, falo com vocês aqui.

          • Luiz Fernando da Silva - 25 de julho de 2015

            Eu olhei o datasheet do EFCOM, e pelo que tá lá, a minha shield está assim:
            PWR – ON – Power on the Efcom
            STA – ON – Power on the Sim900
            NET – 64ms ON/3000ms OFF – Sim900 registrado na rede

            Ou seja, PWR e STA estão ligados, e o NET pisca de 3 em 3 segundos. Mas não consegue estabelecer uma conexão GPRS (que é quando ele teria que piscar em menos tempo)…

          • francisco - 26 de julho de 2015

            tipo assim, eu testei com o programa para ver se está conectado!

            /*************************************************************************
            * Bibliotecas Necessárias *
            *************************************************************************/

            #include

            #include
            #include
            #include

            #include
            #include

            /*************************************************************************
            * Descrição das Variáveis *
            *************************************************************************/

            SMSGSM sms;

            int numdata;
            boolean started=false;
            char smsbuffer[160];
            char n[20];

            /*************************************************************************
            * Descrição do Display *
            *************************************************************************/

            // pin 8 – Serial clock out (SCLK)
            // pin 9 – Serial data out (DIN)
            // pin 10 – Data/Command select (D/C)
            // pin 11 – LCD chip select (CS/CE)
            // pin 12 – LCD reset (RST)

            //Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);

            // pin 9 – Serial clock out (SCLK)
            // pin 10 – Serial data out (DIN)
            // pin 11 – Data/Command select (D/C)
            // pin 13 – LCD chip select (CS/CE)
            // pin 12 – LCD reset (RST)
            Adafruit_PCD8544 display = Adafruit_PCD8544(9, 10, 11, 13, 12);
            /*************************************************************************
            * Inicialização do Sistema *
            *************************************************************************/

            void setup(){

            Serial.begin(9600); //Inicializa a serial

            Serial.println(“Testando GSM shield…”);

            display.begin();
            display.setContrast(50); //Ajusta o contraste do display
            display.clearDisplay(); //Apaga o buffer e o display
            display.setTextSize(1); //Seta o tamanho do texto
            display.setTextColor(BLACK); //Seta a cor do texto
            display.setCursor(0,0); //Seta a posição do cursor
            display.println(“Projeto GPS”);

            if (gsm.begin(2400)){ //Inicia a configuracao do Shield
            Serial.println(“nstatus=READY”);
            started=true;

            display.setTextSize(2);
            display.setTextColor(BLACK);
            display.print(“GSM shield conectado”);
            display.display();
            delay(2000);
            }

            else{

            Serial.println(“nstatus=IDLE”);

            display.setTextColor(WHITE, BLACK); //Texto invertido – Branco com fundo preto
            display.println(“GSM shield desconectado”);
            display.display();
            delay(2000);
            }
            }

            /*************************************************************************
            * Programa Principal *
            *************************************************************************/

            void loop(){

            }

            compilei esse programa e gravei no arduino mega. (estou usando o display 5110 também, mas, você pode testar somente com o serial).

            obs: usei um chip que esta registrado.
            obs2: quando gravei o programa no shield, ele já estava na placa.
            obs3: quando eu gravei na primeira vez, deu o mesmo erro que deu no seu!
            obs4: eu apertei o botão S_POWER e fiquei apertando até ficar piscando o led net!
            obs5: quando ele começou a piscar o programa funcionou normalmente!

          • francisco - 26 de julho de 2015

            #include

            #include
            #include
            #include

            #include
            #include

            esses são os includes

      • Luiz Fernando da Silva - 26 de julho de 2015

        É, testei com o Arduino Uno e funcionou de boa. Todos os comandos AT funcionando certinho e tal. O problema está no arduino mega mesmo…

        • FILIPEFLOP - 27 de julho de 2015

          Boa tarde Luiz,

          Estranho, pois foi essa configuração do post que usamos para testar com o Arduino Mega, e que funcionou normalmente.

          Abraço

          Adilson – Equipe FILIPEFLOP

        • francisco - 28 de julho de 2015

          testa isso aqui:

          1- o teu arduino mega está funcionando normalmente, ou seja, já testou com outro programa? (obs: na hora de gravar o programa no arduino, você trocou no lá em cima para arduino mega?)
          2- você fez a configuração mostrada no tutorial certinho? não ligou em outro lugar?(tem que pegar o pinos da ponta pra ligar no 50 e 51)
          3- você mudou a biblioteca com os pinos falados no tutorial?

          obs: eu fiz o mesmo que está no tutorial e funcionou de boa.

          • Luiz Fernando da Silva - 28 de julho de 2015

            É, mudei tudo exatamente como está no tutorial. E ainda descomentei o #define MEGA do GSM.h. Bem, só se for problema com o meu Mega, cheguei a fazer alguns programinhas com ele mas nada como conectar em uma shield. E a shield está bem, pq até funcionou no UNO. Mas pode ser que meu MEGA esteja com problema então.

    • D.C.M - 29 de julho de 2015

      Cara eu resolvi esse problema!

      • Luiz Fernando da Silva - 29 de julho de 2015

        E como você fez DCM?

        • BRUNO - 31 de julho de 2015

          Pessoal, tenho um projeto em andamento, mas nao finalizo de jeito nenhum, nao consigo acender o LED via sms, estou usando conforme abaixo, a placa esta com sinal perfeito, faco ligacoes, e envio sms normal, mas no tratamento da mensagem a tela do serial trava no seguinte:
          ……………
          AT+CMGD=1,4
          AT+CMGF=1
          AT+CNMI=3,3,0,0
          >>>>> Celular Shield Inicializado <
          e envio a mensagem, mas nada acontece, a tela fica travada.
          estou usando o sketch conforme abaixo:

          #include //Inclui a biblioteca SerialGSM.h
          #include //Inclui a biblioteca SoftwareSerial.h
          SerialGSM cel(2,3); //Configura os pinos 2 e 3 para se trabalhar como Rx e Tx via Software
          String SMS; //Variável para o armazenamento da SMS recebida
          String numeroRemetente; //Variável para o armazenamento do número do remetente da SMS
          String numeroPermitido = “027998919094”; //Variável que define o número do celular que o sistema irá responder
          boolean sendonce=true; //Variável boleana utilizada pela biblioteca SerialGSM.h
          void setup()
          {
          int i; //Variável para contagem
          for(i=8;i>>>> Celular Shield Inicializado <"); //Mensagem de início da aplicação
          Serial.println(); //Pula linha
          }
          void loop()
          {
          if (cel.ReceiveSMS()) //Se o chip no Celular Shield receber uma SMS
          {
          Serial.println(); //Pula linha
          Serial.println(); //Pula linha
          Serial.println(); //Pula linha
          Serial.println(); //Pula linha
          Serial.println("~~NOVA MENSAGEM RECEBIDA~~"); //Imprime na serial "NOVA MENSAGEM RECEBIDA"
          Serial.println(); //Pula linha
          Serial.print("REMETENTE: "); //Imprime na serial a palavra "REMETENTE:"
          Serial.println(cel.Sender()); //Imprime o número do remetente que a SMS foi enviada
          numeroRemetente = cel.Sender(); //Armazena na variável numeroRemetente o número do remetente
          if(numeroRemetente != numeroPermitido) //Se o número do remetente não for o mesmo que o número permitido
          {
          Serial.println("Não Permitido"); //Imprime a mensagem "Não Permitido" e não executa nada
          }
          else //Senão, o número é o permitido e executará os comandos
          {
          Serial.print("MENSAGEM: "); //Imprime na serial a palavra "MENSAGEM:"
          Serial.println(cel.Message()); //Imprime a mensagem que foi recebida
          SMS = cel.Message(); //Guarda na mensagem na variável SMS
          //++++++++Tratamento do Primeiro Caractere++++++++
          if(SMS[0] == '1') //Se o primeiro caractere da SMS for igual a 1
          {
          digitalWrite(8,HIGH); //Acende o LED verde
          Serial.println();//Pula uma linha na serial
          Serial.println("LED VERDE ACESO"); //Imprime a mensagem "LED VERDE ACESO"
          }
          else if(SMS[0] == '0') //Senão, se o primeiro caractere for igual a 0
          {
          digitalWrite(8,LOW); //Apaga o LED verde
          Serial.println(); //Pula uma linha na serial
          Serial.println("LED VERDE APAGADO"); //Imprime a mensagem "LED VERDE APAGADO"
          Serial.println(); //Pula uma linha na serial
          }
          //=================================================
          }
          //++++++++Tratamento do Segundo Caractere++++++++
          if(SMS[1] == '1') //Se o segundo caractere da SMS for igual a 1
          {
          digitalWrite(9,HIGH); //Acende o LED amarelo
          Serial.println(); //Pula uma linha na serial
          Serial.println("LED AMARELO ACESO"); //Imprime a mensagem "LED AMARELO ACESO"
          }
          else if(SMS[1] == '0') //Senão, se o segundo caractere for igual a 0
          {
          digitalWrite(9,LOW); //Apaga o LED amarelo
          Serial.println(); //Pula uma linha na serial
          Serial.println("LED AMARELO APAGADO"); //Imprime a mensagem "LED AMARELO APAGADO"
          }
          //=================================================
          //++++++++Tratamento do Terceiro Caractere++++++++
          if(SMS[2] == '1') //Se o terceiro caractere da SMS for igual a 1
          {
          digitalWrite(10,HIGH); //Acende o LED vermelho
          Serial.println(); //Pula uma linha na serial
          Serial.println("LED VERMELHO ACESO"); //Imprime a mensagem "LED VERMELHO ACESO"
          }
          else if(SMS[2] == '0') //Senão, se o terceiro caractere for igual a 0
          {
          digitalWrite(10,LOW); //Apaga o LED vermelho
          Serial.println(); //Pula uma linha na serial
          Serial.println("LED VERMELHO APAGADO"); //Imprime a mensagem "LED VERMELHO APAGADO"
          }
          //=================================================
          cel.DeleteAllSMS(); //Deleta todas as SMS
          }
          }

    • Moura - 18 de setembro de 2015

      Luis, voce diz que “Não está sendo necessário resetar/ligar a shield porque programei em software o GSM_RESET e o GSM_ON na biblioteca. ”

      isso quer dizer que voce não precisa apertar o sbotão S_PWR por 3 segundos quando liga? Se afirmativo, por favor me ensine pois meu projeto empacou nesta questão. Explico: o sistema monitora um ambiente e a falta de energia é uma possibilidade. Mesmo com um UPS, sempre existe a possibilidade da bateria exaurir. dai quando a energia voltar o sistema liga mas não manda os SMS porque não tem ninguem pra apertar o botão. :(

  67. francisco - 22 de julho de 2015

    bom dia. Alguém poderia me dar uma luz?
    gostaria de saber se tem como enviar uma mensagem com o valor do caractere que nem tem no c.

    tipo assim:

    char c[7];
    char aux;

    for(aux=0; aux<=5;aux++){
    c[aux]=aux;
    }

    sms.SendSMS("número", "%c%c%c%c%c%c", c[0],c[1],c[2],c[3],c[4],c[5])

    • Jampierre - 13 de março de 2016

      Boa Noite francisco,

      O sms.SendSMS recebe *char. O que dar para fazer é o seguinte.

      Declare um char com um tamanho qualquer
      char charBuf[50];

      Crie uma String para receber os valores
      String temp;

      Rode o seu for
      for(aux=0; aux<=5;aux++){
      temp = String(temp +String(aux));
      }

      Converta String para char
      temp.toCharArray(charBuf, 50);

      envie a mensagem normal
      sms.SendSMS("numero", charBuf);

  68. Jeferson Lorscheitter - 21 de julho de 2015

    Boa tarde Pessoal, sou novo no mundo Arduino e estou com duvidas de como ligar uma ATK-SIM900a (ALIENTEK) num arduino UNO?? #me ajudem# ahsuhsu whats 5180148293

  69. Victor - 14 de julho de 2015

    Ola gostaria de perguntar se é possível ele efetuar ligação e mandar sms ao mesmo tempo ou com um intervalo de tempo!

  70. francisco - 14 de julho de 2015

    bom dia, estava olhando a biblioteca do shield e percebi que tinha algo sobre gps. Gostaria de saber se posso conseguir informações de gps com ele.

  71. Daniel - 8 de julho de 2015

    Existe algum comando para saber as redes disponíveis? Pergunto pois quero usar um shield deste em um sítio…e acredito que por ter “anteninha” ou opção de trocar, tem sinal melhor que de um smartphone.

  72. Jeferson Lorscheitter - 5 de julho de 2015

    Boa noite Pessoal, sou novo no mundo Arduino e estou com duvidas de como ligar uma ATK-SIM900a (ALIENTEK) num arduino UNO?? #me ajudem# ahsuhsu whats 5180148293

  73. Pedro Gonçalves - 24 de junho de 2015

    Como faço para conectar ele a internet??
    Alguem teria o código para me auxiliar?
    Estou querendo enviar dados de temperatura para um servidor web, alguem teria esse codigo?
    Agradecido!

  74. Pedro Gonçalves - 24 de junho de 2015

    Bom dia, uma duvida no video de voces.
    Voces recomendam adicionar uma fonte 9v juntamente com usb alimentando o arduino e a shield.
    Tenho uma fonte 12v aqui, só ela da conta sozinha?
    Ou preciso adicionar o usb junto?

    Caso eu queira implementar o projeto numa casa e so posso ligar na fonte 12v, ela aguenta?

    att

  75. Argel Galante - 16 de junho de 2015

    Percebi que esse shield não vem com aqueles conectores para os pinos na parte de cima só tem pinos em baixo para conectalo ao arduino, no caso como farei para adicionar sensores se não tem as conexões?
    e quantos pinos ele usa do arduino tirando o gnd e vcc?.

    • FILIPEFLOP - 25 de junho de 2015

      Bom dia Argel,

      Realmente isso é um pouco complicado, mas a princípio eu vejo 2 alternativas: retirar a barra de pinos que está no shield e soldar uma barra de pinos fêmea, ou ligar os pinos do arduino ao shield por meio de jumpers, e não conectar o shield diretamente na placa.

      Abraço

      Adilson – Equipe FILIPEFLOP

  76. Fernando Cesar - 11 de junho de 2015

    Olá,

    Estou tentando utilizar o módulo com um microcontrolador PIC (16F877a ou 18F4550), porém ligando a alimentação em 5VCC conforme a pinagem do arduino o módulo não está ligando…seria possível fazer a ligação com o PIC, existe algum modelo?

    Obrigado.

    • Rodrigo - 15 de junho de 2015

      Cara, estou com dois códigos funcionando separadamente, mas quando tento juntar os dois, aparece um monte de erros, estou montando um alarme, estou usando lcd, keypad, sensor pir, algumas coisinhas mais e o gsm shield, mensagem funcionou sozinha e o alarme tambe, mas quando tento juntar os dois da pau, alguem pode me ajudar????

      • Rodrigo - 15 de junho de 2015

        segue o codigo:
        //INCLUI CÓDIGO DA BIBLIOTECA
        #include
        #include

        //INICIALIZA BIBLIOTECA COM OS NÚMEROS DOS PINOS DE INTERFACE
        LiquidCrystal lcd(32, 31, 25, 24, 23, 22);

        //DECLARAÇÃO DE ENTRADAS E SAIDAS
        char* senha = “369A”;//DECLARA SENHA

        const byte LINHAS = 4;//DECLARA QUANTIDADE DE LINHA DO KEYPAD
        const byte COLUNAS = 4;//DECLARA QUANTIDADE DE COLUNAS DO KEYPAD
        char teclas[LINHAS][COLUNAS] = {//DECLARA POSICIONAMENTO DOS SIMBOLOS, NÚMEROS OU LETRAS DO KEYPAD
        {‘1′, ‘2’, ‘3’, ‘A’},
        {‘4′, ‘5’, ‘6’, ‘B’},
        {‘7′, ‘8’, ‘9’, ‘C’},
        {‘*’, ‘0’, ‘#’, ‘D’}
        };
        byte pinoLinha[LINHAS] = {21, 20, 19, 18};//DECLARA OS NÚMEROS DAS ENTRADAS QUE ESTÃO SENDO USADAS PELAS LINHAS DO KEYPAD
        byte pinoColuna[COLUNAS] = {17, 16, 15, 14};//DECLARA OS NÚMEROS DAS ENTRADAS QUE ESTÃO SENDO USADAS PELAS COLUNAS DO KEYPAD
        Keypad keypad = Keypad(makeKeymap(teclas), pinoLinha, pinoColuna, LINHAS, COLUNAS);

        int position = 0;
        int buzzer = 33;//DECLARA PINO SEIS COMO SIRENE
        int ledVer = 36;//DECLARA PINO SETE COMO UM LED
        int pirPin = 34;//DECLARA PINO OITO COMO SENSOR DE PRESENÇA
        int ledAm = 35;

        void setup() {//DECLARA COMO O PROGRAMA SE INICIA

        fechadoOk(true);
        int disparo = digitalRead(ledAm);

        //DEFINI SE OS PINOS SÃO DE ENTRADA OU SAIDA
        pinMode(ledVer, OUTPUT);//DEFINI PINO DO LED VERMELHO COMO SAIDA

        pinMode(pirPin, INPUT);//DEFINI PINO DO SENSOR DE PRESENÇA COMO ENTRADA
        pinMode(buzzer, OUTPUT);//DEFINI O PINO DA SIRENE COMO SAIDA

        pinMode(ledAm, OUTPUT);

        lcd.begin(16, 2);//DECLARA QUE O LCD POSSUI DEZESEIS CARACTERES EM DUAS LINHAS
        lcd.clear();//LIMPAR LCD
        lcd.print(“DESATIVADO”);//ESCREVE “ALARME DESATIVADO” NA LINHA SUPERIOR DO LCD
        lcd.setCursor(0, 1);//PASSA PARA LINHA INFERIOR DO LCD
        lcd.print(“DIGITE SUA SENHA”);//ESCREVE “DIGITE A SENHA” NA LINHA INFERIOR DO LCD
        digitalWrite(ledVer, LOW); //LED VERMELHO DESLIGADO
        digitalWrite(buzzer, LOW);//SIRENE DESLIGADA

        }

        void loop() {//DECLARA O QUE IRÁ RODAR REPETITIVAMENTE NO PROGRAMA

        int count = 0;

        char key = keypad.getKey();
        if (key == ‘*’ || key == ‘#’) {//SE DIGITAR “*” OU “#” NO KEYPAD,
        position = 0;
        fechadoOk(false);

        }
        if (key == senha[position]) {//SE DIGITAR A SENHA CORRETAMENTE,
        position ++;
        }
        if (position == 4) {
        fechadoOk(true);
        }
        delay(100);

        int acionamento = digitalRead(pirPin);//DECLARA UMA VARIÁVEL CHAMADA “ACIONAMENTO” QUE RECEBE O VALOR DA ENTRADA DO SENSOR DE PRESENÇA
        int teclado = digitalRead(ledVer);//DECLARA UMA VARIÁVEL CHAMADA “TECLADO” QUE RECEBE O VALOR DA SAIDA DO LED VERMELHO
        int disparo = digitalRead(ledAm);

        if (teclado == HIGH) {//SE “TECLADO” ESTIVER LIGADO, E,

        if (acionamento == HIGH) {//SE “ACIONAMENTO” ESTIVER LIGADO TAMBÉM,

        digitalWrite (ledAm, HIGH);

        if (disparo == HIGH){

        lcd.clear();//LIMPE LCD
        lcd.print(“ALARME”);//ESCREVA “ALARME” NA LINHA SUPERIOR,
        lcd.setCursor(0, 1);//PASSE PARA LINHA INFERIOR,
        lcd.print(“DISPARADO”);//ESCREVA “DISPARADO” NA LINHA INFERIOR
        tone(buzzer, 1);//TOQUE A SIRENE

        int entrada = 0;

        while (count < 4 ){ //Conta 4 entradas/teclas

        char key = keypad.getKey(); //Obtém tecla pressionada

        if (key != NO_KEY){ //Se foi pressionada uma tecla:

        entrada += 1; //Faz entrada = entrada + 1

        if (key == senha[count])count += 1; //Se a tecla pressionada corresponde ao dígito

        //da senha correspondente, soma 1 no contador

        if ( count == 4 ) { //Se contador chegou a 4 e com dígitos corretos,

        position = 0;
        fechadoOk(false); //desbloqueia siatema

        }
        }
        }
        } //POR 100 SEGUNDOS
        }
        }
        }

        void fechadoOk(int fechado) {

        if (fechado == HIGH) {//SE "FECHADO" ESTIVER LIGADO,
        digitalWrite(ledVer, HIGH);//LIGA O LED VERMELHO,
        lcd.clear();//LIMPA LCD,
        lcd.print("ATIVANDO");//ESCREVE "ATIVANDO" NA LINHA SUPERIOR,
        lcd.setCursor(0, 1);//PASSA PARA LINHA INFERIOR,
        lcd.print("ALARME");//ESCREVE "ALARME" NA LINHA INFERIOR,
        delay(10000);//AGUARDA 10 SEGUNDOS,
        lcd.clear();//LIPA LCD,
        lcd.print("ALARME");//ESCREVE "ALARME" NA LINHA SUPERIOR,
        lcd.setCursor(0, 1);//PASSA PARA LINHA INFERIOR,
        lcd.print("ATIVADO");//ESCREVE "ATIVADO" NA LINHA INFERIOR

        } else {//SE NÃO,
        digitalWrite (ledAm, LOW);
        digitalWrite(ledVer, LOW);//APAGA LED VERMELHO, SE ESTIVER ACESO,
        noTone(buzzer);//DESLIGA A SIRENE
        lcd.clear();//LIMPA LCD,
        lcd.print("DESATIVADO");//ESCREVE "ALARME DESATIVADO" NA LINHA SUPERIOR,
        lcd.setCursor(0, 1);//PASSA PARA LINHA INFERIOR,
        lcd.print("DIGITE SUA SENHA");//ESCREVE "DIGITE SUA SENHA" NA LINHA INFERIOR
        }
        }

        • Rodrigo - 15 de junho de 2015

          O outro codigo:

          // Inclua a biblioteca GSM
          #include

          #define PINNUMBER “”

          // Inicializar a instância biblioteca
          GSM gsmAccess;
          GSM_SMS sms;

          void setup()
          {
          // Inicializa comunicação serial e esperar por porta para abrir:
          Serial.begin(9600);
          while (!Serial) {
          ; // Esperar por porta serial para conectar. Necessário para Leonardo única
          }

          Serial.println(“SMS Messages Sender”);

          // Estado da conexão
          boolean notConnected = true;

          // Escudo Iniciar GSM
           // Se o seu SIM tem PIN, passá-lo como um parâmetro de begin () entre aspas
          while (notConnected)
          {
          if (gsmAccess.begin(PINNUMBER) == GSM_READY)
          notConnected = false;
          else
          {
          Serial.println(“Not connected”);
          delay(1000);
          }
          }

          Serial.println(“GSM initialized”);

          // send the message
          sms.beginSMS(“993478904″);
          sms.print(“URGENTE!!!! INVAZÃO DETECTADA!!!!”);
          sms.endSMS();
          Serial.println(“\nCOMPLETE!\n”);
          }

          void loop()
          {

          }

      • FILIPEFLOP - 15 de junho de 2015

        Bom dia Rodrigo,

        Isso provavelmente é algum problema de conflito entre as bibliotecas e/ou programas. Já tive esse problema com a biblioteca do GSM e a biblioteca do HC-SR04, por exemplo.

        Abraço.

        Adilson – Equipe FILIPEFLOP

        • Rodrigo - 15 de junho de 2015

          Boa noite, mas vc sabe como posso resolver, o erro que está dando é esse que segue logo abaixo, acho que tem alguma coisa a ver com a biblioteca GSM e a KEYPAD, algum conflito entre as duas, vc sabe como resolver????
          Arduino: 1.6.5 Hourly Build 2015/05/15 06:16 (Windows 7), Placa:”Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)”

          In file included from C:\Arduino\arduino-nightly-windows\arduino-nightly\libraries\GSM\src/GSM3MobileNetworkProvider.h:37:0,
          from C:\Arduino\arduino-nightly-windows\arduino-nightly\libraries\GSM\src/GSM3MobileClientService.h:37,
          from C:\Arduino\arduino-nightly-windows\arduino-nightly\libraries\GSM\src/GSM.h:42,
          from Jun__o_15_06.ino:7:
          C:\Arduino\arduino-nightly-windows\arduino-nightly\libraries\GSM\src/GSM3MobileAccessProvider.h:37:36: error: redeclaration of ‘IDLE’
          enum GSM3_NetworkStatus_t { ERROR, IDLE, CONNECTING, GSM_READY, GPRS_READY, TRANSPARENT_CONNECTED, OFF};
          ^
          In file included from C:\Users\Familia\Documents\Arduino\libraries\Keypad/Keypad.h:36:0,
          from Jun__o_15_06.ino:4:
          C:\Users\Familia\Documents\Arduino\libraries\Keypad/utility/Key.h:46:15: note: previous declaration ‘KeyState IDLE’
          typedef enum{ IDLE, PRESSED, HOLD, RELEASED } KeyState;
          ^
          Erro compilando.

          Este relatório deveria ter mais informações
          “Mostrar saída verbosa durante a compilação”
          habilitado em Arquivo > Preferências.

  77. Lucas - 11 de junho de 2015

    Olá ,
    consegui fazer a comunicação do shield e arduino mega , porém queria uma ajuda sua cara.
    eu quero acumular os valores de medição do meu medidor , eu acrescentei o kwh para eu ter o consumo em reais , porém quero acumular , não só mostra o valor na hora .
    Depois , queria mandar um sms pra o shield e logo depois receber outro sms , mais com os valores que estão no display instantaneamente , entendeu ?
    você tem alguma variação , programação ou linguagem parecida , da uma força é para o meu tcc cara .
    desde ja agradeço , ótimas dicas e tutoriais .

    abraço , tudo de bom

    • João - 11 de junho de 2015

      Ola, vc precisa então é gerar um arquivo para poder armazenar existe n possibilidades, a mais comum é usar um contador e a cada 24h um arquivo dia, a cada 5 dias um arquivo semana e a cada 30 dias um arquivo mes, um contador para cada função, e a de mostrar o que ocorre eh uma função move, ou printf nas variáveis que vc esta usando na mensagem a ser enviada. (Nao é a resposta mais e um caminho)

  78. John - 9 de junho de 2015

    Eu quero acionar dois led pelo arduino, por sms. Tenho dois códigos funcionando perfeitamente. Um recebe e lê sms. O outro aciona os leds por comandos de texto no monitor serial. Ja tentei unir os dois códigos, mas não consigo o resultado final. Alguma dica ou solução?

    CÓDIGO DE LEITURA E RECEBIMENTO DE SMS

    #include
    #include “sms.h”

    SMSGSM sms;
    boolean started=false;
    char posicao_sms;
    char num_fone[20];
    char texto_sms[10];
    int i;

    void setup(){
    Serial.begin(9600);
    Serial.println(“Testando Sistema…”);
    if (gsm.begin(4800)){
    Serial.println(“\nSistema Pronto!”);
    started=true;}
    else
    Serial.println(“\nsSistema Inativo!”);};

    void loop(){
    if(started){
    for(i=1;i 0){
    caractere = Serial.read();
    if (caractere != ‘\n’){
    conteudo.concat(caractere);}
    delay(10);}

    Serial.print(“Comando: “);
    Serial.println(conteudo);
    return conteudo;}

    void loop() {
    if (Serial.available() > 0){
    String recebido = lerstring();
    if (recebido == “v1on”){
    digitalWrite(led1, HIGH);}
    if (recebido == “v1off”){
    digitalWrite(led1, LOW);}
    if (recebido == “v2on”){
    digitalWrite(led2, HIGH);}
    if (recebido == “v2off”){
    digitalWrite(led2, LOW);}}}

    • John - 9 de junho de 2015

      deu um erro na msg.
      CÓDIGO DE LEITURA E RECEBIMENTO DE SMS
      #include
      #include “sms.h”

      SMSGSM sms;
      boolean started=false;
      char posicao_sms;
      char num_fone[20];
      char texto_sms[10];
      int i;

      void setup(){
      Serial.begin(9600);
      Serial.println(“Testando Sistema…”);
      if (gsm.begin(4800)){
      Serial.println(“\nSistema Pronto!”);
      started=true;}
      else
      Serial.println(“\nsSistema Inativo!”);};

      void loop(){
      if(started){
      for(i=1;i<=20;i++){
      sms.DeleteSMS(i);}
      posicao_sms=sms.IsSMSPresent(SMS_UNREAD);
      if (posicao_sms){
      Serial.print("Posicao do SMS:");
      Serial.println(posicao_sms,DEC);
      sms.GetSMS(posicao_sms, num_fone, texto_sms, 10);
      Serial.println(num_fone);
      Serial.println(texto_sms);}
      else{
      Serial.println("Sem novos SMS's. AGUARDANDO!");}
      delay(1000);}};

      • John - 9 de junho de 2015

        CÓDIGO DE ACIONAMENTO PELO SERIAL MONITOR

        int led1 = 41;
        int led2 = 40;

        void setup(){
        pinMode(led1, OUTPUT);
        pinMode(led2, OUTPUT);
        Serial.begin(9600);}

        String lerstring(){
        String conteudo = “”;
        char caractere;

        while(Serial.available() > 0){
        caractere = Serial.read();
        if (caractere != ‘\n’){
        conteudo.concat(caractere);}
        delay(10);}

        Serial.print(“Comando: “);
        Serial.println(conteudo);
        return conteudo;}

        void loop() {
        if (Serial.available() > 0){
        String recebido = lerstring();
        if (recebido == “v1on”){
        digitalWrite(led1, HIGH);}
        if (recebido == “v1off”){
        digitalWrite(led1, LOW);}
        if (recebido == “v2on”){
        digitalWrite(led2, HIGH);}
        if (recebido == “v2off”){
        digitalWrite(led2, LOW);}}}

    • Jayme - 10 de junho de 2015

      Pessoal,

      Estou com um MEGA + SHIELD GSM + FONTE 9V 1A.

      Tento de todos os jeitos e não funciona. apenas persiste o erro do: “DB: NO RESP”.
      Pesquisei na internet, li os comentários abaixo, tentando encontrar uma solução, testei outras bibliotecas. Não sei mais o que fazer. Só preciso q envie um bendito SMS.

      Tenho que alterar algo na Biblioteca? Quando coloco o número preciso colocar:
      +553199998888 ou
      3199998888 ou
      99998888
      ?

      email: jaymegmoreira@gmail.com

      • FILIPEFLOP - 15 de junho de 2015

        Bom dia Jayme,

        Você está pressionando o botão central (S_POWER) ao ligar a placa ?

        Adilson – Equipe FILIPEFLOP

        • Jayme - 19 de junho de 2015

          Sim, sempre! E mesmo assim não funciona…

          • Felipe Nacimento - 17 de agosto de 2016

            Jayme.
            Conseguiu resolver o seu problema?
            Tive problemas parecido, porem usando o sim800l. E o problema era na fonte que não fornecia corrente suficiente, pois ele tem picos de até 2A.

            Dai, utilizei uma fonte de PC saída 12V, com o CI LM350 para regular a tensão em 4V, pois ele suporta e fornece uma corrente de até 3A, se nao me engano. Funcionou normalmente. Espero que tenha solucionado seu problema.

            Abraços.

    • Rodrigo - 15 de junho de 2015

      Cara, pesquisa no arduino.cc sobre shield gsm, la fala sobre o gsm arduino mais pode fazer em outra placa que da certo também, eu estava com este mesmo problema, você usa do mesmo jeito que no uno, não muda nada, nem o código, mas só da certo com a biblioteca da gsm do próprio arduino e vc tem que fazer um Jumper do pino 2 da placa gsm para o pino 10 do arduino , da uma olhada la no arduino.cc

  79. Jurandir Hora - 7 de junho de 2015

    Tem como usar este Shield com o Arduino Uno, de maneira que quando ele receber um determinado caractere em SMS um led possa acender?
    Como devo fazer isso?
    Desde já agradeço!

    • FILIPEFLOP - 10 de junho de 2015

      Boa tarde Jurandir,

      Pode sim. No programa de exemplo, teste a string que foi recebida e adicione um comando para acionar uma das portas do Arduino. Fica mais ou menos assim:

      if (smsbuffer = “mensagem_recebida”
      {
      digitalWrite(porta, HIGH);
      }

      Abraço.

      Adilson – Equipe FILIPEFLOP

      • Jurandir Hora - 16 de junho de 2015

        Adilson, obrigado pela ajuda.Consegui acender um LED via SMS, graças a um código que consegui na Web. Lembrando que dependendo da placa, para este exemplo, será preciso ligar o LED entre o pino A0 e o GND via resistor de 1K.
        Disponibilizo aqui para aqueles que como eu, necessitarem realizar o mesmo:

        //Autor:Jurandir Hora
        // Grupo Atomos. “compartilhando conhecimento”

        //Descrição:ligar e deligar um LED com o arduino via SMS utilizando a Placa SIM900

        /*Tarefa a serem realizadas antes da programação:
        Durante a comunicação com dispositivos seriais via arduino,o arduino às vezes pode não receber ou enviar mensagens completas,
        porque o tamanho do buffer de arduino é limitado a apenas 64 bytes.Isso pode ser contornado abrindo as bibliotécas, SoftwareSerial.h
        e HardwareSerial.cpp. Após abri-las, Siga os passos abaixo:

        1. Vá em “C:\Arquivos de programas\Arduino\libraries\SoftwareSerial\”
        2. Vá em “C:\Arquivos de programas\Arduino\hardware\arduino\cores\arduino\
        3. Editar “HardwareSerial.cpp e o SoftwareSerial.h” no Bloco de Notas
        4. Procure por “#define SERIAL_BUFFER_SIZE 64″ em ambos
        5. Altere para “#define SERIAL_BUFFER_SIZE 256″
        6. Salve.
        7. Pronto!
        */

        //Use as seguintes bibliotecas:
        #include “SIM900.h”
        #include “sms.h”
        #include “SoftwareSerial.h”
        #include “sms.h”
        SMSGSM sms;

        //Declara variável do tipo boleana e atribui false
        boolean started=false;
        //Declara um array de caracteres (char) sem iniciá-lo
        char smsbuffer[160];
        //Declara um array de caracteres (char) sem iniciá-lo
        char n[20];
        //Declara variável do tipo inteiro e atribui 10 ao seu valor
        //int inc=10;
        //Declara variável do tipo inteiro e atribui o pino A0 ao seu valor
        int porta = A0;

        //Declara um array de caracteres, deixando o tamanho por conta do compilador e atribui o número do celular a ele

        char celular[]=”04113XXXXXXXX”;

        //função executada somente uma vez quando a placa é energizada ou cada vez que a placa é “resetada”.
        void setup()
        {
        //declara o pino digital porta como saída:
        pinMode(porta,OUTPUT);
        //conexão serial a 19200 ou 9600 baud.
        Serial.begin(19200);
        //Escreve a msg no monitor Serial
        Serial.println(“Testando o Shield GSM…”);
        //Se ao iniciar a configuração do shield com a velocidade de 2400 baudrate.
        if (gsm.begin(2400)){
        //Escreve a msg de Status no monitor Serial
        Serial.println(“\nstatus=READY”);
        //inicia a varíavel boleana como true
        started=true;
        }
        //Senão for escrito nada
        else Serial.println(“\nstatus=IDLE”);
        {
        Serial.println(“Shield pronto!”);
        }
        if(started){

        if (sms.SendSMS(celular, “Atomos SMS Funcionando!”))
        Serial.println(“Comando enviado para o celular de destino”);
        }
        //Deleta todos os SMS
        delsms();
        }

        void loop()
        {
        //Declara variavel como inteiro e atribui o valor 0
        int pos=0;
        //Se a variavel started for true
        if(started){
        //Coloca todos os SMS na Varíavel pos
        pos=sms.IsSMSPresent(SMS_ALL);
        //Se pos contiver SMS
        if(pos){
        //Escreve a msg no Serial Monitor
        Serial.println(“Existe SMS na variavel, veja abaixo:”);
        //Exibe o SMS
        Serial.println(pos);
        sms.GetSMS(pos,n,smsbuffer,100);
        Serial.println(n);
        Serial.println(smsbuffer);
        if(!strcmp(smsbuffer,”D”)){
        Serial.println(“Desligar”);
        digitalWrite(porta,LOW);
        delay(100);
        if (sms.SendSMS(celular, “GMG Desligado”))
        Serial.println(“\nSMS sent OK”);
        }
        if(!strcmp(smsbuffer,”L”)){
        Serial.println(“LEDLigado”);
        digitalWrite(porta,HIGH);
        delay(100);
        //Envia a strig “LED Ligado” para o numero que está na variável numero
        if (sms.SendSMS(celular, “LED Ligado”))
        Serial.println(“\nSMS sent OK”);
        }
        delsms();
        }
        }
        }

        void delsms(){
        Serial.println(“delsms”);
        for (int i=0; i<10; i++){ //do it max 10 times
        int pos=sms.IsSMSPresent(SMS_ALL);
        if (pos!=0){
        Serial.print("\nFind SMS at the pos ");
        Serial.println(pos);
        if (sms.DeleteSMS(pos)==1){
        Serial.print("\nDeleted SMS at the pos ");
        Serial.println(pos);
        }
        else
        {
        Serial.print("\nCant del SMS at the pos ");
        Serial.println(pos);
        }
        }
        }

        }

  80. Levy - 5 de junho de 2015

    Estou utilizando o arduino com o shield GSM, gostaria de saber se posso alimentar com uma bateia 12V com 5A.

  81. Rodrigo - 4 de junho de 2015

    Olá. Adquiri um módulo GSM porém é um pouco diferente do seu. Trata-se do SIM900A mini. É uma placa menor e não consigo encontrar em lugar nenhum como fazer pra estabelecer comunicação entre ela e minha placa Arduino Mega. Vc tem alguma informação sobre esse módulo? Desde já agradeço.

  82. Gabriel Gouveia - 4 de junho de 2015

    O modulo funciona normal sem o CHIP, apos eu colocar o CHIP ele desliga o modulo ou reinicia sozinho.
    ele liga diz essas mensagens a baixo e desliga ou reinicia ficando nesse loop, alguem pode ajudar?

    ÿÿÿÿ
    RDY

    +CFUN: 1

    +CPIN: READY

    +PACSP: 1

  83. Tiago - 30 de maio de 2015

    A placa GSM funcionou perfeitamente com a fonte 9V/1A, entretanto meu projeto exige mobilidade. Existe alguma bateria que eu possa alimentar o Arduíno e que a placa funcione? Agradeço desde ja

  84. Matheus - 21 de maio de 2015

    Olá, estou com problemas ao enviar SMS, não da nenhum erro na compilação, mas as SMS´s não chegam, já testei com fonte externa, trocar de chip mas mesmo assim não envia, no celular é necessário colocar como exemplo: (+554299998888), ou somente o numero? Obrigado e parabéns pelo blog.

  85. Vigo Tecnologia - 18 de maio de 2015

    Boa Tarde, quando eu disco para um numero e entro em comunicação está dando interferencia… quando desplugo o microfone para… já testei com varios e o mesmo problema…. poderia me dar uma luz… Obrigado.

  86. Jonas de Alencar - 17 de maio de 2015

    Amigo parabéns pelas “aulas”!
    Você não teria esse códigos para serem utilizados no pic?

  87. maxwell - 14 de maio de 2015

    Como faço para conectar a gsm shild através de fios no Arduíno ao invés de simplesmente encaixa-la no arduino?

  88. xD - 11 de maio de 2015

    Como é feita a montagem do shield no arduino? Pinagem, etc… busquei na internet e nao achei.

  89. Darci Luiz - 9 de maio de 2015

    Testando GSM Shield…
    DB:NO RESP
    DB:NO RESP
    DB:NO RESP
    Trying to force the baud-rate to 9600

    1200
    2400
    4800
    9600
    19200
    38400
    57600
    115200
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cppERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp
    nstatus=IDLE

    Estou com esse bendito problema já fiz de tudo. Mudei fonte, alterei dados na biblioteca e nada. Alguém pode me ajudar? tenho um ARDUINO MEGA.

  90. Atila Brito - 7 de maio de 2015

    O problema foi resolvido retirando a linha digitalWrite(4,LOW);

  91. Atila Brito - 6 de maio de 2015

    Olá, gostaria de começar dizendo que acompanho seu blog já a algum tempo e, apesar de ser a primeira vez que posto uma dúvida aqui no fórum, sou fã do seu trabalho. Estou com um problema, adaptei este código de envio de msm para que envie a mensagem quando o pino 4 esteja em nível lógico alto, no entanto, caso haja qualquer objeto metálico em contato com este pino, mesmo que este objeto não esteja conectado em nada, o shield dispara várias mensagens durante este contato. Já troquei de Arduíno, troquei os pinos no código, e nada. Gostaria que, por gentileza, analisasse o código e visse o que há de errado. Obrigado.
    Segue código para análise:

    #include “SIM900.h”
    #include
    #include “sms.h”
    SMSGSM sms;

    int numdata;
    boolean started=false;
    char smsbuffer[160];
    char n[20];

    char sms_position;
    char phone_number[20];
    char sms_text[100];
    int i;

    void setup()
    {
    pinMode(4,INPUT);
    digitalWrite(4,LOW);
    gsm.begin(9600);
    };

    void loop()
    {

    if(digitalRead(4) == HIGH)
    {
    sms.SendSMS(“+553189788494″, “Voce acaba de receber uma correspondencia em sua caixa de correios.”);
    sms_position=sms.IsSMSPresent(SMS_UNREAD);
    if (sms_position)
    sms.GetSMS(sms_position, phone_number, sms_text, 100);
    delay(2000);
    }
    };

    • FILIPEFLOP - 22 de maio de 2015

      Boa noite Atila,

      O que você está ligando ao pino 4 ? colocou algum resistor pull-down ? Talvez o problema seja na leitura do valor da porta, se você não estiver usando esse resistor.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  92. Vigo Tecnologia - 6 de maio de 2015

    Boa Tarde, somos clientes de vocês.. :) mas hoje desenvolvendo um projeto para um cliente nos deparamos com um problema é possivel conectar esse shield no arduino uno mais um teclado 3×4… poderia nos ajudar… o tecnico ta batendo cabeça…rs.. Abraços e muito obrigado por seus produtos!

  93. adriano - 2 de maio de 2015

    amigo, com esse chip conseguirimos fazer um rastreador veicular?

  94. César Sousa da Costa - 29 de abril de 2015

    Boa Noite, Felipe!!!

    bem antes de tudo lhe parabenizo pelo blog, muito bom mesmo!
    bem minha gostaria de sua ajuda, estou com um projeto de tcc e no projeto preciso que esse modulo envie as coordenadas do gps por sms, ainda estamos no inicio então toda ajuda sera bem vinda.

    Agradeço desde já!!!

    Att; César Sousa

  95. Eduardo Berlesi - 17 de abril de 2015

    desculpem minha ignorancia, mas se alguem puder me responder: para realizar chamadas/envio de sms, o chip deve possuir creditos?

  96. Raul Fernandes - 12 de abril de 2015

    Boa Noite, estou tentando enviar sms de um arduino uno + shield gsm SIM900. porem o arduino apresenta o seguinte erro:

    Testando GSM shield…
    Trying to force the baud-rate to 9600

    1200
    2400
    4800
    9600
    19200
    38400
    57600
    115200
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp
    nstatus=IDLE

    o que pode esta causando este erro?

  97. Murillo do Carmo - 9 de abril de 2015

    Pessoal do FILIPEFLOP, parabéns pelo blog.

    Gostaria de saber se com o GSMShield eu conseguiria RECEBER um SMS, realizar a leitura da mensagem de texto recebida e executar determinada função desejada diretamente pelo Arduino.

    Abraços,

  98. Murillo do Carmo - 9 de abril de 2015

    Pessoal do FLIPEFLOP, parabéns pelo blog.

    Gostaria de saber se com o GSMShield eu conseguiria RECEBER um SMS, realizar a leitura da mensagem de texto recebida e executar determinada função desejada diretamente pelo Arduino.

    Abraços,

    • FILIPEFLOP - 11 de abril de 2015

      Boa tarde Murillo,

      Perfeitamente. Um dos programas de exemplo do artigo recebe um SMS e envia os resultados para o serial monitor. Você só precisa modificar o programa para que ele acione determinadas portas do Arduino.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  99. Lucas - 2 de abril de 2015

    Bom dia, gostaria de saber se posso receber ligação pelo sim900 , e como faço isso tendo em vista que eu queria q ele atendesse a ligação automaticamente ou seja quem ligar para o shield ele atende de imediato sem nenhuma botão, desde já obrigado

  100. Pharlem Martins - 28 de março de 2015

    Boa noite, feras do Arduíno…

    Sou Engenheiro recém-formado, e como projeto inicial desejo especializar-me em Automação.
    Então, procuro dicas de como lidar com o Arduíno (começando do Zero!).
    Alguém me indica algum curso online, tutorial?
    Antecipo agradecimentos aos que se dispuserem.,

    • Eduardo Berlesi - 17 de abril de 2015

      e aí cara
      Quando eu comecei neste hobbie de arduino, fui por indicação de um amigo. procura no youtube Renato Aloi, ele faz vídeo aulas bem legais, sobre arduino, automação,c onfecção de placas, e por aí vai. como voce quer começar do zero, acredito que será muito útil.

      Abraço!

  101. Denis - 26 de março de 2015

    Boa tarde Adilson,

    Peço por gentileza sua ajuda para fazer um comando.

    Com arduino mega + GSM shield, como faço para enviar um SMS quando o arduino detectar nível lógico 1 (5V) na entrada digital 23?

    Preciso fazer uma central de alarmes, onde quando o arduino recebe 5V nas entrada ele envia o alarme via mensagem SMS.

    Desde já agradeço.

    • FILIPEFLOP - 31 de março de 2015

      Boa noite Denis,

      Tente fazer um IF simples dentro do loop, mais ou menos assim :

      valor = digitalRead(23);
      if (valor == 1)
      {
      // envia SMS
      if (sms.SendSMS(“912345678″, “Porta 23 acionada”))
      Serial.println(“nSMS enviado”);
      }

      Abraço.

      Adilson – Equipe FILIPEFLOP

  102. Fernando Oliveira - 17 de março de 2015

    Filipe, gostaria de usar um modulo GPS conversando diretamente com o shield SIM900, sem utilização do Arduino. No máximo usaria o Arduino pra configurar o shield. Queria saber também, se é possível ler dados de sensores direto nas GPIO’s do shield. A idéia na verdade é fazer uma telemetria sem utilização do Arduino, onde a shield GPRS conversaria com o GPS pegando sua palavra, concatenando com dado de sensores e enviaria via SMS ou HTTP POST.
    Caso não seja possível, poderia me orientar como eu enviaria dados com os comando HTTP POST ou HTTP GET? Já tenho o servidor e ouvinte que ira receber os dados.
    Grato,
    Fernando

  103. Jhonathan - 16 de março de 2015

    Com esse módulo é possivel realizar uma ligação (ouvir e ser ouvido pela outra pessoa) ou ele só disca o número?

    • FILIPEFLOP - 31 de março de 2015

      Boa noite,

      É possível realizar uma ligação completa, basta utilizar os conectores para fone de ouvido e microfone e realizar a ligação pelo Arduino.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  104. Eduardo Bueno - 12 de março de 2015

    Qual é o limite de caracteres a serem enviados? Só consigo enviar no máximo 25 caracteres

  105. Matheus - 1 de março de 2015

    Boa Tarde, estou tentado fazer enviar SMS, não da nenhum erro na compilação do código, mas não está chegando a SMS. No numero do celular precisa colodar DDD? Ou pode ser a ordem dos jumpers?
    Obrigado

  106. Fabio - 25 de fevereiro de 2015

    Bom dia,

    Estou iniciando um projeto que envia uma mensagem para uma pessoa quando ela esquece de tomar o remedio e estou com uma duvida, este shield pode enviar mensagem mais de um numero? se sim, qual(s) maneira de se fazer isso?

    • FILIPEFLOP - 7 de março de 2015

      Boa tarde Fabio,

      Você pode inserir vários números no programa, incluindo essas linhas :

      //Formato sms.SendSMS(,)
      if (sms.SendSMS(“912345678″, “Arduino SMS”))

      Basta trocar o número 912345678 pelo número que você deseja enviar o SMS.

      Abraço

      Adilson – Equipe FILIPEFLOP

  107. LEANDRO CASTRO - 22 de fevereiro de 2015

    boa tarde. o meu módulo diz: no carrier quando tento realizar uma ligação. quando pego um celular e ligo para o número do shield gprs, diz que está fora de área. O que eu faço?

  108. Gustavo - 20 de fevereiro de 2015

    Olá eu tenho esse módulo gprs, e ele não tem suporte para gps , eu tenho um outro módulo de gps que é o neo6mv2 eu vi que ele pode ser ligado um lcd em alguns tutorias nessa página, é possível eu ligar esse módulo de gps nos pinos onde liga o lcd do nokia???

  109. Leandro Silva - 20 de fevereiro de 2015

    Pessoal,

    Alguém conseguiu fazer este modulo funcionar com o Arduino Mega 2560 ?
    Realizei diversos testes com a biblioteca GSM-GPRS-GPS-SHIELD, porém, todos sem sucesso até o momento.

    Realizei as seguintes tentativas:
    Colocar jumper nas portas 50 e 51 e alterar o _GSM_TXPIN_ e _GSM_RXPIN_ no GSP.cpp para os respectivos valores
    Comentar a entrada #define UNO e descomentar #define MEGA no GSM.h
    Descomentar a entrada #define MEGA no HWSerial.h

    Em todos eles o resultado é sempre o mesmo:

    DB:NO RESP
    DB:NO RESP
    DB:NO RESP
    Trying to force the baud-rate to 9600

    1200
    2400
    4800
    9600

    OBS: Estou utilizando a fonte auxiliar do MEGA. O modulo esta OK, pois, no UNO funciona normalmente.

    Obrigado!

    • Wesley - 13 de março de 2015

      Boa Tarde.

      Estou com o mesmo problema.
      Tenho Arduino MEGA.. fiz as mesma tentativas do Leandro, mas tambem não estou conseguindo resolver os erros citados acima.

      Testando GSM shield…
      DB:NO RESP
      DB:NO RESP
      DB:NO RESP
      Trying to force the baud-rate to 9600

      1200
      2400
      4800
      9600
      19200
      38400
      57600
      115200
      ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp
      nstatus=IDLE

  110. Matheus Krug - 19 de fevereiro de 2015

    Olá estou com problemas para executar o programa, da os seguinte erros:
    sketch_feb19a.ino:4:20: error: SIM900.h: No such file or directory
    sketch_feb19a.ino:7:17: error: sms.h: No such file or directory
    sketch_feb19a:9: error: ‘SMSGSM’ does not name a type
    sketch_feb19a.ino: In function ‘void setup()':
    sketch_feb19a:22: error: ‘gsm’ was not declared in this scope
    sketch_feb19a:33: error: ‘sms’ was not declared in this scope
    sketch_feb19a.ino: In function ‘void loop()':
    sketch_feb19a:43: error: ‘gsm’ was not declared in this scope

    Espero que possam me ajudar, Obrigado

  111. wilton - 7 de fevereiro de 2015

    Estou fazendo um TCC para faculdade de Redes de Computadores e tenhos um exemplo que seria utilizar sensores se comunicando com um servidor Nagios, ou implementar um protocolo de comunicação de rede entre os sensores e o servidor / cliente.
    Algem pode mim ajuda

  112. Taís - 6 de fevereiro de 2015

    Minha shield só fica aparecendo o seguinte erro:

    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp

    status=IDLE

    Fiz tudo exatamente como está aqui e até momento não sem sucesso, ou dis DB:NO RESP ou o erro informdo acima!!

  113. Julio - 2 de fevereiro de 2015

    Filipe como faço pra ele fazer a chamada ou enviar um SMS a partir de uma detecção em um sensor de alarme de movimento por exemplo?

    • FILIPEFLOP - 3 de fevereiro de 2015

      Boa noite Julio,

      Você pode utilizar um “IF” simples, como utilizamos no programa, testando o valor de um determinado pino do Arduino. Ficaria mais ou menos assim :

      valor = digitalRead(porta);
      if (valor = 1)
      {
      if(started)
      {
      //Envia um SMS para o numero selecionado
      //Formato sms.SendSMS(,)
      if (sms.SendSMS(“912345678″, “Arduino SMS”))
      Serial.println(“\nSMS sent OK”);
      }
      }

      Abraço.

      Adilson – Equipe FILIPEFLOP

      • Julio - 4 de fevereiro de 2015

        ok, mas eu posso digitar esse código em qualquer lugar do código que da certo, e no caso da porta no seu código será o pino que eu colocar o sensor certo?
        E no caso de eu ja usar um sensor de um alarme de carro da certo também eu ligar ele no pino do arduino fazer uma emenda no fio e puxar pro arduino?
        E você tem ideia de como posso alimentar o arduino na bateria de um carro?
        Finalizando o projeto posto aqui pra vocês verem um abraço e valeu

  114. pedro - 20 de janeiro de 2015

    vejam aqui como por a funcionar com o arduino mega (a partir dos 2 minutos e 16 segundos) https://www.youtube.com/watch?v=GxgXmOPdPW8#t=135

  115. Paulo - 15 de janeiro de 2015

    ola, como consigo inserir um numero desejado para envio de mensagens através de um teclado matricial de membrana.? como se por exemplo caso o cliente for inserir.?

    Quais pinos do arduino uno é utilizado para a comunicação com este shield?

    Agradeço desde ja.

  116. Cândido - 8 de janeiro de 2015

    Gostaria de saber se posso usar qualquer cartao SIM, eu estou em Angola

  117. Kaike - 19 de dezembro de 2014

    Olá,

    Não consigo usar o shield GSM/GPRS com shield Ethernet!!

    Alguem pode me explicar o porque?
    Eu creio que seja problema de comunicação serial!

  118. Giovani - 2 de dezembro de 2014

    Boa Tarde Pessoal do blog,
    Testei a shield na arduino uno e funcionou perfeitamente porém preciso que ela funcione na arduino mega pois preciso colocar uma shield gps para funcionar junto.
    Estou fazendo as ligações pino a pino pois preciso usar a Serial3 para o gsm.
    Liguei as alimentações o pino 14 no pino 3 e o pino 15 no pino 2 porém ela não funciona.
    No Serial Monitor ela alterna mensagens de:
    RIC: NO STRING RCVDATT: OK
    RIC: NO STRING RCVDATT: OK
    RIC: NO STRING RCVDATT: OK
    com mensagens:
    ATT: OK
    RIC:
    ATT: OK
    RIC:
    ATT: OK
    RIC:
    ATT: OK
    RIC:

    Se alguém puder testar eu agradeço desde já obrigado

    #include “SIM900.h”

    #include

    #include “sms.h”

    SMSGSM sms;

    char number[]=”015981217670″;

    char message[180];

    char pos;

    char *p;
    char *q;
    char *s;

    void setup()

    {
    Serial3.begin(2400);
    Serial.begin(9600);

    if (Serial3.available()){
    digitalWrite(10,HIGH);

    Serial.println(“\nstatus=READY”);
    }
    else Serial.println(“\nstatus=IDLE”);

    };

    void loop()

    {

    pos=sms.IsSMSPresent(SMS_UNREAD);

    Serial.println((int)pos);

    if((int)pos>0&&(int)pos<=1000){

    Serial.print("NUOVO MESSAGGIO, POS=");

    Serial.println((int)pos);

    message[0]='';

    sms.GetSMS((int)pos,number,message,180);
    // s=strstr(number,"+5515981217670");

    p=strstr(message,"ON");
    q=strstr(message,"OFF");
    //g=strstr(message,"igotthepower");
    //if(s){

    if(p){

    Serial.println("led OK");
    digitalWrite(13,HIGH);
    // p=strstr(message,"LEDON");
    }
    if(q){

    Serial.println("LED OFF");

    digitalWrite(13,LOW);

    }

    Se alguém aí descobrir onde ta o erro eu agradeço =D
    desde já obrigado
    Abração a todos

  119. Daniel - 2 de dezembro de 2014

    O meu está dando esta mensagem de erro, como resolver???

    Testando GSM Shield…
    DB:NO RESP
    DB:NO RESP
    DB:NO RESP
    Trying to force the baud-rate to 9600

    1200
    2400
    4800
    9600
    19200
    38400
    57600
    115200
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp

  120. Anivaldo Rezende - 28 de novembro de 2014

    Olá, tenho uma dúvida com relação a este shield, a Anatel vai bloquear todos os aparelhos telefônicos não homologados, ou seja isto também vai se aplicar a rastreadores GPS, discadoras ou qualquer outro equipamento que se conecte a rede de telefônia móvel. Neste caso eu pergunto, este shield é homologado?

    • FILIPEFLOP - 10 de dezembro de 2014

      Boa tarde Anivaldo,

      Ainda não temos essa informações. Também estamos no aguardo de informações mais precisas da Anatel sobre esse bloqueio, e se realmente vai bloquear qualquer tipo de conexão.

      Grato.

      Adilson – Equipe FILIPEFLOP

  121. Ricardo - 21 de novembro de 2014

    Bom dia!
    Excelente post parabéns!

    Esse shield funciona com rede 3G ou 4G ?
    Obrigado!

  122. Thalles - 19 de novembro de 2014

    Olá,
    Estou usando o Arduino UNO, mas quando encaixo o módulo GSM nele não sobra nenhuma entrada para eu ligar um botão. O que eu posso fazer?

    • Ygor Murilo - 26 de novembro de 2014

      Uma duvida, eu adquiri esse shield, porem quando o encaixo no arduino UNO não sobram IOs, e para o meu projeto preciso de 2 PWM e 3 IN, pensei em comunicar 2 arduinos, porem nao sei como enviar comandos de um para o outro,
      Obs: sou novo na plataforma arduino RSRS

      • Thalles - 26 de novembro de 2014

        Eu também tive essa mesma dúvida. Ainda não consegui resover o problema, então passei a usar o Arduino MEGA, que tem mais entradas disponíveis e também pode ser encaixado no módulo GSM.

        • Ygor Murilo - 27 de novembro de 2014

          Ae Thalles e pessoal que sofrem com a falta de IOs rsrs, fiz alguns testes aqui em casa e encontrei uma solução, naõ é facil mais funfo. Nos pinos do shield que vão no Port 5V do ARDUINO UNO e no GND eu soldei dois fios e coloquei eles em um filtro capacitivo que eu tinha feito antes, e este com ports de ARDUINO para distribuir a alimentação e um capacitor de 1000uF, e usei os ports D8-D13 destinados ao LCD como ports comuns para ligar o sinal de outros componentes, complicado mais funciona perfeitamente!!!
          Obs: Neste Circuito foi usado apenas o envio e recebimento de SMS’s não testei em chamadas.
          Caso alguem conheça um metodo mais facil por favor postar kkk

          Circuito Composto por:

          – ARDUINO UNO
          – Shield GSM
          – Receptor IR
          – 2 Servos

          • Rodrigo - 30 de novembro de 2014

            Olá pessoal, quanto a nao sobrar conexoes no arduino , tive este problema
            porem deu trabalho mas eu retirei os pinos do shield e coloquei os pinos normais
            esta funcionando

  123. Luiz Carlos - 19 de novembro de 2014

    Bom dia Pessoal,

    Não estou conseguindo disparar SMS’s, possuo um ARDUINO MEGA 2560 e a placa citada acima. Já editei na biblioteca para reconhecer a placa MEGA, conforme instruções no .TXT existente na pasta da biblioteca porém ele fica na tela “Testando GSM Shield…” e daí não sai. Aguém consegue me ajudar por gentileza?

    Obrigado

  124. Wellington Marques - 17 de novembro de 2014

    Felipe, me ajuda ai… Consegui enviar as mensagens tudo certo, mas quando eu recebi a primeira mensagem as que antes eram enviadas não estão mais sendo enviadas. a mensagem na verdade chega porém sem texto algum. não sei o que está errado. na porta serial eu consigo ver-las mas não na mensagem. Se alguém poder me ajudar eu agradeço!!!

  125. Wellington - 14 de novembro de 2014

    Muito bom material, simples e objetivo.
    Amigo… Se possível me diz que comando usar para consultar os créditos do SIM conectado ao módulo! ou basta fazer uma chamada para *222# (TIM) ? A resposta vem como mensagem?

  126. Carlos Ribeiro - 12 de novembro de 2014

    Pessoal, parcialmente resolvido mas vamos lah?
    estou tentendo usar uma condição para que o call do progrrama de fazer ligação possa executar, porém ainda não consegui usar nenhuma porta como input. Alguem conseguiu usar deste modo que falei?

  127. Hudson - 12 de novembro de 2014

    Bom dia, testei todos os códigos e todos funcionaram perfeitamente!
    Só estou tendo um probleminha ao usar o comando ATD NUMERO, ele está retornando a mensagem NO CARRIER.
    Podem me ajudar?

  128. Carlos Ribeiro - 8 de novembro de 2014

    Boa tarde.
    podem me ajudar? nao consigo de jeito nenhum realizar uma chamada com este shield junto com o arduino uno.
    programei conforme mostrado aqui no site, porém apareceu vários erros.
    tbm usei a programação padrao da biblioteca, até rodou mas não consegui realizar a ligação, conforme informado.
    preciso muito da ajuda de vcs, a shield foi comprada com vcs em nome de Jessyca Ferreri.
    Fico no aguardo da ajuda o qo antes puderem

  129. Giovani - 1 de novembro de 2014

    Gostaria que o código de enviar SMS mandasse a mensagem sem que eu precisasse abrir o Serial Monitor.
    Por exemplo eu enviaria uma mensagem para que a shield ligasse e ficasse varrendo uma área através de uma shield sensor de movimento, quando essa shield percebesse o movimento ela iria fazer a shield enviar uma mensagem automaticamente.
    Teria como me ajudar?

    • FILIPEFLOP - 3 de novembro de 2014

      Boa tarde Giovani,

      Na biblioteca do módulo você tem as funções para recebimento de SMS. Você pode adaptar esse código ao seu projeto e acionar as portas necessárias.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  130. Otávio augusto - 27 de outubro de 2014

    Boa tarde!
    Obrigado pelo tutorial excelente!
    Tenho uma dúvida:
    Utilizando esse módulo é possível ativar alguma rotina do arduino (essa rotina poderia ligar uma lâmpada,ativar um sensor, enfim..) ao mandar um sms do meu celular para o módulo, para assim ativar essa função?
    Agradeço desde já!!
    :)

    • FILIPEFLOP - 3 de novembro de 2014

      Boa tarde Giovani,

      Na biblioteca do módulo você tem as funções para recebimento de SMS. Você pode adaptar esse código ao seu projeto e acionar as portas necessárias.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  131. Cleber - 26 de outubro de 2014

    Boa noite

    No programa teste GPRS, quando executado, aparece apenas que não está conectado. Porém, cartão SIM possui créditos, placa funcionando normalmente, tem área de celular… o que poderia ser? Alguma coisa com a operadora?

    Obs: já tentei colocando o número PIN e também sem. O resultado foi o mesmo.

  132. Vinicius - 26 de outubro de 2014

    Como posso fazer para conectar no MEGA? No Arduino UNO está funcionando perfeitamente, quais alterações são necessárias? Obrigado!

  133. João Igor - 24 de outubro de 2014

    Parabéns pelo tutorial, nos exemplos acima esta faltando apenas uma função, a que eu pretendo utilizar, quero enviar um .txt para um ip externo (servidor ou nuvem) e depois acessar de um computador as informações captadas pelo UNO R3 e enviadas por este gsm shield (colocarei um chip com um pacote de internet contratado para realizar a função) ´
    É possível?

    • FILIPEFLOP - 24 de outubro de 2014

      Boa noite João,

      Não sei se é possível enviar arquivos (no caso, você está querendo enviar um arquivo TXT). Vi funções apenas para enviar SMS e fazer ligações.

      Abraço.

      Adilson – Equipe FILIPEFLOP

      • João Igor - 27 de outubro de 2014

        Bom dia,

        Explicando de outra maneira, quero alimentar um site com informações lidas pelo arduino, usando as ferramentas do acesso a internet contida na placa, enviar dados para uma “nuvem”. (acho que agora expliquei melhor) obrigado pela atenção

    • Jayr Magave - 8 de novembro de 2014

      Na pasta da Library tem um arquivo instructions.txt dizendo que tem que alterar uma DIRETIVA de compilacao #define UNO para #define MEGA, e depois recompilar (em C) a library. Good luck, may the Force be with you.

      How to switch between Arduino Mega and Arduino Uno?

      1) Open GSM.h and comment-decomment the appropriate lines like below
      e.g. for Arduino Mega
      //#define UNO
      #define MEGA

      2)
      If you use Arduino Uno comment the line in HWSerial.h or decomment if
      you are using Arduino Mega
      e.g. for Arduino Mega
      #define MEGA

      3)
      Save and compile

  134. Daian - 14 de outubro de 2014

    Ola Adilson, muito bom seu guia e suas dicas.

    Comprei esse Shield e segui seu tutorial, porem descobri que meu Arduino Mega1280 eu teria que alterar a lib GSM.cpp para ajustar as portas de TX e RX(estou usando a 50 e 51), e o chamada da função gsm.begin(9600) tive que mudar para gsm.begin(2400) pois os caracteres não eram compreensíveis e não aceitava os comandos corretamente, agora me parece estar OK, ja fiz alguns testes de envio de SMS e chamadas e funcionaram direitinho.

    O “problema” que estou encontrando, é o modo de inicialização, etapas por assim dizer, aquela dica de inicializar o shield pressionando o botão S_PWR por 3 segundos funciona, mas não entendi bem a lógica, segue umas perguntas se puder me ajudar.

    – Toda vez que eu fizer o upload do fonte para o Arduino tenho que reinicializar o shield ?
    – Os comandos AT são lentos mesmo ou é por eu ter alterado o gsm.begin?

    obrigado

    • Igor silva - 20 de outubro de 2014

      cara, sera que vc nao teria uma solução para esse erro que estamos tendo com o shield, eu e o Alexandry.

      ficaria muito grato, aparentemente ate agora, so vc teve sucesso com o shield do blog.

      qualquer ajuda ja vale

      Grato

    • FILIPEFLOP - 24 de outubro de 2014

      Boa noite Daian,

      Obrigado. Olha, eu tive que fazer esse processo de reinicializar o shield algumas vezes sim.

      Quanto aos comandos AT, a resposta realmente é lenta.

      Abraço !

      Adilson – Equipe FILIPEFLOP

  135. IGOR SILVA - 11 de outubro de 2014

    CARA SEGUI TODO O PROCEDIMENTO, MAS SEMPRE CAI NESSA MSG, SERA QUE VOCE CONSEGUE ME DAR UMA AJUDA? coloquei o codigo, apertei o S_PWR, usei no uno no mega, mas nada.
    Testando GSM Shield…
    DB:NO RESP
    DB:NO RESP
    DB:NO RESP
    Trying to force the baud-rate to 9600

    1200
    2400
    4800
    9600
    19200
    38400
    57600
    115200
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp

    (grato pela ajuda)

  136. Marcos Paulo - 11 de outubro de 2014

    Parabens pelo artigo! Eu consigo alterar uma variavel que contem uma Senha definida para liberação de acesso através de uma mensagem sms utilizando o GSM Shield?

    • FILIPEFLOP - 11 de outubro de 2014

      Boa tarde Marcos,

      Obrigado. Os comandos AT do módulo tem funções para tratar as mensagens SMS que são recebidas pelo módulo, assim você consegue tomar uma ação baseado no texto do SMS.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  137. Arthur - 7 de outubro de 2014

    Olá! Preciso que o shield envie os dados coletados de um sensor para o meu celular via SMS. Onde encontro um tutorial ou algo parecido?? Vocês podem me ajudar?? Preciso de uma ajuda pra poder comprar este Shield.
    Obrigado.

  138. Ivanluiz Bastos Trindade - 7 de outubro de 2014

    Adilson, mas uma vez parabéns pelo artigo. Muito bom mesmo.
    O problema é que agora tenho que comprar um desses shield para brincar.
    Verei na loja do blog.
    Obrigado.

  139. Carlos Junior - 25 de setembro de 2014

    Tem como eu controlar as portas do arduino uno através deste modulo gsm???

    • FILIPEFLOP - 2 de outubro de 2014

      Boa tarde Carlos,

      Dependendo do seu projeto, é possível sim. Você pode configurar o programa para, por exemplo, ao chegar um SMS ele ler o conteúdo e acionar uma das portas. A lógica seria mais ou menos essa :

      if (mensagem_SMS = “Ligar-led-vermelho”)
      {
      digitalWrite(pino-led-vermelho, HIGH)
      }

      Abraço.

      Adilson – Equipe FILIPEFLOP

  140. francisco costa - 24 de setembro de 2014

    parabéns pelo seu trabalho, estou tentando algo como posso salvar um numero na memoria do sim card, e depois capturar-lo.
    grato.

Deixe uma resposta