Spy Video TRAKR: the teardown

Last Friday we looked at Wild Planet’s Spy Video TRAKR programmable RC vehicle mostly from an end user perspective. Much of our weekend was spent dismantling and photographing the device’s internal works, and poring over code and documentation, in order to better gauge the TRAKR’s true hackability. Our prior review included some erroneous speculation…we can clarify a number of details now, and forge ahead with entirely new erroneous speculation!

Our plan with this teardown is to establish more concrete details of what’s hackable inside the device, what’s not, and to help nail down some of the unstated hardware specifications.

We incorrectly reported that no programming documentation or compiler is yet available. Turns out all this information was simply tucked away in a help section of the TRAKR web site, not on the “App BUILDR” page where we expected it. Derp! These resources are still in a rough state, yet proved to be a far more valuable source of information than the physical teardown. C code and PDFs aren’t very photogenic though, so we’ve got plenty of circuit board pr0n to start with!

Inside the Remote

There’s not as much to see or do inside the TRAKR remote, so we’ll power through that first.

The concealed rear USB port was mentioned last time, which we’ve been informed is to allow for field-upgradeable firmware. If you don’t mind being tethered to one spot, we discovered the remote can also be powered from a USB hub, or even from the TRAKR’s own USB host port.

In another nod to tinkerer-friendly design, both the remote and the TRAKR are held together with identical Phillips screws throughout, recessed but not hidden under stickers or rubber pads.

The LCD screen is one typically seen in cell phones, 15-bit color at 160×120 pixels.

The “Bot Switch PCB” has just some switches and passive components. SW1 and SW4 have dedicated purposes (home menu and power), but the functions of the others are defined by individual apps. If you’re looking for GPIO lines to hack in the remote, this might be your best bet.

The underside of the main remote PCB has some exposed pads, but there are no through-hole solder points. The pad labeled “V0_TVOUT” caught our attention, thinking it might provide a composite video signal, but this turned out not to be the case, or at least it’s not enabled in the present firmware. J9 looks like a JTAG header.

A few more test points tucked beneath the LCD.

2 megabyte SDRAM and 1 megabyte SPI flash in the remote.

We were really hoping that the joysticks might be analog internally, but no such luck…they’re simple forward/reverse switches. Even if replaced with potentiometers, without access to the firmware source there’s no way of communicating this information to the TRAKR.

The remote and TRAKR have outwardly-identical radio transceivers. They’re rather well-sealed and we’ve not dismantled them further yet, but recall hearing they’re based on a Nordic 2.4 GHz part. Wild Planet claims that with a forthcoming firmware change, they’ll be WiFi-capable. We remain hopeful but skeptical — it seems far more likely that the remote’s rear USB port will come into play, or in the interim perhaps one of the SparkFun Nordic options will prove a viable choice for PC control.

Inside the TRAKR

Removing the screws is straightforward, but fully removing the lid from the TRAKR requires several cables be detached first — and they’ve all been glued in place for reliability. We just cut through the glue with an X-acto knife and pried a bit, but maybe it can be more delicately dissolved or melted.

The right side of the main board (turned sideways here) focuses on connectivity and the CPU. The ribbon cable at left leads to the camera. The pair of two-pin headers lead to the microphone and front accessory bump switch. The purpose of the unpopulated SW1 isn’t known — it might be that early designs featured an additional rear or top switch, now vestigial. The larger headers lead to the radio module and the trim pots and recessed reset/debug switches on the bot’s undercarriage.

No need to get through that epoxy blob. Digging through configuration files for the compiler, the chip appears to be a Nuvoton W55VA91, featuring an ARM926EJ core running at 192 MHz, and hardware-assisted JPEG codec.

