OSR2 Build Instructions
OSR2 Build Instructions
June 2022
If I had to guess I would say that the secret to its success is its simplicity. The base 2-axis design
is essentially only six 3D printed parts, some bolts, a couple of servos and a microcontroller. Even
as I have expanded the design to include movement in 4-axes and variable suction, as well as
some other mods not listed in this document, I have kept to the same philosophy: keep it simple,
and keep it o -the-shelf. This is a toy that you can build, upgrade and maintain for yourself, and
you don’t even need to be a skilled hobbyist to do it.
I have created this pack as the ideal “start here” point for the new OSR2 builder. OSR2 is ideal for
people who are new to homebuilding toys because it’s a modular design. You can start simple,
with just the basic design, and then upgrade your machine as you go along. These plans will walk
you through the process step by step; they also include a complete list of the parts that you will
need.
This guide includes assembly guides for the OSR2, a pitch control module (OSR2+), a twist
receiver (T-wist) and the automatic variable suction valve (T-valve). My recommendation is that you
work through building your OSR2 a stage at a time, but I accept that a fair few of you will just
jump in with both feet and build the whole thing in one go!
I would like to thank you all for supporting my work. Even now the design, hardware and software
of OSR2 continues to evolve, and it’s you guys that make it possible.
Tempest, 15-5-2022
2
fi
ff
fi
Table of contents
Introduction 2
Table of contents 3
Record of changes 4
Description 5
Tools 6
OSR2 Assembly 7
3D printed parts list 7
O -the-shelf parts list 9
Assembly steps 11
Pitch Module (OSR2+) Assembly 17
Pitch module parts list 17
Pitch module assembly steps 18
Power Bus 19
T-wist Module Assembly 21
T-wist parts list 22
T-wist assembly steps 25
T-wist cable routing 30
T-Valve 31
T-valve parts list 31
T-valve assembly steps 33
Using the T-Valve with the OSR2 36
The Romeo BLE mini 37
v2 vs v1.1 37
Vibration channels 38
Power Users 38
Alternatives 38
The ESP32 DevKit v1 39
Bearing Arms 41
Fan Lid 42
Servos 43
The Tempest Discord Server 44
The MOSA test app 44
Troubleshooting 45
Complete parts list 47
A word about personal safety 48
And nally… 48
3
ff
fi
Record of changes
Issue Date Changes
4
fi
fi
fi
Description
The OSR2 is a Multi-Axis Stroker Robot (MAxSR) designed to hold and move a standard eshlight
or similar toy with 2-4 degrees of freedom. It is constructed from a combination of 3D printed
plastic and commercial o -the-shelf components. It is designed to be home built, modi able, and
user-repairable.
The basic OSR2 can move up and down and roll left and right. A module can be added to the side
of the device to add an extra axis. This con guration is called the OSR2+ and is also capable of
pitch forward and backward.
In the OSR2 the standard eshlight is mounted into a ring-shaped part called the receiver. This
part can be upgraded with a twist mechanism or “T-wist”, which adds a fourth movement axis
and allows the OSR2 to rotate the mounted toy around the stroke axis.
At the core of the OSR2 are two 20kg.cm hobby servos, which provide the driving force; and
additional attachments also use various other servos. The default stroke length of the OSR2 is
136mm, and the pitch and roll axes can rotate the receiver approximately ±30 degrees. The twist
angles depend on the type of servo used.
OSR2 OSR2+
The “OSR2.1” featured in this document is an improved version of the original OSR2 that features
a redesigned base, as well as modi ed arms and receiver.
Control is via a generic open source USB serial protocol called T-Code. The OSR2 uses a a
Romeo BLE min arduino-based microcontroller, or an ESP32 microcontroller to receive these
simple commands and calculate the appropriate control angles for each of the servos to achieve
the desired position for the receiver.
The OSR2 is a hands-free machine that mounts to a standard VESA 100mm hole pattern using 4x
M4 bolts. This means that an enormous range of mounting options, mostly in the form of display
and monitor stands, are commercially available. There are also a couple of 3D-printable desk and
chair clamp options available on my Patreon/SubscribeStar/Discord platforms.
Tools
To assemble the OSR2 you will need Allen keys and/or a screwdriver. You may also nd a craft
knife and/or a pair of pliers useful.
You may want to secure some parts (eg M4 nuts) with a tiny dab of superglue, but this is optional.
I also recommend having a tub of Vaseline for use as a lubricant for the gears in the T-wist.
If you are using M4x30 bolts for the exing joints you will need to use a hacksaw, and a le on the
cut end. Be careful, steel can be sharp!
The external power power bus upgrade does require a soldering iron and some very basic
electronics skills, but this is optional. Everything else on the OSR2 is plug-and-play.
You will need a copy of the Arduino IDE on your computer. This can be downloaded for free from
www.arduino.cc.
6
fi
fl
fl
fi
fi
OSR2 Assembly
The o -the-shelf parts should be easily available through ebay, amazon, local hardware or hobby
shops, etc.
7
fi
ff
fi
fi
fi
OSR2.1 Lid
OSR2.1 Receiver
OSR2.1 Arm
8
fi
fi
O -the-shelf parts list
These are the o -the-shelf components that you will need to assemble a working OSR2.
For the hardware parts such as bolts you might be able to nd most or all of them from your local
hardware store, but I have found ebay to be the most reliable source for this sort of thing.
See notes on
9
ff
ff
ff
ff
fi
A female connector with a set of trailing
leads.
5.5x2.1mm female
1x
barrel jack connector The exact model is not important as long
as it is compatible with your power
supply.
10
fi
fi
Assembly steps
1) Insert 4x (or 8x) M4 nuts into the mounting holes you intend to use on the base part. You can
secure them in place with a dab of superglue if you wish. Then insert 4x M4x10mm bolts, with M4
washers into the holes from the back. These are the bolts that will be used to attach the OSR2 to
your mount of choice.
2) Install the Romeo BLE mini into the slot at the top of the base so that the micro USB port is
aligned with the hole. Then secure it in place with 3x M3x6mm bolts, screwed into the plastic.
3) Install the trailing leads from the female barrel jack into the “Servo” screw connectors on the
Romeo. Ensure metal-to-metal contact between the wire and the terminals and that the red wire
goes to “+”, black goes to “-“.
11
4) Place the female barrel jack into the holder to the left of the Romeo and secure it with a cable
tie.
5) Install the 2x servos into the base. Ensure that the servo leads protrude from the end nearest
the Romeo, then secure each servo with 4x M3x12 bolts with M3 washers screwed into 4x M3
nuts inserted into hex features on the inside of the base wall.
6) Plug the servos into the Romeo. Plug the left servo into the green-red-black pins marked “8”,
the right servo next to it into the pins marked “3” (as of OSR-Release2_7.ino). Match Red to Red
and Black to Black, and that will put the data wire (whatever colour it is for your servo) on the
correct pin.
12
7) Install the 4x 6mm wiring grommets into the 4x 7mm diameter holes in the 2x arms and the
support arm. There should be one on each arm, and one on each end of the support arm.
8) Plug the Romeo into a USB port on your computer via the micro USB cable. Connect a power
supply to the power jack on the OSR2. Make sure that the power supply is set to a voltage that
the servos are rated to; 5V is safe for most servos.
9) Open the Arduino IDE program and load the OSR2 sketch (.ino le format). From the Tools
menu check that the Board is set to “Arduino Uno” (exact text can vary depending on your OS),
and check that the Port selected is the one that is connected to the Romeo. Then click the upload
arrow in the top left.
13
fi
You should see lights ashing on the Romeo as the upload occurs and after about 5 seconds you
should see a message saying “Done uploading”.
If the upload process is unsuccessful the rst time try the upload button again. Ensure you you
have the Board and Port set correctly. Disconnecting servos during upload sometimes resolves
any issues.
If the upload is successful you should observe the servos moving to a set position.
10) In the Arduino IDE Open the Serial Monitor from the Tools menu. In the new window that
opens ensure that “Newline” is set and “115200 baud” is selected. This should result in two
messages beginning with “TCode” appearing in the window. This tells you that the sketch has
been uploaded successfully to the Romeo, and that it is talking to your computer.
If you do not see anything, or the message is garbled, try unplugging the Romeo and closing the
Serial Monitor, plug the Romeo back in and re-open the Serial Monitor.
Try entering some T-Code commands into the text box and hitting “Send”:
Feel free to try di erent numbers. See the TCode document for a full description of how TCode
works.
If the servos are moving up when they should be moving down, you have them backwards.
Switch the connector positions on the Romeo, matching Red/Red and Black/Black as before.
14
ff
fl
fi
11) Close the Arduino IDE and unplug the Romeo from the USB cable. Wait a few seconds, then
reconnect it. The servos should automatically return to a neutral position. With the servos in this
position place the Futaba 25T M3 servo horns onto the servos so that they are at right angles to
the base. Tighten the tiny screws on the servo horns in this position.
12) Install the 2x arms onto the the servo horns and secure each with 2x M3x10 bolts and M3
washers.
13) Install the support arm onto the mounting point on the left side of the base using an M4 bolt
screwed directly into the plastic.
This bolt can either be an M4x20 bolt or, for better results, use an M4x30 bolt cut down to about
22mm shaft length (ie like an M4x22). The latter should leave a 10mm section of unthreaded shaft
protruding through the grommet.
15
14) Install the receiver onto the end of the three arms using the 3x remaining M4 bolts. These
should form the same joints as described above.
15) Collect up the servo wires so that they are inside the base enclosure and install the lid. The lid
should clip securely into place on the top of the base.
16
Pitch Module (OSR2+) Assembly
The OSR2+ is an OSR2 with a simple bolt-on modi cation called a pitcher that adds a second
rotation axis by employing a 3rd servo.
OSR2+ Spacer
4x M3 Nut
17
fi
fi
fi
Pitch module assembly steps
1) Install the servo into the pitcher part and secure it with 4x M3x12 bolts and M3 washers.
These screw into 4x M3 nuts inserted into hex features on the inside of the pitcher housing.
2) Wrap the servo lead through the holes in the pitcher plate so that it’s out of the way.
5) Power up and reset the OSR2. This will drive the pitcher servo into the neutral position.
6) Now install the servo horn and pitcher arm with M3x10 bolts and M3 washers. The arm should
be parallel with the pitcher plate when the servo is in the neutral position.
8) On the OSR2 remove the M4 bolt holding the support (3rd) arm to the base.
9) Turn the bolt around and attach the support arm to the pitcher arm. The bolt should be
screwed into the plastic far enough so that the pitcher arm is free to move forward and back
without colliding when the pitcher is in position.
10) Mount the pitcher to the OSR2 by sandwiching it between the OSR2 base and the VESA
mount using the 4x M4 mounting bolts. Two of the bolts should pass through the pitcher; the
other two bolts should pass through spacers.
11) Thread the pitcher servo cable into OSR2 enclosure and plug in to pin 9 on the Romeo. The
OSR2.1 enclosure has a hole in the lower left corner that can be opened for this purpose.
18
Power Bus
In this section I will show you how to make a power bus. This is useful if you want to avoid putting
too much power through the Romeo or if you want to use another type of Arduino. It also allows
you to add a power switch so that you can turn the power to the servos on and o at will, which is
a useful feature.
Servos essentially require three connections: power, ground, and signal. With this in mind, the
wiring diagram for the OSR2+ is shown below.
Note that the servo power is completely independent of the Arduino. Also note, however, that
because the servo signal wires connect to the Arduino, it is necessary to connect the servo
ground wires to ground on the Arduino in order to complete the circuit.
The advantage to using the Romeo is that it’s plug-and-play; all of the wiring is built into the
board. It is, however, very easy to assemble an alternative to the Romeo’s servo pins using a
piece of copper stripboard, some 0.1” header pins, and multi-stranded jumper wire. The jumper
wire you use should be rated for the power rating on your power supply.
Cut out a piece of stripboard that is two strips wide, so that one can be used for positive and the
other for negative. The header pins can be soldered into the board in two rows, e ectively
providing power rails that the servos can be plugged into. The jumper wires to connect the power
bus to the Arduino and to the power supply should also be soldered into the positive and negative
power rails.
If you want to add a power switch it should be located on the power wire between the jack plug
and the power bus. There is a hole for it in the top right corner of the OSR2 base.
19
ff
ff
The signal cables need to be plugged in to the appropriate pins on the Romeo. To do this you can
remove them from the connector housings by using a craft knife or similar tool to lever up the
plastic clip that holds them in place. I recommend wrapping a piece of electrical tape around the
bare metal connector tting so that it does not foul on adjacent connectors.
The servo connector, now containing only the power and ground cables, can be plugged into the
power bus. Be sure to plug these in the right way around! Also make sure that the exposed metal
pins on the bottom of the bus are not shorting on anything metal, especially if your servos have
metal bases. Again, you can use tape to prevent metal-to-metal contact.
If you would like more details I have now produced several tutorial videos for this modi cation,
which are available on my Patreon page.
20
fi
fi
T-wist Module Assembly
The T-wist is a modi cation for the OSR2 that adds an additional movement axis. The new axis is
180° or 270° rotation (±90° or ±135°) of the eshlight case around the long axis.
T-WIST 4
The twist movement is achieved by means of a rotating ring mount inside the receiver, which is
driven by a standard sized servo. This is made possible by the use of a simple gearbox that
transfers the servo movement to the ring with a 1:1 ratio.
Previous versions of the T-wist have used a continuous rotation servo and depended on some
kind of feedback system. Versions 1 and 2 used a potentiometer located at the top of the
eshlight case in a T-valve housing; version 3 used a speci c servo type, the Parallax 360, which
has a feedback wire. Version 4 therefore represents a welcome simpli cation!
T-WIST 2 T-WIST 3
21
fl
fi
fl
fi
fi
T-wist parts list
This is a complete list of the parts that comprise the T-wist.
The 3D printed parts are supplied in .STL format; you can print them yourself or order them from
an online 3D printing service. Unless otherwise speci ed the STL les are provided in the intended
build orientation and are designed to be printed without supports.
The o -the-shelf parts should be easily available through ebay, amazon, local hardware or hobby
shops, etc.
This is the clip-on lid that sits over the servo on the
1x
receiver body.
22
ff
ff
ff
fl
fi
fi
T-wist 4 Transfer Gear
23
fi
ffi
The two parts of the receiver are held together
Bolts, washers, etc using (6x) M3x8 and (4x) M3x10 bolts, which
screw directly into the plastic. Likewise the servo
7x M3x8 Bolt is held in place with (4x) M3x10 bolts, with M3
12x M3x10 Bolt washers.
9x M3 Washer
4x M3x10 bolts with M3 washers mount the metal
*4x M2x6 Bolt servo horn to the drive gear. An M3x8 bolt and
*4x M2 Washer washer mounts the horn to the servo.
*1x M3x16 Bolt
*If you are using a plastic servo horn you will
instead need (4x) M2x6 bolts and washers, and a
single M3x16 to attach the drive gear to the servo.
Servo lead extension
You will also want your OSR2 to hand so that you can check that the mechanism is working.
24
T-wist assembly steps
1) Mount the servo into the receiver body and attach it using 4x M3x10 bolts and M3 washers. Do
not fully tighten the bolts at this stage: allow some freedom of movement to the servo.
2) If you are using a metal servo horn (recommended), place it onto the servo and secure it in
place with an M3x8 bolt and M3 washer. Then install the drive gear onto the servo horn using 4x
M3x10 bolts and M3 washers.
25
2A) If you are using a plastic servo horn mount the servo horn to the drive gear rst using 4x M2x6
bolts and M2 washers. You may need to enlarge the holes in the plastic servo horn to do this.
Next install the horn and gear onto the servo using the M3x16 bolt and an M3 washer.
3) Install the transfer gear into the receiver body and insert the M3x25 dowel through the gear so
that it sits in the hole on the receiver body.
4) Place the ring gear on the receiver so that it intermeshes with the transfer gear.
26
fi
5) Place the receiver base onto the receiver body, making sure that the M3x25 dowel sits in the
appropriate hole in the receiver base. Temporarily secure the receiver base in place using 2x
M3x10 bolts.
6) Check that the mechanism is working correctly by turning the ring gear by hand. You should be
able to feel and hear the servo rotating in train with the gears as you do this.
7) Move the servo into a position where you can feel the drive gear smoothly engaging with the
transfer gear and tighten the 4x M3x10 bolts to fully secure the servo in place.
8) At this point an optional but highly recommended step is to remove the base and liberally coat
all of the mechanism contact surfaces with vaseline. This makes an enormous di erence to how
smoothly (and quietly!) the mechanism will run.
27
ff
9) Close up the two halves of the receiver fully using 6x M3x8 bolts and 4x M3x10 bolts, screwing
directly into the plastic. This completes the assembly of the T-wist mechanism.
10) Make sure your OSR2’s Romeo BLE mini is running OSR-Release3_4.ino or later. (SR6-
Alpha4_ESP32.ino or later if you’re using an ESP32)
11) Hook up the servo to pin 10 on the Romeo in the OSR2 (D27 on the ESP32).
12) When you power on the OSR2 the T-wist should now respond to R0 T-Code commands. You
can test this by using issuing these commands using something like the Arduino Serial monitor
(as detailed in the OSR2 build instructions) or the MOSA web app. https://trymosa.netlify.app/.
With the T-wist functioning you can now install the receiver onto the OSR2 in place of the old
receiver.
13) Feed the servo cable extension down the conduit on the side of the receiver and connect it up
to the servo.
28
14) collect up the spare cable and tuck it inside the lid, which you can then clip down.
15) Install the twist receiver onto your OSR2 in place of the original receiver.
16) Use cable ties and spiral cable binding to route the cable back to the OSR2 enclosure. Use
gentle curves to avoid putting excessive strain on the cable during use.
29
T-wist cable routing
A frequently occurring problem with previous versions of the T-wist was wires going to the servo
on the receiver becoming damaged by the movement of the device. This was compounded by the
usual point of failure being where the wires met the servo itself, with the specialised parallax servo
being particularly expensive and di cult to get hold of.
This new version of the twist receiver addresses this problem in two ways. First, it uses a generic
servo and the servo wires themselves do not see any bending. It’s just the servo extension cable
that bends and this component is a lot less expensive to replace.
Secondly, the new receiver routes the extension cable out of the front of the receiver. This is so
that the bend radius for the cable is nice and gentle and therefore in theory it should not see any
harsh localised bending. Added to this the best way I have found to protect the extension is to
use spiral cable binding to wrap it up with a tougher piece of wire, for example a length of bicycle
brake cable.
30
ffi
T-Valve
The T-Valve is an automatic valve that controls the level of suction inside a standard eshlight
case. It screws on top like a regular cap, but it uses a 9g micro-servo to constantly adjust the air
resistance in and out of the case during stroking. It means your T-Code device can change the
level of suction from stroke to stroke!
The 3D printed parts are supplied in .STL format; you can print them yourself or order them from
an online 3D printing service.
The o -the-shelf parts should be easily available through ebay, amazon, local hardware or hobby
shops, etc.
T-Valve Blades
This is the moving part of the T-Valve, used to
control the aperture size.
1x
It includes a lever that indicates the valve position
and allows the angle of the blades to be set
manually when the servo is not powered.
31
ff
fl
fl
T-Valve Lid
Micro (9g) Servo Very little force is needed to move the T-Valve
blades, so a small servo is required. For example a
Sparkfun Small Servo (ROB-09065).
Paperclip
A large, sturdy, paperclip. This is to form the drive
linkage from the servo to the blades.
1x
If you want to be fancy you can use a bit of model
makers’ brass rod instead.
32
T-valve assembly steps
1) Take the micro servo and a servo horn with a hole 12mm from the centre. Install the horn onto
the servo with the horn in the 12 o’clock position with the servo centred. An easy way to do
this is to temporarily plug the servo into pin 2 or 3 on an OSR2, which automatically centres
the servos connected to these pins at startup.
2) Take the micro servo and feed the lead down through the hole at the base of the servo
enclosure on the T-Valve Base. Then place the servo on the top of the base so that you can
feed the lead up and then down inside the grooves inside the enclosure.
3) Gently slide the micro servo into the enclosure ensuring that the servo lead is seated
comfortably in the up and down grooves. Installing the lead in this manner prevents any
tension applied to the lead during use from causing damage to the electrical connections
inside the servo.
4) Screw the micro servo into position with 2x M2x8 bolts with M2 washers, screwed directly into
the plastic.
33
5) Place the T-Valve Blades onto the top of the base and screw them down using an M4x20 bolt
with an M4 washer. Note that the washer is under the bolt head; the blades should ride
directly on the top of the base.
6) Tighten the M4 bolt to the point where the blades are unable to rotate, then turn the bolt back
slightly so that the blades are still held in contact with the base, but are able to turn freely.
7) Rotate the blades and the servo horn so they are both in the 12 o’clock position. Straighten
out the paperclip and cut o a straight piece to span the distance between the two holes, with
approximately 10mm extra on each end.
34
ff
8) Bend the paperclip rod so that it can be inserted into the 12mm-o -axis hole on the servo and
the drive hole on the valve blades. If the bends are the right distance apart both parts should
be in the 12 o’clock position at the same time. This might require a little bit of adjustment.
9) When the rod is the right length, bend the ends over so that the rod is held captive. Note that
the rod at the servo end must be bent back inward toward the valve blades. This will prevent it
fouling on the lid when it is installed.
10) Install the T-Valve lid onto the top of the base, covering up the servo and blades. Fix it into
place from underneath using 2x M3x10 bolts with M3 washers.
35
ff
11) The T-Valve can now be installed onto the top of a standard eshlight case. Unlike a standard
cap, it should be screwed down all the way so that the valve now controls all of the air ow
into and out of the case.
The T-Valve requires that the Romeo is running OSR-Release2_3.ino or later. By default the
rmware drives the valve automatically, opening the valve on the down stroke but closing the
valve to 50% for the up-strokes.
As of T-Code v0.3 (OSR-Release3_0.ino or later) the valve is now controllable via the A0 or A1
channels (0 = fully open, 999 = fully closed). A0 directly sets and xes the valve position, whereas
A1 allows a suction level to be set, with the valve moving to the commanded position, but
automatically opening on down strokes. The OSR2 will adopt the mode of the channel on which
the last command was sent.
36
fi
fl
fi
fl
The Romeo BLE mini
The Romeo BLE mini is a wonderful little board for putting together a device like the OSR2
because it o ers plug-and-play, without the need for soldering or DIY electronics. it is therefore
ideal for the novice homebuilder.
Remember to set the board type to “Arduino/Genuino Uno” when uploading to the board from the
Arduino IDE.
v2 vs v1.1
The current version of the Romeo BLE mini is the v2, and it is this version for which the OSR
Arduino sketch is written. The OSR sketch can run just ne on a Romeo BLE mini v1.1 however,
with only a small modi cation.
You will know that you have a v1.1 because the digital pins, into which you plug the servos, will be
labelled “2,4,8,9” as opposed to “2,3,7,8” on a v2. You may have discovered this because you
plugged everything in as you should, but the arms aren’t moving correctly.
This is not a problem. All that you need to do is go into the Arduino Code and change the pin
assignments. Look for this section in the Arduino sketch (OSR-Release3_4.ino at the time of
writing):
// Pin assignments
// T-wist feedback goes on digital pin 2
#define Servo1_PIN 8 // Left Servo (change to 7 for Romeo v1.1)
#define Servo2_PIN 3 // Right Servo (change to 4 for Romeo v1.1)
#define Servo3_PIN 9 // Pitch Servo (change to 8 for Romeo v1.1)
#define Servo4_PIN 12 // Valve Servo
#define Servo5_PIN 10 // Twist Servo
#define Vibe0_PIN 5 // Vibration motor 1
#define Vibe1_PIN 6 // Vibration motor 2
37
ff
fi
fi
Vibration channels
The Romeo BLE incorporates a dual motor controller. These are fully functional through the
TCode V0 and V1 channels. You can hook up vibration motors to the M1 and M2 screw ttings,
powered from the “Vin” connector, and they will respond to TCode commands.
Power Users
The Romeo is designed for simple hobby robots and that means that if you start pulling serious
amps through the board by using high powered servos at high speeds you run the risk of burning
it out. If you consider yourself to be a power user, so to speak, then I recommend that you create
an external power bus for the servos so that the main power circuit does not pass through the
Romeo.
Alternatives
In theory any Arduino compatible board such as a Nano or UNO could be used as an alternative
to the Romeo to drive a stroker robot. If you want/need to substitute another board type I would
recommend building yourself an external power bus to distribute power to the servos. Remember
to set the board type appropriately, and update the pin de nitions if you need to.
38
fi
fi
The ESP32 DevKit v1
The ESP32 is a microcontroller that can be used in place of the Romeo BLE mini to control the
OSR2. Its main advantage is that it is substantially more powerful, which allows it to command
servos at frequencies up to 330Hz, as opposed to the 50Hz o ered by the Romeo. It has also
found favour with a large proportion of the user base because paradoxically it is often a lot
cheaper and more available than the Romeo.
The downside to the ESP32 is that it is not plug-and-play in the same way as the Romeo. You will
de nitely need to use an external power bus with the ESP32.
If you are using expensive, high performance servos the higher command frequency o ered by
the ESP32 will make a considerable di erence to the smooth running of the servos, which makes
it a very desirable upgrade.
The rmware is uploaded to the ESP32 from the Arduino IDE in the same way as with the Romeo.
You will need to install the ESP32 add-on; you can nd a useful set of instructions for this here or
here. Before uploading select “DOIT ESP32 DEVKIT V1” as the board type.
In an OSR2 the ESP32 is actually used with the latest SR6 rmware. You will have to switch this
over to operate in OSR2 mode by altering this line near the top of the .ino le.
The pin assignments for the ESP32 are listed in the .ino le, and the servo signal pins are
connected to the appropriate “D” pins as on the Romeo. The defaults are:
As with the Romeo, the ESP32 must also be connected to ground on the power bus through one
of the “GND” pins.
39
fi
fi
ff
fi
fi
fi
ff
fi
ff
An alternate OSR2.1 base design is available to accommodate the ESP32 DevKit v1 in place of
the Romeo BLE. Unlike the Romeo the ESP32 is mounted upside down, but windows have been
cut into the base to make the pin numbers visible.
The ESP32 has wi capability, though this is not at present supported by the o cial rmware. If
you are interested in exploiting this feature I highly recommend that you look up Khrull and his
alternate SR6/OSR2 rmware.
The ESP32 is mounted using 4x M2x6mm bolts, with washers, which are not included in the parts
list.
40
fi
fi
ffi
fi
Bearing Arms
An alternate arm option is available for the OSR2, designed around rod end bearings rather than
the wiring grommets used by the default design. These have the bene t that they allow a lot less
play in the exible joints. The bearing parts can however be more di cult and expensive to get
hold of.
To build these arms you will need 4x 4mm rod end bearings. Sometimes called “rose joints” or
“ sh eye bearings”. The type used should have a threaded shaft with an M4 metric thread, and a
4mm hole. Each bearing is held in place using 2x M4 nut, meaning 8x nuts in total will be needed.
To install a rod end bearing rst insert an M4 nut into the slot on the end of the arm or link. Next
screw a nut onto the bearing shaft. The bearing shaft can now be inserted into the hole on the end
of the arm or link and screwed down into the desired position. Finally, to secure the bearing in
place, the nut on the bearing shaft can be tightened against the arm or link using a spanner
(wrench) or a pair of pliers.
To allow full freedom of movement for the 3x bearings that attach to the receiver must be
attached via a 3D printed 4x3mm spacer. These sit between the receiver and the link with the
narrow end pointing toward the bearing.
This release comes with a bearing arm design and two bearing link designs: a standard design,
and one with a conduit for routing cables.
41
fi
fl
fi
ffi
fi
Fan Lid
The OSR2.1 has been designed with an alternate lid option, which can hold a 40mm 5v PC
cooling fan. This kind of active cooling is probably unnecessary for most users, but this option
exists as an upgrade if you want to increase the air ow through your OSR2.
The fan lid is held in place by 4x M3x16 bolts. For power I recommend plugging it in to one of the
+5v power pins next to the Romeo’s analog (blue) pins. This will draw the small amount of power
needed to drive the fan from the USB 5v supply that powers the Romeo, rather than the servo
power.
If you are using an ESP32 you can plug the fan into the “Vin” and adjacent “GND” pins. This will
power the fan from the USB connection, meaning it will continue to run even if the servos are
powered o .
42
ff
fl
Servos
The question of which servos are the best to buy to use with an OSR2 is hotly debated amongst
OSR2 users. There are people who like the solidity and nuance of a PowerHD LW-20MG, many
who swear by the speed and power of a JX BLS-HV7132MG, and others who are willing to shell
out for a set of high quality Hitec D954SW servos.
The advantage to the OSR2 is that it can take any combination of any type of standard size type
servos you care to choose, and of course you can always upgrade later.
The best advice I can give to you when it comes to choosing your servos is that in my opinion you
should avoid buying cheap 20kg.cm servos. It may seem really tempting to only have to spend
$12 each on a set of red generic servos from China, especially when you have to buy three of
them. The experience from the community however is that these servos have a nasty habit of
overheating and dying with very little use. Spending a little bit more will generally guarantee better
quality and probably save you money in the long run.
Your servos may or may not come packaged with a Futaba 25T metal servo horn, so be sure to
check when you buy them. If they do not, then you will have to buy them separately. They are
widely available through outlets like eBay or amazon for a few dollars each in a wide range of
colours.
43
The Tempest Discord Server
If you are supporting me on either of my Patreon or SubscribeStar platforms then you are entitled,
and encouraged, to join the Tempest Discord server. This is a message board and chatroom for
OSR2 users to swap content, tips and ideas. The server also also hosts an archive of all of my
work to date, including documents and STL les.
If you have any questions or need help this de nitely the best place to get an answer quickly.
To join the server all you need to do is add you discord account to your Patreon or SubscribeStar
account and you should be added automatically. If you’re having trouble getting this to work feel
free to contact me directly through Patreon or SubscribeStar and I can add you manually.
44
fi
fi
fi
Troubleshooting
Over the last two years or so I have helped a lot of people sort out problems with their OSR2
setup. I have listed below some of the most common problems they have encountered, along with
the most common solutions.
For the best help troubleshooting an issue with an OSR2 I highly recommend that you join the
Tempest discord server. I am available on there most of the time, but even when I’m not there will
be someone else from the community who can help you. Most likely someone will have seen your
issue before.
Receiver going up/down in the wrong direction
Check:
• Left servo - pin 8
• Right servo - pin 3
The usual cause for this problem is the left and right servos being plugged in the wrong way
around, ie left-to-right, right-to-left. Some servos work backwards out of the box. In either case,
swapping the two leads (ie pin 8 to pin 3, pin 3 to pin 8) should resolve it. In some rare cases this
is a software issue, in which case it can be resolved by re-uploading the Arduino sketch.
Arduino sketch not uploading
The usual cause of this is a quirk of the Romeo in which under certain circumstances some of the
USB power is sent to the servos, which drains power from the board causing it to reset itself. If
you are unable to upload the sketch to the Romeo this might be happening. You can resolve it by
powering or unplugging the servos when you attempt the upload.
Problems with the Arduino environment can be addressed by checking out generic Arduino IDE
tutorials and troubleshooting guides; remember that the Romeo BLE is an Arduino Uno as far as
the software is concerned.
No lights showing on Romeo
There are small LEDs on the Romeo. We particularly care about the red one that indicates that it is
powered, and the two green ones that will ash to indicate that data is passing between your
computer and the Romeo.
If the red light does not come on when you plug the Romeo in to your computer the most likely
reason is that there is something wrong with the board, or more likely the cable. A replacement
cable usually does the trick.
Sometimes the red light will come on but the green lights will not. This might be because you are
using a mobile phone charger cable which contains power wires but no data wires. Again, the rst
thing to try is a replacement cable.
If you are sure that the cable works but the program that you’re using to send T-code (VaM, XTP,
JFP, etc) doesn’t appear to be sending data check for another program that might also be trying
to use the serial link. Note Arduino IDE does not need to be open to run the OSR2 and the serial
monitor should be closed when you’re using the OSR2 with another program.
Computer cannot identify the Romeo
When the Romeo is plugged in to your computer it should appear as an accessible device in the
Arduino IDE. If it does not you should check your device manager to see if it appears under the
list of USB devices. If it doesn’t appear on the list it may be a problem with the cable or the
Romeo. Searching for generic Arduino IDE troubleshooting tips might help. The Romeo BLE is
identical to an Arduino Uno as far as your computer is concerned.
45
fl
fi
fi
Blue light showing on Romeo
This is a rare error in which the Romeo is unresponsive to T-code and a blue LED is lit up on the
board. If this is happening it is probably due to the Romeo connecting via bluetooth to a mobile
device, and thus ignoring the serial connection. Check for nearby devices and make sure that
none of them are connected to the Romeo.
Servos not working
If powered the servos should all automatically centre themselves and hold position when you
power up the Romeo. If the servos don’t move this is usually a problem with the power supply to
the servos. Check that you have wired up the servo power to the “Servo” connectors rather than
the “Vin” connectors. If you are using an external power bus make sure that the power bus is
grounded to the Romeo.
If you notice the servos getting very hot unplug the power supply immediately.
Single servo not working
If a single servo is not working the usual reason is that it is not plugged in to the correct pin. The
usual reason for this is that your Romeo is a v1.1, not a v2 and you will need to reassign the
output pins as I have outlined in a previous section. Also make sure that you are using the most
recent sketch (OSR-Release3_4.ino at the time of writing) as the pin assignments have changed
slightly over time.
Servo arms don’t line up
The Futaba 25T servo horns have splines with 25 teeth on them, which means 25 possible
mounting angles for each arm. This will mean that it’s likely that once installed the two main arms
will not line up with each other perfectly when the OSR2 is in the neutral position.
If you want to ne tune the arm zero positions you can change these in the Arduino sketch, which
you will then have to re-upload to the Romeo for the changes to take e ect. Look for this part in
the code:
By changing the “1500” value to a higher or lower value you can change the centre position for
each servo. Mathematically an increase of 80 should result in 1/25th of a turn, so it should not be
necessary to change the number by more than +/- 40 (ie 1460 to 1540).
T-Valve working backwards
As of OSR-Release3_2.ino the T-valve should move to the commanded (A1 channel) position, 0 =
fully open, 999 = fully closed, except when the receiver is moving downwards, when it should be
fully open.
Some models of micro servo seem to set up to work backwards. If the valve is doing the opposite
of the above (0 = fully closed, 999 = fully open, fully closed on the up stroke) you probably have
one of these servos.
The easiest solution to this problem is to reverse the valve direction in the rmware. Look for this
line near the top of the .ino le:
46
fi
fi
ff
fi
Complete parts list
This is a complete list of all the non-3D printed parts to build an OSR2+ with a T-wist and T-valve.
When buying hardware parts such as bolts, washers, nuts etc I highly recommend over-buying on
quantity. It’s always better to have 10 too many than 1 too few.
47
A word about personal safety
The OSR2 is an adult toy, and that means you need to be an adult and make sure that you play
safe. This is not a nished consumer product, this is a piece of experimental tech that you put
together yourself. Electrics can overheat, motors can exert a lot of force, materials can be sharp,
microelectronics can be unpredictable, etc, so be careful!
I suggest you take some time to understand how the OSR2 can move before use. Make sure that
you remove any sharp edges that may be created by your 3D printer with a craft knife or le. Do
print and use the lid, as it will protect you, or rather important parts of you, from coming into
contact with hot servos! I also highly recommend that you don’t leave any hardware unattended
whilst powered up, especially if you are using “budget” components.
Overall I take no responsibility for any actions that you may take after reading this document. It is
your responsibility, and yours alone, to use any information that you have received here in a way
that does not risk your personal safety.
And nally…
Congratulations on building your own OSR2, and welcome to the future!
Enjoy!
Tempest
48
fi
fi
fi