USB CDC Robosapien V1

Robosapien's actions controlled through a virtual USB port. Speaker switchable between Robosapien & external audio jack

Similar projects worth following
DONE: Digistump controlling the Robosapien's actions through IR-wedge
DONE: Digistump accepting commands from the virtual serial port
DONE: Robosapien's voice switchable between internal Robospeech and external audio input through 3.5mm jack.
TODO: Implement the above on a PCB and mount it in the Robosapien
TODO: Linux SBC controlling Robosapien's actions & audio

Implementation details


The Robosapien was originally powered by four 1.5V size "D" cells, two in each foot.  The weight in the foot is needed for stability during walking.  If no weight is placed in the feet, the Robosapien will fall over during walking.  The weight of a "D"-cell varies from 135g-200g, depending on battery chemistry and amp-rating.

The robot will now be powered from 5V USB.  The connection can be made as follows:

  • Connector marked "L-SW-GND-C" on the main-PCB: 
    • use "GND" as USB-GND
    • "C" connected the batteries on the left foot with the ones in the right foot, it can be disconnected now.
  • On/off switch panel on the back plate : solder 5V from Digistump to "IN" on switch PCB.
5V connection to IN-signal of switch-PCB.

By making the connections in this way, the power button on the back will still be functional. VCC = supply voltage for most of the circuitry = 3.3V. U1 on the main PCB generates VCC from VDD. VDD = supply voltage for motor driver and speaker = 5V.

IR protocol

The easiest way to probe the original protocol is at the back of the main board, at the connector named "HEAD".  Remove this PCB, solder your probes to "GND" (black wire of "HEAD"-connector) and "IROUT" (white wire of "HEAD"-connector).

The IR-protocol is quite simple.  The default state of the IR-OUT signal is high.  The message starts with a low pulse that lasts 6.26ms and is followed by databits 7 downto 0.

  • 0-bit =  0.843ms H + 0.843ms L
  • 1-bit = 3.512ms H + 0.843ms L

Using this information, you should be able to figure out that the screen capture shows the 0xCE command.

According to Aibohack, the protocol uses 1200baud.  I noticed quite a lot of jitter between bits.  Pulses of 909ms wide are not uncommon.

IROUT electrical connection

The IROUT-signal on the main PCB is 3V3-logic.  The Digistump is 5V-logic.  Care must also be taken to avoid latchup when the Robosapien is powered off while the Digistump is on.  

IROUT has been pulled up to VCC with a 1K-resistor.  A BAT46W-schottky diode is used to connect to the Digistump.  The anode of the BAT46WJ is connected to IROUT.  The cathode is connected to the Digistump GPIO (i.e. the P0-pin).

The IROUT-waveforms look ok.

Photograph of the main-PCB with IROUT connection

Original firmware

  • 5 minutes after startup, the Robosapien goes to sleep.  In sleep mode, no commands can be executed.  The "WAKE UP" must be sent to wake the unit up.  The Robosapien's wake-up routine is the same as when you power it up.  It's quite noisy.  You don't want to do this more than once a day.
  • Robosapien's manual : "After approx. 2 hours of uninterrupted sleep, he'll power himself off to save energy".

Challenge: "How to keep the Robosapiens on indefinitely while keeping it still & quiet?"

Response: Sending 0xEF once a minute keeps the Robosapiens on.


Original manual of the Robosapien V1

Adobe Portable Document Format - 2.75 MB - 12/04/2017 at 19:00


  • Audio connection on PC side

    Christoph Tack02/23/2018 at 19:59 0 comments

      In the final application, a BeagleBone Black (BBB) will be used to control the Robosapien.  Having one in my drawer is the only reason for using a BBB.  It unfortunately doesn't have an analog audio interface.

      Adding an external USB-Audio interface is a cheap (<€1) and easy solution.  It's supported by default in Ubuntu Linux.  The audio chipset is from Generalplus.  There's no more specific data.  I think it's either the GPD8102B or GPD8106B under the blob.

      AliExpress USB Audio interface

      Unluckily, in an attempt to cut down costs, the manufacturer has also cut down on specifications.  The audio output lacks low frequencies, which makes it very annoying to listen to.  Opening up the unit reveals that the audio is capacitively coupled.  This coupling capacitor forms a high pass filter with the input impedance of the headphones.  This device is cheap.  The capacitor is too small.  The cutoff frequency is too high, cutting off lower frequencies from the headphones.  Luckily, there's an easy fix:

      1. Open up the USB-audio interface.  Easiest way: drop it from 1m on a concrete floor.  For whatever reason (probably cost again) the housing is not glued.
      2. On the bottom you'l find C8 & C9.  These two 0805 caps are 10µF.
      3. Replace these caps with 22µF or higher value.  Higher cap values in small values are relatively expensive.  It's clear why they tried to save cost here.
      4. Normally, you should be able to assemble it without problems.

  • Audio connection

    Christoph Tack02/21/2018 at 21:07 0 comments

    To be able to use the internal sound of the Rabosapien as well as audio from the PC on the Robosapien's speaker, an analog switch is needed.

    The 74HC4053 will be used.  It's cheap and easily available.  Its three internal channels are connected in parallel.  In this application it doesn't matter much, but it decreases the series resistance of the multiplexer.

    The audio from the laptop is too weak to connect directly to the Robosapien's speaker, so we'll use an audio amplifier.  The PAM8403 is available on a PCB with the necessary peripheral circuitry.  These modules only cost a few cents.  The audio amplifier is connected at the output of the multiplexer.

    The audio output of the Robosapien can be taken from C13A.  This output is connected to a 10/2K2 voltage divider, which is connected to the analog multiplexer.  Decreasing the Robosapien to 1/6th of the original level is needed to avoid oversteering the amplifier.

    Finally the Digistump controls the state of the analog multiplexer, choosing between PC audio and Robosapien audio for the Robosapien speaker.

  • Getting started with Digistump clone

    Christoph Tack02/16/2018 at 21:11 0 comments

    Where to buy?

    • Digispark website
    • AliExpress
      • This clone has two mounting holes, which is an advantage to the original Digistump.  
      • The LED is on P1, not on P0.


    Follow the instructions on:


    The Digistump clone is shipped with a functioning bootloader.  

    To program the application: first click verify, after that power on the Digistump.

    Further reading

    Marcus Jenkins wrote an interesting tips & tricks to get you started with the Digistump clone.

    Use a USB hub with a power switch for every outgoing USB port.  This avoid having you to plug in and out the USB connector every time the Digistump needs to be programmed.

    The schematic can be found here.

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates