Waspmote/GeneratedCode001
Jump to navigation
Jump to search
/*
* -------- 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++;
}