The middle section of the board is what TRAKR-hackers will become most acquainted with. JACK3, the vertical row of pads in the center, contains 8 digital GPIO lines and one analog input, with 0.1″ pin spacing. JACK4 looks like a JTAG port, with 2mm pin spacing. Below that is the connector for the USB host port, and the second (unpopulated) port at the right can be used as a 5V source. It’s a real shame that power and ground were overlooked on JACK3 despite its proximity to those traces. With the addition of power traces and a row header soldered in place, this would have made a nice standardized riser for small add-ons, much like the ecosystem of Arduino “shields” that has taken off.

Left side of the board is devoted mainly to power and motor control. The red/black wires at left lead to the battery compartment. Connector above that is for the speaker. The two 3-pin connectors at the bottom lead to the left and right motors, with the H-bridge driver circuit above that.

By the way — if you dismantle your TRAKR, when it comes time to put it back together, there are four screw holes that aren’t actually used despite their labeling on the silkscreen layer. You can see three of these in the photo above, and the fourth in a prior photo near the camera connector. Forcing screws in could damage one of the motor cables underneath!

Little to see on the underside. Another inactive V0_TVOUT pad taunts us! This side is dominated mostly by the SD card socket, and…

…ample 8 megabyte SDRAM, 2 megabyte flash. Together with the SD slot, USB and ARM9 CPU, we’re anticipating ucLinux and DOOM to be ported in 3…2…1…

The USB host port is on a small daughter board, and each of the motors has some local driver circuitry as well.

Each motor is driven through a reduction gearbox. They operate quietly with only a slight amount of slop. As with the radio, we’ve not further dismantled these yet.

Though not powered, the front wheels aren’t as boring as we first thought. This rack and spring mechanism keeps a constant tension on the rubber tread belts, allowing them to flex and maintain traction as the TRAKR drives over various terrain.

The partly-disassembled camera pivot mechanism. Two small rubber pads provide just enough friction to hold the camera in its set position, yet still allow it to pivot easily. If attempting to add servo control to the camera, removing those pads will likely help.

The camera is connected to the main PCB with a 24-conductor flex cable, 0.5mm pitch and about 6 inches long. Mounting the camera in a higher position might best be done by replacing the entire cable with a longer one, but we’ve yet to locate a suitable match from a source such as DigiKey.

Extracting the camera PCB from its housing, we were greeted with a low-hanging hack opportunity: the board was designed to accommodate multiple LEDs, but in practice shipped with just one large one in place. Boosting the light output should be a very simple matter of adding the missing resistors and LEDs, though you’ll need to drill holes through the case or run wires to mount the LEDs externally.

We’re not 100% certain of the camera sensor yet. From PR materials at Maker Faire, we know it’s from OmniVision, but don’t know the exact model. Based on size and specifications, the OV7670 looks like a possibility, in which case it should be capable of full VGA resolution, not just the QVGA output we’ve seen.

The “accessory port” is just a passive attachment point to clip things on; it resembles a headphone jack, but isn’t. There is a pushbutton switch behind it, maybe an interactive cat-poking stick is planned.

The artist’s signature.

Reassembly was straightforward. Cable connectors are keyed for orientation, and for those that aren’t a unique size, the correct positions can be inferred from cable length. And there was no mysterious “extra screw” at the end — everything went together easily and worked on the first try.

Passengers

Some readers have asked about mounting external microcontrollers or other devices to the rear transport deck. Adding a microcontroller isn’t an entirely ridiculous prospect — even though the TRAKR’s CPU has far more “oomph,” it remains to be seen if the GPIO lines are suited to tasks such as accurate PWM for servo control. Delegating such tasks may prove helpful, or even necessary. The usable area of the transport deck is a bit over five inches wide and three inches deep, and a couple of rubber bands or some foam tape will hold most boards securely. With the deck removed, the recessed notch above the battery bay is such a perfect size for certain things, it’s almost uncanny. Did [Dave] plan this?

Arduino, natch. Small devices like this can be powered from the TRAKR’s USB host port, but without an FTDI driver on the host side this connection can’t be used for serial communication.

