IR-remoteconTROLL

IR-Fernbedienung - gebaut als 9.-Klässler, um Lehrer zu necken:)

IR-Fernbedienung - gebaut als 9.-Klässler, um Lehrer zu necken:)
Die “remoteconTROLL” besteht im Grunde genommen nur aus einem, mit ein paar Knöpfen verbundenen, Arduino Nano und einer infrarot LED. Jeder Knopf korrespondiert mit einem Hexadezimal-Code, der bei Betätigen des Tasters per IR-LED versendet wird.
Da jeder Beamer, Fernseher etc. einen eigenen Satz an Hexadezimal-Codes verwendet, mussten zunächst dei Codes ermittelt werden. Hierfür hatte Ich zuvor einen IR-code-reader gebaut, der den empfangenen Code per LCD ausgibt.
Das Projekt war als kleiner Scherz gedacht - was gut funktioniert hat, da keiner erwartet hätte, dass jemand in der Lage wäre, eine Fernbedienung nachzubauen…

Details

  • Stromversorgung: 9V Batterie

  • Reichweite: ~ 5-10m

  • Features:

    • 11 verschiedene Knöpfe
    • 2 Einstellungen für 2 verschiede Beamer-Modelle
    • Verlängerungskabel für die IR-LED
      (um nicht erwischt zu werden)
    • 2 IR-LEDs in Parallelschaltung für einen weiteren effektiven Winkel und höhere Reichweite
    • Spam-Modus: sendet zufällig 1 und 0

image Die fertige remotecontrol

Bauteile

Anzahl Bauteil
1x Lochrasterplatte
1x Arduino nano
2x IR-LED
11x Mikrotaster
13x 1,5k Widerstand
2x Schiebeschalter
1x 9V-Batterie-Clip

Umsetzung

Verkabelung

Die Verschaltung ist wie oben angesprochen recht simpel. Jeder Taster ist mit einem Pin des Arduinos verbunden, der mit Hilfe eines 1,5k Widerstandes auf LOW (0V) gezogen wird. Bei betätigen des Tasters wird der Pin auf HIGH (5V) gezogen, was durch den Arduino erkannt wird. Diese Schaltung wird für jeden Taster realisiert und auf eine Lochrasterplatine gelötet.

Verkabelung der Rückseite

Programmierung

DerSource-Code ist relativ einfach gehalten. Verwendet wird hierbei die “IRremote”- Bibliothek. Dabei wird jedem einzelnen Taster der entsprechende Hexadezimal-Code zugeordnet. Dieser wird bei betätigen des Tasters per IR-LED versendet. Details zum modifizieren der Fernbedienung werden im Sourcecode erklärt:

//********************************
//BY MORITZ RAMBOLD 2018
//********************************
//
//für andere Geräte die Hexadezimal-Codes der Taster dementsprechend ändern

#include <IRremote.h>
#include <OneButton.h>
#include <Bounce2.h>

IRsend irsend;

const int KeystoneUp = 2;
const int KeystoneDown = 12;
const int SVIDEO = 4;
const int VGA = 5;
const int ONOFF = 10;
const int AVSTUMM = 7;
const int ZOOM = 8;
const int BRIGHTNESS = 9;
const int FREEZE = 6;
const int SPAMBUTTON = 11; //gibt eine Reihe von 1 und 0 aus, um andere Fernbedienungen zu blockieren
const int EpsonSwitch = 13; //Umschalten zwischen 2 verschiedenen Modellen von Beamern

void setup() {
  pinMode(KeystoneUp, INPUT);
  pinMode(KeystoneDown, INPUT);
  pinMode(SVIDEO, INPUT);
  pinMode(VGA, INPUT);
  pinMode(ONOFF, INPUT);
  pinMode(AVSTUMM, INPUT);
  pinMode(ZOOM, INPUT);
  pinMode(BRIGHTNESS, INPUT);
  pinMode(FREEZE, INPUT);
  pinMode(SPAMBUTTON, INPUT);
  pinMode(EpsonSwitch, INPUT);
}
void loop() {

  if (digitalRead(KeystoneUp) == HIGH && digitalRead(EpsonSwitch) == HIGH) {
    irsend.sendNEC(0x4CB3A15E, 32);
  }
  else if (digitalRead(KeystoneUp) == HIGH && digitalRead(EpsonSwitch) == LOW)
  {}

  if (digitalRead(KeystoneDown) == HIGH && digitalRead(EpsonSwitch) == HIGH) {
    irsend.sendNEC(0x4CB321DE, 32);
  }
  else if (digitalRead(KeystoneDown) == HIGH && digitalRead(EpsonSwitch) == LOW)
  {}

  if (digitalRead(SVIDEO) == HIGH && digitalRead(EpsonSwitch) == HIGH) {
    irsend.sendNEC(0x4CB3C13E, 32);
  }
  else if (digitalRead(SVIDEO) == HIGH && digitalRead(EpsonSwitch) == LOW) {
    irsend.sendNEC(0xC1AA39C6, 32);
  }

  if (digitalRead(VGA) == HIGH && digitalRead(EpsonSwitch) == HIGH) {
    irsend.sendNEC(0x4CB3718E, 32);
  }
  else if (digitalRead(VGA) == HIGH && digitalRead(EpsonSwitch) == LOW)
  {}

  if (digitalRead(ONOFF) == HIGH && digitalRead(EpsonSwitch) == HIGH) { //für Optoma
    irsend.sendNEC(0x4CB3817E, 32);
  }
  else if (digitalRead(ONOFF) == HIGH && digitalRead(EpsonSwitch) == LOW) { //für Epson
    irsend.sendNEC(0xC1AA09F6, 32);
  }

  if (digitalRead(AVSTUMM) == HIGH && digitalRead(EpsonSwitch) == HIGH) {
    irsend.sendNEC(0x4CB351AE, 32);
  }
  else if (digitalRead(AVSTUMM) == HIGH && digitalRead(EpsonSwitch) == LOW) {
    irsend.sendNEC(0xC1AAC936, 32);
  }


  if (digitalRead(ZOOM) == HIGH && digitalRead(EpsonSwitch) == HIGH) {
    irsend.sendNEC(0x4CB3916E, 32);
  }
  else if (digitalRead(ZOOM) == HIGH && digitalRead(EpsonSwitch) == LOW)
  {}

  if (digitalRead(BRIGHTNESS) == HIGH && digitalRead(EpsonSwitch) == HIGH) {
    irsend.sendNEC(0x4CB3E11E, 32);
  }
  else if (digitalRead(BRIGHTNESS) == HIGH && digitalRead(EpsonSwitch) == LOW)
  {}

  if (digitalRead(FREEZE) == HIGH && digitalRead(EpsonSwitch) == HIGH) {
    irsend.sendNEC(0x4CB3D12E, 32);
  }
  else if (digitalRead(FREEZE) == HIGH && digitalRead(EpsonSwitch) == LOW) {
    irsend.sendNEC(0xC1AA4906, 32);
  }

  if (digitalRead(SPAMBUTTON) == HIGH && digitalRead(EpsonSwitch) == HIGH) { // Universal Spamsignal
    irsend.sendNEC(0x01010101, 32);
  }
  else if (digitalRead(SPAMBUTTON) == HIGH && digitalRead(EpsonSwitch) == LOW) {
    irsend.sendNEC(0x01010101, 32);
  }
}