Tafuta Msimbo

Somo la 21/31: Kutumia Kidhibiti cha Mbali cha Infrared na Arduino | SunFounder Robojax

Somo la 21/31: Kutumia Kidhibiti cha Mbali cha Infrared na Arduino | SunFounder Robojax

Utangulizi

Katika somo hili, tunachunguza ulimwengu wa kuvutia wa mawasiliano ya infrared (IR) kwa kujenga mradi unaofafanua mawimbi kutoka kwa kidhibiti cha mbali cha kawaida kwa kutumia Arduino. Mradi huu unakuruhusu kugundua ni kitufe gani kimebonyezwa kwenye kidhibiti cha mbali cha IR na kuanzisha vitendo ipasavyo, kama vile kuwasha buzzer. Uwezo wa kuunganishwa na vidhibiti vya mbali vya IR hufungua wigo mpana wa matumizi ya vitendo, kutoka kwa uendeshaji rahisi wa nyumbani hadi mifumo maalum ya udhibiti.

infrare_remote
IR_receiver_pins

Hapa kuna mawazo kadhaa ya kuhamasisha kuhusu kile unachoweza kujenga kwa teknolojia hii:

  • Uingizwaji wa Kidhibiti cha Mbali cha Universal: Unda kidhibiti cha mbali maalum kwa TV yako, mfumo wa sauti, au vifaa vingine vinavyodhibitiwa na IR.
  • Uendeshaji wa Nyumbani: Dhibiti taa, feni, au vifaa vingine kwa kubonyeza kitufe kwenye kidhibiti cha mbali cha kawaida.
  • Miradi ya Mwingiliano: Jenga mfumo wa usalama unaoanzisha kengele wakati kitufe maalum kinapobonyezwa.
  • Udhibiti wa Roboti: Tumia kidhibiti cha mbali cha IR kudhibiti harakati na vitendo vya roboti kwa njia isiyo na waya.
  • Vifaa vya Ufikiaji: Tengeneza kidhibiti cha mbali rahisi chenye vitufe vikubwa kwa watu wenye uhamaji mdogo.

Vifaa & Sehemu

Mradi huu umejengwa kwa kutumia sehemu chache rahisi, ambazo zote kwa kawaida hujumuishwa katika vifaa vya kuanzia kama vile kit cha SunFounder 3-in-1. Utahitaji:

  • Bodi ya Arduino (k.m., Uno)
  • Moduli ya kipokezi cha IR (k.m., TSOP38238 au sawa)
  • Kidhibiti cha mbali cha IR cha kawaida (chenye betri ya CR2025)
  • Buzzer isiyo na sauti
  • Waya za kurukia na breadboard

Mwongozo wa Uunganishaji

ir_remote_control_wiring

Huu hapa ni mchoro rahisi wa uunganishaji wa mradi huu. Kipokezi cha IR ndicho sehemu muhimu. Unapotazama uso uliopinda wa kipokezi, mpangilio wa pini ni kama ifuatavyo:

  • Pini ya Kulia: Unganisha kwenye pini ya 5V kwenye Arduino.
  • Pini ya Kati: Unganisha kwenye pini ya GND kwenye Arduino.
  • Pini ya Kushoto (Ishara): Unganisha kwenye pini ya dijiti 11 kwenye Arduino.

Zaidi ya hayo, kwa sehemu ya kitendo cha mradi, unganisha waya chanya (ndefu) ya buzzer kwenye pini ya dijiti 2 na waya nyingine kwenye GND.

Maelezo ya Msimbo

Mradi huu unategemea maktaba ya IRremote kushughulikia kazi ngumu ya kufafanua mawimbi ya infrared. Msimbo umeundwa kwanza kujifunza misimbo maalum kutoka kwa kidhibiti chako cha mbali na kisha kuitumia kuanzisha vitendo. Hebu tuchambue sehemu zinazoweza kubadilishwa na mtumiaji.

Kwanza, tunafafanua pini ambayo waya wa ishara wa kipokezi cha IR umeunganishwa. Hii ni usanidi muhimu ambao lazima ulingane na uunganishaji wako halisi.

const int IR_RECEIVE_PIN = 11;  // Fafanua nambari ya pini kwa Sensor ya IR

Katika kazi ya setup(), kipokezi cha IR kinaanzishwa kwa kutumia pini tuliyofafanua hivi karibuni. Hii inaiambia maktaba kuanza kusikiliza mawimbi kwenye pini hiyo.

IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Anzisha kipokezi cha IR

Kiini cha mantiki ya kuchukua hatua kiko katika loop(). Msimbo huangalia ikiwa kitufe kimebonyezwa na kukifafanua. Kazi ya decodeKeyValue() ni kazi maalum inayotafsiri msimbo wa hexadecimal ghafi kutoka kwa kidhibiti cha mbali kuwa kamba inayosomeka kama "POWER" au "MUTE". Hii ndiyo sehemu utakayobadilisha ili ilingane na kidhibiti chako maalum. Msimbo wa mfano unafafanua buzzerPin na kuwasha tu wakati kitufe cha "POWER" kinapobonyezwa.

const int buzzerPin = 2; // Fafanua pini kwa buzzer
// ... ndani ya loop()
if (decodedValue == "POWER") {
    digitalWrite(buzzerPin, HIGH); // Washa buzzer
} else {
    digitalWrite(buzzerPin, LOW); // Zima buzzer
}

Jinsi ya Kutumia: Kazi ya decodeKeyValue() ndiyo ufunguo wa kubinafsisha mradi huu. Ili kuitumia na kidhibiti chako cha mbali, lazima kwanza uendeshe msimbo huku Serial Monitor ikiwa wazi. Bonyeza kila kitufe kwenye kidhibiti chako cha mbali na uandike thamani ya hexadecimal inayochapishwa kwa kila kitufe. Kisha, sasisha taarifa ya switch katika kazi ya decodeKeyValue() ili kupanga thamani hizo kwa majina yenye maana. Kisha unaweza kutumia majina haya katika taarifa zako za if kuanzisha vitendo tofauti, kama mfano unavyofanya kwa kitufe cha "POWER".

Mradi wa Moja kwa Moja & Onyesho

Mara tu msimbo unapopakiwa, fungua Serial Monitor kwa kasi ya baud ya 9600. Elekeza kidhibiti chako cha mbali kwenye kipokezi cha IR na ubonyeze kitufe. Serial Monitor itaonyesha jina la kitufe linalolingana (k.m., "POWER", "MUTE"). Ili kuona kitendo kikifanya kazi, bonyeza kitufe cha "POWER". Utasikia buzzer ikiwasha. Kubonyeza kitufe kingine chochote, kama "MUTE", kutazima buzzer. Hii inaonyesha dhana rahisi lakini yenye nguvu: kutumia kidhibiti cha mbali kuanzisha matokeo ya dijiti kwenye Arduino yako.

Sura

  • [00:00] Utangulizi wa Udhibiti wa Infrared na Arduino
  • [01:25] Muhtasari wa Kipokezi na Kisambaza IR
  • [02:24] Kuelewa Moduli ya Kipokezi cha IR na Uunganishaji wa Waya
  • [03:31] Kusakinisha Maktaba ya IRremote
  • [04:22] Kufungua na Kuelezea Msimbo wa Kusimbua
  • [07:29] Kupakia Msimbo na Kujaribu Vitufe vya Kidhibiti
  • [08:41] Kuongeza Kitendo: Kudhibiti Buzzer
  • [10:37] Muhtasari wa Miradi ya IR Inayokuja

Bilder

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
Språk: 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";
    }
}

Tänker att du kanske behöver

Resurser och referenser

Inga resurser än.

Filer📁

Arduino-bibliotek (zip)