A microcontroller like the kind that powers Arduino dev boards can be manipulated in several different ways. One of the most convenient control methods is to send and receive commands using a serial interface.
This works well if your board connects to your computer via a USB cable and a USB-to-serial chip, but some applications might require a wireless option. Fortunately, Bluetooth modules like the HC-05 and HC-06 can send serial signals wirelessly from your Android device straight to your microcontroller.
Once paired, these modules relay serial information from your smart device to the dev board and vice versa. Just reverse the receive (Rx) and transmit (Tx) lines between your Arduino and Bluetooth module, and provide the proper input voltage level. This method requires zero software pairing; your device and the module handle that on their own.
How, then, do you get your phone to send specific serial signals to your Bluetooth module, receiving feedback as needed?
We combed through the Google Play store to figure out which are worth installing and which you should skip over. Our testing is based on a piece of Arduino code that turns an Arduino Uno’s onboard light on and off. Controlling actual devices may be a little more complicated, but this code offers a baseline for comparison.
Bluetooth Terminal by Qwerty Tools
It’s hard to get more basic or foolproof than Bluetooth Terminal, so here’s how it works.
- Enter commands the same way that you would with the Arduino IDE’s serial monitor.
- If you programmed a reply into your microcontroller’s code, the device displays it.
- You can also display or send characters in hexadecimal, keep the screen on, and append a new line.
Since you know exactly what you’re sending and receiving, this app is great for testing and setup purposes.
On the other hand, if you need to repeatedly enter certain commands (driving an RC vehicle, etc.), you’ll eventually want a better-suited option. Bluetooth Terminal handles text entry quite well, but speed isn’t its strong suit.
Arduino Bluetooth Controller by Ioannis Tzanellis
Once you’ve graduated from the debugging stage to driving a remote-controlled car, tank, or robot, choose a controller with onscreen buttons. One such program is Arduino Bluetooth Controller by Ioannis Tzanellis.
It features a controller mode that lets you assign characters to 10 buttons, all arranged as a video game-style control pad. It works well, but 10 buttons can get restrictive. Aesthetically, the ads constantly playing in a portion of the screen are distracting.
The app also features these additional modes:
- Vehicle mode: Uses your phone’s accelerometer to send commands to the device.
- Fader mode: Sends characters 0-9 to your microcontroller.
- Terminal mode: Interprets and transmits data.
Fader mode has a slight delay, and terminal doesn’t return feedback text from your device, but it’s otherwise functional. Overall, Arduino Bluetooth Controller is a usable app, but it’s not the best option on this list.
Arduino Bluetooth Controller by Giumig Apps
Giumig’s Arduino Bluetooth Controller features some of the same functionality as Tzanellis’s, including a controller mode with 10 assignable buttons in an uncluttered control pad arrangement. One interesting feature is that when you press an active button, you get haptic feedback in the form of a short vibration, letting you know that you have activated a button. Also, there are no ads.
Other modes include:
- Switch Mode: This is a single onscreen button that sends two alternating characters that you assign.
- Dimmer Mode: Dimmer sends 0-255 with no noticeable delay via a slider.
- Terminal Mode: This mode sends commands that you enter via an onscreen keyboard and also receives text feedback.
After testing, this seems to be the best app of its type on this list, and it will likely be my go-to for simple vehicle control.
Bluetooth Control Panel by Martyn Currey
Most controller apps use some variation of the following:
- Assign a character to a specific button
- Press the button to send the character
Currey’s software, however, does things much differently. The interface design does not reside on your Android software; instead, it sets your screen up based on the device to which it’s connected.
This method comes with a bit of a learning curve, but it also means that you can log onto any properly set up Bluetooth-enabled microcontroller and the correct interface will appear on your smart device. The interface elements have a set arrangement, but only appear if you’ll need them for your application.
This static arrangement restricts usage somewhat—for example, it wouldn’t work well for an RC vehicle— but this software presents an excellent solution for the right application. Visit Currey’s website for more information on how to set it up.
This article offers several solid options for different control scenarios, but if you want a custom solution, MIT App Inventor functions as a full graphical programming language.
Use it to create your own custom interface. In fact, it’s so versatile that one app we tested for this article, Bluetooth Arduino Tank Control, was made with this software.
Other apps we tested for this article include:
- Arduino Bluetooth Control by Broxcode: This app offers some interesting functionality, but the full-screen ads make it extremely difficult to use.
- Arduino Bluetooth RC Car by Andi.Co: Specifically designed for vehicle control, this is a capable app. You can’t customize button commands, so you’ll need to adapt your program to it. Also, the flashy design may not appeal to some.
- Bluetooth Arduino Tank Control by BY_LAW: This app features basic tank/car driving functionality with no frills.
- Arduino Bluetooth by CircuitMagic: It’s usable, but less refined than some of the others we tested. It does have the ability to send a signal both when a button is pressed and released, which could be useful. For a fee, you can customize it.
You can choose among many options to control your devices, but Bluetooth certainly presents some significant advantages. With the wide variety of software available, there’s a good chance you can find exactly what you need for your application. If not, it’s time to build it yourself!
Jeremy S. Cook is an engineer who has worked in manufacturing automation and writes for a variety of technical publications. Zach Wendt is a mechanical engineer with a background in consumer product development. He works for Arrow Electronics, a major supplier of Arduino products.
Images: Jeremy S. Cook