Сабақ 21/31: Инфрақызыл қашықтан басқару пультін Arduino-мен қолдану | SunFounder Robojax
Кіріспе
Бұл сабақта біз Arduino көмегімен стандартты қашықтан басқару пультінен сигналдарды декодтайтын жобаны құру арқылы инфрақызыл (ИҚ) байланыстың қызықты әлемін зерттейміз. Бұл жоба ИҚ пультінде қай түйменің басылғанын анықтауға және соған сәйкес әрекеттерді орындауға мүмкіндік береді, мысалы, дыбыстық сигналды қосу. ИҚ пульттерімен байланысу мүмкіндігі қарапайым үй автоматтандыруынан бастап арнайы басқару жүйелеріне дейінгі кең ауқымды практикалық қолданыстарды ашады.
Міне, осы технологиямен жасауға болатын шабыттандыратын идеялардың кейбірі:
- Әмбебап қашықтан басқару пультін ауыстыру: Теледидарыңызға, дыбыс жүйесіне немесе басқа ИҚ басқарылатын құрылғыларға арнайы пульт жасаңыз.
- Үй автоматтандыру: Стандартты пульттегі түймені басу арқылы шамдарды, желдеткіштерді немесе басқа тұрмыстық құрылғыларды басқарыңыз.
- Интерактивті жобалар: Белгілі бір түйме басылғанда дабыл қосатын қауіпсіздік жүйесін құрыңыз.
- Робототехниканы басқару: Роботтың қозғалысы мен әрекеттерін сымсыз басқару үшін ИҚ пультін қолданыңыз.
- Қолжетімділік көмекші құралдары: Қозғалыс шектеулі адамдарға арналған қарапайым, үлкен түймелі пульт жасаңыз.
Аппараттық құралдар мен компоненттер
Бұл жоба бірнеше қарапайым компоненттерге негізделген, олардың барлығы әдетте SunFounder 3-в-1 жинағы сияқты бастауыш жинақтарға кіреді. Сізге қажет:
- Arduino тақтасы (мысалы, Uno)
- ИҚ қабылдағыш модулі (мысалы, TSOP38238 немесе ұқсас)
- Стандартты ИҚ қашықтан басқару пульті (CR2025 батареясымен)
- Пассивті дыбыстық сигнал (buzzer)
- Жалғау сымдары және макет тақтасы
Қосылу нұсқаулығы
Міне, осы жобаның қарапайым қосылу схемасы. ИҚ қабылдағыш негізгі компонент болып табылады. Қабылдағыштың дөңес бетіне қараған кезде, түйреуіштердің орналасуы келесідей:
- Оң жақ түйреуіш: Arduino-дағы 5V түйреуішіне қосыңыз.
- Ортаңғы түйреуіш: Arduino-дағы GND түйреуішіне қосыңыз.
- Сол жақ түйреуіш (Сигнал): Arduino-дағы 11 цифрлық түйреуішіне қосыңыз.
Сонымен қатар, жобаның әрекет бөлігі үшін дыбыстық сигналдың оң (ұзын) ұшын 2 цифрлық түйреуішке, ал екінші ұшын GND-ге қосыңыз.
Кодты түсіндіру
Бұл жоба инфрақызыл сигналдарды декодтаудың күрделі тапсырмасын орындау үшін IRremote кітапханасына сүйенеді. Код алдымен пультіңізден нақты кодтарды үйренуге, содан кейін оларды әрекеттерді іске қосу үшін пайдалануға құрылымдалған. Пайдаланушы конфигурациялайтын бөліктерді қарастырайық.
Алдымен, ИҚ қабылдағыштың сигнал сымы қосылған түйреуішті анықтаймыз. Бұл физикалық қосылымыңызға сәйкес келуі тиіс маңызды конфигурация.
const int IR_RECEIVE_PIN = 11; // ИҚ сенсоры үшін түйреуіш нөмірін анықтаңыз
setup() функциясында ИҚ қабылдағыш біз жаңа ғана анықтаған түйреуішті пайдаланып инициализацияланады. Бұл кітапханаға сол түйреуіштегі сигналдарды тыңдауды бастауға нұсқау береді.
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // ИҚ қабылдағышты іске қосу
Әрекет қабылдау логикасының негізі loop() ішінде. Код перненің басылғанын тексереді және оны декодтайды. decodeKeyValue() функциясы пульттен алынған шикі он алтылық кодты "POWER" немесе "MUTE" сияқты адам оқи алатын жолға аударатын арнайы функция болып табылады. Бұл сіздің нақты пультіңізге сәйкес өзгертетін бөлік. Мысал коды buzzerPin анықтайды және оны тек "POWER" түймесі басылғанда қосады.
const int buzzerPin = 2; // Дыбыстық сигнал үшін түйреуішті анықтаңыз
// ... loop() ішінде
if (decodedValue == "POWER") {
digitalWrite(buzzerPin, HIGH); // Дыбыстық сигналды қосу
} else {
digitalWrite(buzzerPin, LOW); // Дыбыстық сигналды өшіру
}
Қалай пайдалану керек: decodeKeyValue() функциясы осы жобаны теңшеудің кілті болып табылады. Оны өз пультіңізбен пайдалану үшін алдымен Serial Monitor ашық күйде кодты іске қосуыңыз керек. Пультіңіздегі әрбір түймені басып, әрқайсысы үшін басылған он алтылық мәнді жазып алыңыз. Содан кейін, осы мәндерді мағыналы атауларға сәйкестендіру үшін decodeKeyValue() функциясындағы switch операторын жаңартыңыз. Осы атауларды әртүрлі әрекеттерді іске қосу үшін if операторларында пайдалана аласыз, мысалда "POWER" түймесі үшін жасалғандай.
Тірі жоба және демонстрация
Код жүктелгеннен кейін, Serial Monitor-ды 9600 бод жылдамдығында ашыңыз. Пультіңізді ИҚ қабылдағышқа бағыттап, түймені басыңыз. Serial Monitor сәйкес перне атауын көрсетеді (мысалы, "POWER", "MUTE"). Әрекетті көру үшін "POWER" түймесін басыңыз. Дыбыстық сигналдың қосылғанын естисіз. "MUTE" сияқты кез келген басқа түймені басу дыбыстық сигналды өшіреді. Бұл қарапайым, бірақ қуатты тұжырымдаманы көрсетеді: Arduino-дағы цифрлық шығыстарды іске қосу үшін қашықтан басқару пультін пайдалану.
Тараулар
- [00:00] Arduino-мен инфрақызыл қашықтан басқару пультіне кіріспе
- [01:25] ИК қабылдағыш пен таратқышқа шолу
- [02:24] ИК қабылдағыш модулін және қосылымды түсіну
- [03:31] IRremote кітапханасын орнату
- [04:22] Декодтау кодын ашу және түсіндіру
- [07:29] Кодты жүктеу және пульт пернелерін тексеру
- [08:41] Әрекет қосу: Дыбыс қоңырауын басқару
- [10:37] Алдағы ИК жобаларына алдын ала шолу
/*
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";
}
}
Common Course Links
Common Course Files
Сізге қажет болуы мүмкін нәрселер
-
Амазонка
-
eBay
Ресурстар мен сілтемелер
Әлі ресурстар жоқ.
Файлдар📁
Arduino кітапханалары (zip)
-
SunFounder 3-і-1 Smart Car оқу жинағының бастапқы коды
3in1-kit-main-v2.zip12.80 MB