This is the code
Code:
// Settings
#define RES_O3 30
#define RES_NH3 30
#define RES_CO2 30
#define RES_NO2 2
#define RES_CO 30
#define RES_CH4 3
#define GAIN_O3 1
#define GAIN_NH3 1
#define GAIN_CO2 1
#define GAIN_CO 1
#define GAIN_NO2 1
#define GAIN_CH4 1
#define TIME 40000
#define MGAIN 10
#define RTCOFFSET 8
float vHumidity=0;
float vTemp = 0;
float valO3 = 0;
float valCH4 = 0;
float valNH3 = 0;
float valCO2 = 0;
float valCO = 0;
packetXBee* paq_sent;
int8_t state=0;
long previous=0;
char aux[512];
char* macHigh=" ";
char* macLow=" ";
int aux_1 = 0;
int aux_2 = 0;
#define key_access "LIBELIUM"
uint8_t direccion[8]={0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF};
char ZBprint (char* taux){
paq_sent=(packetXBee*) calloc(1,sizeof(packetXBee));
paq_sent->mode=BROADCAST;
paq_sent->MY_known=0;
paq_sent->packetID=0x52;
paq_sent->opt=0;
xbeeZB.hops=0;
xbeeZB.setOriginParams(paq_sent,MAC_TYPE);
xbeeZB.setDestinationParams(paq_sent, direccion, taux, MAC_TYPE, DATA_ABSOLUTE);
xbeeZB.sendXBee(paq_sent);
free(paq_sent);
paq_sent = NULL;
delay(1000);
return (0);
}
void setup(){
Utils.blinkLEDs(1000);
SensorGas.setBoardMode(SENS_ON);
delay(100);
// SensorGas.configureSensor(SENS_SOCKET2B, GAIN_O3, RES_O3);
SensorGas.configureSensor(SENS_SOCKET4C, GAIN_NH3, RES_NH3);
SensorGas.configureSensor(SENS_SOCKET2A, GAIN_CH4, RES_CH4);
SensorGas.configureSensor(SENS_CO2, GAIN_CO2);
SensorGas.configureSensor(SENS_SOCKET3B, GAIN_CO, RES_CO);
SensorGas.configureSensor(SENS_SOCKET2B, GAIN_NO2, RES_NO2);
for(int i=0;i<8;i++){
Utils.writeEEPROM(i+107,key_access[i]);
}
RTC.ON();
XBee.setMode(XBEE_ON);
XBee.begin(9600);
delay(1000);
XBee.print("+++");
delay(2000);
XBee.println("ATBD5,AP2,WR,CN");
delay(150);
XBee.setMode(XBEE_OFF);
XBee.close();
Utils.setLED(LED0, LED_ON);
Utils.setLED(LED1, LED_ON);
delay(5000);
Utils.setLED(LED0, LED_OFF);
Utils.setLED(LED1, LED_OFF);
for (int i=0;i<24;i++){
Utils.blinkLEDs(125);
}
xbeeZB.init(ZIGBEE,FREQ2_4G,NORMAL);
xbeeZB.ON();
delay(500);
int counter = 0;
while(xbeeZB.getOwnMac()==1&&counter<4){
xbeeZB.getOwnMac();
counter++;
}
Utils.hex2str(xbeeZB.sourceMacHigh,macHigh,4);
Utils.hex2str(xbeeZB.sourceMacLow,macLow,4);
}
void loop(){
Utils.blinkLEDs(1000);
/*
//Setting and getting Alarms
RTC.setAlarm1(RTC.getTime(),RTC_ABSOLUTE,RTC_ALM1_MODE2);
RTC.setAlarm1(0,0,RTCOFFSET,0,RTC_OFFSET,RTC_ALM1_MODE2);
// Setting Waspmote to Low-Power Consumption Mode
PWR.sleep(ALL_OFF);
Utils.blinkLEDs(500);
// Woken up, Powers XBee
SensorGas.setBoardMode(SENS_ON);
xbeeZB.ON();
Utils.blinkLEDs(1000);
*/
vHumidity = 37*SensorGas.readValue(SENS_HUMIDITY);
vTemp = 34*SensorGas.readValue(SENS_TEMPERATURE);
Utils.blinkLEDs(500);
SensorGas.setSensorMode(SENS_ON, SENS_SOCKET2B); delay(TIME);
valO3 = MGAIN*SensorGas.readValue(SENS_SOCKET2B);
Utils.blinkLEDs(500);
/*
SensorGas.setSensorMode(SENS_ON, SENS_SOCKET2B); delay(TIME);
valO3 = MGAIN*SensorGas.readValue(SENS_SOCKET2B); //NO2
Utils.blinkLEDs(500);
*/
SensorGas.setSensorMode(SENS_ON, SENS_SOCKET2A); delay(TIME);
valCH4 = MGAIN*SensorGas.readValue(SENS_SOCKET2A);
Utils.blinkLEDs(500);
valNH3 = MGAIN*SensorGas.readValue(SENS_SOCKET4C);
Utils.blinkLEDs(500);
SensorGas.setSensorMode(SENS_ON, SENS_CO2); delay(TIME);
valCO2 = MGAIN*SensorGas.readValue(SENS_CO2);
Utils.blinkLEDs(500);
valCO = MGAIN*SensorGas.readValue(SENS_SOCKET3B);
Utils.blinkLEDs(500);
sprintf(aux,"-BoardOne; mac:%s%s Time: %s; ",macHigh,macLow,RTC.getTime());
ZBprint(aux);
sprintf(aux,"-BoardOne; Altit:%s; Long:%s; Latit:%s %c%c",GPS.getAltitude(),GPS.getLongitude(),GPS.getLatitude(),'\r','\n');
ZBprint(aux);
sprintf(aux,"-BoardOne; Temp:%d; Humid:%d; Bat:%d%c; ",(int)vTemp,(int)vHumidity, PWR.getBatteryLevel(),'%');
ZBprint(aux);
sprintf(aux,"-BoardOne; NO2:%d; CH4:%d; NH3:%d; CO2:%d; CO:%d %c%c",(int)valO3,(int)valCH4,(int)valNH3,(int)valCO2,(int)valCO,'\r','\n'); //O3-change
ZBprint(aux);
}