Tutorial módulo GSM SIM808 com Arduino
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!
show, espero conexão com internet!
Oi! Eu gostaria de saber qual foi o simulador que foi usado para fazer a conexão no arduino.
Oi Luisa,
Uso o Fritzing.
Abraço!
Adilson
Ola!
Estou a usar um módulo SIM808 parecido a esse, mas não consigo fazer a ligação…
para o uso só de GPS e necessário o cartão SIM também??
ou só fazer a ligação ao arduino e usar uma antena GPS?
Obrigado e bom trabalho!
Oi Bernardo!
Interessante a sua pergunta, pq ainda não usei o GPS do SIM808, então não sei se realmente precisa do cartão SIM ou se funciona de forma independente.
Vou pesquisar.
Abraço!
Adilson
Chegou a testar? Lendo sobre o tema também fiquei com esta dúvida.
O SIM está ativo e funcionando (testado em celular), mas não consigo utilizar ele neste SIM808. Não se registra na rede. Ele pega sinal, mas da AT+CCID <— ERROR
Pessoal, tem como enviar a msg com a localização? os 2 juntos no caso
Oi Filipe,
Tem sim. Recomendo verificar a lista de comandos AT do módulo GSM SIM808.
Abraço!
Adilson
Bom dia,
estou a desenvolver um projecto para medir o impacto da radiação das antenas. utilizando o Arduíno. Será que este sensor pode me ajudar?
Oi Etelvina,
Que tipo de informação você vai precisar das antenas?
Abraço!
Adilson
Boa noite! Estou com uma SIM808 igual a esta, porem estou com dificuldades para a função GPS dela.
Para envio de SMS e HTTP funcionou perfeitamente (precisa da antena para funcionar corretamente), mas para a utilização do GPS ele não retorna a informação.
Abaixo retorno que estou tendo:
AT+CGPSPWR=1
OK
AT+CGPSRST=0
OK
AT+CGPSSTATUS?
+CGPSSTATUS: Location Not Fix
OK
AT+CGPSINF=0
+CGPSINF: 0,0.000000,0.000000,0.000000,19800105235954.000,0,0,0.000000,0.000000
OK