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.
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?