Building R2D2 From Scratch / Bâtir Un R2D2 À Partir De Rien




About: Bilingual Maker from Canada, mostly interested in Raspberry Pi, Arduino and IOT stuff


Hello, another R2D2 build from scratch. This one is based on the Raspberry Pi, Adafruit Trinket, Neopixels, Servo controller and Pololu USB motor drivers. The programming languages are Python, C, Javascript and I use WebSockets. If you're in for a bumpy ride, stick with me and you'll see some pretty interesting things :-)

First thing first, here is a small video of the beast alive !!!


Bonjour, un autre Instructable sur comment bâtir un R2D2 à partir de rien. Celui-ci est basé sur le Rapsberry Pi, Les trinkets de Adafruit, Les neopixels, le controlleur de servo Adafruit et le controlleur de moteurs USB de pololu. J'ai utilisé du code Python, du C, du javascript et également des Websockets. Bref, si vous voulez suivre ce chemin avec moi, vous verrez des choses pas mal intéressantes ;-)

Mais avant tout, voici un court vidéo de la bête !!!

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Hardware Required / Matériel Requis


As I told you on the preceding slide, there is a lot of things involved in doing this little droid. Robotshop is a good place to find most of these parts


Comme mentionné, voici la liste du matériel requis pour contruire ce petit Droid. Robotshop est une excellente source pour tout ce matériel.

Part List:


  • 1 Raspberry Pi 3 (in the head)
  • 1 USB power BANK Lenmar Helix 11000 mah
  • 1 Adafruit 16 channel I2C servo controller
  • 1 continuous rotation servo
  • 1 servo wheel
  • 3 Adafruit Trinkets 3.3 V
  • 1 Adafruit neopixel ring
  • 2 Adafruit neopixel matrix
  • 1 small USB powered speaker
  • 1 Lightning DOME 11 inches (for the head)


  • 1 Raspberry Pi 2 (In the body)
  • 1 USB power BANK Lenmar Helix 11000 mah
  • 1 small 12v battery (for main motors) 4ah
  • 2 pololu USB motor driver
  • 2 motor with chain sprocket
  • 2 wheels with chain sprocket
  • 1 MDF board, planche MDF
  • Cardboard, Carton
  • Wood, Bois
  • Glue
  • etc.

Step 2: Constructing the Dome, Construction Du Dôme


OK, first thing first, if I'm not able to make a good looking dome, I won't make it at all. So here it is

First, I had to find an acrylic sphere that had a diameter of roughly 14 inches (the correct size for R2's head) the closest that I found at a good price was an acrylic lightning sphere measuring 11 inches in diameter. Close enough.

I've cut it in half and saved the lower part for all the blue parts.

I've cut and painted in blue all the parts that I needed and I painted the second part in silver. (Rustoleum spray paint)

Then I glued all the forms on the dome.


OK, premièrement, si je ne suis pas capable de faire un dôme qui a belle allure, je ne ferai pas R2. Donc, allons-y

Premièrement, trouver une sphère, idéalement en acrylique, qui mesure envion 14 pouces (La vrai mesure de la tête de R2). La meilleure taille que j'ai pu trouver en conservant un budget intéressant faisait 11 pouces. Ca va être correct.

J'ai donc entrepris de la couper en deux et de conserver la partie du bas pour faire tous les petits découpages bleus

J'ai donc découper les formes requises dans la partie du bas et je les ai peint en bleu. J'ai également paint la seconde moitiée en argent (Peinture en spray rustoleum)

Après j'ai collé toutes les pièces sur le dôme comme sur le modèle.

Step 3: Dome Construction Part 2 / Construction Du Dôme, Deuxième Partie


I then needed something for the holoprojector. I used a small plastic container mounted on a half spere (stollen from an old toy)

For the eye, I glued an unpainted piece of the bottom spher behind a hole, so the light from the Neopixel Matrix, would do an amazing effect

The radar was taken from a transparent plastick packaging tha I painted in black from the Inside so it would be really shiny

I then traced a big circle, the size of the dome circumference on an MDF board to serve as a base for the dome.

So there it is, the dome is finished (The electrical part in the next step)


J'avais besoin de quelque chose pour créer l'holoprojecteur. J'ai donc trouver une petite bouteille de plastique et une demie sphère provenant d'un vieux jouet.

Pour l'œil, j'ai simplement collé une pièce de plastique provenant de l'autre moitié de la sphère, non peinturée, derrière un trou. Comme ça, la lumière de la matrice Neopixel produirait un bel effet.

Finalement, pour le radar, j'ai découpé une pièce circulaire à partir d'un emballage de plastique transparent. Je l'ai peinturé en noir, côté intérieur, pour qu'il soit bien luisant.

J'ai alors tracé un gros cercle dans une plance de MDF, exactement de la grandeur de la circonférence du dôme. Ce cercle sera donc la base du dôme.

Et voilà le dôme (Prochaine étape, l'électronique du dôme)

Step 4: Dome Electronics, Électronique Du Dome


Here we are, last step gave us a pretty good start for the dome, but we have to make it do something. We geek all like lights, lots of blinking lights, sounds and spinning wheels. So here is a diagram of all the electronic that I've put in the dome.

First, the simple things: Connecting the Raspi Cam and the speaker should not be a problem to anyone. Here is a nice tutorial from Adafruit:

It gets even simpler for the speaker as you only need to connect it to the speaker jack :-)

The other boards are connected using I2C connections. So you will need to find the SCL, SDA, 5 V and Ground connectors on the Pi, the Trinkets and the Servo Board.

Trinkets (Refer to the image)

SDA is labeled pin 0

SCL is labeled pin 2


5V is Bat +

here is another link from adafruit

Raspberry Pi (Refer to image)

SDA = pin 3

SCL = Pin 5

GND = Pin 6

5 V = Pin 2

Adafruit 16 channel Servo driver (Refer to image)




5V = VCC

Next step, we begin the base ...


Alors nous y voici, la dernière étape nous a fourni un bon départ pour le volet artistique du dôme, mais maintenant il faut bien qu'il fasse quelque chose. Nous les geek, nous aimons bien les lumières, beaucoup de lumières, les sons et les roues qui tournent. Alors ci-joint, vous trouverez le diagramme de connexion des composantes électroniques du dôme.

Pour commencer, les choses les plus simples, la caméra. Suivez ce lien pour accéder à un tutoriel très complet de Adafruit:

C'est encore plus simple pour le haut-parleur, juste à le connecter dans le connecteur haut-Parleur de votre Raspberry Pi.

Les autres cartes sont connectées par I2C. Il faudra donc identifier les connexions SCL,SDA, 5V et Ground sur la Raspberry Pi, les trinkets et le controlleur de Servo

Trinkets (Référez vous à l'image)

SDA est la borne pin 0

SCL est la borne pin 2

GND est la borne GND

5V est la borne Bat +

Voici un autre lien de Adafruit qui fournis la documentation des Trinkets

Raspberry Pi (Référez vous à l'image)

SDA = borne 3

SCL = borne 5

GND = borne 6

5 V = borne 2

Adafruit 16 channel Servo driver(Référez vous à l'image)




5V = VCC

Prochaine étape, on commence à faire le torse de R2.

Step 5: The Base / Le Torse


OK, now that we have a working dome, it's time to concentrate on the base and feet of R2. So here it is:

The base is made of MDF 3 circles that I've cut with a jigsaw. Each one has a diameter of 11 inches (remember, this is the size of the acrylic dome that I bought. If your's is of a different size, please ajust the size of the circles accordingly)

Concerning the height, my R2 body is 19 inches tall (skirt excluded) So I joined the first and second circle with 1X2 sticks measuring 9 inches each, and then I assembled the top circle with the same kind of stick (Look at the fisrt image)

On my R2, I wanted to have a door on the back, so I added a framing for the door with hinge. The framing was done with 2 X a quarter of circle and 1X2 sticks. (you can see the door frame on the second image)

I then added a swivel (the kind you find in hardware stores for tv sets) so that the dome could turn freely. You have to note that the electronic in the dome and the base are completely independent so the dome can rotate without constraint (no wires to tangle)

To make the skirt, I've cut small MDF triangles and glued them on the base in an hexagonal pattern. I then used some cardboard rectangle to link them together (images 2 and 3)

The skin (as I might say) of R2 is made of tick cardboard, the kind you might find in craftshops. There is 2 layers, the first is plain with no holes and the second is cutted to make it ressemble the real R2. (Pictures 4 to 6) I used the template on image 7 which I found on this forum Simple calculation will permit you to ajust it to your R2 dimensions.

To assemble the first layer of skin on the frame, I used staples and white glue. For the second layer, I used contact cement, so be very careful as it sets really fast.

All the gadget on R2 skins are made with normal life objects. Like for exemple, the vents are made from rasor blade tray and the gadget under that is made with bottle cap, jar cap and cardboard. So no 3D printer required.


OK, maintenant que nous avons un dôme fonctionnel, c'est le temps de se concentrer sur la base et les pieds de R2. Alors on y va:

Le squelette de la base a été réalisé avec 3 cercle de MDF coupés à la scie sauteuse. Chacun des cercles a un diamètre de 11 pouces (Souvenez-vous que le dome d'acrylique que j'ai acheté mesurais 11 pouces, alors si le vôtre est différents, il faudra ajuster vos mesures en conséquences) Concernant la hauteur, le coprs de mon R2 fait 19 pouces (sans compté la jupette)

Alors, j'ai joint le cercle du bas et celui du milieu avec des bâtons fait en 1X2 mesurant chancuns 9 pouces. J'ai fait de même pour réunire les cercles 2 et 3. (Voir la première image)

Sur mon R2, je voulais avoir une porte à l'arrière pour pouvori accéder aux pièces électroniques. J'ai donc fait un cadre de porte avec 2X un quart de cercle 11 pouces et des bâtons 1X2. et des pentures.(Vous pouvez voir le cadre de la porte sur la seconde image)

J'ai également ajouté une table tournante (que vous pouvez dans toutes bonnes qunicailleries) pour permettre au dôme de tourner librement. Il est important de noter que l'électronique du dôme et de la base sont completement indépendante l'une de l'autre pour que le dôme puisse tourner sans aucune contrainte (pas de fils qui s'entortillent)

Pour faire la jupette, j'ai coupé de petit triangles en MDF et je les ai collés sur la base en suivant une forme hexagonale. Par la suite, je les ai reliés avec des petits rectangles de carton. (Voir les images 2 et 3)

La peau (comme on peut dire) de R2 est composée de carton épais, comme vous pouvez trouver dans les magasins de bricolage (genre Omer Deserres). Il y a deux couches de peau, la première est pleine et la seconde est découpé (images 4 à 6) selon le gabarit de l'image 7 que j'ai trouvé sur le forum suivant:

Des calculs simple wous permettrons d'Ajuster le gabarit à la taille de votre R2. Pour l'assemblage de la première couches j'ai utilisé une brocheuse et de la colle blanche. Pour la deuxième couche, j'ai utilisé de la colle contact, alors soyez vraiment prudent car cette colle ne permet pas d'ajustement étant donné qu'elle colle instantanément.

Tous les petits gadgets qui décorent R2 sont fait de chose simple que vous trouverez facilement. Par exemple, les trous de ventilations sont fait de support à lame de rasoir et l'autre gadget plus bas est fait d'un assemblage de bouchon de bouteille, de bouchon de bocal et de carton peint en bleu. Donc, aucun besoin d'une imprimante 3D.

Step 6: Legs and Feet


OK, we will now talk about the legs and feet. I made my legs from an MDF board cutted with a jigsaw, but plywood can do. First picture is the template. So I took some measurement from and ajusted the size to fit my 11/14 th size. You need to glue together all the layers and it should look like picture 2. The piston part is made of a wood cylinder, a spring to assemble sheet of papers and a cigar tube.

Pictures 3, 4 and 5 show the wheels and motors assembly. I took some aluminum right angle bracket to mount the motors, the wheels and the chain. The center foot has a free wheel and the droid will be steered with a diffenretial propulsion.

Pictures 6 to 9 show the final assembly steps for the feet and legs.


Bon, nous allons maintenant discuter des pieds et des jambes. J'ai réalisé mes jambes à partir d'une planche de MDF que j'ai coupé à la scie sauteuse. Une planche de plywood peut également faire l'affaire. J'ai utiliser les mesures du site et je les ai ajusté à mon échelle 11/14 ieme. Il faut collé les pièces ensemble et le résultat final devrait ressembler à l'image 2. Le piston que vous pouvez voir sur l'image est un assemblage d'un gourdin de bois, d'un anneau de reliure et d'un tube à cigare.

LEs images 3, 4 et 5 montre l'assemblage des roues et des moteurs. J'ai utilisé des équerres d'aluminium pour assembler les moteurs, les roues et les chaines. Le pied central dispose d'une roue libre et le robot sera dirigé par une propulsion différentielle.

Les images 6 à 9 montre l'assemblage finale des pieds et des jambes.

Step 7: Base Electronic / Électronique De La Base


OK, so the electronic in the base is pretty straithforward.

In the base:

  • 2 pololu USB motor drivers
  • 1 raspberry pi
  • 1 USB power pack (the kind you use with smartphones)
  • 1 12 volt batterie (for the motors)

In each foot:

  • 1 motor, wheel and chain


OK, alors l'électronique de la base est assez simple

Dans la base:

  • 2 cartes contrôleurs de moteur USB Pololu
  • 1 Raspberry pi
  • 1 batterie USB (comme celles utilisées pour les smartphones)
  • 1 batterie 12 volt (pour les moteurs)

Dans chaque pied

  • 1 moteur, la chaine et la roue

Step 8: Software / Logiciel

English :

The crunchy part, programming the whole thing. First, the software required.

First, the dome:

The dome is the main brain of R2. It contain the principal web server that will orchestrate all the interaction we will have with R2.

Main Web Server Apache 2:

The main web server is base on apache.

follow this link for a complete set of instructions for apache.


After installing Apache, we will need to install mod_python. Mod_python is a add-on to Apache to make python script run smoothly on your web server and interact with the raspberry pi GPIO and other stuff. It's a great add-on to master. Use this command to install mod_python : Apt-get install libapache2-mod-python


Next, you're going to need mjpeg-streamer to stream the camera video in your browser. Follow this link for a detailed installation process for mjpg-streamer:

Tornado Web-Socket:

We are going to use web-socket to pass real time info between the web-browser and the raspberry pi. So you will need to install Tornado on your Raspberry Pi

Use this command to install tormado : pip install tornado

Next, the base:

The base will need Apache, Mod_Python and tornado., so redo the same process on the base.

We are all set, next step will contain the code.


La partie juteuse, la programmation. Tout d'abord, les logiciels requis

Premièrement, le dôme:

Le dôme est le cerveau principal de R2. Il héberge le serveur Web principal et il va orchestré toutes les interactions que nous aurons avec R2.

Serveur Web Principal Apache 2:

Le serveur web principal est basé sur Apache.

Suivez ce lien pour des instructions complète d'installation de Apache


Après l'instalaltion de Apache, nous allons installer mod_Python. Mod_Python est un ajout à Apache qui permet d'exécuter des scripts Python sur le server web qui permettront d'interagir avec les GPIO du raspberry pi. C'est une très belle extension à maîtriser. Utiliser la commande suivante pour installer mod_python : Apt-get install libapache2-mod-python


Ensuite, nous allons avoir besoin de mjpg-streamer pour visualiser les vidéo de la caméra dans le fureteur. Suivez ce lien pour un processus d'installation complet de mpg-streamer:

Tornado Web-Socket:

Nous allons utiliser les web-socket pour passer de l'information en temps réelle entre le fureteur web et le raspberry pi. Nous allons donc installer Tornado sur notre Raspberry Pi.

Utiliser la commande suivante pour installer tornado : pip install tornado

La base:

La base utilisera Apache, Mod_python et Tornado, alors refaire les mêmes procédures pour la base.

Nous avons maintenant tous les prérequis, alors la prochaine étape contiendra le code proprement dit.

Step 9: The Interface / L'interface


R2D2 is controlled with a web page, soft-joystick and python code connected to the Web interface with Web-Socket for real time communication (Python code will be on a subsequent step)

Picture 1 illustrate the interface and picture 2 brakes the interface in small blocks.

Look in the txt file to see the source code for the html (I had to rename it txt because I could not upload the html files)


R2D2 est controlé par de pages WEB, des joystick virtuels et du cone python qui est interconnecté à l'interface WEB par Web-Socket pour la communication en temps réel. (le code python sera adressé dans une prochaine page)

L'image 1 illustre l'apparence de l'interface alors que l'image 2 le scinde en petit blocks.

Regardez les fichiers .txt pour voir le code HTML (J'ai dû les renommers txt parce que je n'étais pas capable de téléverser les fichiers html)

Step 10: The Python Websocket Back-end / La Logique De Support Python / Websocket


As stated earlier, part of the brain of R2 rely on a simple Web interface running on an Apache server, but the real time part relies on python script and tornado websocket server. Web-Socket enable real time communication between a browser and a server. So to pass the values of the virtual-joystick, I needed to integrate web-socket in my control logic so the joystick movement would be translated in R2 movement in real time.

Picture 1 illustrated the different python script needed and the .py files contains the script them self. I also included the etc/rc.local file needed to load the scripts at startup.


Comme discuté plus tôt, une bonne partie du cerveau de R2 est basé sur un simple serveur Web Apache, mais certaines commandes doivent être en temps réel et nous avons donc besoin d'un support python et tornado Web-Socket. En effet, pour passé les valeurs du joystick virtuel à R2 en temps réell, il a fallu intégré des Web-sockets dans ma logique de commande. Chacun des mouvements du joystick était donc transmit à R2 en temps réel et créait un déplacement.

L'image 1 illustre les différents script python utilisés et les fichiers .py contiennent les scripts eux-mêmes. J'ai également inclut une copie du fichier etc/rc.local qui permet de chargé les scripts au démarrage de R2.

Step 11: Trinket Code / Code Trinket


Trinket are small arduinos. I needed trinkets in the dome to control the neopixel led arrays and rings. Why not use the Raspberry Pi will you ask, well it has to do with timing issues.

So here is the code for all the trinkets


Les trinkets sont de petit arduinos. Il a fallu que j'intègre des trinkets dans le dome pour contrôler les matrices et anneaux neopixel. Pourquoi ne pas utiliser le Raspberry Pi demanderez-vous? Eh bien il semblerait que c'est en raison de problématique de timing.

Alors voici le code des trinkets.

Step 12: That's It !!! / Et Voilà !!!


With a lot of time, a little expertise, and some help from google, I was able to bring this little guy to life in 6 months

If you decide to make one for yourself, your in for a lot of fun.

Thanks for reading this instructable


Avec beaucoup de temps, un peu d'expertise and de l'aide de google, j'ai donc réussi à donner vie à ce petit bonhomme après 6 mis.

Si vous décidez de vous en faire un, vous aurez énormément de plaisir.

Merci d'avoir lu cet instructable

Sci-Fi Contest 2016

Runner Up in the
Sci-Fi Contest 2016

Make it Glow Contest 2016

Participated in the
Make it Glow Contest 2016

First Time Authors Contest 2016

Participated in the
First Time Authors Contest 2016

2 People Made This Project!


  • Made with Math Contest

    Made with Math Contest
  • Multi-Discipline Contest

    Multi-Discipline Contest
  • Robotics Contest

    Robotics Contest

22 Discussions


2 years ago

Awesome job!

Could you post some more details about the drive motors, types specs, where to get them, as well as the gears and chain?


3 replies

Reply 2 years ago

Hello and thank you for your comment.

The motors, chain and wheels all came from

24 Volt 100 Watt Electric Scooter Motor
24V 100W 2500 RPM electric scooter motor. Powerful four brush permanent magnet design with 100% ball bearing construction. Includes 9 tooth sprocket for #25 chain. 12" long power leads with terminal connectors. Shaft rotation reversible by reversing power leads. Dimensions: 2-5/8" wide x 3-7/8" long excluding shaft, 4-7/8" long including shaft. Made by Unite®.
Item # MOT-24100

5-1/2" Rear Wheel with Solid Urethane Tire and Chain Sprocket
Rear plastic electric scooter wheel with solid flat-free urethane tire for chain drive Razor® E100, E125, E150, & E175 electric scooters. Includes chain sprocket, two wheel bearings, axle, axle adjusters, and mounting hardware.
Item # E100-REARWHEEL2


Reply 2 years ago

Exactly what I needed! Sometimes the hardest part of the project is finding the right parts.


Reply 2 years ago

Glad it could help. I had the same problem finding the right kind of propulsion :-)


2 years ago

You say the electronics in the dome "are completely independent of the base, no wires to tangle". Does that mean that there is a separate battery in the dome to power the electronics in it, or is there a set of leads to provide power from the base?

1 reply

Reply 2 years ago

Indeed, there is a usb powerpack in the dome and a usb powerpack and a 12V battery in the base.


2 years ago

carrément génial ....

C'est possible d'avoir les références des pièces électroniques en dehors de RPi ?


1 reply

Reply 2 years ago

Bon matin Thierry, je vais chercher dans mes factures et sortir une liste complète des pièces. Je te reviens d'ici quelques jours


2 years ago

Wow that's beautiful :)
Nice build, and thank you for sharing it!

1 reply

2 years ago

What a great project! You have done an amazing job and a great write up too. Most of this is over my head, but it looks like a nice system for real time communications. Keep up the great work; you have a new follower.


1 reply

Reply 2 years ago

Thank you for such a nice comment. Indeed, the websocket is quite amazing for real time communication. I might do an instructable exclusively on it some day.

Take care