Robosapien/WowWee IR arduino library

I got another robosapien in the trash, but this time is a robosapien V1. I didnt feel like tearing this one apart to have to run a cable to it to inject it into it’s brain, so I started messing with the library used here:

http://daverobertson63.wordpress.com/2013/05/05/updated-robosapien-ir-control-arduino/

The issue was, when using his code, it only worked from the arduino only, and only worked with the original robosapien V1 robot, so I tore apart his code and modified it to add in support for other WowWee products like V2 and roboraptor.

The issue was, his code was locked so that it could only handle sending 8 bit codes(one byte), but the V2 and other wowwee products use 12 bit codes, so a little bit of it had to be changed to handle the 12 bit codes. The IR codes use the same type of data being sent, same 8 bit codes, but uses a 4 bit identifier code that makes that specific remote only work on that robot.

Just download the standard IRremote library here:

http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html

and replace the normal files with the ones in this archive:

http://www18.zippyshare.com/v/95213422/file.html
mirror here:
https://drive.google.com/file/d/0BwYG1PFb3ZByaTAxMlJZS2pIM1E/edit?usp=sharing

Here’s a bit of an example for transmitting the codes out from the serial connection/usb.

/*
Based on IRSend demo from ken Shirriffs library -
this sends simple commands to a RoboSapien V1 using
and IR Transmitter with Arduino
*/

#include <IRremote.h>
IRsend irsend;        // pin 3 as IR LED output
int data;
void setup()
{
  Serial.begin(9600);
}

void loop() {
  while (Serial.available()> 0) {
    data = Serial.parseFloat();
    // Serial.println(data);
    irsend.sendRSV1(data);
    irsend.sendRSV1(data);
  }
}

The send irsend.sendRSV1 command can be changed to irsend.sendRSV2 to send the alternative codes for V2, robo raptor, or almost any of the wowwee robots. You’ll have to convert the hex addresses to decimal to input them, but you can easily do that with a python script or whatever. To just mess around with it, I was using the calculator on windows/linux and setting it in advanced/programming mode and clicked the hexadecimal circle, typed in the command on the site, then clicked decimal and it would show the decimal number.

Here’s a list of all commands for a bunch of the wowwee robots:

Robosapien V1 codes:

http://www.aibohack.com/robosap/ir_codes.htm

Robosapien V2 and other wowwee robots:

http://www.aibohack.com/robosap/ir_codes_v2.htm

on the V2 page, the 3xx is the 0011, aka the robot identifier code, to change to another robot, just change the 3 to whatever robot you are trying to control.

I hope that everything works good for everyone, It’s experimental still, but it works for me at least.

Advertisements

17 Responses to Robosapien/WowWee IR arduino library

  1. wang says:

    This is a bit complicated for me. But, good luck with your project!

    • cae2100 says:

      thank you for the interest.

      If you look at the data sheets, each of the numbers/letters on the other page is a hex value, 0-9 = 0-9, A-F = 10-15. Ill try uploading a program here in the future that converts the hex values to decimal, that might help. What I was talking about is that there is only 8 bits for the original robosapien model, but pretty much every model after that, they had another 4 bits added on before the code, kinda like a TV remote uses to identify what it is trying to control. This arduino library does all of that stuff for you, you just type in the number that you wanted to send, and it’ll send that command to the robot. like the dance command for original robosapien was 0xD4, but converted to decimal through calculator it would be 212, or you can just input it into the arduino program directly as 0xD4 and it’d work just the same, or it should.

      I hope that helpped a little, and sorry about the earlier response, lack of sleep tends to not make the brain work as effeciently 😛

  2. John Markley says:

    Where do I change the model identifier( i.e. 0011 for the Robosapien V2). I am attempting to control a roboquad. I think this will be awesome.

    • cae2100 says:

      if you looked at the sites that I said, you’ll see the numbers as $3XX, which is also 0x3XX, for roboquad, just change it to 6XX, at the top of that page, it shows that. So sending the command to dance, it would be in hex value 0x650 instead of 0x350. just convert that number to decimal and use that.

      Also, Ive been thinking about it and I realized that you can maybe also use the python program used for controlling the RSv2 models that I posted in an earlier post. This one here:
      https://cae2100.wordpress.com/2013/02/17/358/
      It’s worth a try anyways.

  3. zilot says:

    Your zippyshare file link is dead, please upload it again, thanks…

  4. zilot says:

    Do you have maybe Tribot? Something is wrong with command timings described there. I need just one valid screen shoot from Tribot remote, for any command.

  5. zilot says:

    OK, thanks

  6. Andrei says:

    Is there any chance you could make an independent library for arduino? Arduino IR is at version 2 and replacing files causes compile errors. Or tell me in what version or Arduino-IRremote should I replace

    • cae2100 says:

      Ive tried it with the new ir library and everything from the site, and with an old IR library version, and the new one on the site, both work fine and I havnt seen any compile errors on any of the stuff, I would check your code and check the tabbing of the code. Forums like to mess up the spacing and some special characters, so I would just check your code closely if you just copied/pasted it.

      • Andrei says:

        OK…I’ve managed to compile it with version 1, but the roboquad doesn’t react. What should I have to send? I’m a little confused about hex/dec. I’ve tried what you’ve said to someone else… to send 0x650 (dance demo), but nothing is happening. Am I sending the exact sequence of characters or what is the correct one? The think is that I’ve understood that some led should blink on the robot when it receives commands via IR. Nothing is happening to my robot and maybe my IR led is not the right one…

    • cae2100 says:

      be just try sending the decimal number 650 or 1616, 1616 is decimal value and most of the time, I just sent the actual decimal values through the program. Also try $650 instead, I forget how arduino likes to handle the numbers, so I would just tinker with it.

      I havent really messed with this stuff in probably 2 years now and I honestly dont remember what was going on with half of it really anymore, so I would just play with converting the numbers around and trying whatever, see what works. I know for sure that it worked fine with the original robosapien and RSv2 but I dont have any others than those two and never tried it with any others.

      Also, I would look through the comments on the other page for the software, here:
      https://cae2100.wordpress.com/2013/02/17/358/
      That might help a little too.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: