Esta barra, indica o nível de dificuldade encontrado para cada experiência realizada.
sendo:
"VERDE", indicação de nível 1 a 5 (Fácil);
"AMARELO", indicação de nível 6 a 8 (Médio);
VERMELHO, indicação de nível 9 e 10 (Difícil);
Arduino Controle Remoto
Hoje vamos aprender a utilizar o controle Remoto Infra-Vermelho YK-001 com Arduino.
Com esta aplicação, podemos controlar ou comandar por exemplo, usando circuitos eletrônicos com Transistores MOS-FET, Darlington, acopladores ópticos ou relés, circuitos de potência para controlar lâmpadas ou pequenos motores, etc...
Usaremos a biblioteca de Infra-Vermelho IRremote, que pode ser baixada em: http://www.4shared.com/zip/FHHwmplA/IRremote_library.html
O controle remoto utilizado, será o YK-001 com 21 teclas, muito comum no ramo de trabalhos com o Arduino.
como podemos ver na figura acima, a cada tecla temos um código numérico associado, devemos respeitar este código, que será recebido pelo Arduino e na hora de utilizar uma determinada tecla do controle remoto verificar se é a tecla correta para poder acionar un driver de dispositivo.
Neste link temos um arquivo contendo os códigos das respectivas teclas em Hexadecimal
http://www.4shared.com/file/lZO81VuK/YK-001.html
Em termos de software, iremos desenvolver dois programas; um para identificar as teclas quando apertadas e nos retornar os códigos (serve também para verificar se o controle está OK).
O outro será para acionar 7 saídas no Arduino, como se fossem 7 relés ou um outro dispositivo; neste caso será feito o acendimento de um LED (para termos uma interação com o sistema).
O receptor utilizado: Receptor IR 38 KHz TSOP4838, ou equivalente (por exemplo: IRM-3638)
No link o DataSheet do componente:
http://www.4shared.com/office/5pjFusnm/A-1551.html
COMPONENTES:
1 x Arduino Duemilanove, UNO ou MEGA
1 x Bread-Board
7 x LEDs (cores diversa e tamanho de acordo com a preferência)
7 x resistores de 220 Ohm
1 x Receptor Infra-Vermelho TSOP4838 ou equivalente (por exemplo: IRM-3638)
1 x controle remoto YK-001 de 21 teclas
Fios e Cabos para as conexões
DIAGRAMAS:
Abaixo o esquema de ligação dos componentes;
Observar que o pino onde será ligado o sensor Infra-Vermelho no Arduino, é o pino 2
Pinos 3 a 9 serão conectados aos LEDs para acionamento quando pressionado uma tecla do controle remoto.
Observar a pinagem do seu receptor Infra-Vermelho para não ligar invertido!
É uma boa prática colocar um resistor de 10 K Ohm entre o pino "out" e o VCC para fazer pull-up do sensor (fica a seu critério usar ou não).
SOFTWARE:
Abaixo os dois programas usados;
1 - Programa para verificação dos dados recebidos a partir do controle remoto no Arduino
http://www.4shared.com/file/MHTyXGBZ/INFRA_RED_3_ino.html
/*
################################################################################
# Arquivo: INFRA_RED_3
# Micro-processador: Arduino UNO
# Linguagem: Wiring / C /Processing /Fritzing / Arduino IDE
#
# Objetivo: Scrolling LED dot Matrix
#
# Funcionamento: Recebe a informação do controle remoto e
# mostra no console serial o código recebido
#
#
# Autor: Marcelo Moraes
# Data: 11/08/12
# Local: Sorocaba - SP
#
################################################################################
Este exemplo é um código de domínio público.
*/
// inclui a biblioteca
#include <IRremote.h>
int RECV_PIN = 2; // define o pino do receptor infra vermelho
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // inicia o receptor infra vermelho
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value );
irrecv.resume(); // recebe o próximo valor
}
}
// FIM DA COMPILAÇÃO
2 - acionamento de dispositivos remotamente
http://www.4shared.com/file/PwGKAHU9/INFRA_RED_4.html
/*
################################################################################
# Arquivo: INFRA_RED_4
# Micro-processador: Arduino UNO
# Linguagem: Wiring / C /Processing /Fritzing / Arduino IDE
#
# Objetivo: Scrolling LED dot Matrix
#
# Funcionamento: Recebe a informação do controle remoto e
# aciona os dispositivos de saída (LEDs)
#
#
# Autor: Marcelo Moraes
# Data: 11/08/12
# Local: Sorocaba - SP
#
################################################################################
Este exemplo é um código de domínio público.
*/
// inclui bliblioteca para Infra-Vermelho
#include <IRremote.h>
// definição de pinos
int RECV_PIN = 2;
int Relay1_PIN = 3;
int Relay2_PIN = 4;
int Relay3_PIN = 5;
int Relay4_PIN = 6;
int Relay5_PIN = 7;
int Relay6_PIN = 8;
int Relay7_PIN = 9;
// definição de variáveis
IRrecv irrecv(RECV_PIN);
decode_results results;
// executado na inicialização do sistema
void setup()
{
// definição de modo dos pinos
pinMode(Relay1_PIN, OUTPUT);
pinMode(Relay2_PIN, OUTPUT);
pinMode(Relay3_PIN, OUTPUT);
pinMode(Relay4_PIN, OUTPUT);
pinMode(Relay5_PIN, OUTPUT);
pinMode(Relay6_PIN, OUTPUT);
pinMode(Relay7_PIN, OUTPUT);
pinMode(6, OUTPUT);
irrecv.enableIRIn(); // Inicialização do receptor Infra-vermelho
}
int on = 1;
// loop principal do programa
void loop() {
if (irrecv.decode(&results)) {
if (results.value == 16724175) { // YK-001 button 1
{
on = !on;
digitalWrite(Relay1_PIN, on ? HIGH : LOW);
}
}
{
if (results.value == 16718055) { // YK-001 button 2
{
on = !on;
digitalWrite(Relay2_PIN, on ? HIGH : LOW);
}
}
{
if (results.value == 16743045) { // YK-001 button 3
{
on = !on;
digitalWrite(Relay3_PIN, on ? HIGH : LOW);
}
}
{
if (results.value == 16716015) { // YK-001 button 4
{
on = !on;
digitalWrite(Relay4_PIN, on ? HIGH : LOW);
}
}
{
if (results.value == 16726215) { // YK-001 button 5
{
on = !on;
digitalWrite(Relay5_PIN, on ? HIGH : LOW);
}
}
{
if (results.value == 16734885) { // YK-001 button 6
{
on = !on;
digitalWrite(Relay6_PIN, on ? HIGH : LOW);
}
}
{
if (results.value == 16728765) { // YK-001 button 7
{
on = !on;
digitalWrite(Relay7_PIN, on ? HIGH : LOW);
}
}
{
//
//
// COLOQUE MAIS IFs COM VALORES A SEREM IDENTIFICADOS E PINOS DEINIDOS
//
//
irrecv.resume(); // recebe o próximo valor
}
}}}}}}}}
// FIM DA COMPILAÇÃO
Atualização de MARÇO / 2023
CÓDIGO ATUALIZADO PARA TRABALHAR COM NOVAS VERSÕES DA BIBLIOTECA IRremote.h
A instrução irrecv.decode(&results) não mais está em funcionamento....
Este novo código é preser usado com o controle remoto YK-001
/*
* SimpleReceiver.cpp
*
* Demonstrates receiving NEC IR codes with IRrecv
*
* Copyright (C) 2020-2021 Armin Joachimsmeyer
* armin.joachimsmeyer@gmail.com
*
* This file is part of Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.
*
* MIT License
*/
/*
* Specify which protocol(s) should be used for decoding.
* If no protocol is defined, all protocols are active.
*/
//#define DECODE_DENON
//#define DECODE_SHARP // the same as DECODE_DENON
//#define DECODE_JVC
//#define DECODE_KASEIKYO
//#define DECODE_PANASONIC // the same as DECODE_KASEIKYO
//#define DECODE_LG
//#define DECODE_NEC
//#define DECODE_SAMSUNG
//#define DECODE_SONY
//#define DECODE_RC5
//#define DECODE_RC6
//#define DECODE_BOSEWAVE
//#define DECODE_LEGO_PF
//#define DECODE_MAGIQUEST
//#define DECODE_WHYNTER
//#define DECODE_HASH // special decoder for all protocols
#include <Arduino.h>
#include <IRremote.h>
#define IR_RECEIVE_PIN 2
#define LED_1 3
//int LED_1 = 3;
bool LED_1_FLAG = false;
int value = 0;
void setup() {
pinMode(IR_RECEIVE_PIN, INPUT);
pinMode(LED_1, OUTPUT);
Serial.begin(9600);
// Just to know which program is running on my Arduino
Serial.println(F("INICIALIZANDO ... " __DATE__ "\r\nUSando biblioteca versião " VERSION_IRREMOTE));
/*
* Start the receiver, enable feedback LED and take LED feedback pin from the internal boards definition
*/
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
}
void loop() {
if(IrReceiver.decode()){
//value = String(IrReceiver.decodedIRData.command, DEC).toInt();
value = IrReceiver.decodedIRData.command;
IrReceiver.resume();
delay(100);
//Serial.println("recebido: " + String(value));
switch(value){
case 69: Serial.print("Recebido valor: " + String(value) + " POWER\r\n"); LED_1_FLAG = !LED_1_FLAG; break;
case 70: Serial.print("Recebido valor: " + String(value) + " MODE\r\n"); break;
case 71: Serial.print("Recebido valor: " + String(value) + " MUTE\r\n"); break;
case 68: Serial.print("Recebido valor: " + String(value) + " BACKWARD\r\n"); break;
case 64: Serial.print("Recebido valor: " + String(value) + " FORWARD\r\n"); break;
case 67: Serial.print("Recebido valor: " + String(value) + " PLAY/PAUSE\r\n"); break;
case 7: Serial.print("Recebido valor: " + String(value) + " MINUS\r\n"); break;
case 21: Serial.print("Recebido valor: " + String(value) + " PLUS\r\n"); break;
case 9: Serial.print("Recebido valor: " + String(value) + " EQ\r\n"); break;
case 22: Serial.print("Recebido valor: " + String(value) + " 0\r\n"); break;
case 25: Serial.print("Recebido valor: " + String(value) + " 100+\r\n"); break;
case 13: Serial.print("Recebido valor: " + String(value) + " UNDO\r\n"); break;
case 12: Serial.print("Recebido valor: " + String(value) + " 1\r\n"); break;
case 24: Serial.print("Recebido valor: " + String(value) + " 2\r\n"); break;
case 94: Serial.print("Recebido valor: " + String(value) + " 3\r\n"); break;
case 8: Serial.print("Recebido valor: " + String(value) + " 4\r\n"); break;
case 28: Serial.print("Recebido valor: " + String(value) + " 5\r\n"); break;
case 90: Serial.print("Recebido valor: " + String(value) + " 6\r\n"); break;
case 66: Serial.print("Recebido valor: " + String(value) + " 7\r\n"); break;
case 82: Serial.print("Recebido valor: " + String(value) + " 8\r\n"); break;
case 74: Serial.print("Recebido valor: " + String(value) + " 9\r\n"); break;
}
resetLEDs();
}
}
void resetLEDs(){
digitalWrite(LED_1, LED_1_FLAG);
}
// FIM DA COMPILAÇÃO
OBS.: Estes sketches não funcionam bem com a versão 1.0 e 1.01 da IDE do Arduino, por favor utilizem a versão 0023 da IDE.
Provavelmente problema com a versão da biblioteca IRremote, que não foi detectado pela equipe de desenvovimento
Assistam ao vídeo!
TESTES E VÍDEOS:
Esse sketch é da própria biblioteca IRremote.
http://www.youtube.com/watch?v=eNw-_KqS2Pc
Então é isso!
Até o próximo projeto!
Dúvidas e sugestões enviem para: arduinobymyself@gmail.com
muito bom me ajudou bastante!! parabens
ResponderExcluirObrigado.
ExcluirDivulgo o blog para podermos divulgar conhecimento.
Hardware e Software livre para todos
Olá Marcelo!
ResponderExcluirEstou com problemas na biblioteca IRremote.
A miinha IDE é versão 1.0.2, e simplesmente nao compila.
Você tem alguma idéia de como resolver?
Grato
Alexandre
Tente baixar e instalar uma das bibliotecas abaixo.
ExcluirObservação: Nunca testei na versão1.0.2 da IDE do arduino, use preferencialmente a 0023.
http://www.4shared.com/zip/0aPw_ZJn/IRremote_library.html
http://www.4shared.com/zip/QVWV-fAT/IRremote.html
Olá, você têm os códigos das demais teclas deste controle, consegui apenas a 1,2,3,4,5,6,7 e 0(16738455) se puder repassar as demais agradeço.
ResponderExcluirGrato.
Elias
Olá
ResponderExcluirOs códigos estão na figura do blog que representa o controle remoto YK-001. É só conferir!
Abraço
Marcelo Moraes