ROVer is online | last fetch at :: | status:

Live Camera Feed

ROVer Robot: Apple TV Remote as a Robot Controller, via Arduino UNO, MEGA ADK and Android!

This is cool… I know, this is mostly as a backup, emergency, off-wifi, off-cellular, solution that I need for ROVer prior to testing him around outside, but it’s just fun too… we’ve got the remote from the Apple TV networked into ROVer’s logic code now and he’s reporting what he receives from the remote all the way back up to the web server in the cloud from UNO to which the IR receiver is connected.

Something fun too, we taught ROVer some manners. Rather than just saying “Hello”, he now recognizes the time of day and says Good Morning, afternoon and evening as is appropriate. This isn’t very useful at the moment and just some fun, but later on this may be useful in creating a context for other commands – such as putting away the solar array after a certain time of day.

We did run into some trouble though…

as should have been expected, there was a conflict between the IR receiver library used by ROVer’s distance / proximity sensors and the library needed for the IR remote receiver. Fortunately, the overlap/conflict is a known issue and there was a workaround that seems to have done the trick.

… that said, I can’t help but wonder what happens as we add more IR-based sensors to ROVer 😐

The IRRemote Test Sketch for the Arduino UNO

/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */
 
/** Remote Control Codes
// TV
Power = 4939A709
Up = 8733786B
Down = B9411320
Select/Enter = 49EFCA27
Input = A1427BCC

 
*/
 
#include 
 
int RECV_PIN = 2;
 
IRrecv irrecv(RECV_PIN);
//IRsend irsend;
 
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}
 
void loop() {
  if (irrecv.decode(&results)) {
    //Serial.println(results.value);

    switch(results.value) {
      case 2011287708:
      Serial.println("Up"); 
      break;

      case 2011279516:
      Serial.println("Down"); 
      break;

      case 2011238556:  
      Serial.println("Left"); 
      break;

      case 2011291804:  
      Serial.println("Right"); 
      break;

      case 2011282076:
      Serial.println("Home"); 
      break;

      case 2052200172: case 2011250844:
      Serial.println("Menu"); 
      break;

      case 2011265692:
      Serial.println("Play/Pause"); 
      break;
    }
    
    irrecv.resume(); // Receive the next value
  } // END IR Remote
}

Leave a comment