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!
