Arduino Shield GSM GPS DFRobot | Baú da Eletrônica
Arduinos / Arduino Shield GSM GPS DFRobot
Em:	Posted on 26 de junho de 2017 3 de dezembro de 2018 Por:	Baú da Eletrônica Categoria:	Arduinos, Shields
Arduino Shield GSM GPS DFRobot
Este Arduino Shield DFROBOT – GSM/GPS/GPRS reúne em uma mesma placa funções de GSM, GPRS e GPS, permitindo que você tenha no Arduino as mesmas funções que você tem em um Smartphone, como acesso à internet e localização por GPS, além de poder realizar as tarefas mais comuns, como chamadas via celular e envio e recebimento de SMS.
Figura 1 – Arduino Shield
Esse Arduino Shield é controlado pelo chip SIM908 da SIMCom, sendo Quad-Band (850/900/1800/1900 MHz), sem a necessidade de alteração de frequência, que é reconhecida automaticamente. O shield aceita alimentação de 6 à 12V (para uso com Arduino, recomenda-se que o mesmo seja alimentado com fonte externa), possui antenas para GSM/GPRS e GPS e tem entrada para teclado 4×4.
O envio de comandos para o shield é feito por uma série de comandos AT, que podem ser enviados diretamente via serial, ou através do Arduino.
Estrutura do Arduino Shield GSM e Configurações
Na imagem abaixo temos uma visão geral do shield mostrando os principais conectores e jumpers/switches de configuração.
Figura 2 – Principais Conectores Arduino Shield GSM
Na parte de cima da placa, no lado esquerdo, temos o slot para cartão SIM (tamanho comum), depois os switches S1 e S2 e os jumpers J10 à J12, que tem a seguinte função:
Switch S1 : No modo PROG, permite que seja efetuado o upload de programas para o Arduino. No modo COMM, realiza a comunicação direta entre o Arduino e o shield.
Switch S2 : No modo Arduino, permite executar normalmente os programas presentes na placa. No modo USB, o programa do Arduino não é executado e o Arduino se comporta apenas como um conversor USB/Serial, permitindo o envio de comandos AT diretamente do computador para o shield (via Serial Monitor, por exemplo)
Jumper J10, J11 e J12 : Utilizado para comunicação entre o Arduino e o shield. Retire os jumpers para utilizar normalmente as portas D3, D4 e D5, também permitindo que você use outras portas do Arduino para controlar o shield.
Na parte inferior, temos o switch de seleção UART, de três posições, que define se estamos utilizando o modo GSM ou GPS do shield, ou se isso será controlado via software.
Envio de comandos AT para o Arduino Shield GSM
Para enviar os comandos AT manualmente, via Serial Monitor, carregue o programa abaixo no Arduino, seguindo este procedimento:
Mantenha S1 na posição PROG
Mantenha S2 na posição USB
Mantenha o switch UART na posição central, para selecionar modo GSM ou GPS via software
Faça o upload do programa para o Arduino
//Programa : Controle Shield GSM com comandos AT //Autor : Bau da Eletronica void setup() { //Define os pinos de comunicacao com o shield como saida pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); //Inicializa GSM digitalWrite(5,HIGH); delay(1500); digitalWrite(5,LOW); } void loop() { //Habilita comunicacao GSM digitalWrite(3,LOW); //Desabilita comunicao GPS digitalWrite(4,HIGH); }
//Programa : Controle Shield GSM com comandos AT
//Autor : Bau da Eletronica
//Define os pinos de comunicacao com o shield como saida
//Inicializa GSM
//Habilita comunicacao GSM
//Desabilita comunicao GPS
Após o upload, coloque S1 na posição COMM e entre no serial monitor, que exibirá as informações abaixo, mostrando que o shield está se comunicando com o computador :
Figura 3 – Comunicação com o Computador
Na tela acima, você pode enviar o comando AT para testar a resposta do shield (que será simplesmente "OK"), e o comando ATD<número>; para realizar uma chamada utilizando a rede GSM (não esqueça do ; (ponto e vírgula) no final). Para desligar, envie o comando ATH.
Realizando uma Chamada Telefônica via Arduino
A comunicação entre o Arduino e o shield também é feita via serial, e para realizar uma chamada telefônica pelo Arduino utilizamos os mesmos comandos AT que vimos anteriormente no modo manual. Apenas a disposição dos switches vai mudar, já que agora quem está se comunicando com o shield é o Arduino:
Mantenha S2 na posição Arduino
//Programa : Ligacao utilizando Arduino e Shield GSM //Autor : Bau da Eletronica void setup() { //Define os pinos de comunicacao como saida pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); //Inicializa GSM digitalWrite(5,HIGH);//Output GSM Timing delay(1500); digitalWrite(5,LOW); //Habilita o modo GSM digitalWrite(3,LOW); //Desabilita o modo GPS digitalWrite(4,HIGH); delay(2000); //Inicializa a serial Serial.begin(9600); //Aguarda a inicializacao do GSM (Call Ready) delay(15000); } void loop() { //Envia comando AT para o Shield Serial.println("AT"); delay(3000); //Realiza a discagem Serial.println("ATD1234678;"); //Aguarda alguns segundos e desliga delay(15000); Serial.println("ATH"); while(1); }
//Programa : Ligacao utilizando Arduino e Shield GSM
//Define os pinos de comunicacao como saida
//Habilita o modo GSM
//Desabilita o modo GPS
//Aguarda a inicializacao do GSM (Call Ready)
//Envia comando AT para o Shield
//Realiza a discagem
Serial.println("ATD1234678;");
//Aguarda alguns segundos e desliga
Após o upload, mova o switch S1 para a posição COMM e reinicie o shield. Abra o Serial Monitor para acompanhar o processo e aguarde alguns segundos para que a chamada seja completada e depois de alguns segundos, encerrada pelo comando ATH:
Obtendo Dados de GPS do Shield
Vamos agora obter os dados do GPS do shield, lembrando que teremos resultados mais precisos se estivermos em um ambiente externo com melhor acesso aos sinais de satélite GPS. Dependendo da intensidade do sinal, pode levar algum tempo para que o shield forneça a localização de forma correta :
//Programa : Coordenadas GPS com o shield GSM/GPS //Autor : Bau da Eletronica void setup() { //Define os pinos de comunicacao com o shield como saida pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); //Inicializa GSM digitalWrite(5,HIGH); delay(1500); digitalWrite(5,LOW); } void loop() { //Desabilita GSM digitalWrite(3,HIGH); //Desabilita GPS digitalWrite(4,HIGH); }
//Programa : Coordenadas GPS com o shield GSM/GPS
//Desabilita GSM
//Desabilita GPS
Após carregar o programa no Arduino, coloque o switch UART na posição GSM (esquerda), e acesse o serial monitor para digitar os comandos abaixo :
AT+CGPSIPR=9600 (seleciona a velocidade de comunicação)
AT+CGPSPWR=1 (liga o GPS)
AT+CGPSRST=1 (coloca o GPS em modo de autonomia)
Certifique-se de que cada comando acima obteve a resposta OK do Shield:
Depois disso, mova o switch UART para a posição GPS e aguarde o envio de dados no próprio serial monitor, nesse formato :
Vamos verificar em um mapa as coordenadas GPS que foram obtidas pelo shield, separando os valores da linha $GPRMC conforme abaixo :
Acesse este link e digite as coordenadas nos campos correspondentes :
Clique em Show Map para que seja mostrado o mapa referente às coordenadas fornecidas.
Estes são alguns exemplos básicos de utilização do Shield GPS/GPRS/GSM. Maiores informações sobre a placa, inclusive com exemplos de utilização de envio de SMS, você encontra na página da DFRobot.