Development v12

Warning - Product Update

All the resources present on this section belong to Waspmote v12, Waspmote Plug & Sense! v12 and Meshlium v3.8.

If you have a Waspmote v15, Waspmote Plug & Sense! v15 or Meshlium v4.0 please go to the new Development Section.

Check what is your version and what are the differences between the old and the new one in this document.

» SM 14: Frame Class Utility

This is the basic code to create a frame with every Smart Metering sensor

Required Materials

1 x Waspmote
1 x Battery
1 x Smart Metering board
1 x DS18B20
Several sensors...


* This example can only be executed in Waspmote v12


 *  ------------  [SM_14] - Frame Class Utility  -------------- 
 *  Explanation: This is the basic code to create a frame with every
 *  Smart Metering sensor
 *  Copyright (C) 2015 Libelium Comunicaciones Distribuidas S.L. 
 *  This program is free software: you can redistribute it and/or modify  
 *  it under the terms of the GNU General Public License as published by  
 *  the Free Software Foundation, either version 3 of the License, or  
 *  (at your option) any later version.  
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  GNU General Public License for more details.
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <>.
 *  Version:            0.1
 *  Design:             David Gascón
 *  Implementation:     Luis Miguel Marti

#include <WaspSensorSmart_v20.h>
#include <WaspFrame.h>

float temperature; 
float humidity; 
float analogLDRvoltage;
float current; 
float flow3v3; 
float flow5v; 
float ultrasound3v3;
float ultrasound5v; 
float DFSvalue;
float load; 
float tempDS18B20;
char node_ID[] = "Node_01";

void setup() 
  USB.println(F("Frame Utility Example for Smart Metering"));

  // Set the Waspmote ID
  //Power on board

void loop()
  // 1. Turn on the sensors

  // Power on the temperature sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_TEMPERATURE);
  // Power on the humidity sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_HUMIDITY);
  // Power on the LDR sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_LDR);
  // Power on the current sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_CURRENT);
  // Power on the flow 3v3 sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_FLOW_3V3);
  // Power on the flow 5v sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_FLOW_5V);
  // Power on the ultrasound 3v3 sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_US_3V3);
  // Power on the ultrasound 5 v sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_US_5V);
  // Power on the DFS sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_DFS_3V3);
  // Power on the load cell sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_LCELLS_5V);
  // Power on the DS18B20 sensor
  SensorSmartv20.setSensorMode(SENS_ON, SENS_SMART_TEMP_DS18B20);

  // 2. Read sensors

  // Read the temperature sensor
  temperature = SensorSmartv20.readValue(SENS_SMART_TEMPERATURE);
  // Read the humidity sensor
  humidity = SensorSmartv20.readValue(SENS_SMART_HUMIDITY);
  //First dummy reading for analog-to-digital converter channel selection
  //Sensor LDR reading
  analogLDRvoltage = SensorSmartv20.readValue(SENS_SMART_LDR);
  // Read the current sensor
  current = SensorSmartv20.readValue(SENS_SMART_CURRENT);
  // Read the flow 3v3 sensor
  flow3v3 = SensorSmartv20.readValue(SENS_SMART_FLOW_3V3, SENS_FLOW_YFS401);
  // Read the flow 5v sensor
  flow5v = SensorSmartv20.readValue(SENS_SMART_FLOW_5V, SENS_FLOW_YFG1);
  // Read the ultrasound 3v3 sensor
  ultrasound3v3 = SensorSmartv20.readValue(SENS_SMART_US_3V3, SENS_US_WRA1);
  // Read the ultrasound 5v sensor 
  ultrasound5v = SensorSmartv20.readValue(SENS_SMART_US_5V, SENS_US_WRA1);
  // Read the DFS sensor
  DFSvalue = SensorSmartv20.readValue(SENS_SMART_DFS_3V3);
  // Read the load cell sensor 
  load = SensorSmartv20.readValue(SENS_SMART_LCELLS_5V);
  // Read the DS18B20 sensor 
  tempDS18B20 = SensorSmartv20.readValue(SENS_SMART_TEMP_DS18B20);

  // 3. Turn off the sensors

  // Power off the temperature sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_TEMPERATURE);
  // Power off the humidity sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_HUMIDITY);
  // Power off the LDR sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_LDR);
  // Power off the current sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_CURRENT);
  // Power off the flow 3v3 sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_FLOW_3V3);
  // Power off the flow 5v sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_FLOW_5V);
  // Power off the ultrasound 3v3 sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_US_3V3);
  // Power off the ultrasound 5v sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_US_5V);
  // Power off the DFS sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_DFS_3V3);
  // Power off the load cell sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_LCELLS_5V);
  // Power off DS18B20 cell sensor
  SensorSmartv20.setSensorMode(SENS_OFF, SENS_SMART_TEMP_DS18B20);

  // 4. Create ASCII frame

  // Create new frame (ASCII)

  // Add temperature
  frame.addSensor(SENSOR_TCA, temperature);
  // Add humidity
  frame.addSensor(SENSOR_HUMA, humidity);
  // Add LDR value
  frame.addSensor(SENSOR_LUM, analogLDRvoltage);
  // Add current value
  frame.addSensor(SENSOR_CU, current);
  // Add flow 3v3 linear
  frame.addSensor(SENSOR_WF_C, flow3v3);
  // Add flow 5v
  frame.addSensor(SENSOR_WF_E, flow5v);
  // Add ultrasound 3v3
  frame.addSensor(SENSOR_US_3V3, ultrasound3v3);
  // Add ultrasound 5 V
  frame.addSensor(SENSOR_US_5V, ultrasound5v);
  // Add DFS sensor value
  frame.addSensor(SENSOR_DF, DFSvalue);
  // Add load cell value
  frame.addSensor(SENSOR_LC, load);
  // Add DS18B20 temperature
  frame.addSensor(SENSOR_TCC, tempDS18B20);

  // Show the frame

  //wait 2 seconds

Quick Publish: