Arduino Total Control Manual.pdf

download Arduino Total Control Manual.pdf

of 18

Transcript of Arduino Total Control Manual.pdf

  • 2015

    Juan Luis Gonzalez

    EMIM

    1/1/2015

    Arduino Total Control Manual

  • Index

    1. What is Arduino Total control?

    2. Arduino Total Control Main features

    3. Communicating with the app

    a. Sending data from app to Arduino overview

    b. Sending data from Arduino to App overview

    i. Displaying data on top of the app

    c. Communication tags

    i. Text tags

    ii. Button tags

    iii. Image tags

    iv. Seek Bars

    d. Communication via Bluetooth (click here for common issues)

    i. Using Connection manager to connect multiple devices

    ii. Using auto connect to connect one single device

    iii. Arduino circuitry

    iv. Arduino Sketch

    e. Communication via WiFi (click here for common issues)

    i. Setting up WiFi connection

    1. Setting IP or address

    2. Setting TCP Port

    ii. Using auto connect

    iii. Arduino circuitry

    iv. Arduino sketch

    4. Setting up a layout

    a. Editing Pictures

    i. Setting picture visibility

    ii. Setting pictures as push buttons

    iii. Setting commands

    iv. Setting images displayed

    1. Setting Default State (State 0)

    2. Setting Pressed State (State 1)

    3. Setting Extra State (State 2)

    b. Editing Text

    i. Setting text visibility

    ii. Setting text content

    iii. Enabling text as sensor source

    c. Editing Button

    i. Setting button visibility

    ii. Setting commands

    d. Setting Emphasis Color

    e. Setting Layout orientation

    f. Enabling layout scroll

    g. Switching layouts

    5. FAQ

  • What is Arduino Total Control

    Arduino Total Control (ATC) is an app which enables your smartphone to control your makings and surroundings via

    Bluetooth and WiFi. Build up to 4 different layouts, control up to 24 x 2 circuits on 7 different devices at the same time,

    take pictures of what you want to control or choose a picture from your gallery and have fun controlling and switching

    your circuits.

    Arduino was chosen as firmware platform since it based on easy to use hardware and software, thus encouraging the

    growing of the makers community.

    Arduino Total Control can be fully customized. You can manage the layout as you like the most! Using its Matrix like

    layout, just hide and show elements to form different layouts, from a remote control for your home lighting automation,

    through a smartphone controlled robotic arm to a smart RC Car.

    Images: visual dynamic indicators and / or push buttons (with editable commands)

    Text Tags, Can be used as descriptors, as sensor sources, or to display data from Arduino

    Toggle Buttons (with editable commands)

    ATC is a window between your smartphone or tablet and your physical surroundings using Bluetooth or WiFi. In other

    words, ATC will let you share information between your mobile device (like accelerometer, button strokes, touches

    events, etc.) and your microcontroller based system (systems states, physical sensors data, internal program values,

    etc.).

    Arduino Total Control Main Features

    1. Connect and control multiple devices at a time on four different layouts

    Connect via WiFi or

    Share data from 7 different devices; build your own Bluetooth personal network.

    Different layouts for multiple projects.

    2. Dynamic visual indicators

    Images have three states which can be set via Camera or Gallery and controlled from Arduino commands or App

    events.

    Descriptor texts can be modified from Arduino commands

    Toggle button state can be set from Arduino commands, providing real feedback.

    3. Fully Customizable

    From colors to layout arrangement, ATC can be set up for controlling or monitoring any kind of system, it is and

    Human Machine Interface for smartphones and tablets.

  • Communicating with the app

    For either Bluetooth or WiFi communication, sharing data between the app and the Arduino board is as easy as using a

    serial terminal.

    The way of sending data is exactly the same when the app runs on Bluetooth or WiFi.

    For Bluetooth: Serial.println(.

    For WiFi: server.println(

    The same applies when data is received from the app, for more details please refer to the following sections of this

    manual.

    For Bluetooth: Serial.available()

    For WiFi: server.available()

    Sending data from app to Arduino overview There are three cases when the app will send data to Arduino:

    1. Character [ is sent every 2.5 seconds in order to let the microcontroller know we are still connected

    2. Any character or string send by buttons or push buttons

    3. Character

  • Displaying data on top of the app To display data in top of the app (next to the green connected text) just print any string followed by a new line character.

    Any of the following will do the trick.

    println(Any string);

    print(Any string \n);

    Figure 1 Displaying ATC Online text on top of the app

    Communication tags Communication tags are special strings sent to the app which activate special features of the app. In other words,

    communication tags let you control your layout behavior via Arduino.

    Text tags

    Use text tags to modify text content on app:

  • Image tags

    Use Button tags to button state on app:

  • Before using Bluetooth, please open App menu and check BT Enable box to allow Bluetooth communication.

    Figure 5 Enabling Bluetooth Communication via ATC App

    Arduino circuitry In most cases, the basic communication circuit is well represented by the following

    Connect Bluetooth board Vcc to 5V or 3.3V

    Connect Bluetooth board GND to Arduino GND

    Connect Bluetooth Rx to Arduino Tx

    Connect Bluetooth Tx to Arduino Rx.

    Figure 6 Basic Arduino Bluetooth circuitry. Check your BT module back for correct wiring

    Arduino Sketch The most recent, proven and functional Arduino sketch can be found in the app. Open app menu then touch Arduino

    Code then select Beginner Code. You can also check our Facebook pages for some early releases and examples:

    https://www.facebook.com/ArduinoTotalControlApp

    There are some warnings to take into account when downloading the Sketch into your Arduino board!!!

    Disconnect Bluetooth modules TX when downloading, then reconnect.

    Set the correct baud rate for your board. Most boards default is 9600 bits/second which is the default in the

    Beginner sketch. Change it looking for the #define BAUD_RATE and setting your correct number.

    Connect your Bluetooth on the correct serial port. ATC for Bluetooth uses Serial by default. If using mega or

    other Arduino having more than one serial port, you can change the serial port used changing every Serial to

    Serial1,2, or 3.

    Dont use Pin 0 and 1 as inputs/Outputs since they will be used as serial port TX and RX.

    Select your correct board and COM port for programming.

    Once you have programmed your Arduino and paired your Bluetooth module with your Android powered device, you

    can connect either via connection manager or auto-connect.

  • Using Connection manager to connect multiple devices If you want to connect more than one device at a time, open app Menu, then click on Connection Manager. From now

    on, for each image, button or seek bar you press the dialog shown in figure 7 will appear. All paired devices which

    support Serial Port Profile will be listed.

    Figure 7 Connection manager dialog

    Select all devices you want to send the button or Picture data to. You can select more than one or all devices.

    Once you have set every element, button or picture connection management, connect to the actual devices using the

    connect button next to app title. The next dialog will appear.

    Figure 8 Bluetooth Connect dialog

    Note: Accelerometer data (if enabled) will be sent to all connected Bluetooth devices

    Using auto connect to connect one single device When only one device is required, uses Auto connect to connect all objects to this device.

    Figure 9 Auto connect enabled

    Note: Unchecking Auto Connect will reset the auto connect MAC address.

  • Communication via WiFi Arduino Total Control supports connection via WiFi using an Arduino as a TCP/IP Server. In order to connect, you will

    need either an Ethernet shield connected to a WiFi router or a WiFi shield or module. The only software requirement is

    to set a TCP/IP server with a suitable IP and PORT.

    Before using Bluetooth, please open App menu and check BT Enable box to allow Bluetooth communication.

    Figure 10 Enabling WiFi Communication via ATC App

    Arduino circuitry In its simplest form, WiFi control can be achieved using an Ethernet shield attached to any Arduino and to a WiFi

    Wireless router (like the one in our homes).

    Figure 11 Basic Ethernet shield connection

    Arduino sketch The most recent, proven and functional Arduino sketch can be found in the app. Open app menu then touch Arduino

    Code then select Beginner Eth Code. You can also check our Facebook pages for some early releases and examples:

    https://www.facebook.com/ArduinoTotalControlApp

    There are some warnings to take into account when downloading the Sketch into your Arduino board!!!

    For UNO pins 10, 11, 12 and 13 are dedicated.

    For MEGA pins 10, 50, 51 and 52 are dedicated

    In other words do not use these PINS for INPUT or OUTPUT!!!

    Select the correct board and COM port for programming.

    Setting up WiFi connection In order to connect to your Arduino via WiFi, the first you need to do is to set a proper IP address for your board. Most

    Wireless Routers will use a local IP like 198.162.1.1. Then you can select from 198.162.1.2 to 198.162.1.253. For more

    details on IP addresses please refer to http://en.wikipedia.org/wiki/IP_address.

    To connect to an IP address, click on connect button next to App Title, select WiFi

    TCP/Communication and the following dialog will appear.

    Setting IP address

    Type exactly the same address you have set on the Arduino Sketch on the Set Ip Address

    field.

    Figure Setting up a WiFi connection

  • Setting TCP Port

    TCP/IP communication uses ports to send and receive data. Please type the port numbers exactly the same you did on

    the Arduino Sketch.

    Using auto connect for WiFi When WiFi communication is active and enabled, auto connect will behave in the next way.

    When app starts, ATC will try to connect to desired IP and port.

    If connection fails, ATC will retry each 2.5 seconds until the app is closed.

    Setting up a layout

    In order to get the most of the app, to build a proper layout is recommended.

    This section includes all you need to know to build a nice looking and useful

    layout.

    To start building a layout check menu -> Edit properties as displayed in figure 12,

    this will put in the app in layout configuration

    mode.

    Editing Pictures Once you have checked edit properties, touch

    any picture and a dialog like shown at figure 13

    will appear.

    Setting picture visibility There are tree visibility states:

    Visible. If selected, the current object will be visible

    Invisible. If selected, the current picture will be invisible, but the space it uses will remain

    Gone. If selected, the current picture will be invisible, and its layout footprint will be absorbed by rest of the

    pictures in the same row.

    Figure 14 illustrates the difference between invisible and gone pictures.

    Figure 12 App Menu showing

    Edit Properties checkbox

    Figure 13 Picture properties dialog

  • Setting images displayed Each picture has tree states: Default state, which is displayed most of the time;

    Pressed state, when a picture is enabled as a button, this state is displayed on

    touch; Extra state, displayed only via a command from Arduino. After enabling edit

    properties, long press on a picture and the dialog shown in figure 15 will appear,

    use this dialog to change each of the image states.

    Setting Default State (State 0)

    Check default state box, then select the source from gallery or from camera.

    Setting Pressed State (State 1)

    Check pressed state box, then select the source from gallery or from camera.

    Setting Extra State (State 2)

    Check extra state box, then select the source from gallery or from camera.

    You can set the same image displayed for more than one state as displayed on

    figure 16.

    Setting pictures as push buttons To set a picture to be used as a push button, open the properties dialog by touching

    any picture, then check Action on pic touch box.

    When Action on pic touch property is enabled, action on long touch box will appear.

    Use this property to enable images as long touch events. In other words, image will

    send data and enter to pressed state after one second of being pressed approx.

    Setting commands When enabled as buttons, pictures will send commands or data to Arduino when

    they are pressed and when they are released. Open the edit properties dialog

    and set the data send on touch and on untouch as shown on the figure 18.

    Commands can be a single character or multiple characters or strings.

    Editing Text After enabling edit properties from app menu, touch any text and the following dialog

    will appear.

    Setting text visibility There are tree visibility states:

    Visible. If selected, the current object will be visible

    Invisible. If selected, text will be invisible, but the space it uses will remain

    Gone. If selected, the current text will be invisible, and its layout footprint will

    be absorbed by the rest of the texts in the same row.

    Figure 15 Image Chooser Dialog

    Figure 16 Selecting more than

    one state for an image

    displayed

    Figure 17 Setting a picture as

    a push button

    Figure 18 Setting commands

    send by picture

    Figure 19 Text properties dialog

  • Figure 19 illustrates the difference between invisible and gone texts.

    Setting text content Text content can be any string as shown in figure 20. Please note that a very long text will affect layout proportions.

    Figure 20 Setting text content

    Enabling text as sensor source In the properties window check the Use as sensor source box. Once checked the

    available source will appear. The sensor data available is Accelerometer data, Axis X,

    Axis Y and Axis Z.

    When text is set as sensor source, text content will be replaced by sensor data, and

    sensor data will be sent to Arduino via special command tags.

    Editing Buttons Once you have checked edit properties, touch any toggle button and a dialog will

    appear.

    Setting button visibility There are tree visibility states:

    Visible. If selected, the current object will be visible

    Invisible. If selected, the current text will be invisible, but the space it uses

    will remain

    Gone. If selected, the current text will be invisible, and its layout footprint

    will be absorbed by rest of the texts in the same row.

    Figure 23 illustrates the difference between visible, invisible and gone buttons.

    Figure 21 Setting Text as

    sensor source

    Figure 22 Button properties

    dialog

  • Setting commands Buttons will send commands or data to Arduino when they are checked (YES, ON, etc.)

    and when they are unchecked (NO, OFF, etc.). Open the edit properties dialog and set the

    data send on checked and on unchecked as shown on the figure 24.

    Commands can be a single character or multiple characters or strings.

    Setting Emphasis Color Emphasis color makes reference to button colors, and image color shading when they are enabled as push buttons. To

    change emphasis color, open the app menu and select Emphasis Color. The dialog shown at figure 25 will appear.

    Touch the circle in the middle to set a selected color.

    Figure 25 Emphasis color selector dialog

    Setting Layout orientation For a better user experience, app layout is fixed. To change layout orientation, open the app menu and select from

    portrait or landscape this will set up the layout orientation for the current layout. You will notice the app is arranged in

    different ways for landscape and portrait modes.

    Figure 26 Selecting a layout orientation

    Figure 24 Setting

    commands send by

    button

  • Enabling layout scroll If there is no need to scroll, disabling layout scroll is recommended. If your implementation needs scrolling, just open

    the app menu and check scroll enable.

    Figure 27 enabling layout scroll

    Switching layouts To change from one layout to another, open app menu and select layout, the dialog shown in figure will appear. This

    dialog shows the current selected layout. Once a layout is selected, the app will regenerate the layout with its particular

    configurations.

    Figure 28 Select layout dialog

  • Frequently Asked Questions

    These are some tips and questions not covered in the manual regarding mostly to programming in Arduino.

    How to use Seek Bars? The latest Arduino beginner and advanced sketches include the following function:

    This function is called when a

  • 2. Declare a suitable pin as input and enable pull up resistor via digitalWrite() at setup().

    3. Add the following code for each physical button you want to use at the end of loop().

    Please note that this code will toggle relay or circuit 0 when button at PIN A5 is pressed. In other words, if

    relay 0 is on then it will be turned off when button is pressed. If relay 0 is off it will be turned on

    when button is pressed.

    But I want to add more physical buttons!!! Lets say you want a physical button for more than one relay, one cool way you may want to try is to use arrays. One

    array for input pins and one array for latch states (be careful of available I/O management). Then just follow the

    following three steps:

    1. Declare a global boolean array which will tell us each button latch status. Dont forget to declare an int array for

    button input pins.

    2. Set each input as digital input + pull up resistor at setup().

    3. Add a for cycle which will check and set states for each ButtonPins (MAX_INPUTS = 3) at the end of loop().

  • How to use more than 8 relays The first thing you have to consider is the available I/O, for UNO it will be difficult to get 24 outputs, for example.

    However, you can use this tutorial as an example of how to get more than 8 commands from the app. To set the Arduino

    to handle more than 8 relays please follow the next steps (It will be easier to achieve this using the Advanced codes for

    either Ethernet or Bluetooth https://www.dropbox.com/sh/sgycfab71mch2r0/AAARbcJODcxRY29ag3qOFTVPa?dl=0 ):

    1. Change the number of MAX_RELAYS to the desired quantity:

    2. Add more pins to the RelayPins array (Note that they have to match MAX_RELAYS):

    3. Add more IDs to RelayAppId array (Note that they have to match MAX_RELAYS):

    4. Add more Commands according to MAX_RELAYS:

    This is most of you have to do to use more outputs mapped to the app.

    Note: if using beginner codes, you have to add more commands in the #define form

    If using beginner codes, you have to add more case CMD_XX: to the switch located at loop.

    Arduino is not remembering all relay states on reset

    There is one more thing you may want to add to your code in order to make it completely functional for more than 8

    relays. Eight relay codes use EEPROM_READ and EEPROM_WRITE which read and store byte values to EEPROM memory

    on the Arduino. Since using more than 8 relays will require storing data in more than 8 bits, you have to follow the next

    steps:

    1. Add the RELAY_SATUS_SIZE constant and change RelayStatus to long:

    2. On setup, change the RelayStatus = EEPROM.read(REL_ADD); for the next:

    This will read the whole RelayStatus byte by byte.

    3. Finally, change the simple EEPROM.write(STATUS_EEADR, RelayStatus); for the following at set relay state

    function:

  • END OF MANUAL

    Manual Version: 2.1

    Please feel free to make any suggestion or correction