» GP 10: H2
This is the basic code to manage and read the molecular hydrogen (H2) gas sensor. The concentration and the enviromental variables will be stored in a frame. Cycle time: 5 minutes
Required Materials
1 x Waspmote
1 x Battery
1 x Gases PRO board
1 x Temperature, Humidity and Pressure sensor BME280
1 x H2 Gas Sensor [Calibrated]
Notes
- Remember to connect the battery to Waspmote for proper operation.
- The connection of the sensor is described in the Gases PRO technical guide.
- Cycle time: 5 minutes
- This example can only be executed in Waspmote v12
Code
/*
* ------------ [GP_10] - H2 --------------
*
* Explanation: This is the basic code to manage and read the molecular
* hydrogen (H2) gas sensor. The concentration and the enviromental variables
* will be stored in a frame. Cycle time: 5 minutes.
*
* Copyright (C) 2015 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
* Design: David Gascón
* Implementation: Alejandro Gállego
*/
#include <WaspSensorGas_Pro.h>
#include <WaspFrame.h>
/*
* Define object for sensor: H2
* Input to choose board socket.
* Waspmote OEM. Possibilities for this sensor:
* - SOCKET_1
* - SOCKET_2
* - SOCKET_3
* - SOCKET_4
* - SOCKET_5
* - SOCKET_6
* P&S! Possibilities for this sensor:
* - SOCKET_A
* - SOCKET_B
* - SOCKET_C
* - SOCKET_F
*/
Gas H2(SOCKET_2);
float concentration; // Stores the concentration level in ppm
float temperature; // Stores the temperature in ºC
float humidity; // Stores the realitve humidity in %RH
float pressure; // Stores the pressure in Pa
char node_ID[] = "H2_example";
void setup()
{
USB.println(F("H2 example"));
// Set the Waspmote ID
frame.setID(node_ID);
}
void loop()
{
///////////////////////////////////////////
// 1. Turn on the sensors
///////////////////////////////////////////
// Power on the H2 sensor.
// If the gases PRO board is off, turn it on automatically.
H2.ON();
// The sensor needs time to warm up and get a response from gas
// To reduce the battery consumption, use deepSleep instead delay
// After 2 minutes, Waspmote wakes up thanks to the RTC Alarm
PWR.deepSleep("00:00:02:00", RTC_OFFSET, RTC_ALM1_MODE1, ALL_ON);
///////////////////////////////////////////
// 2. Read sensors
///////////////////////////////////////////
// Read the H2 sensor and compensate with the temperature internally
concentration = H2.getConc();
// Read enviromental variables
temperature = H2.getTemp();
humidity = H2.getHumidity();
pressure = H2.getPressure();
///////////////////////////////////////////
// 3. Turn off the sensors
///////////////////////////////////////////
// Power off the H2 sensor. If there aren't more gas sensors powered,
// turn off the board automatically
H2.OFF();
///////////////////////////////////////////
// 4. Create ASCII frame
///////////////////////////////////////////
// Create new frame (ASCII)
frame.createFrame(ASCII);
// Add Cl2 concentration
frame.addSensor(SENSOR_GP_H2, concentration);
// Add temperature
frame.addSensor(SENSOR_GP_TC, temperature);
// Add humidity
frame.addSensor(SENSOR_GP_HUM, humidity);
// Add pressure
frame.addSensor(SENSOR_GP_PRES, pressure);
// Show the frame
frame.showFrame();
///////////////////////////////////////////
// 5. Sleep
///////////////////////////////////////////
// Go to deepsleep
// After 3 minutes, Waspmote wakes up thanks to the RTC Alarm
PWR.deepSleep("00:00:03:00", RTC_OFFSET, RTC_ALM1_MODE1, ALL_OFF);
}
Output
E#
H2 example
===============================
Current ASCII Frame:
Length: 81
Frame Type: 128
frame (HEX): 3C3D3E8004233338323533373336382348325F6578616D706C6523302347505F48323A312E3636382347505F54433A32382E3731302347505F48554D3A34302E32372347505F505245533A393830373623
frame (STR): <=>#382537368#H2_example#0#GP_H2:1.668#GP_TC:28.710#GP_HUM:40.27#GP_PRES:98076#
===============================
===============================
Current ASCII Frame:
Length: 81
Frame Type: 128
frame (HEX): 3C3D3E8004233338323533373336382348325F6578616D706C6523312347505F48323A312E3433372347505F54433A32382E3731302347505F48554D3A34302E32392347505F505245533A393830373023
frame (STR): <=>#382537368#H2_example#1#GP_H2:1.437#GP_TC:28.710#GP_HUM:40.29#GP_PRES:98070#
===============================
===============================
Current ASCII Frame:
Length: 81
Frame Type: 128
frame (HEX): 3C3D3E8004233338323533373336382348325F6578616D706C6523322347505F48323A312E3234372347505F54433A32382E3731302347505F48554D3A34302E32372347505F505245533A393830373623
frame (STR): <=>#382537368#H2_example#2#GP_H2:1.247#GP_TC:28.710#GP_HUM:40.27#GP_PRES:98076#
===============================