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;
#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.
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.
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.
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
- Arduino nano
- Módulo GPRS SIM800
- Led Infravermelho
- Sensor Infravermelho
- Fonte de alimentação breadboard
- Fita LED RGB com comando e fonte de alimentação