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
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
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
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
A_register = 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
Step 5: Define the Math Formulas in the Worksheet
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
Step 7: Testing More Features
If you are interested in knowing more about this App Note please contact us at: firstname.lastname@example.org