Waspmote/GeneratedCode001

From air
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
/*
 *  -------- Waspmote - Plug & Sense! - Code Generator ------------ 
 *
 *  Code generated with Waspmote Plug & Sense! Code Generator. 
 *  This code is intended to be used only with Waspmote Plug & Sense!
 *  series (encapsulated line) and is not valid for Waspmote. Use only
 *  with Waspmote Plug & Sense! IDE (do not confuse with Waspmote IDE).
 *
 *  Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.
 *  http://www.libelium.com
 *
 *  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
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  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 <http://www.gnu.org/licenses/>.
 *
 *  Version:		0.1
 *  Generated:		30/12/2014
 *
 */

// Step 1. Includes of the Sensor Board and Communications modules used

#include <WaspSensorCities.h>

#include <WaspGPS.h>

#include <WaspXBee868.h>

// Step 2. Variables declaration

char  CONNECTOR_A[3] = "CA";      
char  CONNECTOR_B[3] = "CB";       
char  CONNECTOR_C[3] = "CC";
char  CONNECTOR_D[3] = "CD";
char  CONNECTOR_E[3] = "CE";
char  CONNECTOR_F[3] = "CF";

long  sequenceNumber = 0;        
                                               
char  nodeID[10] = "WASP123456";     

char* sleepTime = "00:00:01:00";  

char data[100];             

float connectorAFloatValue;       
float connectorBFloatValue;      
float connectorCFloatValue;          
float connectorDFloatValue;      
float connectorEFloatValue;
float connectorFFloatValue;

int connectorAIntValue;
int connectorBIntValue;
int connectorCIntValue;
int connectorDIntValue;
int connectorEIntValue;
int connectorFIntValue;

char  connectorAString[10];       
char  connectorBString[10];      
char  connectorCString[10];
char  connectorDString[10];
char  connectorEString[10];
char  connectorFString[10];

char  gpsLatitude[4] = "GLA";
char  gpsLongitude[4] = "GLO";
char  gpsAltitude[4] = "GAL";
bool  gpsStatus;

int   batteryLevel;
char  batteryLevelString[10];
char  BATTERY[4] = "BAT";

char  TIME_STAMP[3] = "TS";

char* macAddress="5EFF56A2AF10"; 

packetXBee* packet;


void setup() 
{

// Step 3. Communication module initialization

// Step 4. Communication module to ON

    xbee868.ON();

// Step 5. Initial message composition

    // Memory allocation
    packet=(packetXBee*) calloc(1,sizeof(packetXBee));
    // Choose transmission mode: UNICAST or BROADCAST
    packet->mode=UNICAST;
    // Set destination XBee parameters to packet
    xbee868.setDestinationParams( packet, macAddress, "Hello, this is Waspmote Plug & Sense!\r\n");

// Step 6. Initial message transmission

    xbee868.sendXBee(packet);
    // Free variables
    free(packet);
    packet=NULL;

// Step 7. Communication module to OFF

    xbee868.OFF();
    delay(100);


}

