Пребарување код

Лекција 21/31: Користење инфрацрвено далечинско управување со Arduino | SunFounder Robojax

Лекција 21/31: Користење инфрацрвено далечинско управување со Arduino | SunFounder Robojax

Вовед

Во оваа лекција, истражуваме во фасцинантниот свет на инфрацрвената (IR) комуникација со изградба на проект кој декодира сигнали од стандарден далечински управувач користејќи Arduino. Овој проект ви овозможува да откриете кое копче е притиснато на IR далечинскиот управувач и да активирате дејства соодветно, како што е вклучување на зумер. Способноста да комуницирате со IR далечински управувачи отвора широк опсег на практични апликации, од едноставна домашна автоматизација до прилагодени контролни системи.

infrare_remote
IR_receiver_pins

Еве неколку инспиративни идеи за тоа што можете да изградите со оваа технологија:

  • Замена за универзален далечински управувач: Креирајте прилагоден далечински управувач за вашиот телевизор, аудио систем или други IR-контролирани уреди.
  • Домашна автоматизација: Контролирајте светла, вентилатори или други апарати со притискање на копче на стандарден далечински управувач.
  • Интерактивни проекти: Изградете безбедносен систем кој активира аларм кога ќе се притисне одредено копче.
  • Контрола на роботика: Користете IR далечински управувач за безжично контролирање на движењето и дејствата на робот.
  • Помагала за пристапност: Развијте едноставен далечински управувач со големи копчиња за лица со ограничена подвижност.

Хардвер и компоненти

Овој проект е изграден околу неколку едноставни компоненти, кои обично се вклучени во почетни комплети како SunFounder 3-во-1 комплетот. Ќе ви требаат:

  • Arduino плоча (на пр., Uno)
  • IR приемник модул (на пр., TSOP38238 или сличен)
  • Стандарден IR далечински управувач (со CR2025 батерија)
  • Пасивен зумер
  • Поврзувачки жици и breadboard

Водич за поврзување

ir_remote_control_wiring

Еве едноставниот дијаграм за поврзување за овој проект. IR приемникот е клучната компонента. Кога гледате во заоблената површина на приемникот, распоредот на пиновите е следниов:

  • Десен пин: Поврзете го со 5V пинот на Arduino.
  • Среден пин: Поврзете го со GND пинот на Arduino.
  • Лев пин (Сигнал): Поврзете го со дигиталниот пин 11 на Arduino.

Дополнително, за делот за дејство на проектот, поврзете го позитивниот (подолг) крак на зумерот со дигиталниот пин 2 и другиот крак со GND.

Објаснување на кодот

Овој проект се потпира на IRremote библиотеката за да ја обработи сложената задача на декодирање на инфрацрвените сигнали. Кодот е структуриран така што прво ги учи специфичните кодови од вашиот далечински управувач, а потоа ги користи за активирање на дејства. Ајде да ги разложиме деловите што може да ги конфигурира корисникот.

Прво, го дефинираме пинот на кој е поврзана сигналната жица на IR приемникот. Ова е клучна конфигурација што мора да одговара на вашето физичко поврзување.

const int IR_RECEIVE_PIN = 11;  // Дефинирајте го бројот на пинот за IR сензорот

Во setup() функцијата, IR приемникот се иницијализира користејќи го пинот што штотуку го дефиниравме. Ова ѝ кажува на библиотеката да започне со слушање на сигнали на тој пин.

IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Стартувајте го IR приемникот

Јадрото на логиката за преземање дејства е во loop(). Кодот проверува дали е притиснато копче и го декодира. Функцијата decodeKeyValue() е прилагодена функција што го преведува суровиот хексадецимален код од далечинскиот управувач во читлив стринг како „POWER“ или „MUTE“. Ова е делот што ќе го менувате за да одговара на вашиот специфичен далечински управувач. Примерот на кодот дефинира buzzerPin и го вклучува само кога е притиснато копчето „POWER“.

const int buzzerPin = 2; // Дефинирајте го пинот за зумерот
// ... внатре во loop()
if (decodedValue == "POWER") {
    digitalWrite(buzzerPin, HIGH); // Вклучете го зумерот
} else {
    digitalWrite(buzzerPin, LOW); // Исклучете го зумерот
}

Како да користите: Функцијата decodeKeyValue() е клучот за прилагодување на овој проект. За да ја користите со вашиот сопствен далечински управувач, прво мора да го стартувате кодот со отворен Serial Monitor. Притиснете го секое копче на вашиот далечински управувач и запишете ја хексадецималната вредност што се печати за секое. Потоа, ажурирајте ја switch наредбата во функцијата decodeKeyValue() за да ги мапирате тие вредности на значајни имиња. Потоа можете да ги користите овие имиња во вашите if наредби за да активирате различни дејства, исто како што прави примерот за копчето „POWER“.

Жив проект и демонстрација

Откако кодот ќе се постави, отворете го Serial Monitor со брзина на пренос од 9600. Насочете го вашиот далечински управувач кон IR приемникот и притиснете копче. Serial Monitor ќе го прикаже соодветното име на копчето (на пр., „POWER“, „MUTE“). За да го видите дејството на дело, притиснете го копчето „POWER“. Ќе слушнете како зумерот се вклучува. Притискањето на кое било друго копче, како „MUTE“, ќе го исклучи зумерот. Ова демонстрира едноставен, но моќен концепт: користење на далечински управувач за активирање на дигитални излези на вашиот Arduino.

Поглавја

  • [00:00] Вовед во инфрацрвено далечинско управување со Arduino
  • [01:25] Преглед на IR приемникот и предавателот
  • [02:24] Разбирање на IR приемниот модул и жиците
  • [03:31] Инсталирање на IRremote библиотеката
  • [04:22] Отворање и објаснување на кодот за декодирање
  • [07:29] Поставување на кодот и тестирање на копчињата од далечинскиот управувач
  • [08:41] Додавање акција: Контролирање на зумер
  • [10:37] Преглед на претстојните IR проекти

Слики

IR_receiver_pins
IR_receiver_pins
infrare_remote
infrare_remote
ir_remote_control_wiring
ir_remote_control_wiring
904-Lesson 21/31: Arduino code fpor decoding Infrared from remote signal
Јазик: C++
/*
Lesson 21/31: Decoding Infrared from remote
Get this code and watch video Download and resource page https://robojax.com/RJT604
YouTube video https://www.youtube.com/watch?v=EAlqaVy8fYY

*/
#include <IRremote.h>

const int IR_RECEIVE_PIN = 11;  // Define the pin number for the IR Sensor
String lastDecodedValue = "";  // Variable to store the last decoded value

void setup() {
  Serial.begin(9600);                                     // Start serial communication at 9600 baud rate
  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Start the IR receiver
}

void loop() {
  if (IrReceiver.decode()) {
    String decodedValue = decodeKeyValue(IrReceiver.decodedIRData.command);
    if (decodedValue != "ERROR") {
      Serial.println(decodedValue);
      delay(100);
    }
    IrReceiver.resume();  // Enable receiving of the next value
  }
}

String decodeKeyValue(long result)
{
  switch(result){
    case 0x16:
      return "0";
    case 0xC:
      return "1"; 
    case 0x18:
      return "2"; 
    case 0x5E:
      return "3"; 
    case 0x8:
      return "4"; 
    case 0x1C:
      return "5"; 
    case 0x5A:
      return "6"; 
    case 0x42:
      return "7"; 
    case 0x52:
      return "8"; 
    case 0x4A:
      return "9"; 
    case 0x9:
      return "+"; 
    case 0x15:
      return "-"; 
    case 0x7:
      return "EQ"; 
    case 0xD:
      return "U/SD";
    case 0x19:
      return "CYCLE";         
    case 0x44:
      return "PLAY/PAUSE";   
    case 0x43:
      return "FORWARD";   
    case 0x40:
      return "BACKWARD";   
    case 0x45:
      return "POWER";   
    case 0x47:
      return "MUTE";   
    case 0x46:
      return "MODE";       
    case 0x0:
      return "ERROR";   
    default :
      return "ERROR";
    }
}

Работи што можеби ќе ви требаат

Ресурси и референци

Сè уште нема ресурси.

Датотеки📁

Arduino библиотеки (zip)