This instructable shows how you can switch an Arduino output on and off from your Android mobile with just one click on the pfodApp icon. Add a relay driven by this output to switch the real hardware. No Android coding is required. Simple text strings in the Arduino code control everything.

There are other apps that allow you to switch an output on and off. What makes pfodApp different is that the Arduino code feeds back a status message to your mobile to tell you the output state, on or off. The exact form of this message is completely controlled by the text in your Arduino code (see below).

The other things that make pfodApp different are:- you can easily add extra devices to control, you can easily add multi-level menus if your devices need them and you can connect via either bluetooth or wifi/internet, and wifi/internet connection offers the option of 128bit security against hackers taking control of your device. You can also send debugging messages and display plot data in real time.

See Android controlled Lights and Power for an project controlling 4 relays and check out www.pfod.com.au for other uses such as controlling a robotic lawnmower or knight rider lights. None if these projects require any Android programming. The same pfodApp does them all, controlled by simple text strings in the micro (Arduino or other) code.

This project depends on two new features on pfodApp:- Single Click Connection in V1.2.22+ and Close Connection message in V1.2.20+
The Single Click Connection feature means that if only one connection is defined, then when you start pfodApp it will automagically connect to that device.
The Close Connection message, {! … }, is the message the pfodDevice (Arduino) sends back to the pfodApp when it wants the pfodApp to close. When the pfodApp closes in response to this message, the app will display to the user the text sent back in the close message.

If you have an earlier version of pfodApp (before V1.2.21) then update to the latest version to get these new features.

The Hardware

This instructable uses the same parts as Arduino for Beginners, controlled by Android. Follow the instructions on that page to assemble the micro (Arduino), bluetooth module and led/resistor (as shown below).

This project will turn the Arduino digital output D3 on and off. A led will be driven, via a resistor, from this output. To control real hardware just drive a relay from this output instead. The Arduino code use here is minimal. See www.pfod.com.au for other projects with menu systems.

Step 1:

The Arduino Sketch

Here is the complete sketch. This version lets you turn the Led on and off from your mobile with a single click.
The sketch source is here, copy and paste it into the IDE and load it on to you Uno board.
You also need to download the pfodParser library zip file and unzip it to your arduino/libaries directory.
NOTE: remove the bluetooth shield before uploading the sketch because the bluetooth shield uses the same pins the USB connection does and the programming get confused.

#include <EEPROM.h>
#include <pfodParser.h> // include the library
pfodParser parser; // create the cmd parser
// Pin 3 if the output being switched.
// give it a name:
int switchedOutput = 3;
// the setup routine runs once when you press reset:
void setup() {
for (int i=3; i>0; i--) {
// wait a few secs to see if we are being programmed
// initialize the digital pin as an output.
pinMode(switchedOutput, OUTPUT);
digitalWrite(switchedOutput, LOW); // start with output low (off)
// the loop routine runs over and over again forever:
void loop() {
byte in = 0;
byte cmd = 0;
if (Serial.available()) {
in = Serial.read(); // read the next char
cmd = parser.parse(in); // pass it to the parser returns non-zero when a command is fully parsed
if (cmd != 0) { // have parsed a complete msg { to }
if ('.' == cmd) {
// pfodApp has connected and sent {.} it is asking for the main menu
// toggle the output and send back Close Connection message with current state of output
// either {!Output OFF} or {!Output ON}
Serial.print(F("{!")); // send start of close connection message
boolean outputState = digitalRead(switchedOutput);
if (outputState == LOW) {
digitalWrite(switchedOutput, HIGH); // was off turn on
Serial.print(F("Output is ON")); // change this to your own message
} else {
digitalWrite(switchedOutput, LOW); // was on turn off
Serial.print(F("Output is OFF")); // change this to your own message
Serial.print(F("}")); // send closing } to complete pfod message, pfodApp will exit and display your message
// you can add any code here that is needed to close the connection on the micro side.
// nothing for the ITead Studio BT Shield
cmd = 0; // have processed this cmd now
// so clear it and wait for next one
} // else no serial chars just loop
Note: in the code above all the strings are enclosed with F(“ “) This macro makes sure the strings are placed in the program FLASH where you have much more room. (See What fails when you add lots of Strings to your Arduino program.)

Install pfodApp on your mobile and set up a connection to your bluetooth shield as described in the pfodAppForAndroidGettingStarted.pdf. I called my connection Uno, then exit the pfodApp. Then when you next click on pfodApp icon, it will automatically connect to the only connection it knows about, Uno and the Arduino sketch will toggle the output state and send back to Close Connection message with the current state. This causes the pfodApp to exit and display the message.
These three steps are shown in the attached screen shots

See the pfod Specification for the details and examples of all the pfod messages and their formats.


For many uses, driving a relay from this output, D3, to switch some hardware on and off, is all that is required.

However the pfodApp can do much more. See How to switch an Arduino output on and off from your Android mobile for an simple example of how to use a menu to control relays and how to debug your sketch via your Android mobile. See Android controlled Lights and Power. pfodDevice for Arduino for a 4 relay example.

To learn more about pfod check out the pfod Specification and all the projects on www.pfod.com.au

About This Instructable




More by drmpf:Custom Arduino Controls for Android -- No Android Programming Required High Accuracy Remote Data Logging Using Mulitmeter/Arduino/pfodApp Remote High Speed Data Logging using Arduino/GL AR150/Android/pfodApp 
Add instructable to: