Lekcija 21/31: Korištenje infracrvenog daljinskog upravljača s Arduinom | SunFounder Robojax
Uvod
U ovoj lekciji istražujemo fascinantan svijet infracrvene (IR) komunikacije gradeći projekat koji dekodira signale sa standardnog daljinskog upravljača koristeći Arduino. Ovaj projekat vam omogućava da detektujete koje je dugme pritisnuto na IR daljinskom upravljaču i pokrenete odgovarajuće akcije, poput uključivanja zujalice. Mogućnost povezivanja s IR daljinskim upravljačima otvara širok spektar praktičnih primjena, od jednostavne kućne automatizacije do prilagođenih kontrolnih sistema.
Evo nekoliko inspirativnih ideja za ono što možete napraviti s ovom tehnologijom:
- Zamjena univerzalnog daljinskog upravljača: Napravite prilagođeni daljinski za vaš TV, audio sistem ili druge IR-uređaje.
- Kućna automatizacija: Kontrolišite svjetla, ventilatore ili druge uređaje pritiskom na dugme na standardnom daljinskom upravljaču.
- Interaktivni projekti: Napravite sigurnosni sistem koji pokreće alarm kada se pritisne određeno dugme.
- Kontrola robotike: Koristite IR daljinski za bežično upravljanje kretanjem i akcijama robota.
- Pomoćna sredstva za pristupačnost: Razvijte jednostavan daljinski s velikim dugmadima za osobe s ograničenom pokretljivošću.
Hardver i komponente
Ovaj projekat je izgrađen oko nekoliko jednostavnih komponenti, koje su sve obično uključene u početne komplete poput SunFounder 3-u-1 kompleta. Trebat će vam:
- Arduino ploča (npr. Uno)
- IR prijemnik modul (npr. TSOP38238 ili sličan)
- Standardni IR daljinski upravljač (s CR2025 baterijom)
- Pasivna zujalica
- Konektorske žice i breadboard
Vodič za povezivanje
Ovdje je jednostavan dijagram povezivanja za ovaj projekat. IR prijemnik je ključna komponenta. Kada pogledate zakrivljenu površinu prijemnika, raspored pinova je sljedeći:
- Desni pin: Spojite na 5V pin na Arduinu.
- Srednji pin: Spojite na GND pin na Arduinu.
- Lijevi pin (Signal): Spojite na digitalni pin 11 na Arduinu.
Dodatno, za akcijski dio projekta, spojite pozitivnu (dužu) nogicu zujalice na digitalni pin 2, a drugu nogicu na GND.
Objašnjenje koda
Ovaj projekat se oslanja na IRremote biblioteku za rješavanje složenog zadatka dekodiranja infracrvenih signala. Kod je strukturiran tako da prvo nauči specifične kodove s vašeg daljinskog upravljača, a zatim ih koristi za pokretanje akcija. Hajde da raščlanimo dijelove koje korisnik može konfigurisati.
Prvo, definišemo pin na koji je spojena signalna žica IR prijemnika. Ovo je ključna konfiguracija koju morate uskladiti s vašim fizičkim povezivanjem.
const int IR_RECEIVE_PIN = 11; // Definišite broj pina za IR senzor
U setup() funkciji, IR prijemnik se inicijalizuje koristeći pin koji smo upravo definirali. Ovo govori biblioteci da počne slušati signale na tom pinu.
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Pokrenite IR prijemnik
Srž logike za pokretanje akcija je u loop(). Kod provjerava da li je dugme pritisnuto i dekodira ga. Funkcija decodeKeyValue() je prilagođena funkcija koja prevodi sirovi heksadecimalni kod s daljinskog upravljača u čitljiv niz poput "POWER" ili "MUTE". Ovo je dio koji ćete modificirati kako biste ga uskladili s vašim specifičnim daljinskim upravljačem. Primjer koda definiše buzzerPin i uključuje ga samo kada je pritisnuto dugme "POWER".
const int buzzerPin = 2; // Definišite pin za zujalicu
// ... unutar loop()
if (decodedValue == "POWER") {
digitalWrite(buzzerPin, HIGH); // Uključite zujalicu
} else {
digitalWrite(buzzerPin, LOW); // Isključite zujalicu
}
Kako koristiti: Funkcija decodeKeyValue() je ključ za prilagođavanje ovog projekta. Da biste je koristili s vlastitim daljinskim upravljačem, prvo morate pokrenuti kod s otvorenim Serial Monitorom. Pritisnite svako dugme na vašem daljinskom i zabilježite heksadecimalnu vrijednost koja se ispisuje za svako. Zatim ažurirajte switch naredbu u funkciji decodeKeyValue() kako biste mapirali te vrijednosti na smislene nazive. Te nazive zatim možete koristiti u vašim if naredbama za pokretanje različitih akcija, baš kao što primjer radi za dugme "POWER".
Živi projekat i demonstracija
Nakon što je kod učitan, otvorite Serial Monitor s brzinom prijenosa od 9600. Usmjerite vaš daljinski prema IR prijemniku i pritisnite dugme. Serial Monitor će prikazati odgovarajući naziv tipke (npr. "POWER", "MUTE"). Da biste vidjeli akciju na djelu, pritisnite dugme "POWER". Čut ćete kako se zujalica uključuje. Pritisak na bilo koje drugo dugme, poput "MUTE", isključit će zujalicu. Ovo demonstrira jednostavan, ali moćan koncept: korištenje daljinskog upravljača za pokretanje digitalnih izlaza na vašem Arduinu.
Poglavlja
- [00:00] Uvod u infracrveno daljinsko upravljanje s Arduinom
- [01:25] Pregled IR prijemnika i odašiljača
- [02:24] Razumijevanje IR prijemnog modula i povezivanja
- [03:31] Instalacija IRremote biblioteke
- [04:22] Otvaranje i objašnjenje koda za dekodiranje
- [07:29] Učitavanje koda i testiranje tipki daljinskog upravljača
- [08:41] Dodavanje akcije: upravljanje zujalicom
- [10:37] Pregled nadolazećih IR projekata
/*
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
Stvari koje bi vam mogle zatrebati
-
Amazon
-
eBay
Resursi i reference
Još nema resursa.
Datoteke📁
Arduino biblioteke (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB