0

Enviar SMS com Arduino e SIM800L

Como enviar SMS e fazer chamadas com Arduino

O módulo SIM800L é um módulo GSM/GPRS Quad-Band que trabalha com frequências de 850/900/1800/1900 MHz.

Este módulo de telefonia móvel permite adicionar voz, SMS e dados (TCP/IP,HTTP,etc…) ao seu projeto, todo ele concentrado num tamanho compacto não muito maior que uma moeda de 2 euros.

Para usar este módulo vai precisar de uma MicroSIM 2G com o PIN desativado. Pode-se introduzir o PIN através de comandos AT, mas não vamos tratar disto neste artigo para não complicar mais que o necessário.

 

Montagem e ligações

A ligação deste módulo é muito simples, o pino digital 8 do Arduino vai atuar como RX e o pino digital 9 como TX, estes dois pinos funcionam graças à livraria “SoftwareSerial”, que nos permite gerar uma segunda comunicação série no Arduino, assim podemos ver a resposta do módulo aos distintos comandos AT a partir do monitor série. Veremos como usar a livraria mais adiante neste mesmo artigo.

O módulo vai ser alimentado com uma bateria ou fonte de alimentação externa, não vamos usar as saídas de 3.3v ou 5v do Arduino por 2 razões:

#1: O Arduino não é capaz de sacar os picos de 2 amps que consumem o SIM800L.
#2: 3.3v é pouco e 5v é demasiado, recorda que o módulo funciona num alcance de 3.4v a 4.4v.

NOTA: Há que colocar um cabo de negativo do Arduino ao negativo do módulo SIM800L para que os dois tenham uma massa comum, senão não vai funcionar.                         

Sketch de ensaio

Para usar o módulo vamos usar a livraria “SoftwareSerial” para gerar uma segunda comunicação série no Arduino.

Fazemos upload deste sketch, está comentado para que seja fácil de entender:

 

#include SoftwareSerial.h    // Incluimos a livraria SoftwareSerial
SoftwareSerial mySerial(8, 9); // Declaramos os pinos RX(8) y TX(9) que vamos a usar

void setup(){
Serial.begin(9600);       // Iniciamos a comunicação serie
mySerial.begin(9600);     // Iniciamos uma segunda comunicação serie
delay(1000);              // Pausa de 1 segundo
EnviaSMS();               // Chamada a função que envia o SMS
}

void loop(){
if (mySerial.available()){          // Se a comunicação SoftwareSerial tem dados
  Serial.write(mySerial.read());    // Obtemo-los por comunicação serie normal
} 
  
if (Serial.available()){            // Se a comunicação serie normal tem dados
  while(Serial.available()) {       // e enquanto tenha dados para mostrar 
    mySerial.write(Serial.read());  // Obtemos pela comunicação SoftwareSerial
  } 
  mySerial.println();               // Enviamos um fim de linha
}
}

// Função para o envio de um SMS
void EnviaSMS(){              
 mySerial.println("AT+CMGF=1");                 // Activamos a função de envio de SMS
 delay(100);                                    // Pequena pausa
 mySerial.println("AT+CMGS=\"+351XXXXXXXXX\"");  // Definimos o número do destinatário em formato internacional
 delay(100);                                    // Pequena pausa
 mySerial.print("Olá Mundo!");                 // Definimos o corpo da mensagem
 delay(500);                                    // Pequena pausa
 mySerial.print(char(26));                      // Enviamos o equivalente a Control+Z 
 delay(100);                                    // Pequena pausa
 mySerial.println("");                          // Enviamos um fim de linha
 delay(100);                                    // Pequena pausa
}

Observações

A MicroSIM coloca-se detrás do módulo. É do tipo push-pull, uma pulsação coloca o cartão e outra vai expulsá-la. No circuito impresso não está indicado como se deve colocar o SIM por isso aqui está uma imagem demonstrativa:

 

Se está tudo ligado e o sketch já descarregado ao Arduino já seremos capazes de enviar SMS com Arduino e SIM800L.

 

Todos os produtos utilizados neste artigo podem ser encontrados na Loja de Eletrónica e Robótica – ElectroFun.

Gostaram deste artigo? Deixem o vosso comentário no formulário a baixo e partilhem com os vossos amigos.

Não se esqueçam de fazer like na nossa Página no Facebook.

Podem ainda colocar as vossas dúvidas no nosso Forum da Comunidade Arduino em Portugal ou no nosso Grupo no Facebook Arduino Portugal – Qual o teu projeto?

Comments

Comentários

Jaime Mota

Deixar uma resposta