Enviando SMS e Fazendo Chamadas com o Arduino GSM Shield 312

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:

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.

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.

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!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

312 Comentários

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

    1. Boa tarde Francisco,

      Obrigado. Na lista de comandos AT você tem comandos específicos para ler números do cartão SIM :

      http://elecfreaks.com/store/download/datasheet/rf/SIM900/SIM900_AT%20Command%20Manual_V1.03.pdf

      Abraço.

      Adilson – Equipe FILIPEFLOP

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

    1. 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

  3. 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.

    Ivanluiz Bastos Trindade
    1. Valeu Ivan !

      Legal, se precisar de alguma informação, fique à vontade para perguntar.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  4. 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.

    1. Boa tarde Arthur,

      Você pode usar esse artigo como base, criando uma variável para o sensor e enviando esse valor via SMS.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  5. 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?

    1. 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

  6. 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)

    1. Boa tarde Igor,

      Você está usando o mesmo shield do post ?

      Adilson – Equipe FILIPEFLOP

      1. sim sim, comprei do filipeflop mesmo, chegou ontem e virei a noite tentando resolver isso.
        se eu postar um video de eu mesmo fazendo o procedimento no youtube e te passar o link sera vc poderia dar uma olhada? pois ja tentei de tudo, e o codigo ate que eh simples.

        se nao for pedir muito
        grato

        1. Olá, estou com o mesmo problema, vc conseguiste resolver?
          Grato

      2. Estou com o mesmo problema do Igor.

        1. Cara se vc tiver algum resultado, por falar posta aqui no blog.

          mudei na biblioteca os pinos para o 50 e 51 como o DAIAN fez e usei um MEGA.
          ele saiu do erro “DB:NO RESP” mas ainda assim nao tive sucesso!!!

          nao tenho a copia do erro dessa vez mas era algo como

          AT Ok
          (outras siglas) e uns simbolos doidos…
          (outras siglas) e uns simbolos doidos…
          AT Ok

          temtei mudar o baut mas o que mostrava melhor os caracteres foi o 9600 e mesmo assim nada proveitoso…

          novidades favor comentar … vou contituar com os teste
          PS; obrigado por respoderem ao meu email, pessoal do filipeflop… se persistir entrarei em contato.

        2. Oi, vc conseguiu resolver?

  7. 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

    1. 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

    2. 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

  8. 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?

    1. 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

      1. 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

    2. 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

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

    1. rapaz tive o mesmo problema…
      no Uno funcionou muito bem, no mega já não estou conseguindo…

  10. 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.

    1. Boa tarde Cleber,

      Você consegue tentar com cartão de outra operadora ?

      Grato.

      Adilson – Equipe FILIPEFLOP

      1. Acabei conseguindo no dia seguinte… sem inserir número do PIN, com APN , login e senha, respectivamente: tim.br, tim, tim.

        1. Bom dia, Cleber!
          Como você inseriu o APN login e senha?

  11. 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á!!
    🙂

    1. 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

  12. 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?

    1. 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

  13. 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

  14. 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?

  15. 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?

  16. 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?

  17. 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!!!

  18. 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

  19. 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?

    1. 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

      1. 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.

        1. 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

          1. 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

  20. Bom dia!
    Excelente post parabéns!

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

    1. Boa noite Ricardo,

      Obrigado. Dei uma olhada no Datasheet do SIM900, e lá consta apenas GPRS, creio que não tenha suporte a 3G e 4G.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  21. 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?

    1. 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

  22. 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

    1. Está usando fonte de energia externa para o shield? Tive o mesmo problema e era isso.

    2. Boa tarde Daniel,

      O módulo não está sendo reconhecido, ou está danificado ou há algum erro nas suas conexões.

      Grato.

      Adilson – Equipe FILIPEFLOP

      1. Daniel,

        Conseguiu encontrar a solução para este problema ?

  23. 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

  24. 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!

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

    1. Boa noite Cândido,

      O módulo é desbloqueado. Eu utilizei o mesmo com 3 operadoras diferentes aqui do Brasil.

      Abraço !

      Adilson – Equipe FILIPEFLOP

  26. 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.

  27. 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

  28. 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?

    1. 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

      1. 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

  29. 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!!

    1. Tive o mesmo problema e era fonte de energia. Precisa de fonte externa para o shield funcionar.

    2. Bom dia Tais,

      Pressione o botão Liga/Desliga do shield por alguns segundos, para que o Shield se conecte à rede de celular.

      Uma outra dica é utilizar fonte externa para alimentar o Arduino enquanto estiver usando o shield.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  30. 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

    1. Boa noite! Obrigado pelas explicações dadas aos outros usuários, tirei muitas das minhas dúvidas pelas respostas fornecidas.
      Tenho uma outra:
      Preciso enviar dados de leitura do meu arduino para meu serviço.
      A ideia seria le, e enviar para(exemplo) https://servico.com/padraoRest/dadoPassadoComoParametro
      Eis a dúvida: Como estabelecer uma conexão GPRS de modo a enviar esse dado quando necessário? Há algum exemplo? Não acho quase nada na internet que efetivamente me ajude!
      Agradeço muito desde já! 🙂

      1. Perdão meu caro, coloquei minha dúvida no teu post ;

      2. Bom dia Otávio,

        Ainda não temos nenhum tutorial falando especificamente sobre isso.

        Abraço.

        Adilson – Equipe FILIPEFLOP

  31. 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

    1. Oi Matheus,

      Esse provavelmente é um problema na instalação da biblioteca.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  32. 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!

    1. 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

  33. 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???

    1. Boa tarde Gustavo,

      Não temos esse módulo para testar, mas ideia é válida. Só não podemos garantir que funcione.

      Grato.

      Adilson – Equipe FILIPEFLOP

      1. Eu consegui fazer funcionar o sim900 usando um modulo de gps

        1. Olá Gustavo, você poderia me informar o código com a utilização do gps ? Estou aprendendo a mexer com esse shield agora e pretendo usar gps também, seria possível você disponibilizar esse código ?

  34. 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?

    1. Oi Leandro,

      Veja se o módulo está ligado, com as 3 luzes acesas.

      Grato.

      Adilson – Equipe FILIPEFLOP

  35. 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?

    1. 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

  36. 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

    1. Boa tarde Matheus,

      Que placa você está usando ? Ligou o Arduino direto no computador ou está usando uma fonte externa ?

      Grato.

      Adilson – Equipe FILIPEFLOP

      1. Está direto no PC (ja testei em fonte externa), estou usando o Arduino Uno, eu alterei as ordens dos jumpers, e “resolveu” ele compila certinho, mas não chega a SMS.

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

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

    1. 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

  39. 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

  40. 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.

    1. 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

  41. 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.,

    1. 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!

  42. 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

    1. Boa tarde Lucas,

      Por favor dê uma olhada nos comandos AT nesse link : http://elecfreaks.com/store/download/datasheet/rf/SIM900/SIM900_AT%20Command%20Manual_V1.03.pdf

      Abraço !

      Adilson – Equipe FILIPEFLOP

  43. 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,

    1. 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

  44. 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,

  45. 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?

    1. Raul.
      Vê certinho as conexões, e usa uma fonte externa de 9V para alimentar o Shield, abaixo de 9V e não esquece de apertar o S_PWR despois.
      Abraço.

      1. corrigindo: abaixo de 9V não funciona**

        1. Eu fiz o que você mandou, e apareceu a seguinte mensagem:

          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

          status=IDLE

          O que pode ser dessa vez?

          1. Qual operadora vc está usando? Se for da Oi, também tive problemas, mas é só por um da tim

            Léo Ribeiro
    2. Boa noite Raul,

      É importante utilizar uma fonte externa para alimentação do Arduino quando estiver usando o GSM Shield, por favor verifique se não é esse o problema.

      Grato.

      Adilson – Equipe FILIPEFLOP

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

    1. Sim parceiro, pois ele irá ‘conectar’ com a operadora para o envio.
      Se fosse assim, nem ia mais colocar credito no celular ia fazer tudo pelo arduino.. rsrs
      Abraço.

  47. 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

    César Sousa da Costa
  48. amigo, com esse chip conseguirimos fazer um rastreador veicular?

  49. 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!

    1. Boa noite !

      Realmente esse shield aceita teclado, mas ainda não conseguimos testar isso. Que tipo de teclado vocês tem ?

      Abraço.

      Adilson – Equipe FILIPEFLOP

  50. 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);
    }
    };

    1. 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

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

  52. 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.

    1. to na mesma situação.

    2. Boa noite Darci,

      Alteramos o artigo mostrando como utilizar esse shield com Arduino Mega.

      Abraço.

      Adilson – Equipe FILIPEFLOP

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

    1. Boa noite,

      Segue link com as informações que você precisa: http://elecfreaks.com/store/download/datasheet/wireless/EFcom_v1.2.pdf

      Abraço.

      Adilson – Equipe FILIPEFLOP

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

    1. Boa noite,

      Nesse link você tem todas as informações sobre pinagem e conexões: http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield

      Abraço.

      Adilson – Equipe FILIPEFLOP

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

  56. 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.

    1. Conseguiu resolver amigo?

  57. 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.

    1. Boa noite Matheus,

      Pode ser colocado somente o número, se estiver no mesmo DDD. Verifique se possui créditos suficientes no chip.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  58. 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

    1. Olá Thiago, experimenta bateria de lipo, 11,1v 1A ou 2200mA. Também tem a de 7,4v.
      Contudo, verifique se o regulador de tensão do arduino irá esquentar muito, se esquentar de uma forma que você não consiga ficar com o dedo nele, nem tente novamente.
      Acredito que dá se tratando de mobilidade, porém uma bateria de lipo é cara. Também você terá que verificar a autonomia, quanto tempo a bateria dura. Espero ter ajudado

    2. Bom dia Tiago,

      Não tenho essa informação no momento, mas posso te indicar um artigo sobre essa necessidade: http://comoyo.github.io/blog/2013/08/09/How_to_efficiently_operate_the_Arduino_GSM_shield_with_a_battery_pack/

      Abraço

      Adilson – Equipe FILIPEFLOP

  59. 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

    1. Boa tarde Gabriel,

      Você está utilizando alimentação externa para o Arduino. Sem uma fonte externa, o shield reinicia ou desliga.

      Abraço.

      Adilson – Equipe FILIPEFLOP

      1. Amigo, estou utilizando fonte externa sim, porem ele sempre Reinicia ou Desliga o Modulo.
        Como eu resolvo essa situação?

        1. Bom dia Gabriel,

          Por favor me passe a especificação da fonte que você está usando.

          Grato.

          Adilson – Equipe FILIPEFLOP

  60. 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.

    1. Bom dia Rodrigo,

      Não temos esse módulo para testar, mas por favor verifique este link, que contém informações sobre a placa e também as conexões: http://electronics.stackexchange.com/questions/138502/connecting-gsm-sim900a-module-with-ardunio

      Abraço.

      Adilson – Equipe FILIPEFLOP

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

  62. 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!

    1. 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

      1. 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 programasArduinolibrariesSoftwareSerial”
        2. Vá em “C:Arquivos de programasArduinohardwarearduinocoresarduino
        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);
        }
        }
        }

        }

        1. Se você copiar o código e colar na IDE do Arduíno, lembre – se de consertar (refazer)o que está entre “aspas”, do contrário vários erros serão gerados .

  63. 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);}}}

    1. 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);}};

      1. 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);}}}

    2. 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: [email protected]

      1. Bom dia Jayme,

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

        Adilson – Equipe FILIPEFLOP

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

          1. 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.

            Felipe Nacimento
    3. 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

  64. 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

    1. 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)

  65. 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.

    1. 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????

      1. 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
        }
        }

        1. 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()
          {

          }

      2. 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

        1. 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:Arduinoarduino-nightly-windowsarduino-nightlylibrariesGSMsrc/GSM3MobileNetworkProvider.h:37:0,
          from C:Arduinoarduino-nightly-windowsarduino-nightlylibrariesGSMsrc/GSM3MobileClientService.h:37,
          from C:Arduinoarduino-nightly-windowsarduino-nightlylibrariesGSMsrc/GSM.h:42,
          from Jun__o_15_06.ino:7:
          C:Arduinoarduino-nightly-windowsarduino-nightlylibrariesGSMsrc/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:UsersFamiliaDocumentsArduinolibrariesKeypad/Keypad.h:36:0,
          from Jun__o_15_06.ino:4:
          C:UsersFamiliaDocumentsArduinolibrariesKeypad/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.

  66. 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?.

    1. 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

  67. 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

    1. Bom dia Pedro,

      Não é necessário ligar a USB para alimentação, fazemos isso somente para efeitos de comunicação/monitoração. Uma fonte de alimentação de 12V vai funcionar no seu caso.

      Abraço.

      Adilson – Equipe FILIPEFLOP

      1. Boa tarde Adilson!
        Mas para programar ligo usb ( para upload do codigo claro e ver o serial) + fonte 12v sem qualquer problema?

        obrigado!

        1. Bom dia Pedro,

          Exato, pode ligar tanto a fonte como o cabo USB.

          Abraço.

          Adilson – Equipe FILIPEFLOP

  68. 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!

  69. 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

    Jeferson Lorscheitter
  70. 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.

    1. Bom dia Daniel,

      Existe um comando AT que faz isso, o AT+COPN. Se não funcionar, sugiro dar uma olhada na lista de comandos AT deste link: http://elecfreaks.com/store/download/datasheet/rf/SIM900/SIM900_AT%20Command%20Manual_V1.03.pdf

      Abraço.

      Adilson – Equipe FILIPEFLOP

  71. 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.

    1. Boa tarde Francisco,

      Não encontramos essa informação que você pediu. Acessando a página do fabricante (http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield), não há menção à GPS.

      Abraço.

      Adilson – Equipe FILIPEFLOP

      1. bom dia, achei a resposta!
        é que essa biblioteca serve para o sim900 e sim908, o primeiro chip tem as funções que vocês já relataram, mas, o sim908 tem além das funções do sim900 também tem a função gps.
        por isso tem na mesma biblioteca funções para gps.

        1. Boa tarde Francisco,

          Ótima informação. Obrigado !

          Abraço.

          Adilson – Equipe FILIPEFLOP

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

    1. Boa tarde Victor,

      É possível sim, tente juntar os dois programas mostrados no post.

      Abraço

      Adilson – Equipe FILIPEFLOP

  73. 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

    Jeferson Lorscheitter
  74. 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])

    1. 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);

  75. 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

    Luiz Fernando da Silva
    1. 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

      1. 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!

        1. 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
          1. 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)…

            Luiz Fernando da Silva
          2. 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!

          3. #include

            #include
            #include
            #include

            #include
            #include

            esses são os includes

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

        Luiz Fernando da Silva
        1. 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

        2. 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.

          1. É, 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.

            Luiz Fernando da Silva
    2. Cara eu resolvi esse problema!

      1. E como você fez DCM?

        Luiz Fernando da Silva
        1. 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
          }
          }

    3. 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. 🙁

  76. 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=1r”); // 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);
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }

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

    1. Boa tarde Rafael,

      Esse shield usa basicamente os pinos de alimentação, e também o 0 (RX) e 1 (TX) do Arduino. Você também pode usar os pinos D5 e D6 para ligar e resetar a placa.

      Nesse link você encontra todas as informações sobre a ligação desse shield: http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield

      Abraço

      Adilson – Equipe FILIPEFLOP

      1. entao teoricamente ligarei o rx do shield no tx0 e o tx no rx0 esta seria a ligação não precisaria de mais nenhum jumper? porque tem que ligar os pinos 50 e 51 e preciso?
        obrigado

  78. 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.

  79. 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.

    1. Bom dia Claudio,

      Obrigado. O seu shield é o mesmo vendido pela FILIPEFLOP ? Nele o pino 5 é o Reset, e com o pino 6 você pode ligar e desligar o shield.

      Para testar se a placa está respondendo, você pode simplesmente enviar o comando AT e verificar se o shield responde com um “OK”. Para a lista de comandos AT, recomendo que dê uma verificada neste link:http://elecfreaks.com/store/download/datasheet/rf/SIM900/SIM900_AT%20Command%20Manual_V1.03.pdf.

      Quanto ao delay, tente aumentar a velocidade de comunicação (baud rate) entre o Arduino e o shield.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  80. 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

    1. 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

  81. 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

  82. 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

    Rennan Lopes de lima
    1. Boa tarde Rennan,

      Não temos nenhum exemplo ainda, com conexão à internet. Por favor dê uma olhada na lista de comandos AT neste link (veja a seção 7 -Commands for GPRS Support, página 156): http://elecfreaks.com/store/download/datasheet/rf/SIM900/SIM900_AT%20Command%20Manual_V1.03.pdf

      Abraço

      Adilson – Equipe FILIPEFLOP

  83. 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?

    1. Boa tarde Giovani,

      Esse shield tem uma GPIO que pode ser programada também via comandos AT, dê uma olhada neste link na seção “Making a call & Controlling GPIO and PWM pins”: http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield

      Abraço

      Equipe FILIPEFLOP

  84. 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

  85. 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. 🙁

    1. Po, eu quebrei tanto a cabeça que eu troquei de shield.

      Mas se nao me engano, na biblioteca GSM.h tem os #define GSM_ON e GSM_RESET com os pinos. Mas não me lembro se são os pinos que estão lá (tem que olhar o datasheet do efcon). Daí é só dar pinMode HIGH e LOW. Pra isso você tem que configurar a pinagem pra ser via software (que é como ele mostra aqui no tutorial).

      Infelizmente eu não tenho mais o código, mas espero que te ajude.

      Luiz Fernando da Silva
    2. Bom dia,

      Por favor utilize o exemplo deste link. Ele liga o shield automaticamente: http://www.arduinoecia.com.br/2015/09/arduino-gsm-shield-sim900-efcom.html

      Abraço

      Adilson – Equipe FILIPEFLOP

  86. 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.

  87. 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.

  88. 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?

    1. Pode sim amigo, na verdade você pode enviar qualquer tipo de dado, aconselho converter em.string e já era

  89. 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?

  90. 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,

  91. 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 ?

  92. 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

  93. 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?

    1. Boa tarde Luan,

      Por favor dê uma olhada neste post: http://www.arduinoecia.com.br/2015/09/arduino-gsm-shield-sim900-efcom.html

      Abraço!

      Adilson – Equipe FILIPEFLOP

  94. Ó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 ?

    1. Bom dia Lucas,

      Não fizemos esse teste, mas segundo informações do fabricante, é só utilizar a porta serial + alimentação, como você falou.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  95. 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.

    1. 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

  96. 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!

  97. 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?

    1. OPS: Troquei a fonde de 9v e 1A por uma de 12V e 1A. Agora está funcionando sem nenhuma problema!

  98. Boa tarde,

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

    Abs.

    1. Tem sim, tem que usar sms.GetSMS() para ver se chegou uma mensagem para você.

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

  100. 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******

  101. 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!

  102. 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 ?

    1. Boa tarde Giovani,

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

      Abraço

      Adilson – Equipe FILIPEFLOP

      1. Utilizei uma fonte 9v 1A e outra 12v 1A…. As duas fontes deram o mesmo problema no arduino Mega. Já no arduino uno a shield funciona perfeitamente com qualquer uma das duas

    2. 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!

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

      1. Bom dia Franscisco, Obrigado por me responder
        Irei fazer os testes acima como voce me indicou.

        As configurações do GSP.cpp , GSP.h e HWSerial.h ja estão feitas para o arduino Mega. O mais estranho que com o Arduino Uno a shield esta funcionando normalmente.
        Estou utilizando uma fonte de 9v e outra de 12v ambas de 1A. Mesmo assim o erro persiste.

        1. Bom dia Giovani,

          Eu utilizo uma de 9V e 2A. Você tem alguma nessa especificação ?

          Abraço

          Adilson – Equipe FILIPEFLOP

          1. Bom Dia Adilson
            Tentei utilizar uma fonte de 12v 2A mas mesmo assim o led STA tende a desligar sempre, isso utilizando o Arduíno Mega
            Utilizando o Arduíno Uno a shield funciona normal.

            Sera que o Arduíno Mega meu esta com problema ou na Shield mesmo?

          2. Boa tarde Giovani,

            Pode ser algum problema de hardware mesmo. Apenas para garantir que seja isso, tente as informações desse tutorial, para ver se o problema continua: http://www.arduinoecia.com.br/2015/09/arduino-gsm-shield-sim900-efcom.html

            Abraço!

            Adilson – Equipe FILIPEFLOP

        2. Desculpe-me as configurações do GSM.cpp e GSM.h e HWSerial.h

          Obrigado

  103. 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?

  104. 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!

    1. estou com o mesmo problema com consigo, alguem sabe me dizer se essa programacao serve nesse modelo de gsm encontrei pouquissimos trabalhos com esse modelo, digamos que nada.

  105. 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.

    1. Bom dia,

      Infelizmente ainda não temos.

      Abraço.

      Adilson – Equipe FILIPEFLOP

    2. Mas o Arduino Zero é 3.3V, não? e shield 5v….não seria uns dos problemas?…olhando na biblioteca, parece não ser compatível.

      1. Verdade, O Zero é 3.3V, para consegui fazer a alimentação, teria que ser uma fonte externa ligada direta no Shield GSM sem passar pelo arduino Zero.

        Tentei mexer na biblioteca alterando a porta Serial para SerialUSB, porem sem sucesso :/

        1. A questão é o shield….ele é alimentado pelo arduino.”VIN”, tente utilizar o shield que tem o “Jack” = alimentação externa, mas acredito que possa ser sem sucesso por causa do arduino mesmo.

  106. 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.

    1. É só abrir o arquivo SIM900.cpp e colocar o “///” na frente da Serial.println
      //Serial.println(F(“This method is deprecated! Please use GetSMS in the SMS class.”));

  107. 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

    Evandro Michel Picolotto
    1. 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…

      1. Estou sem o modulo agora acredito que possa ser pelo IIC, quando estiver com ele novamente vou testar scanear os endereços i2c para ver se encontra o do relógio.

        Evandro Michel Picolotto
  108. 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

  109. 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.

    Felipe Ferreira Mendes
  110. 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?

    1. Boa tarde Michael,

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

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

      Abraço!

      Adilson – Equipe FILIPEFLOP

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

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

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

  114. 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?

  115. 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

    1. 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

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

    1. 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

      1. 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

        1. 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

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

    1. Bom dia Rui,

      É possível sim, você só precisa alterar o programa e incluir todos os números que você quer.

      Abraço!

      Adilson – Equipe FILIPEFLOP

      1. E é possível vocês ajudarem-me com isso?

        1. Boa tarde Rui,

          Podemos ajudar com dúvidas relativas aos programas do post, mas não em desenvolvimento de códigos do usuário.

          Abraço!

          Adilson – Equipe FILIPEFLOP

  118. 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.

    1. 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

      1. 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

        1. Boa tarde Daniel,

          Você testou o código que faz chamadas ? funciona normalmente ?

          Abraço.

          Adilson – Equipe FILIPEFLOP

          1. Boa noite,

            com a fonte 12v 4A funcionou beleza.

            Obrigado pela atenção.

            Daniel Tsuneo
          2. Bom dia Daniel,

            Legal, obrigado pelo retorno.

            Abraço!

            Adilson – Equipe FILIPEFLOP

            Adilson Thomsen
      2. 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 ?

  119. 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.

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

  121. 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.

  122. 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

  123. 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

  124. 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

  125. 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?

  126. 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?

  127. tem como intalar aplicativo wdsap no microcontrolador para enviar mensagens

  128. 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?

    1. 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

    2. 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.

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

      Pedro Henrique Pinheiro Lima
  129. 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!!!!!!!!

  130. 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

    1. Boa tarde Silvio,

      Obrigado. É possível sim, você pode repetir a rotina de transmissão 2 vezes, com números diferentes.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  131. 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.

    1. Boa tarde Felipe,

      É possível sim, você pode programar o envio de SMS para vários números.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  132. 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?

    1. sim Victor é possivel fazer issi, com um if.

  133. 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?

  134. 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

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

  136. 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

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

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

    C:Program Files (x86)ArduinolibrariesGSM_ShieldGSM_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?

    1. Stella, crie uma pasta na pasta de bibliotecas do arduino chamada WProgram. Depois copie e cole a biblioteca do link https://github.com/takanuva/arduino-makefile/blob/master/lib/default/WProgram.h em um notepad.
      Salve esse notepad na pasta WProgram criada por vc com a extensão .h

  138. 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.

    1. Também estava tentando fazer isso, vou utiliza-la para um projeto e preciso de mais portas, queria utilizar ela externa, tem como?

  139. 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

  140. 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

  141. OI, o programa de chamada não funciona, não consigo resolver o problema.
    Instalei a biblioteca .

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

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada.ino: In function ‘void loop()’:

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada.ino:31:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    call.Call(“o numero de telefone”);

    ^

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada – Copia.ino: At global scope:

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada – Copia.ino:8:9: error: redefinition of ‘CallGSM call’

    CallGSM call;

    ^

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada.ino:15:9: note: ‘CallGSM call’ previously declared here

    CallGSM call;

    ^

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada – Copia.ino: In function ‘void setup()’:

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada – Copia.ino:10:6: error: redefinition of ‘void setup()’

    void setup()

    ^

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada.ino:17:6: note: ‘void setup()’ previously defined here

    void setup()

    ^

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada – Copia.ino: In function ‘void loop()’:

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada – Copia.ino:20:6: error: redefinition of ‘void loop()’

    void loop()

    ^

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada.ino:27:6: note: ‘void loop()’ previously defined here

    void loop()

    ^

    C:UsersFernandoDesktopGMS aduinoChamadaChamadaChamada – Copia.ino:24:24: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    call.Call(“o numero de telefone”);

    ^

    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”

  142. Bom dia,

    Sou fã do site, e cliente há muitos anos, e parabenizo pela seriedade do trabalho, e a forma como que vendem estes produtos e exemplificam, realmente é muito didático. Aproveito pra fazer um pedido, ou pedir uma orientação, precisava de um projeto com fizesse uma ligação com um arquivo de voz. Isso seria possível? Em caso positivo, tem alguma exemplo?

    Atenciosamente

  143. Boa Tarde, tenho um arduino mega 2560 e um GSM/GPRS SHIELD! Minha placa é diferente do que você explicou acima sendo a placa com 3 pinos ( SW TX HW) e 3 pinos ( SW RX HW) neles tem um jumper que conecta um par de cada lado. Posso configurar a porta digital 50 e 51 do mesmo jeito ou tem outra forma?

  144. 1 – As portas Analógicas do Arduino UNO ficam livres para serem usadas após conectar este Shield?

    2 – Tenho um projeto que mede a corrente elétrica de um aparelho e envia o resultado a cada 5 minutos, é possível alimentar alguma planilha online com esse Shield? Existe alguma forma de organizar esses dados que não seja recebendo SMS no meu celular a cada 5 minutos?

    Grato!

  145. Boa noite Adilson
    Estou começando a programar Arduino agora
    Ou seja sou bem leigo no assunto.
    Poderia por favor descrever os placas que preciso comprar para seguinte aplicação:
    Quando receber um sinal no sensor enviar uma mensagem para um número de celular.
    Preciso fazer isso com o total de 32 sensores
    E cada sensor enviando mensagens para números diferentes :
    Sensor 1 —- envia mensagem para o 1 número de celular
    Sensor 2—— envia mensagem para o 2 número de celular
    ………………..

  146. Boa noite. Gostaria de saber se consigo realizar uma chamada telefônica com este shield e receber os código DTMF, para poder acionar dispositivos. Obrigado