Como enviar SMS para celular utilizando o módulo GSM GPRS SIM800L e Arduino
O módulo GSM GPRS SIM800L é um mini modem capaz de realizar comunicação de dados através da rede de telefonia móvel celular. Com este dispositivo é possível enviar mensagens SMS, fazer chamadas telefônicas e, até mesmo, conectar-se à Internet. Desta forma, pode ser usado para notificar o usuário sobre algum evento ou acontecimento pré-definido.
O módulo GSM GPRS SIM800L suportar redes GSM/GPRS quad-band, o que significa que funciona em todos os lugares que possuem sinal de celular. Essa forma de comunicação pode ser usada em vários projetos de automação, IOT e robótica, podendo ser controlador por diversos microcontroladores como o Arduino, ESP8266 e ESP32.
No geral, o módulo GSM GPRS SIM800L (Figura 1) é ideal para otimizar um projeto e poupar tempo de observação do utilizador.
![a Figura mostra uma foto de módulo SIM800L em escala real](https://i0.wp.com/www.blogdarobotica.com/wp-content/uploads/2022/12/Figura-1-Modulo-GSM-GPRS-SIM800L.png?resize=517%2C359&ssl=1)
Para que o módulo funcione será necessário inserir um chip Micro SIM (chip celular) no soquete localizado na parte de trás. A direção correta para inserir o chip geralmente encontra-se desenhada na superfície do soquete.
![A Figura mostra uma foto real tirada do soquete presente no módulo sim800l](https://i0.wp.com/www.blogdarobotica.com/wp-content/uploads/2022/12/Figura-2-Soquete-para-conexao-chip-Micro-SIM-1.png?resize=456%2C402&ssl=1)
Apesar do seu pequeno tamanho, o módulo GSM GPRS SIM800L inclui vários recursos, como:
- Suporte Quad-band: GSM850, EGSM900, DCS1800 e PCS1900;
- Conexão com qualquer rede GSM com qualquer SIM 2G
- Recebe e faz chamadas de voz (necessário a utilização de um alto-falante e microfone);
- Envia e recebe mensagens SMS;
- Enviar e receber dados GPRS (TCP/IP, HTTP, etc.);
- Digitalizar e receber transmissões de rádio FM;
- Comandos AT baseado em série.
O módulo GSM GPRS SIM800L acompanha uma antena helicoidal e pinos. A antena helicoidal pode ser saldada diretamente no módulo, conforme a Figura 3.
![A figura foca em mostrar a conexão da antena com o módulo sim800l por meio de uma foto real](https://i0.wp.com/www.blogdarobotica.com/wp-content/uploads/2022/12/Figura-3-Antena-helicoidal-do-modulo-SIM800L.png?resize=1024%2C576&ssl=1)
O módulo GSM GPRS SIM800L possui um total de 12 pinos, ilustrados na Figura 4 e detalhados a seguir:
![A Figura busca mostrar os pinos do módulo SIM800l, por meio de uma edição, a qual é nomeado os pinos e sua localização](https://i0.wp.com/www.blogdarobotica.com/wp-content/uploads/2022/12/Figura-4-Pinos-do-modulo-GSM-GPRS-SIM800L.png?resize=1024%2C576&ssl=1)
Funcionalidade de cada pino:
NET: Pino onde soldaremos a antena helicoidal;
VCC: Pino de alimentação do módulo. Note que essa alimentação precisa estar entre 3,4V e 4,4 V de tensão. Desta forma, não é possível utilizar o 5V ou 3,3V do Arduino ou ESP. Para ligar o módulo, você pode usar um divisor de tensão ou um conversor DC-DC;
RST: Pino RESET para reinicialização do módulo. Para reiniciá-lo é necessário colocar esse pino em nível lógico baixo por 100ms;
RXD: Pino usado para receber comandos por meio da comunicação serial;
TXD: Pino usado para enviar dados ao microcontrolador por meio da comunicação serial;
GND: Pino de aterramento do módulo;
RING: Pino de interrupção do módulo. É configurado em nível alto por padrão e fica em nível baixo quando uma ligação ou SMS é recebida;
DTR: Pino que ativa e desativa o modo de hibernação do módulo (Nível alto = ativa a hibernação e nível baixo = desativa a hibernação);
MICP e MICN: Pinos de entrada para microfones;
SPKP e SPKN: Pinos de saída para alto-falantes;
Agora que já conhecemos o módulo GSM GPRS SIM800L, vamos ao projeto. A proposta é utilizar o módulo com o Arduino para enviar um SMS para um número pré-definido.
Materiais necessários
1 x Módulo GSM GPRS SIM800L;
1 x Placa Uno SMD R3 ATmega328;
1 x Cabo USB compatível com Arduino;
1 x Regulador de Tensão Step Down LM2596;
1 x Protoboard;
3 x Resistor 10 kΩ;
Jumpers macho-macho.
ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES
Certifique-se que a sua placa UNO esteja desligada antes de montar o circuito da Figura 5.
IMPORTANTE: O módulo deve ser alimentado por uma tensão de 3.3V a 4.4V. Portanto, o módulo nunca deve ser conectado diretamente ao Arduino.
![A imagem mostra um circuito esquemático de ligação feito no software fritizing para o projeto utilizando o módulo GSM GPRS SIM800L](https://i0.wp.com/www.blogdarobotica.com/wp-content/uploads/2022/12/Imagem3.png?resize=567%2C362&ssl=1)
Ao montar seu circuito na protoboard, preste atenção nos seguintes pontos:
- A alimentação do regulador de tensão deve ser feita por uma fonte externa;
- Ajuste a tensão de saída do regulador de tensão entre 3.4V e 4.4V. Para se certificar use um multímetro;
- Alimente o módulo com a saída do regulador de tensão;
- A entrada negativa do regulador de tensão, o GND da fonte externa e o GND do Arduino devem ser conectados (terra comum);
- Não podemos conectar o pino Rx do módulo diretamente ao pino digital do Arduino. Desta forma, faça um divisor de tensão. Conecte um resistor de 10kΩ entre o Rx do módulo e o pino D2 do Arduino e outros dois resistores de 10kΩ em série entre o Rx e o GND do módulo;
- O pino Tx do módulo deve ser conectado diretamente ao pino TXD do Arduino.
ELABORAÇÃO DO CÓDIGO
Após a montagem do circuito, vamos a programação do Sketch. A proposta desse código é utilizar o módulo com o Arduino para enviar um SMS para um número pré-definido. Para isso, acompanhe a lógica de programação deste projeto com os seguintes pontos:
1.Incluir a biblioteca “SoftwareSerial.h”
Esta biblioteca permite a comunicação serial em outros pinos digitais do Arduino, utilizando um software para replicar a funcionalidade.
2.Criar objeto Software Serial para comunicação com o SIM800L
Será necessário criar um objeto do tipo software serial para comunicação do módulo SIM800L passando como parâmetro as portas digitais 3 e 2 do Arduino.
3.Configurações iniciais
Na função setup() inicializamos a comunicação serial por meio do comando “Serial.Begin(9600)” e a comunicação entre o Arduino e módulo SIM800L através do comando “MySerial.begin(9600)”.
Em seguida, usaremos os comandos AT para nos comunicar com o módulo.
O comando “mySerial.println(“AT”);”testa a comunicação e retorna a mensagem OK se tudo estiver funcionando bem.
Logo em seguida, configuramos o SMS que será enviado. O comando “mySerial.println(“AT+CMGF=1”)” define o módulo no modo SMS Text.
O comando mySerial.println(“AT+CMGS=\”+ZZXXXXXXXXXXX\””)” será usado para configurar o número de telefone ao qual queremos enviar que a mensagem, vale lembrar que “ZZ” corresponde ao código telefônico do país e “XXXXXXXXXXX” corresponde ao número de telefone com o DDD.
Por fim, basta escrever a mensagem que será enviada por meio do comando “mySerial.print(“Tutorial Blog da Robótica “)”. A mensagem deve estar entre parênteses.
Além disso, chamamos a função “updateSerial()” .
4. Criar função updateSerial()
A função updateSerial() será responsável por verificar se a comunicação serial está disponível e realizar a leitura dos dados seriais de entrada do Arduino.
Ao final, o Sketch deste projeto ficará da seguinte maneira:
/* - ENVIAR SMS COM MÓDULO GSM GPRS SIM800L - ================================================= === BLOG DA ROBOTICA - www.blogdarobotica.com === ================================================= Autor: Jonas Souza E-mail: contato@blogdarobotica.com Facebook: facebook.com/blogdarobotica Instagram:@blogdarobotica YouTube: youtube.com/user/blogdarobotica ================================================= === CASA DA ROBOTICA - www.casadarobotica.com === ================================================= Facebook: facebook.com/casadaroboticaoficial Instagram:@casadarobotica ================================================== */ #include <SoftwareSerial.h> //Adiciona da biblioteca SoftwareSerial.h SoftwareSerial mySerial(3, 2); //Cria objeto mySerial passando como parâmetro as portas digitais 3 e 2 void setup(){ Serial.begin(9600); //Inicializa a comunicação serial mySerial.begin(9600); //Inicializa comunicação entre o SIM800L e o Arduino delay(1000); //Intervalo de 1 segundo mySerial.println("AT"); //Teste de conexão updateSerial(); //Chamada da função updateSerial() mySerial.println("AT+CMGF=1"); //Configuração do modo SMS text updateSerial(); //Chamada da função updateSerial() mySerial.println("AT+CMGS=\"+5577998077522\""); //Número de telefone que irá receber a mensagem, “ZZ” corresponde ao código telefônico do pais e “XXXXXXXXXXX” corresponde ao número de telefone com o DDD updateSerial(); //Chamada da função updateSerial() mySerial.print("Tutorial Blog da Robotica"); //Texto que será enviado para o usúario updateSerial(); //Chamada da função updateSerial() mySerial.write(26); //confirmação das configurações e envio dos dados para comunicação serial. } void loop(){ } void updateSerial() { while (mySerial.available()) //Verifica se a comunicação serial está disponível { Serial.write(mySerial.read()); //Realiza leitura serial dos dados de entrada Arduino } delay(500); //Intervalo de 0,5 segundos }
APÓS COMPILAÇÃO DO CÓDIGO
Com o código pronto, faça o upload do código para o Arduino e, em seguida, abra o monitor serial.
Com o monitor aberto, aguarde a mensagem de confirmação que o SMS foi enviado para o número desejado, conforme a Figura 6.
![A figura mostrar uma captura de tela retirada da Arduino IDE mostrando o módulo Sim800l funcionando com sucesso](https://i0.wp.com/www.blogdarobotica.com/wp-content/uploads/2022/12/Figura-6-Monitor-Serial-do-Arduino-IDE.png?resize=699%2C417&ssl=1)
Depois de alguns segundos teremos o recebimento da mensagem no celular, conforme mostrado no Vídeo 1.
LED INDICATIVO
No canto superior direito do Módulo GSM GPRS SIM800L existe um LED indicativo (Figura 7) que sinaliza o status da sua rede celular, piscando em diferentes faixas, dependendo do estado:
![A figura mostra uma foto real que indica onde se localiza o led do módulo Sim800l](https://i0.wp.com/www.blogdarobotica.com/wp-content/uploads/2022/12/Figura-7-LED-indicativo.png?resize=1024%2C576&ssl=1)
- Piscar a cada 1 segundo: O módulo está em execução, mas a conexão com a rede ainda não foi estabelecida;
- Piscar a cada 2 segundos: A conexão de dados GPRS solicitada está ativa;
- Piscar a cada 3 segundos: O módulo está comunicando com a rede celular e pode enviar e receber chamadas de voz e SMS.
Espero ter ajudado,
Obrigado a todos e em caso de dúvidas deixe seu comentário abaixo!