• EUR€
  • £GBP
  • $USD

Windows + RomeoBLE Kit: Bring the Devastator Robot to life!

DFRobot Jul 13 2015 455

Project created and shared by Zachary J. Fields in Microsoft IoT.

About this Devastator Robot Project


Rise of the robots!

For our first official robot kit, we partnered with DFRobot. We saw the RomeoBLE controller and Devastator platform live at Maker Faire, San Mateo, and we couldn't wait to control it using Windows.

Devastator robot imageDevastated cars not included...

In DFRobot's own words:


Romeo is an all-in-one Arduino-compatible microcontroller especially designed for robotics applications. The integrated 2 channel motor driver and built-in Bluetooth Low-Energy radio module make this a single-board solution for building your own Arduino-powered robot.

The Devastator uses high strength aluminum alloy which makes it extremely solid and durable. The high-speed motors and premium tracks also allow it to move swiftly everywhere. What's more, it benefits from a high performance suspension and enjoys an outstanding mobility across even the toughest terrains.
This combination makes for an extremely reliable and durable robot that is perfect for mounting additional sensors and learning robotics. Once we put this robot together, we could barely stop playing with it long enough to write this post!



Assembly was a breeze! It comes with very clearly marked parts and illustrations to show you how each and every piece goes together. There are even extra nuts, bolts and screws; just in case.

A Windows device is necessary to deploy the controller application. A Windows Phone is pictured above, but you can simply use the Bluetooth LE enabled Windows machine you used to download and compile the code.

Devastator robot  installation instructionsPhone and laptop for devastator robot programming
wheel close-up of the devastator robot Nuts, bolts and screws of the devastator robot
Fixed part of the Romeo robotTop view of the Romeo robot fixed part
Side view of the Devastator robot fixed part



Although the construction is relatively simple, there were a couple of gotchas that you should watch out for.

  • The machining on the side panels (parts C-1 and D-1) made it nearly impossible to screw in bolts; I had one shear off.
  • The drive sprockets (part G-2) needed to be assembled so the track guide is as wide as possible.
  • The wrench has two sides, but the small side only fits the larger nuts. So another tool will be necessary for the smaller nuts.
  • The prefabricated holes place the BLE antenna of the Romeo between the electric motors.

You can easily fix the panels by taking a conical metal grinding tip and cleaning up the interior side of the hole. The work becomes obvious when you attempt to finger tighten a bolt through the hole.

In my box, one of the drive sprockets came preassembled (incorrectly) and the other was split in half. Not to worry, each sprocket consists of two fitted halves, pressed together and held by groves. You can simply pull the halves apart and flip the groove skirts, so the groove will be as wide as possible.

I mounted the board crooked, using the slots instead of using the pre-cut holes. This keeps the BLE antenna from being centered between the motors, and therefore minimizes the interference from the magnetic field generated by the electric motors.



The controller software is written as a Universal Windows application, using the new Windows Remote Arduino library at its core. This allows you to use either your Windows 10 Phone or your Windows 10 desktop as the controller.


Windows Preparation:

Start to programming in Windows Remote Arduino libraryFile preparation for Arduino writing syntax
document route prepared for Arduino writing syntaxArduino writing syntax programming interface
Connect to windows remote arduino libraryresponse received from the remote arduino library-1
response received from the remote arduino library-2choose your controller-requested by arduino library
Azimuth key was shown in the screenTool icon and square icon

To ensure you are able to build and install applications, confirm developer mode is enabled on your Windows device[s]. On each device, go to "Settings >> Update & security >> For developers", then enable "Developer mode".

Once your device[s] are in developer mode, you will need to:

Pair the your BLE enabled, Windows desktop, laptop, tablet or phone with the Romeo board (the pin is `0000`)
Clone the remote-wiring-quick-controllers repository (linked below)
Navigate to the solution folder and open `QuickControllers.sln`
Configure the deployment settings (i.e. "Release", "ARM" and "Device" for the Windows Phone)
Press the green, play button to deploy the application to your Windows device

RomeoBLE Preparation:

Devastator robot programming process-Step 1Devastator robot programming process-Step 2
Devastator robot programming process-Step 3Devastator robot programming process-Step 4

The RomeoBLE board is an Arduino Uno clone (and reports itself as such to the operating system), which allows you to use the Arduino IDE to deploy Firmata to the board. Navigate to "File >> Examples >> Firmata" and select "StandardFirmata". Then under "Tools >> Board" choose "Arduino Uno", and for "Tools >> Port" choose "Arduino Uno" from your list of COM ports.

Software challenges:

To create the RemoteWiringQuickControllers application, we originally used the RemoteDevice layer (Arduino wiring syntax) of the RemoteWiring library to drive the RomeoBLE's motor controller. However we were noticing some latency issues due to the nature of Bluetooth LE. Ultimately, we ended up using a hybrid approach that access the UwpFirmata layer directly. The hybrid approach allows us to batch instructions for more efficient radio usage, which results in much more optimal performance (code segment provided below).


Additional Information

Image of Romeo BLE linked with battery holderImage of Arduino uno
Illustration of DC power connected with micro controller boardImage of RoMeo BLE connected with battery charger

Project Notes:

There are no wiring directions included in the kit, however they do have illustrations and instructions located on DFRobot.com (shown above). 

The Devastator + RomeoBLE combo is battery hungry! When the battery level drops, the behavior becomes erratic and the RomeoBLE browns out and reboots, so be sure to keep fresh batteries for the best experience.


DF Robot BLE Details:


  • UUID: 0000dfb0-0000-1000-8000-00805f9b34fb


  • Name: Serial Port
  • UUID: 0000dfb1-0000-1000-8000-00805f9b34fb
  • Name: Command
  • UUID: 0000dfb2-0000-1000-8000-00805f9b34fb

Bluetooth LE:









RemoteWiring library    

Snippet of hybrid RemoteDevice layer (Arduino wiring syntax) used in conjunction with the UwpFirmata layer of RemoteWiring to drive the RomeoBLE motor controller board.
          public RobotControl()        {            // setup            App.arduino.pinMode(E1, PinMode.PWM);            App.arduino.pinMode(E2, PinMode.PWM);            App.arduino.pinMode(M1, PinMode.OUTPUT);            App.arduino.pinMode(M2, PinMode.OUTPUT);        }        public void forward(byte l, byte r)        {            App.firmata.@lock();            App.firmata.write(0x90);            App.firmata.write(0x00);            App.firmata.write(0x00);            App.firmata.write(0xE5);            App.firmata.sendValueAsTwo7bitBytes(r);            App.firmata.write(0xE6);            App.firmata.sendValueAsTwo7bitBytes(l);            App.firmata.flush();            App.firmata.@unlock();        }

Remote Wiring Quick Controllers

This is a set of simple controllers designed to be used with Windows Remote Arduino applications.