Controlling Arduino via smartphone: a few lines of XML and no app to write

I am new to the Arduino community and have only done two simple projects so far using an Arduino Uno. I really like the way Arduino makes electronics so easy and opens it up to a wide range of people with varying abilities.

One thing I have been looking for is a way of making really stunning graphical user interfaces for my future Arduino projects. At this point I must confess that I work for a small IoT (Internet of Things) start-up that has some pretty interesting technologies. About 3 months ago I convinced the powers that be, to turn some of this high tech in to a Shield. And 2 months later we had the first prototype boards ready for alpha testing.

Here is a picture of how the project began. The board on the top left is an NFC development board we bought. The other 2 boards are in house boards we made for various other projects.

We wired together the parts of each board that we needed to get the features we were looking for. Here is a list of the main functions we came up with for the shield:

  • Near Field Communications or NFC for short. This is the same technology behind wireless payments and is also known as PayWave and PayPass. NFC is a feature on many smartphones.
  • Personal Area Networking or PAN for short using the 802.15.4 MAC layer communications protocol. This kind of PAN provides much greater range than Bluetooth.
  • A hashing chip for participating in secure operations such as over-the-air firmware upgrades.
  • An STM32F103R8 ARM Cortex M3 32-bit microcontroller.
  • 256 KB of external FLASH memory.
  • File system for storing data and other files.

After working with this mess for around 2-3 weeks we had enough of the firmware and hardware verification done to move on to designing a custom board for the shield. Here is a picture of the very first shield board in its unloaded state.

And not long after this we had a fully loaded and working shield. Here it is stacked on a Uno.

So currently we are writing a library for the shield that will make it really easy to use. Here is the first demo project we made with it.

In this demo the shield is stacked on an off the shelf motor control shield which connects to a small DC motor which drives some plastic gears we made on a 3D printer.

I made a video of it working which is on YouTube. Hope you like it.

G'Day Chris

Interesting project.

I've been looking at interfacing some cheap $50 (7 inch) tablets that I got from KMart to the Arduino

Unfortunately these cheap tablets don't have NFC or even Bluetooth. Fortunately but although its not stated in the specs, these tablets have USB host cabability if you buy a $2 cable from Jaycar, so I've been able to interface them to an Arduino Micro (one of those tiny boards) as the Micro has its hardware RS232 free for normal use because the ATMega32U4 has in built serial USB.

Anyway... I digress...

The one thing I can see as the serious limitation to anyone making use of Android devices, is complexity of writing apps.
I'm a professional developer, so its not an issue for me.

But for most people, if there was a App that had a way to easily add controls and displays e.g via XML or probably even better by some sort of GUI, I can see that it would get a lot of attention.

I know there are some Apps out there that build menu's and send data to the Arduino (via USB serial or Bluetooth), but from what I've seem, they are limited to very basic layouts of buttons.
When I say layout, I think that's an exaggeration, the ones I've seen just have 1 vertical row of buttons, you just get to choose how many buttons you want and the text that's on them.

I wonder if you could list the widgets that you already support and what you intend to support, and also an example of your XML ?

Do you have any plans to do anything other than NFC (only the latest phones seem to have this, so I think you are significantly limiting your market, but not supporting bluetooth (serial))

G’day Roger,

I don’t know if you are familiar with Qt and how it builds GUIs (which is in some ways similar to the way it is done in Java SWING)? These systems use 3 main types of widgets: containers, controls and layout items. Our app on the phone is developed using Qt technology and our XML language (we call it Resource Markup Language or RML) describes the GUI in terms of arrangements of these kinds of widgets. I guess what I am trying to say (and doing it badly) is that using RML you can describe GUIs of any level of complexity.

Here are some examples:

SIMPLE EXAMPLE (the hello world for a GUI i.e. LED on/of):

<screen name="main-page" margins="4">
	<devicebox title="$(NICKNAME)" layout="horizontal" spacing="4" margins="4" skin="wood">
		<xpcontrolbox bind="on" layout="horizontal" leftmargin="20" rightmargin="20" stretch="1">
			<xpsvgtoggleswitch bind="on" skin="Beryl"/>
		<spacer stretch="4"/>


HIGH COMPLEXITY EXAMPLE (with style sheets and multi-screen):

Here is a current list of widgets by type:

Layout/container items

  • box
  • groupbox
  • devicebox
  • signalbox
  • controlbox

Layout/spacing items:

  • separator
  • spacer


  • label
  • checkbox
  • pushbutton
  • svgbutton
  • svgtoggleswitch
  • svgslideswitch
  • slider
  • scrolldial
  • scrollwheel
  • scrolldialwheel
  • 5waybutton
  • 3waybutton
  • 2waybutton
  • rockerbutton
  • radiogroup
  • progress
  • led
  • 7seg
  • dialgauge
  • text
  • lineedit
  • localetext
  • xplistbox

The phone does not have to have NFC for the system to work, it just makes it easier and sexier when you can tap the phone to a device and interact with it. The system has a control Hub which has NFC on it and provides the 802.15.4 PAN networking, so you can also tap devices to the Hub to pair them with the system.

I hope this helps. There’s lots more to tell but that’s probably enough for one post :slight_smile:

Very nice! 8)


It looks very comprehensive.


So far there is not a device we have not been able to describe using RML and we have done quite a few now. The system can even control Linux based software apps that have a D-Bus interface without any mods to the original software. To demonstrate this we instrumented the Amarok music player.

We are planning to launch the shield and hub via a Kickstarter campaign very soon. So tell your friends and checkout us out on @XpedArduino on Twitter.

A while ago I was looking for a low cost robot that could be controlled using Arduino. I found the Zumo Robot and bought a couple of these. A few days ago I spent about 20 minutes creating the RML and Arduino code for controlling the Zumo and here is a short video of the result.

We are pleased to announce that the ADRC Shield is now officially a project on Kickstarter. You can visit the project at this link:
Please visit and check out our special offers.