Introduction: Internet Graphical Interface for Arduino

Picture of Internet Graphical Interface for Arduino

This App Note describes how to implement a web temperature dashboard for Arduino Ethernet. It is intended to show you how the Memory-Map concept works in the practice and the way in which it can help you to improve your Arduino projects with some few simple modifications.

The system shown consists of an Arduino with a temperature sensor (eg. a LM134 lineal temperature sensor IC) connected to the NearBus Connector through internet to display the temperature value in a graphical way using the Google Spreadsheet Web App (as shown below).


How does it work?

As detailed in the overview section the NearBus system has two working modes, the VMCU (virtual microcontroller unit) mode and the TRNSP (transparent) mode. In this example we are going to use the TRNSP mode.

Under the TRNSP mode the NearBus system works replicating two groups of 8 registers each (Reg_A and Reg_B) in a periodic way :

Reg_A: Data sent from Microcontroller to the Cloud.
Reg_B: Data received in the Microcontroller from the Cloud.

In others words, the TRNSP mode can be understood as a RPC (Remote Procedure Call) or function call, that you make in your Arduino code to execute it in the cloud (as a spreadsheet formula or script), obtaining a result, and then using it in your Arduino code.

The most powerful feature of NearBus is the extremely easy way in which this complex process can be achieved. Including a single line in your code (a function call) you will be able to synchronize the register blocks (8+8) with the Google Cloud and then access them from a simple spreadsheet table (2 rows 8 cells).

So, under the TRNSP mode, changing a value in the spreadsheet replicates this value in the Arduino's memory (and vice versa) in a periodic way.

Step 1: Setup a New NearBus Account

To setup a new account in the NearBus Connector, please follow the steps 1 to 5 in the Hello World example.

IMPORTANT: Remember that this example works in TRNSP mode so you should uncheck the VMCU option when configuring a new device (Step 2) in the NEW DEVICE configuration screen (VMCU is the default option).

Step 2: Setup the Google Channel in NearBus

Picture of Setup the Google Channel in NearBus

To activate the Google Channel in your NearBus session, you should configure the parameters shown below. To access this configuration table select the GOOGLE CONFIG option in the drop down menu (on the DEVICE CONFIG screen).

NOTE: Take into account that for this step you will need a Google account. We recommend defining a new Google account for this environment if you already have one.

Google User: Your Google user name.

Google Password: Your Google user password.

Spreadsheet Key: Copy the Spreadsheet_ID and paste it into this field (*).

Worksheet Order: For this first example should be FIRST

Connector Status: Allows you to Turn On or Turn Off the connector. Set it to Running.


(*) The following step will show you how to get this ID from Google.

Step 3: Configuring the Google Spreadsheet

Picture of Configuring the Google Spreadsheet

Login your Google account, select the Google Drive option in the menu bar and create a new spreadsheet.

Create the Memory-Map table, this table should be defined between the cells A1 to I3 (3 rows of 9 columns) and should match exactly as the following format (of course you can change the colors :)

The spreadsheet is identified by the Google Apps through a Spreadsheet_ID code, a long alphanumeric string (Base64 encoded) that follows to the keyword "key=" in the browser's address bar. You should identify it and copy and paste (be careful to include all characters). The following picture shows where this ID is located

IMPORTANT: The different worksheets in a spreadsheet are identified by the physical order (from left to right) so you should be careful matching the worksheet order with the configuration chosen in the field WORKSHEET ORDER (in the GOOGLE CONNECTOR screen).

Step 4: Write the Code Into Your Arduino

Picture of Write the Code Into Your Arduino

For this example we use a simple analogRead() as shown below:

A_register[0] = analogRead(0);


Additionally you should include the NearBus service call (in some point of the main loop() function :

Agent.NearChannel( A_register, B_register, &ret );

NOTE: Remember that NearBus offers you 2 groups of 8 registers each that are synchronized in each exchange operation and you can use freely them in your code.


  GROUP_ A        GROUP_ B
A_register[0]      B_register[0]
A_register[1]      B_register[1]
A_register[2]      B_register[2]
A_register[3]      B_register[3]
A_register[4]      B_register[4]
A_register[5]      B_register[5]
A_register[6]      B_register[6]
A_register[7]      B_register[7]

Step 5: Define the Math Formulas in the Worksheet

Picture of Define the Math Formulas in the Worksheet

Create the dashboard using the different gadgets that Google offers to you (Gauges, Charts, etc, form more detail see insert-> gadgets in the spreadsheet menu bar).

The Memory-Maps table works as a simple spreadsheet table with the following characteristics:

Each "x" seconds the NearBus will update the Reg_A with the values sent by the remote Agent (eg. Arduino) and then will read the value stored in the Reg_B (and return them to the remote Agent). As we mentioned before the system works as a typical function call from the Arduino code point of view.

NOTE: Because Google's Cloud Infrastructure impose some limitations in the service quota in order to avoid system overload, the synchronization period is limited to 10 seconds.

Step 6: Wire Your Arduino

Picture of Wire Your Arduino

In this example we replace the temperature sensor (an LM134) for a simple rheostat connected to the A0 pin in order to test the system. The following picture shows the trivial configuration required in order to emulate the temperature sensor (the rheostat can be of any value between 10K and 100K ohm).

Step 7: Testing More Features

If you want to try more features available in the functions drop-down menu please refer to the HELP section for a detailed description.

If you are interested in knowing more about this App Note please contact us at: info@nearbus.net

Comments

grelle1 (author)2015-10-15

Hi, it works but, the problem is that the site is always Unavailable. I developed the solution but with this instability is hard to use

Can you help?

Tks

jaspreetedu (author)2015-04-04

hello! my problem is that every connection i made is correct and everything goes UP but still i haven't received anything to the spreadsheet. when i click on setup button nothing happens

kindly help!

glennballen (author)2013-12-22

Hello, I am following the instructions to configure with at Google acount. When I enter all the information nothing happens. Please see screenshot

jaspreetedu (author)glennballen2015-04-04

i had the same problem. actually in my case everything goes UP but when i click on setup button then, nothing happens. the reading does not reflect back to the spreadsheet

please help!

midnightcow (author)2015-02-04

Hi,

I work at WIZnet as chip designer, I colllect the good references in my blog and http://wiznetmuseum.com . Can I share your contents on my collecition?

Thank you in advance.

nearbus (author)midnightcow2015-02-06

Hi midnightcrow, yes, it is fine for us.

Thanks for your feedback

midnightcow (author)nearbus2015-03-17

Thanks a lot for sharing your contents.

I have always interested in your service. I expect that WIZnet will co-work with your IOT cloud service because WIZnet will launch the W7500 MCU integrated CortextM0 with WIZnet TCP/IP hw core on May 2015.

If you are interested in WIZnet & W7500 IOT platform, Feel free to contact to me or WIZnet.

Thank you.

louis_lachenal (author)2015-03-04

glennballen (author)2013-12-22

Sorry screen shot was not attached

rinstructables (author)2013-05-19

Great project and you presented it wel

About This Instructable

28,100views

86favorites

License:

More by nearbus:Internet Graphical Interface for ArduinoInternet  Presence Simulator (for Home)An easy way to control your Arduino from Internet :)
Add instructable to: