Tutorial módulo GSM SIM808 com Arduino

Tutorial Modulo GSM SIM808 Arduino Uno

Procurando por um módulo GSM que possibilite conexão à internet, fazer chamadas, enviar SMS e ainda usar geolocalização? Neste tutorial módulo GSM SIM808 com Arduino vamos mostrar como você enviar um SMS usando o módulo GSM GPS Bluetooth SIM808 e também como obter a sua localização por GPS.

Já vimos aqui no blog como usar uma outra versão de módulo GSM, o SIM800L, nos posts Alarme por SMS usando SIM800L e Controle o Arduino por SMS com o SIM800L, além do “pioneiro” SIM900, que ensinamos como usar nesses posts.

O funcionamento de todos esses módulos GMS (pelo menos na parte básica) é bem parecido. Na maioria das vezes comandos AT para realizar a comunicação com o módulo.

Diferença entre o SIM808 e o SIM800L

Antes de testar o SIM808 vamos fazer uma comparação com uma das versões mais próximas, o SIM800L que basicamente é um módulo GSM/GPRS, o que significa que com ele você consegue enviar e receber ligações, enviar mensagens de texto (SMS) e se conectar a internet (rede 2G GSM/GPRS). Uma característica bacana do SIM800L é que ele tem um sintonizador de rádio FM.

Já o módulo com o SIM808 além das funcionalidades do 800L (exceto o rádio FM) tem também um GPS integrado e a possiblidade de conexão via bluetooth.

Isso é bem interessante se você precisa construir um sistema de rastreamento, pois no mesmo módulo você pode obter a localização do usando as coordenadas dos satélites GPS e enviar essa informação por exemplo para um banco de dados na internet, sem precisar de nenhum hardware adicional.

O módulo GSM SIM808

O módulo SIM808 que vamos utilizar é esse da imagem abaixo, que é Quad-band (850/900/1800/1900MHz), possui GPS de 22 canais e Bluetooth compatível 3.0+.

Na parte superior do módulo temos o chip SIM808 (download do datasheet do SIM808) na parte central, os leds indicadores NET, STA e PPS na parte superior, e o slot para cartão SIM. Este módulo não tem um botão liga/desliga, então assim que você alimentar o módulo usando os pinos Vcc e GND com tensões entre 5 e 20V ele já estará funcionando.

Apesar deste módulo não possuir nenhum tipo de botão, é possível ligar o mesmo via comando AT ou utilizando o pino PWKEY na parte inferior, ok?

Repare que na parte superior também temos os conectores U.FL para as antenas GSM e GPS. Na parte inferior do módulo temos um espaço para soldar um conector U.Fl se for necessário utilizar o bluetooth do módulo.

No geral é um módulo bem simples de usar, e agora vamos ver como conectar esse módulo em uma placa Arduino Uno.

Conexão módulo GSM SIM808 com Arduino

A comunicação do módulo SIM808 com o microcontrolador do Arduino é feita via interface serial (pinos RX e TX) e como em outros testes vamos usar a serial por software, nos pinos digitais 2 e 3.

A conexão segue o esquema abaixo:

Simples não? Para usar, coloque no slot um cartão SIM desbloqueado e carregue os programas que vou mostrar a seguir.

Enviando SMS com o SIM808

Nos programas vamos usar a biblioteca Adafruit FONA Library, feita para os módulos da Adafruit mas que funcionaram bem nos nossos testes. Para instalar, na IDE do Arduino acesse o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas e na janela do Gerenciador procure por fona.

Selecione a biblioteca Adafruit FONA Library conforme imagem abaixo, clicando em seguida em Instalar:

Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.

Essa biblioteca tem um exemplo para o uso de várias funções do módulo, como ligações, envio de SMS, acesso à internet, etc. Para usar esse exemplo, na IDE acesse o menu Arquivo -> Exemplos -> Adafruit FONA Library e selecione o programa FONAtest.

Desse exemplo eu extrai o programa para envio de SMS, deixando o código mais enxuto para simplificar o entendimento. O que você precisa fazer é mudar a linha 17, colocando a mensagem que você deseja enviar, e a linha 18, que é o número do telefone para o qual deseja enviar a mensagem.

Não se preocupe com o pino SIM808_RST, especificado na linha 10 do programa. Essa definição é exigida pela biblioteca mas o pino 4 não será conectado.

//Programa: Envio de SMS com o modulo SIM808 Arduino
//Autor: Arduino e Cia
//Adaptacao do exemplo da biblioteca Adafruit FONA

#include <Adafruit_FONA.h>
#include <SoftwareSerial.h>

#define SIM808_RX 2
#define SIM808_TX 3
#define SIM808_RST 4

SoftwareSerial SIM808SS = SoftwareSerial(SIM808_TX, SIM808_RX);
SoftwareSerial *SIM808Serial = &SIM808SS;

