0

Como controlar fitas de LED com Arduino por SMS GSM [Vídeo]

Hoje vamos mostrar como controlar fitas de LED com SMS, por isso se és um dos amantes das fitas de LED, este projeto é para ti.

Controlar fitas de LED com SMS é prático, divertido e também a podemos controlar em qualquer parte do mundo ao contrário de métodos como bluetooth ou rádio frequências.

O controlo com SMS é também uma forma económica, já que quase todas as pessoas atualmente têm tarifários com SMS gratuitas.

Caso perfiras ver como fazer este projeto em formato de vídeo, nós temos um vídeo perfeito para ti no nosso canal de youtube:

 

Neste projeto queremos controlar a fita de LED sem ter que lhe fazer qualquer alteração, para a podermos utilizar em outros projetos se quisermos.

Para fazermos isto nós utilizaremos um led infravermelho, para simular o funcionamento do comando, mas para isso temos primeiro que ler os sinais enviados pelo comando, utilizaremos um arduino, um sensor infravermelhos e a biblioteca IRremote.

#Montagem do Sensor Infravermelhos

Passamos a explicar passo a passo a montagem do sensor infravermelho:

  • Ligamos o VCC e GND do sensor aos 5V e GND do arduino, respetivamente;
  • Ligamos o pino Sinal do sensor infravermelho ao pino digital 11 do arduino;

 

Esquema utilizado para o sensor infravermelhos no projeto

#Código para o sensor infravermelhos

O código que utilizaremos para ler os sinais enviados pelo comando será um dos exemplos da biblioteca IRremote, o IRrecvDump para ser especifico.

Esta imagem mostra qual o exemplo da biblioteca utilizado

Depois de carregar o código exemplo abrimos o Serial Monitor e clicamos num dos botões do comando, do texto que é escrito no Serial monitor, anotamos o tipo de comando, o código hexadecimal e o numero de bits do sinal.

Texto que aparece no serial monitor durante os testes

Repetimos este processo para todos os botões que queremos simular, depois de todos os valores anotados passamos á montagem do led infravermelho e do módulo SIM800.

Controlar fitas de LED com SMS

Agora que temos os sinais dos botões que queremos utilizar, podemos passar á montagem principal para controlar fitas de LED com SMS, para isso precisamos de ter um cartão SIM, ao qual temos que tirar o código PIN para funcionar corretamente com o código, depois de retidado o PIN ligamo-lo ao módulo SIM800.

#Montagem do projeto

Mais uma vez explicaremos a montagem passo a passo para facilitar a compreensão:

  • Começamos por ligar os 5V e GND do módulo SIM800 á fonte de alimentação para breadboard;
  • Depois ligamos os pinos TXD do módulo ao pino digital 8 do arduino e o pino RXD ao pino digital 9;
  • Para o led infravermelhos ligamos ao pino PWM 3 do arduino através de uma resistência, neste caso de 100Ω;

Nós utilizamos uma fonte de alimentação para breadboard, porque o módulo SIM800 em certos momentos necessita de mais corrente do que o arduino consegue providenciar de forma segura.

Este é o esquema de montagem do projeto para controlar fita de LED's com SMS

Antes de passarmos ao código devemos pôr um cartão SIM no módulo SIM800, mas antes disso devemos pô-lo num telemovel e retirar-lhe o código PIN.

#Código utilizado

Apresentamos agora o código que utilizamos, para este código a biblioteca IRremote também é necessária.

#include  //Incluimos a livraria IRremote
#include  //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

IRsend irsend;
 
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
}
 
//Código para ligar
if(Comando.indexOf("On")>=0){ //Se a variável Comando contem a palavra ON
  for (int i = 0; i < 3; i++) { irsend.sendNEC(0xF7C03F, 32); //Enviamos o código hexadecimal do botão "ON" delay(40); } Comando = ""; //Esvaziamos a variavel } //Código para Desligar if(Comando.indexOf("Off")>=0){ //Se a variavel Comando contem a palavra OFF
  for (int i = 0; i < 3; i++) { irsend.sendNEC(0xF740BF, 32);//Enviamos o código hexadecimal do botão "OFF" delay(40); } Comando = ""; //Esvaziamos a variavel } //Código para Vermelho if(Comando.indexOf("Vermelho")>=0){ //Se a variavel Comando contem a palavra Vermelho
  for (int i = 0; i < 3; i++) { irsend.sendNEC(0xF720DF, 32); //Enviamos o código hexadecimal do botão "Vermelho" delay(40); } Comando = ""; //Esvaziamos a variavel } //Código para verde if(Comando.indexOf("Verde")>=0){ //Se a variavel Comando contem a palavra Verde
  for (int i = 0; i < 3; i++) { irsend.sendNEC(0xF7A05F, 32); //Enviamos o código hexadecimal do botão "Verde" delay(40); } Comando = ""; //Esvaziamos a variavel } //Código para Azul if(Comando.indexOf("Azul")>=0){ //Se a variavel Comando contem a palavra Azul  
  for (int i = 0; i < 3; i++) { irsend.sendNEC(0xF7609F, 32);//Enviamos o código hexadecimal do botão "Azul" delay(40); } Comando = ""; //Esvaziamos a variavel } //Código para Branco if(Comando.indexOf("Branco")>=0){ //Se a variavel Comando contem a palavra Branco
for (int i = 0; i < 3; i++) { irsend.sendNEC(0xF7E01F, 32); //Enviamos o código hexadecimal do botão "Branco" delay(40); } Comando = ""; //Esvaziamos a variavel } //Código para Flash if(Comando.indexOf("Flash")>=0){ //Se a variavel Comando contem a palavra Flash
  for (int i = 0; i < 3; i++) { irsend.sendNEC(0xF7D02F, 32); //Enviamos o código hexadecimal do botão "Flash" delay(40); } Comando = ""; //Esvaziamos a variavel } //Código para Strobe if(Comando.indexOf("Strobe")>=0){ //Se a variavel Comando contem a palavra Strobe
  for (int i = 0; i < 3; i++) { irsend.sendNEC(0xF7F00F, 32); //Enviamos o código hexadecimal do botão Strobe delay(40); } Comando = ""; //Esvaziamos a variavel } //Código para Fade if(Comando.indexOf("Fade")>=0){ //Se a variavel Comando contem a palavra Fade
  for (int i = 0; i < 3; i++) { irsend.sendNEC(0xF7C837, 32); //Enviamos o código hexadecimal do botão "FADE" delay(40); } Comando = ""; //Esvaziamos a variavel } //Código para Smooth if(Comando.indexOf("Smooth")>=0){ //Se a variavel Comando contem a palavra Smooth
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xF7E817, 32); //Enviamos o código hexadecimal do botão "Smooth"
    delay(40);
  }
Comando = ""; //Esvaziamos a variavel
}

}

#Material utilizado

Comments

Comentários

Pedro Pereira

Deixar uma resposta