BB8 ESP32 Motherboard

Whilst printing is going slowly (currently got 5 frame pieces done, and printing the first circle) I got the latest version of the BB8 motherboard delivered this morning. I soldered the headers (and speaker socket) on to give it a test, and initial results are promising with audio, neopixels, and IMU all working on the test bench. Next is to install it in the droid!

Before that tho, here are some instructions as I hope to get other people to test and use this.


  • 2 x 4 Pin Female Headers
  • 2 x 15 Pin Female Headers
  • 2 x 3 Pin Female Headers
  • 2 x 8 Pin Female Headers
  • 1 x 6 Pin Female Header
  • 3 x 3 Pin Male Header
  • 4 x 5 Pin Male Header
  • 1 x 4 Pin Male Header
  • 2 x 2 Way Screw Terminal
  • 1 x Jack socket. (

As you can see, mostly its just headers. These can be found pretty much anywhere, along with the two screw terminals. The only hard part to find is the headphone socket, which only seems to be available in lots of 100. If I supply the bare boards, I’ll include one.


Hopefully everything is fairly self explanatory. There are mounting places for the ESP32, BNO055 IMU, and DFPlayer mini. Everything else is connectors for external parts such as a string of neopixels for the body lights, servos to control the neck, pots to read S2S and dome position, and of course the motors.

The SBus section is for the Archer M+ FrSky receiver. Its a tiny form factor 24 channel receiver that will plug directly into the motherboard, and feed the sbus signal into the ESP32, as well as send telemetry back over the S.Port connection.

There is also an i2c header for attaching any other devices. All the pins on the ESP32 Dev board are used, so if anything else wants to be added this is the only option.


Once you have bound the receiver to the transmitter, all data is sent via SBus. This allows the ESP32 to process all the commands coming into it. This includes:

  • Motor control. Control the speed and direction of the main drive, S2S, dome, and flywheel.
  • Potentiometer Input. These will read in the position of the dome rotation and S2S motion, to feed back into the motor controller section
  • Neopixels. This allows you to connect a string of neopixels to the body for lighting.
  • BNO055. Using an IMU to calculate pitch and roll. It also sends telemetry back to the transmitter.
  • DFPlayer. This is used to play sounds from the SD card.
  • ESPNow. Whenever audio is played, a pin on the ESP32 reads the level and uses ESPNow to transmit instructions to the dome to flash the PSI.


Current code is heavily based on some for the Arduino Mega by Patrick Ryan. I’ve updated it to work with the ESP32, combined the feather code which talked to the dome and ran the neopixels, and added ESPNow comms. You can view it here:

Next Steps

I’ve already updated the board with more silkscreen text to make things easier. As long as I don’t find any more issues, then the only thing left to do is add some mounting holes where possible. That should be a relatively easy thing tho. My current board is just stuck on with a thick double sided tape.

If there is interest, I’ll get a supply of the headphone sockets, and supply either a kit with all the headers, or bare pcb (with headphone socket) and make them available to the club.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.