Neste tutorial vamos aprender como controlar o Arduino enviando instruções por SMS, concretamente, o que faremos será acender e apagar um LED enviando um SMS com las palavras ON e OFF.
Montagem e ligações
Os pinos 8 e 9 do Arduino atuam como pinos TX/RX, alimentamos o módulo SIM800L com uma tensão entre 3.4v a 4.4v e colocamos um GND comum entre este e o Arduino, para acabar ligamos um LED com uma resistência de 200 Ohms entre o pino digital 3 do Arduino e um pino GND. Um esquema de referência:
Sketch de ensaio
Para este sketch usamos a livraria SoftwareSerial que nos permite gerar uma segunda comunicação série no Arduino. Vamos usar o comando AT+CNMI=1,2,0,0,0, com este comando vamos configurar o módulo para que cada vez que receba um SMS apareça-nos na porta serial assim:
+CMT : “+351xxxxxxxxx” , , “2017/08/30,22:30:00+40”
Este é o texto de SMS recebido
Vamos guardar o texto da mensagem numa variável de tipo string e procuramos dentro do texto o comando ON ou o comando OFF para saber se temos que acender ou apagar o LED. Em baixo, está o código comentado linha a linha para que seja fácil de entender:
#include <SoftwareSerial.h> //Incluimos a livraria SoftwareSerial SoftwareSerial SIM800L(8, 9); //Declaramos os pinos RX(8) e TX(9) que vamos usar String Comando; //Declaramos uma variavel de tipo String para armazenar o texto do SMS recebido int LED = 3; //Definimos o pino onde esta conectado o LED (Digital 3) void setup(){ Serial.begin(9600); //Iniciamos a comunicação serie SIM800L.begin(9600); //Iniciamos una instância da livraria SoftwareSerial SIM800L.println("AT+CMGF=1"); //Configuramos o módulo para trabalhar com os SMS em modo texto delay(1000); //Pausa de 1 segundo SIM800L.println("AT+CNMI=1,2,0,0,0"); //Configuramos o módulo para que nos mostre os SMS recebidos por comunicação serie pinMode(LED, OUTPUT); //Definimos o pino onde esta ligado o LED como saida } void loop(){ if (SIM800L.available()){ //Se há dados disponiveis Comando = SIM800L.readString(); //Armazenamo-los na variavel Comandos Serial.println("NOVO SMS ENTRADA: " + Comando); //Obtemo-los por comunicação série } if(Comando.indexOf("On")>=0){ //Se a variável Comando contem a palavra ON Serial.println("Acender o LED"); //Avisamos por comunicação serie digitalWrite(LED, HIGH); //Activamos o LED Comando = ""; //Esvaziamos a variavel } if(Comando.indexOf("Off")>=0){ //Se a variavel Comando contem a palavra OFF Serial.println("Apagar o LED"); //Avisamos por comunicação serie digitalWrite(LED, LOW); //Desactivamos o LED Comando = ""; //Esvaziamos a variavel } }
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?