Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bedien alle elektronica met een tv-afstandsbediening | Arduino IR-zelfstudie

In deze Arduino IR-zelfstudie leren we hoe we elektronische apparaten kunnen bedienen met behulp van een tv-afstandsbediening en een Arduino. We zullen enkele voorbeelden geven, beginnend bij het besturen van een eenvoudige LED, het besturen van een DC-ventilatorsnelheid, tot het besturen van hoogspanningstoestellen in huis. Je kunt de volgende video bekijken of de geschreven tutorial hieronder lezen.

Hoe het werkt

We kunnen zien dat de LED voor de TV Remote flikkert wanneer we op een knop drukken. Eigenlijk kunnen we dit alleen door een camera zien omdat dit infrarood licht is en niet zichtbaar voor het menselijk oog.

Het flikkeren betekent dus dat wanneer we op een knop drukken, de infrarood-LED een lichtflits of pulsen uitzendt die we nodig hebben om ze te ontvangen met een infraroodontvanger.

In deze tutorial zullen we de V 34838 IR-ontvanger gebruiken die het volgende blokschema heeft, van waaruit we kunnen zien dat deze het ontvangen signaal zal versterken, filteren en demoduleren en een schone logische output zal leveren die acceptabel is voor de digitale input van het Arduino-bord.

Met behulp van de Arduino-IRremote-bibliotheek van Ken Shirriff en het demovoorbeeld kunnen we op de seriële monitor een unieke hexadecimale code zien voor elke druk op de knop die we kunnen gebruiken bij het maken van ons programma.

Link naar de Arduino-IRremote-bibliotheek van Ken Shirriff:https://github.com/z3t0/Arduino-IRremote

Een RGB-led bedienen met een tv-afstandsbediening


U kunt de componenten van een van de onderstaande sites downloaden:

  • IR-ontvanger……………………………… 
  • RGB-LED……………………………… 
  • 3x 220 Ohm weerstanden………….…… 
  • Arduino-bord …………………………..
  • Broodplank en springdraden …….. 

Dus we zullen de LED-kleur bedienen met behulp van de 4 gekleurde knoppen van de tv-afstandsbediening. Dat betekent dat we eerst de hexadecimale codes voor elk van deze knoppen moeten zien door het IRrecvDemo-voorbeeld te uploaden en de Serial Monitor uit te voeren. We zullen op elk van deze knoppen drukken en hun codes opschrijven.

Nu zullen we de democode op deze manier aanpassen en if-statements toevoegen die worden uitgevoerd als een bepaalde knop wordt ingedrukt. Dus voor elke knop zullen we de juiste RGB-waarden instellen, en de setColor() functie zal de LED in de betreffende kleur oplichten. Voor meer informatie over hoe een RGB-led werkt met Arduino, kun je mijn Arduino RGB-zelfstudie raadplegen.

/*  
 *  Controlling a RGB LED with a TV Remote
 *  
 *  Modified IRrecvDemo example from Ken Shirriff IRremote Library
 *  Ken Shirriff
 *  https://arcfn.com
 *  
 *  Modified by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 *  
 */

#include <IRremote.h>

int RECV_PIN = 8; // IR Receiver - Arduino Pin Number 8

IRrecv irrecv(RECV_PIN);

decode_results results;

int redPin = 5;
int greenPin = 6;
int bluePin = 7;
 
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);  
}
 
void loop() {
  
  if (irrecv.decode(&results)) {   
    
    if (results.value == 0xF21D7D46) { // Red Button
      setColor(255, 0, 0);  // Sets Red Color to the RGB LED
      delay(100);
      }
    if (results.value == 0x87CF1B29) { // Green Button
       setColor(0, 255, 0);  // Green Color
      delay(100);
      }
    if (results.value == 0x6623D37C) { // Yellow Button
      setColor(255, 255, 0);  // Yellow Color
      delay(100);
      }   
    if (results.value == 0x854115F2) { // Blue Button
      setColor(0, 0, 255);  // Blue Color
      delay(100);
      }
     if (results.value == 0x1639AB6E) { // Stop Button
      setColor(0, 0, 0);  // OFF
      delay(100);
      }
      
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}
// Custom made function for activating the RGB LED 
void setColor(int red, int green, int blue)
{
  analogWrite(redPin, red); // Sends PWM signal to the Red pin
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);  
}Code language: Arduino (arduino)

Hier zijn de circuitschema's van Arduino IR-gestuurde RGB LED:

Een DC-ventilatorsnelheid regelen met een tv-afstandsbediening


Onderdelen die nodig zijn voor dit voorbeeld:

  • DC-motor……………….
  • of DC-ventilator……………….
  • NPN-transistor………
  • Diode…………………….
  • condensator – 1uF ……..
  • Weerstand – 1k Ohm ..

In dit voorbeeld regelt u een DC-ventilatorsnelheid met de knoppen vooruit en achteruit van de afstandsbediening van de tv. We zullen dit circuitschema gebruiken om de snelheid van de ventilator te regelen, of we zullen het PWM-signaal eigenlijk met de knoppen regelen. Voor meer details over hoe dit circuitschema werkt, kun je mijn Arduino Motors Tutorial raadplegen.

Hier is de broncode voor dit voorbeeld. Dus met behulp van de analogWrite() functie sturen we PWM-signaal naar de basis van de transistor. De PLAY-knop start de motor op maximale snelheid, of de duty-cycle van het PWM-signaal zal 100% zijn en de STOP-knop stopt het. De vooruit-knop verhoogt de snelheid van de ventilator met elke druk op de knop door de duty-cycle van het PWM-signaal te verhogen, en de achteruit-knop zal deze verlagen.

/*  
 *  Controlling a DC Fan Speed with a TV Remote
 *  
 *  Modified IRrecvDemo example from Ken Shirriff IRremote Library
 *  Ken Shirriff
 *  https://arcfn.com
 *  
 *  Modified by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 *  
 */
 
#include <IRremote.h>

int RECV_PIN = 8; // IR Receiver - Arduino Pin Number 8
int pwmPin = 7; // Arduino Pin Number 7 to the Base of the Transistor
int pwmValue;

IRrecv irrecv(RECV_PIN);

decode_results results;

 
void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode( pwmPin, OUTPUT);  
  pwmValue = 0; // Starts the program with turned off motor
}
 
void loop() {
  
  if (irrecv.decode(&results)) {   
    
    analogWrite(pwmPin, pwmValue);
  
    if (results.value == 0xAFAF8374) { // PLAY Button
        pwmValue = 255; // 100% Duty Cycle | Max Speed
        }
    if (results.value == 0x98519C65) { // STOP Button
        pwmValue = 0; // 0% Duty Cycke | Turned off
        }
    if (results.value == 0x93F1BA08) { // FORWARD Button
        if(pwmValue <= 245){  
        pwmValue = pwmValue + 10; // Increases the Duty Cycle of the PWM Signal
        delay(20);     
      }   
    }
    if (results.value == 0x71D086FF) { // BACKWARD Button
      if(pwmValue >= 20){
        pwmValue = pwmValue - 10; // Decreases the Duty Cycle of the PWM Signal
        delay(20);    
      }
    }   
  Serial.print(pwmValue);
  Serial.print(" ");
  Serial.println(results.value, HEX);
   
  irrecv.resume(); // Receive the next value
  }
  delay(100);
}
Code language: Arduino (arduino)

Hoogspanning huishoudelijke apparaten bedienen met een tv-afstandsbediening


Benodigde onderdelen voor deze zelfstudie:

  • 5V relaismodule……. Amazon / Banggood / AliExpress
  • Kabel, stekker, stopcontact

Het laatste voorbeeld is het bedienen van hoogspanningstoestellen in huis met behulp van de afstandsbediening van de tv. Daarvoor hebben we een relaismodule nodig. Ik zal de HL-52S relaismodule gebruiken die een classificatie heeft van 10 A bij 250 en 125 V AC. Hier zijn de circuitschema's van Arduino IR-gestuurde hoogspanningsapparaten voor huishoudelijk gebruik. Met pin nummer 7 van het Arduino-bord zullen we het relais besturen waarop zich een socket bevindt voor het aansluiten van elk elektronisch hoogspanningsapparaat.

Aangezien we HOOGSPANNING zullen gebruiken, moeten we zeer voorzichtig zijn en ik waarschuw u hier dat oneigenlijk of onjuist gebruik kan leiden tot ernstig letsel of de dood en ik neem geen enkele verantwoordelijkheid voor uw acties. Voor meer informatie over het gebruik van het relais en het maken van een socket voor het aansluiten van elk elektronisch apparaat, kunt u mijn Arduino Relay-zelfstudie raadplegen.

Hier is de broncode van dit voorbeeld:

/*  
 *  Controlling High Voltage Home Appliances with a TV Remote
 *  
 *  Modified IRrecvDemo example from Ken Shirriff IRremote Library
 *  Ken Shirriff
 *  https://arcfn.com
 *  
 *  Modified by Dejan,
 *  www.HowToMechatronics.com 
 *  
 */
 
#include <IRremote.h>

int RECV_PIN = 8;
int relayOut = 7;
int buttonState ;

IRrecv irrecv(RECV_PIN);

decode_results results;

 
void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode( relayOut, OUTPUT); 
  buttonState = HIGH; // Starts the program with turned off Relay. The relay input works inversly so HIGH state means deactivated relay

}
 
void loop() {
  
  buttonState = digitalRead(relayOut);
        
  if (irrecv.decode(&results)) {   
    
    if (results.value == 0xAFAF8374) { // PLAY Button
        digitalWrite(relayOut, LOW); // Activates the relay
        }
    if (results.value == 0x98519C65) { // STOP Button
        digitalWrite(relayOut, HIGH); // Deactivates the relay
        }   
  
  irrecv.resume(); // Receive the next value
  }
  
  Serial.print(" ");
  Serial.println(results.value, HEX);
   
  
  delay(100);
}Code language: Arduino (arduino)

Productieproces

  1. Universele afstandsbediening met Arduino, 1Sheeld en Android
  2. Bedien muntvangers met Arduino
  3. Tv-afstandsbediening op batterijen met 3D-geprint hoesje
  4. Arduino met Bluetooth om een ​​LED te bedienen!
  5. Arduino Nano:bedien 2 stappenmotoren met joystick
  6. Een Billy Bass-mond animeren met elke audiobron
  7. ThimbleKrox - Muisbediening met je vingers
  8. Bedien een kakkerlak met Arduino voor minder dan $30
  9. Autobesturing met Arduino Uno en Bluetooth
  10. Bedien de Arduino-robotarm met Android-app
  11. 25 kHz 4-pins PWM-ventilatorregeling met Arduino Uno