quinta-feira, 14 de agosto de 2014

Shield GSM/GPS SIM908

Olá pessoal,

Hoje vamos falar do shield GSM/GPRS/GPS SIM908 que dá a funcionalidade de chamadas de voz, SMS, dados via Internet e fax e mais a funcionalidade de GPS (localização). Este shield será utilizado no projeto para envio de SMS quando houver o aumento de temperatura e isto contornará o problema de monitoramento pois há maior chance do aviso chegar a uma rede GSM (celular) pois muitas vezes não temos uma conexão ativa de rede (mesmo redes móveis como 3G).
Vamos lá então!

Shield GSM/GPS SIM908

Desconectei a antena do GPS por não utilizá-la nos testes. Posteriormente vamos testar essa funcionalidade também!! Utilizei um cartão micro SIM de uma operadora e coloquei alguns créditos (você pode utilizar um cartão SIM ou micro SIM - quando usar o micro SIM encaixe com cuidado os contatos do cartão).

Esquema de ligação: este shield deve ser empilhado por último se você tiver outros shields por conta dos componentes que ele utiliza (são altos e o próprio shield não disponibiliza as barras de pinos). Eu utilizei ele sem empilhar no Arduino, fazendo as ligações com jumpers e utilizando uma mini protoboard em que eu a cortei no meio. Utilizei um quadro de distribuição Tigre para 3 ou 4 disjuntores para acomodar os componentes. Abri a caixa, retirei os suportes internos para os disjuntores. Posteriormente vou utilizá-lo para um outro projeto.
 Vejam as fotos abaixo para ter uma idéia de como fixei o shield:


Quadro de distribuição para 3/4 disjuntores


Mini protoboard cortada ao meio e colada na parte interna do quadro com dupla face
Coloquei o shield de GSM forma que os pinos 2,3,5,6 ficassem alinhadas com os furos.

Conectei os jumpers na protoboard nos pontos correspondentes aos pinos.
Em outra lado do quadro fixei o Arduino e liguei os jumpers nos pinos 2, 3,5,6 do Arduino. Conectei jumpers nos pinos 3.3V, 5V, GND e Vin.
Conectei os pinos 3.3V, 5V, GND e Vin na protoboard ligada ao shield GSM.



Importante: conectar o Arduino com fonte externa. Para acionar o shield ele necessita de mais corrente que o Arduino fornece.

A biblioteca correspodente deste shield é esta:

https://github.com/MarcoMartines/GSM-GPRS-GPS-Shield
 
Vamos ao código:

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


// Se você quiser usar as funções para gerenciar SMS, descomente as linhas abaixo
#include "sms.h"
#include "call.h"

SMSGSM sms;

// Para mudar os pinos TX e RX modifique na biblioteca GSM.cpp (o padrão é pino 2 para TX e pino 3 para RX


//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.

//Este sketch envia um simples SMS. Há trechos comentados para efetuar chamadas de voz e ler SMS. Descomente-os se quiser testar essas funcionalidades.

int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
int powerkey =  5;
int statuspin = 6;
int pinState = 0;

CallGSM call;


void setup()
{
  pinMode(powerkey, OUTPUT); //define pino 5 como saída
  pinMode(statuspin, INPUT); //define pino 6 como entrada
 
  pinState = digitalRead(statuspin); //Lê o estado do pino 6




  
  // Se o pino 6 estiver LOW, faz a sequencia de power on do Shield
  if(pinState==LOW){
    digitalWrite(powerkey, HIGH);   // seta o pino 5 como HIGH
    delay(2000); // espera 2 segundos
    digitalWrite(powerkey, LOW);    // seta o pino 5 como LOW
  }


  //Inicia monitoramento da serial.
  Serial.begin(9600);


  Serial.println("Testando GSM Shield.");
  //Inicia a configuração do shield GSM com a velocidade de 2400
  

  if (gsm.begin(2400)){
    Serial.println("\nstatus=READY");
    started=true; 
  }
  else Serial.println("\nstatus=IDLE");
  

  // Se o shield iniciou envia o SMS com a função SendSMS passando o número e a mensagem
  

  if(started){
     if (sms.SendSMS("015XXXXXXXXX", "Teste de SMS"))
      Serial.println("\nSMS sent OK");
    

     Se quiser testar chamadas de voz descomente as linhas abaixo
    /*
    if(call.CallStatus()!= CALL_ACTIVE_VOICE){

           Serial.println("Chamando");

           call.Call(015XXXXXXXXX);
    */
 
  }

}

void loop()
{

  // Se quiser testar a leitura de SMS descomente as linhas abaixo
  /*

  if(started){
    //Read if there are messages on SIM card and print them.
    if(gsm.readSMS(smsbuffer, 160, n, 20))
    {
      Serial.println(n);
      Serial.println(smsbuffer);
    }
    delay(1000);
  }

  */
};





Pessoal, é isso aí. Qualquer dúvida enviem seus comentários.

Até a próxima! 

8 comentários:

  1. Boa tarde amigo! Tudo bem? Parabéns pelo tutorial, ficou muito bom! Saberia me informar se esse código funciona com o Arduino Mega? Abraço

    ResponderExcluir
  2. Boa tarde, estou desenvolvendo um projeto que vai utilizar o SIM908, gostaria de saber se o modulo usado funciona também no PIC e se possivel, me passar onde compro essa shield pois ate agora so encontrei em sites americanos. Abraço

    ResponderExcluir
  3. Boa tarde... A biblioteca acima serve tambem para o SIM908, e caso sim como faço para usar o gps.

    ResponderExcluir
  4. Boa tarde... A biblioteca acima serve tambem para o SIM908, e caso sim como faço para usar o gps?

    ResponderExcluir
  5. Boa tarde... A biblioteca acima serve tambem para o SIM908, e caso sim como faço para usar o gps?

    ResponderExcluir
  6. Boa tarde... A biblioteca acima serve tambem para o SIM908, e caso sim como faço para usar o gps.

    ResponderExcluir
    Respostas
    1. Peter, boa tarde. Sim funciona. Eu mesmo utilizei do jeito que está no post. Não testei gps ainda porém acredito que deva ter inúmeros tutoriais na net.

      Excluir
  7. Olá amigão, parabéns pelo post! Pretendo utilizar essa sim908 para o meu TCC, mas eu precisarei utilizá-lo para se comunicar através da internet, e não por sms. Vc poderia dar algumas dicas de como devo começar? Abraços!

    ResponderExcluir