Adafruit_FONA SIM808 = Adafruit_FONA(SIM808_RST);

char* message = "Teste de SMS Arduino e Cia";
char* sendto = "11987654321";

void setup()
{
  Serial.begin(9600);
  Serial.println(F("Teste basico do modulo SIM808"));
  Serial.println(F("Inicializando... (pode demorar alguns segundos)"));

  //Inicializa o SIM808 com velocidade de comunicacao 9600bps
  SIM808Serial->begin(9600);

  //Inicia o modulo
  SIM808.begin(*SIM808Serial);
  Serial.println("Modulo inicializado!");
}

void loop()
{

  //Mostra o IMEI do modulo
  char imei[16] = {0};
  uint8_t imeiLen = SIM808.getIMEI(imei);
  if (imeiLen > 0) {
    Serial.print("Numero IMEI do modulo: ");
    Serial.println(imei);
    Serial.println();
  }

  Serial.println(F("Lendo o RSSI:"));
  uint8_t n = SIM808.getRSSI();
  int8_t r;

  Serial.print(F("RSSI = ")); Serial.print(n); Serial.print(": ");
  if (n == 0) r = -115;
  if (n == 1) r = -111;
  if (n == 31) r = -52;
  if ((n >= 2) && (n <= 30)) {
    r = map(n, 2, 30, -110, -54);
  }
  Serial.print(r); Serial.println(F(" dBm"));

  //Aguarda 3 segundos para enviar o SMS
  delay(3000);
  Serial.println();

  //Enviar SMS
  Serial.print(F("Enviando mensagem SMS"));
  SIM808.sendSMS(sendto, message);
  Serial.println(F("SMS enviado!"));

  //Aguarda 5 minutos e repete o processo
  Serial.println();
  delay(300000);
}

Você pode acompanhar todo o teste de conexão com o módulo e envio da mensagem pelo Serial Monitor da IDE do Arduino.

Localização GPS com o SIM808

Para obter a localização do seu módulo SIM808, utilize o programa abaixo. da mesma maneira que o programa anterior, extraí só a parte de localização.

//Programa: Localizacao GPS com modulo SIM808 Arduino
//Autor: Arduino e Cia
//Adaptacao do exemplo da biblioteca Adafruit FONA

#include <Adafruit_FONA.h>
#include <SoftwareSerial.h>

#define SIM808_RX 2
#define SIM808_TX 3
#define SIM808_RST 4

SoftwareSerial SIM808SS = SoftwareSerial(SIM808_TX, SIM808_RX);
SoftwareSerial *SIM808Serial = &SIM808SS;

Adafruit_FONA SIM808 = Adafruit_FONA(SIM808_RST);

void setup()
{
  Serial.begin(9600);
  Serial.println(F("Teste basico do modulo SIM808"));
  Serial.println(F("Inicializando... (pode demorar alguns segundos)"));

  //Inicializa o SIM808 com velocidade de comunicacao 9600bps
  SIM808Serial->begin(9600);

  //Inicia o modulo
  SIM808.begin(*SIM808Serial);
  Serial.println("Modulo inicializado!");
}

void loop()
{
  //Mostra o IMEI do modulo
  char imei[16] = {0};
  uint8_t imeiLen = SIM808.getIMEI(imei);
  if (imeiLen > 0) {
    Serial.print("Numero IMEI do modulo: ");
    Serial.println(imei);
    Serial.println();
  }

  //Liga o GPS do modulo
  if (!SIM808.enableGPS(true))
    Serial.println(F("Failed to turn on"));

  //Mostra a localizacao GPS
  char gpsdata[120];
  SIM808.getGPS(0, gpsdata, 120);
  Serial.println();
  Serial.println(F("Formato: mode,fixstatus,utctime(yyyymmddHHMMSS),latitude,longitude,altitude,speed,course,fixmode,reserved1,HDOP,PDOP,VDOP,reserved2,view_satellites,used_satellites,reserved3,C/N0max,HPA,VPA"));
  Serial.print("Dados do GPS: ");
  Serial.println(gpsdata);

  //Aguarda 5 minutos e repete o processo
  Serial.println();
  delay(300000);
}

Em um próximo post sobre o SIM808 vamos usar o módulo para conexão com a internet.

Gostou? Confira os outros posts usando GSM aqui mesmo no Arduino e Cia!

5/5 - (2 votos)

Related posts

Sensor de estacionamento com Arduino e sensor HC-SR04

by Arduino e Cia
11 anos ago

Tutorial ESP RainMaker com ESP32 na IDE Arduino

by Arduino e Cia
2 anos ago

Novos livros de Eletrônica, Arduino e Raspberry Pi!

by Arduino e Cia
8 anos ago
Sair da versão mobile