Half-size and quarter-size breadboards fit exceedingly well, almost snapping into place. But anything placed back here though is going to block access to the SD and USB ports.

More Hack Ideas

Having explored the hardware inside and out, we’re already ruminating on the possibilities…

The TRAKR has a big infrared LED on the front (with two more easily added). The firmware for TV-B-Gone is open source. Enough said.

With the transport deck removed, the rear wheels of the TRAKR protrude slightly behind the body. With the addition of a gyro sensor, will it be possible to get the TRAKR to stand upright and scoot around Segway-style? The remote’s joysticks are non-proportional, but software control of the motors allows for very fine speed adjustment. It’s been done with LEGO NXT, so we think the practicality of this idea will come down to the responsiveness of the TRAKR’s motors. (Yes, we know it’s just propped up against the back wall there. Shhh!)

The wide stance of the TRAKR has us contemplating a Chalkbot or txtBomber printer attachment: the eight GPIO lines could be used to control a row of solenoids attached to paint markers or chalk hoppers. We didn’t have the parts on hand to build a physical printer right away, but we did have some addressable LED bars from another project, so a proof-of-concept was possible using long-exposure photography. And it works! We’ll elaborate on this hack in a subsequent article as we get our hands dirty…very dirty…with the TRAKR C compiler.

Comments

  1. nave.notnilc says:

    nice writeup! I look forward to seeing the programming stuff

  2. biozz says:

    well break out the logic probe the buspirate and the solder and lets get hacking!

  3. grinan says:

    Damn i want one of these to play with. I can see great fun to be had. Somebody send me one to “review”.

  4. MrBishop says:

    Ok… im going to have to have sex with one of these things. Is that wrong? DONT JUDGE ME!

  5. zool says:

    BUSTED!

  6. rasz says:

    This thing is brilliant. Lets hope there is an easy way to put Linux on it (or mod existing linux install if its using Linux) and get usb host going (wifi, another cam, servo controller, usb hid for more inputs and so on).

  7. Rollyn01 says:

    Is it possible that the V0_TVOUT pad was used to connect to a computer monitor for comparative analysis with the receiving monitor?

    @MrBishop

    I won’t judge as long as you wrap it up. I’m thinking a low-pass filter ought to do it. lol

  8. Josh says:

    Yes please do a TV-be-gone app!!!

  9. the_steven says:

    Folks…. We have a new Roomba…

  10. cliff says:

    just ordered one of these through Toys R Us, can’t wait to get it. and free shipping to boot!

    • david says:

      how is the Trakr working out. I found one at the Goodwill for $2.00. I am trying to get it to work. I download an app to the Android but the BOT is not responding. Is it Bluetooth?

  11. aj says:

    Dumb question no 1: Why are there three wires going to each motor? The motor units look like standard DC ones, but what’s that little board I spy on top of the motor?

  12. Amtal says:

    I’ll take five.

  13. strider_mt2k says:

    Not only wow for bringing us this AWESOME look at the insides, but another big WOW for sneaking in the first freaking HACK!!

    That trick with the LEDs and the camera totally counts, even if it’s been done. (whiners shut up)
    AWESOME

    I like the thing for the most part, but I’d almost like to take the guts and put them in my own ROV chassis, which has a bit more room for “stuff” and different capabilities.

    I still want one, and might get one.

  14. strider_mt2k says:

    @aj: One wire provides feedback from the motor of some kind like an encoder.

  15. aj says:

    @strider_mt2k: Yes, of course. I now feel like a total idiot! C1, C2, C3 look like standard supression caps . Not sure what “PTC” could denote though although it appears to be linked into the yellow wire- perhaps some sort of safety (overcurrent?) shut off system?

    Could be some sort of current feedback?

  16. fede.tft says:

    Nice review.
    It looks like this device really has composite video out. How do I know? Simple, look at the link to the W55VA91 CPU in the aricle, and it says “TV OUT: Y”. Probably there’s no software to make it work, but it’s there.
    It also says that it has a GPU. Probably just 2D acceleration, but it is anyway interesting.

    Now the bad thing: despite the available SDK and GCC compiler all the info about the CPU is still closed source. There is no public datasheet nor a .h file with the definition of all peripheral registers.
    The SDK contains some source files in the Internals folder, but most of them just make calls to functions that begin with JAPI_ and seem to be in the JAPI.a binary blob.
    So running alternative firmwares (say uClinux for example) or adding support for things such as video out or GPU that were not intended to be used might be rather difficult.

  17. snow says:

    @aj: ptc could indicate a positiv temperature coeficient resistor as a temperature sensor to prevent overheating of the motors. althought giving feedback on speed/direction with an encoder would be more useful in my opinion.

  18. Viewer says:

    Wow, Great writeup. This is the kind of thing that keeps me coming back to H.a.D.

  19. Reggie says:

    you should look at http://www.elinux.org/Didj and http://elinux.org/Leapster_Explorer

    both of these use an LF1000 chip which is a custom arm926tej might be some clues on how to kickstart a linux install for it? It currently has 2 flavours, 2.6.20 and 2.6.31

    It also has TV-out support you might be right on the firmware needing to have it enabled, it would be nice to hear what tests were done on the TV-out test point on the TRAKR? I believe a cap and a resistor were used on the Didj/Explorer TV-out hacks…..

  20. Sock It says:

    Are those power/driver transistors socketed? What are the part numbers on them?

    More I look at that picture of the 8 transistors and the one on the end, the more I think this thing was built to drive more than just the built-in motors/wheels.

  21. @fede.tft

    I have found a datasheet to the CPU:

    http://dl.dropbox.com/u/4295670/W55VA91_DesignGuide%28fullset%29%20-%20A4.pdf

    It is called design guide, but it has very detailed about it’s internals, and the register set.

  22. Phil Burgess says:

    @Sock It: the transistors are soldered in place. The lower row are type B772, the uppers are D882. The large component at the left end is a 7805 voltage regulator.

    @Miklos: you rock! I need to finish the compiler writeup first, but I’m real eager to start poking around the chip. Thank you!

  23. fede.tft says:

    @Miklós Márton

    Now it starts being interesting.
    In that design guide looks like there’s the explanation of every bit of every register.
    And as expected, it has tv out (both NTSC and PAL) and a 2D GPU.

  24. chris says:

    the GPIO could be used to connect to a micro, which you could use to effectivly extend the number of lines.

  25. Michael says:

    Great… That datasheet was the missing piece to have some real fun (Spend a whole evening looking for that)
    Working on some simple image recognition using only the provided API(Like detecting a red ball…) will see where that is going…
    In the long run the Base firmware that loads the Apps migtht be more in the way then helpful.
    GPIO Port C is unfortunatelly rather boring (No UART/I2C/PWM) Need to find GPA[7] and GPA[8] for a UART.
    Or Use $3.40 MSP430 development Kit which could connect via USB…

  26. Drone says:

    “Arduino, natch. Small devices like this can be powered from the TRAKR’s USB host port, but without an FTDI driver on the host side this connection can’t be used for serial communication.”

    Huh? Skip the USB and use regular serial with UART(s) or bit-bang. Heck, if you insist on USB there are plenty of free USB stacks for the AVR’s out there already (but not sure about host).

    Please take the motors and gear trains apart. IMHO that was sorely missing from this teardown.

    Also, I bet the lens has a lot to do with the camera woes. Can you take the lens off and try something else? Maybe the Helios 44-2 from here:

    http://hackaday.com/2010/09/01/using-quality-optics-with-a-webcam/

    @Miklos saves the day!

    Thanks HaD!

    David

  27. Krash says:

    Anyone have any ideas about what solvent to use to remove the glue used on the connectors to the circuit board? Alcohol? Acetone (nail polish remover)?

  28. harish says:

    please do the tv b gone

  29. Kamen says:

    Just a guess here, but with 3 wires, might those motors be continuous rotation servos?

    TV out, along with Davids suggestion of using better optics and the 3 IR led mod… Now we’ve got some serious spy potential. I’m envisioning an RCA jack on the controller like one of those cheap knockoff video game packs.

    No analog controls ae a bit of a disappointment, but it makes PC control possible with a phidget relay box. Cheap, easy, and no need to wait for a firmware update. Now we just need to get at that video feed.

  30. hank says:

    Try http://www.newark.com for a camera ribbon cable. I don’t know if it is a match but they have a 24 conductor, 0.5mm pitch cable.

  31. gelfling6 says:

    Answering Kamen, no they’re standard DC motors, driven by an “H” bridge (the set of power transistors someone mentioned, wondering if they’re socketed.) the 3rd wire, is a PWM signal back to the CPU, for telling the speed in Cyborg vision mode, or counting the number of steps it took in Pathmapper mode.

    Just replaced the condenser mic with a larger one recycled from an old answering machine. Super sensitive now! I have to be at least 10 feet away, if monitoring with the remote, or I’m in for some massive feedback!

    I’m also noticing, the battery life is greatly diminished, if using an SD card. Using a 2GB PNY Optima, chews-up battery life 45% faster!

  32. gelfling6 says:

    One other side note.. For those getting adventurous like I just did to open/dismantle it.. Beware Plyo-Bond! Plyo-Bond is a nice little latex based adhesive used to to anchor items.. In the case of the TRAKR, the Plyo-Bond is used to hold connectors in their respective sockets on the main board. such as the 2.4Ghz radio, the plug for the speaker (which I accidentally tore the wires from), the Mic, both motors, and the reset/mode/adjustment POT board. (which I later used a small knife point to cut along the edges, to break the bond.) Meanwhile, searching other items I’ve dismantled, in search for a new speaker wire & connector, to solder to the speaker again. (D’OH!!!)

  33. strider_mt2k says:

    OKAY!
    Got mine for Christmas.

    THANK YOU FOR POSTING THIS INFORMATIVE ARTICLE

    I’m surprised that there aren’t more hacks out for this thing at this point, but maybe I can help change that! :D

  34. strider_mt2k says:

    Making a list of stuff to do to this thing.
    Only a few APPs on the site have any real value.

  35. strider_mt2k says:

    Lithium replacement battery?

  36. gelfling6 says:

    A Lithium battery, or even a 9.6V battery might be a better idea. I’m still having trouble getting the compiler to work. (it is _NOT_ windows-7 friendly! Even running under DOSBOX.) I’m still looking at adding a Parallax PING)) ultrasonic range finder, to measure distance. (and have it report back the distance to the remote. Already have a working program written for the Arduino, so converting to the ARM9’s C program should be a piece of cake.)

    For those just catching this, look for http://www.spygear.net/forum , and search for ‘Schematics’, someone posted a link to the FCC page, which has the technical schematics for both the remote & the TRAKR itself!

  37. Jason Tusi says:

    Hi Bodys:
    i don’t know why you so interset on w55VA91,but i want to say that, i have supply technolodge support on w55va91 for severl years, so you have any question,please fell free ask me.

  38. Hoss says:

    I just bought one of these from Costco for less than $50. There is an SDK and now a wiki for it. http://www.trakrhakr.com/wiki. Information is a little lacking still, but I was able to write a hello world app (in edit plus), compile it and run it. Short video at: http://www.youtube.com/watch?v=qLYexosw48E

    Hardest part was figuring out the makefile. In the video you can see the minor tweaks I did so that the compile output console looks a little nicer (to me at least :).

    $50 for a robot with these features, real C programming, etc is great! Their site says its no longer available though, so I wonder about any future advancements or accessories.

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

Follow

Get every new post delivered to your Inbox.

Join 92,339 other followers