Les 21/31: Gebruik van Infrarood Afstandbeheer met Arduino | SunFounder Robojax
Inleiding
In hierdie les verken ons die fassinerende wêreld van infrarooi (IR) kommunikasie deur 'n projek te bou wat seine van 'n standaard afstandbeheerder dekodeer met behulp van 'n Arduino. Hierdie projek laat jou toe om te bespeur watter knoppie op 'n IR-afstandbeheerder gedruk word en dienooreenkomstig aksies te aktiveer, soos om 'n gonser aan te skakel. Die vermoë om met IR-afstandbeheerders te koppel, open 'n wye reeks praktiese toepassings, van eenvoudige huisoutomatisering tot pasgemaakte beheerstelsels.
Hier is 'n paar inspirerende idees vir wat jy met hierdie tegnologie kan bou:
- Universele Afstandbeheer-vervanging: Skep 'n pasgemaakte afstandbeheerder vir jou TV, klankstelsel, of ander IR-beheerde toestelle.
- Huisoutomatisering: Beheer ligte, waaiers, of ander toestelle deur 'n knoppie op 'n standaard afstandbeheerder te druk.
- Interaktiewe Projekte: Bou 'n sekuriteitstelsel wat 'n alarm aktiveer wanneer 'n spesifieke knoppie gedruk word.
- Robotika-beheer: Gebruik 'n IR-afstandbeheerder om 'n robot se beweging en aksies draadloos te beheer.
- Toeganklikheidshulpmiddels: Ontwikkel 'n eenvoudige afstandbeheerder met groot knoppies vir individue met beperkte mobiliteit.
Hardeware & Komponente
Hierdie projek is gebou rondom 'n paar eenvoudige komponente, wat almal tipies ingesluit is in beginnersstelle soos die SunFounder 3-in-1-stel. Jy sal nodig hê:
- 'n Arduino-bord (bv. Uno)
- 'n IR-ontvanger-module (bv. TSOP38238 of soortgelyk)
- 'n Standaard IR-afstandbeheerder (met 'n CR2025-battery)
- 'n Passiewe gonser
- Springdrade en 'n broodbord
Bedradingsgids
Hier is die eenvoudige bedradingsdiagram vir hierdie projek. Die IR-ontvanger is die sleutelkomponent. Wanneer jy na die ontvanger se geboë oppervlak kyk, is die penuitleg soos volg:
- Regterpen: Koppel aan die 5V-pen op die Arduino.
- Middelpen: Koppel aan die GND-pen op die Arduino.
- Linkerpen (Sein): Koppel aan digitale pen 11 op die Arduino.
Daarbenewens, vir die aksie-gedeelte van die projek, koppel die positiewe (langer) draad van die gonser aan digitale pen 2 en die ander draad aan GND.
Kode-verduideliking
Hierdie projek maak staat op die IRremote-biblioteek om die komplekse taak van die dekodering van infrarooi seine te hanteer. Die kode is gestruktureer om eers die spesifieke kodes van jou afstandbeheerder te leer en dit dan te gebruik om aksies te aktiveer. Kom ons breek die gebruikerskonfigureerbare dele af.
Eerstens definieer ons die pen waaraan die IR-ontvanger se seindraad gekoppel is. Dit is 'n kritieke konfigurasie wat jy met jou fisiese bedrading moet laat ooreenstem.
const int IR_RECEIVE_PIN = 11; // Definieer die penommer vir die IR-sensor
In die setup()-funksie word die IR-ontvanger geïnisialiseer met behulp van die pen wat ons pas gedefinieer het. Dit vertel die biblioteek om na seine op daardie pen te begin luister.
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Begin die IR-ontvanger
Die kern van die aksie-neem-logika is in die loop(). Die kode kontroleer of 'n sleutel gedruk is en dekodeer dit. Die decodeKeyValue()-funksie is 'n pasgemaakte funksie wat die rou heksadesimale kode van die afstandbeheerder vertaal in 'n leesbare string soos "POWER" of "MUTE". Dit is die deel wat jy sal wysig om by jou spesifieke afstandbeheerder te pas. Die voorbeeldkode definieer 'n buzzerPin en skakel dit slegs aan wanneer die "POWER"-knoppie gedruk word.
const int buzzerPin = 2; // Definieer die pen vir die gonser
// ... binne loop()
if (decodedValue == "POWER") {
digitalWrite(buzzerPin, HIGH); // Skakel die gonser aan
} else {
digitalWrite(buzzerPin, LOW); // Skakel die gonser af
}
Hoe om te gebruik: Die decodeKeyValue()-funksie is die sleutel tot die aanpassing van hierdie projek. Om dit met jou eie afstandbeheerder te gebruik, moet jy eers die kode laat loop met die Serial Monitor oop. Druk elke knoppie op jou afstandbeheerder en let op die heksadesimale waarde wat vir elk gedruk word. Werk dan die switch-stelling in die decodeKeyValue()-funksie by om daardie waardes aan betekenisvolle name te koppel. Jy kan dan hierdie name in jou if-stellings gebruik om verskillende aksies te aktiveer, net soos die voorbeeld vir die "POWER"-knoppie doen.
Lewende Projek & Demonstrasie
Sodra die kode opgelaai is, maak die Serial Monitor oop teen 'n baud-tempo van 9600. Rig jou afstandbeheerder na die IR-ontvanger en druk 'n knoppie. Die Serial Monitor sal die ooreenstemmende sleutelnaam vertoon (bv. "POWER", "MUTE"). Om die aksie in werking te sien, druk die "POWER"-knoppie. Jy sal hoor dat die gonser aanskakel. Deur enige ander knoppie te druk, soos "MUTE", sal die gonser afskakel. Dit demonstreer 'n eenvoudige maar kragtige konsep: die gebruik van 'n afstandbeheerder om digitale uitsette op jou Arduino te aktiveer.
Hoofstukke
- [00:00] Inleiding tot Infrarooi-afstandbeheer met Arduino
- [01:25] Oorsig van die IR-ontvanger en -sender
- [02:24] Verstaan die IR-ontvanger-module en bedrading
- [03:31] Installeer die IRremote-biblioteek
- [04:22] Open en verduidelik die dekoderingskode
- [07:29] Laai kode op en toets afstandbeheersleutels
- [08:41] Voeg 'n aksie by: Beheer van 'n gonser
- [10:37] Voorskou van komende IR-projekte
/*
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
Goedere wat jy dalk nodig het
-
Amazon
-
eBay
Hulpbronne en verwysings
Geen hulpbronne nog.
Lêers📁
Arduino Biblioteke (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB