Robino III

Bestückt mit einem einfachen Infrarot-Empfänger wie dem VS1838B kann ein Arduino-Board mit einem Infrarot-Sender kommunizieren.

Als Sender eignen sich handelsübliche Fernbedienungen, die beim Drücken einer Taste ein spezifisches Signal aussenden.

Zur Ermittlung des Tastencodes wird der IR-Empfänger wie aus der Abbildung ersichtlich mit dem Arduino-Board verbunden:

Zur Programmierung wird die Bibliothek „Arduino-IRremote-master“ benötigt, die hier heruntergeladen werden kann: Download.

Nach dem Download kann die ZIP-Datei mit Hilfe der Arduino-IDE über Sketch > Bibliothek einbinden > .ZIP-Bibliothek hinzufügen eingebunden werden. Über einen erneuten Aufruf des Menüpunkts „Bibliothek einbinden“ findet sich dann unter „Contributed Bibliotheken“ der Eintrag „IRremote“. Wählt man ihn an, werden mehrere Headerdateien zum Programmcode hinzugefügt, von denen aber nur  „boarddefs.h“ und „IRremote.h“ benötigt werden.

Hier der Sketch zum Ermitteln der Tasten-Kennungen

#include <boarddefs.h> 
#include <IRremote.h>
IRrecv irrecv(11);
decode_results results;
void setup(){
  Serial.begin(9600);
  irrecv.enableIRIn();
  }
void loop(){
  if (irrecv.decode(&results)) {
    Serial.println(results.value, DEC);
    irrecv.resume();
  }
} 

Ist der Sketch übertragen, wird der serielle Monitor mit der Tastenkombination <Strg+Shift+M> gestartet und im Fenster unten rechts 9800 Baud ausgewählt.

Anschließend wird die Fernbedienung auf den IR-Empfänger gerichtet und eine Taste gedrückt.

Im Monitorfenster erscheint daraufhin der Code dieser Taste (eine achtstellige Zahl), die zur späteren Verwendung notiert werden sollte.


Um den Robino III zu realisieren, wird das gleiche Fahrgestell wie beim Robino I und II verwendet, wobei der VS1838B die dort verwendeten Sensoren ersetzt. Ein 9V Block dient als Stromquelle.

Hier das zur Programmierung passende Verdrahtungsschema:

Das Programm ermöglicht, die Motoren über die Tasten 1 und 4 bzw.2 und 5 an- und abzuschalten. 

Die im Code unten verwendeten 8-stelligen Zahlen müssen durch die selbst ermittelten Werte ersetzt werden.

#include <boarddefs.h> 
#include <IRremote.h>
IRrecv irrecv(11);
decode_results results;

void setup(){
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  irrecv.enableIRIn();
}
void loop(){
  if (irrecv.decode(&results)) {
    if (results.value == 16724175)  //Knopf 1
    {
      digitalWrite(6, HIGH);
    }
    if (results.value == 16718055)  //Knopf 2
    {
      digitalWrite(6, LOW);
    }
    if (results.value == 16716015)  //Knopf 4
    {
      digitalWrite(9, HIGH);
    }
    if (results.value == 16726215)  //Knopf 5
    {
      digitalWrite(9, LOW);
    }
    irrecv.resume();
  }
} 

Die Motoren sind mit den Pins 6 und 9 verbunden, an denen Pulsweitenmodulation (PWM) möglich ist.

Das hat den Vorteil, die Drehzahlen der Motoren am Robino geregelt werden können. Ein langsam fahrendes Fahrzeug lässt sich leichter steuern.

Wird der Programmcode von

digitalWrite(6, HIGH) nach analogWrite(6, 130);

geändert, dreht der Motor nur noch etwa halb so schnell.

Die Zahlenwerte können zwischen 0 und 255 variiert werden.


Der Infrarotempfänger und die Fernbedienung können preisgünstig im Funduino-Shop erworben werden.