void loop()
{
// Step 8. Turn on the Sensor Board

    //Turn on the sensor board
    SensorCities.ON();
    //Turn on the RTC
    RTC.ON();

//Turn on the GPS
    GPS.ON();
    
    // waiting for GPS is connected to satellites (240 seconds)
    gpsStatus = GPS.waitForSignal(240);
    //supply stabilization delay
    delay(100);

// Step 9. Turn on the sensors

    //En el caso de la placa de eventos no aplica

    SensorCities.setSensorMode(SENS_ON, SENS_CITIES_TEMPERATURE);
    delay(100);

    SensorCities.setSensorMode(SENS_ON, SENS_CITIES_HUMIDITY);
    delay(100);

    SensorCities.setSensorMode(SENS_ON, SENS_CITIES_LDR);
    delay(100);

    SensorCities.setSensorMode(SENS_ON, SENS_CITIES_AUDIO);
    delay(2000);

    SensorCities.setSensorMode(SENS_ON, SENS_CITIES_DUST);
    delay(5000);

// Step 10. Read the sensors

    

    // Getting Time
    GPS.getPosition();

    // First dummy reading for analog-to-digital converter channel selection
    PWR.getBatteryLevel();
    // Getting Battery Level
    batteryLevel = PWR.getBatteryLevel();
    // Conversion into a string
    itoa(batteryLevel, batteryLevelString, 10);

    //First dummy reading for analog-to-digital channel selection
    SensorCities.readValue(SENS_CITIES_TEMPERATURE);
    //Sensor temperature reading
    connectorAFloatValue = SensorCities.readValue(SENS_CITIES_TEMPERATURE);
    //Conversion into a string
    Utils.float2String(connectorAFloatValue, connectorAString, 2);

    //First dummy reading for analog-to-digital converter channel selection
    SensorCities.readValue(SENS_CITIES_HUMIDITY);
    //Sensor temperature reading
    connectorBFloatValue = SensorCities.readValue(SENS_CITIES_HUMIDITY);
    //Conversion into a string
    Utils.float2String(connectorBFloatValue, connectorBString, 2);

    //First dummy reading for analog-to-digital converter channel selection
    SensorCities.readValue(SENS_CITIES_LDR);
    //Sensor temperature reading
    connectorCFloatValue = SensorCities.readValue(SENS_CITIES_LDR);
    //Conversion into a string
    Utils.float2String(connectorCFloatValue, connectorCString, 2);

    //First dummy reading for analog-to-digital converter channel selection
    SensorCities.readValue(SENS_CITIES_AUDIO);
    //Sensor temperature reading
    connectorDFloatValue = SensorCities.readValue(SENS_CITIES_AUDIO);
    //Conversion into a string
    Utils.float2String(connectorDFloatValue, connectorDString, 2);

    //First dummy reading for analog-to-digital converter channel selection
    SensorCities.readValue(SENS_CITIES_DUST);
    //Sensor temperature reading
    connectorEFloatValue = SensorCities.readValue(SENS_CITIES_DUST);
    //Conversion into a string
    Utils.float2String(connectorEFloatValue, connectorEString, 3);

// Step 11. Turn off the sensors

    //En el caso de la placa de eventos no aplica

    SensorCities.setSensorMode(SENS_OFF, SENS_CITIES_TEMPERATURE);

    SensorCities.setSensorMode(SENS_OFF, SENS_CITIES_HUMIDITY);

    SensorCities.setSensorMode(SENS_OFF, SENS_CITIES_LDR);

    SensorCities.setSensorMode(SENS_OFF, SENS_CITIES_AUDIO);

    SensorCities.setSensorMode(SENS_OFF, SENS_CITIES_DUST);

// Step 12. Message composition

    //Data payload composition
    sprintf(data,"I:%s#N:%li#%s:%s#%s:%s#%s:%s#%s:%s#%s:%s#%s:%s#%s:%s#%s:%s#%s:%s#%s:%s\r\n",
	nodeID ,
	sequenceNumber,
	gpsLatitude, GPS.latitude ,
	gpsLongitude, GPS.longitude ,
	gpsAltitude, GPS.altitude,
	BATTERY, batteryLevelString,
	TIME_STAMP, RTC.getTimestamp(),
	CONNECTOR_A , connectorAString,
	CONNECTOR_B , connectorBString,
	CONNECTOR_C , connectorCString,
	CONNECTOR_D , connectorDString,
	CONNECTOR_E , connectorEString);

    // Memory allocation
    packet=(packetXBee*) calloc(1,sizeof(packetXBee));
    // Choose transmission mode: UNICAST or BROADCAST
    packet->mode=UNICAST;
    // Set destination XBee parameters to packet
    xbee868.setDestinationParams( packet, macAddress, data);

// Step 13. Communication module to ON

    xbee868.ON();

// Step 14. Message transmission

    xbee868.sendXBee(packet);
    // Free variables
    free(packet);
    packet=NULL;

// Step 15. Communication module to OFF

    xbee868.OFF();
    delay(100);

// Step 16. Entering Sleep Mode

    PWR.deepSleep(sleepTime,RTC_OFFSET,RTC_ALM1_MODE1,ALL_OFF);
    //Increase the sequence number after wake up
    sequenceNumber++;


}