Example Code for Arduino-Use UART to Read Gas Concentration
Last revision 2026/01/15
Download the program to Arduino UNO and open the serial monitor to check the gas concentration using UART communication.
Hardware Preparation
- DFRuino UNO R3 x1
- DFR0784 Smart Gas Sensor Terminal x1
- Gas probe x1
- Jumper wires
Software Preparation
- Arduino IDE
- Download and install the DFRobot_GasSensor Library. (About how to install the library?)
Other Preparation Work
- Connect the module to the Arduino according to the connection diagram above. Of course, you can also use it with Gravity I/O Expansion Board to complete the project prototype more conveniently and quickly.
- Turn the selector switch on the sensor to the UART side.
- Download and install the DFRobot_GasSensor Library. (About how to install the library?)
- Open Arduino IDE and upload the following code to Arduino UNO.
- Open the serial port monitor of Arduino IDE, adjust the baud rate to 115200, and observe the serial port print result.
Sample Code
/*!
* @file readGasConcentration.ino
* @brief Obtain the corresponding gas concentration in the current environment and output the concentration value
* @n Experiment method: Connect the sensor communication pin to the main control and burn codes into it.
* @n Communication mode selection, dial switch SEL:0: IIC, 1: UART
@n i2c address selection, the default i2c address is 0x77, A1 and A0 are combined into 4 types of IIC addresses
| A1 | A0 |
| 0 | 0 | 0x77
| 0 | 1 | 0x76
| 1 | 0 | 0x75
| 1 | 1 | 0x74 default i2c address
* @n Experimental phenomenon: You can see the corresponding gas concentration value of the environment at this time by printing on the serial port
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author PengKaixing([email protected])
* @version V1.0
* @date 2021-03-28
* @get from https://www.dfrobot.com
* @url https://github.com/dfrobot/DFRobot_GasSensor
*/
#include "DFRobot_GasSensor.h"
/*
//Enabled by default, use IIC communication at this time use UART communication when disabled
#define I2C_COMMUNICATION
#ifdef I2C_COMMUNICATION
#define I2C_ADDRESS 0x77
DFRobot_GAS_I2C gas(&Wire ,I2C_ADDRESS);
#else*/
#if (!defined ARDUINO_ESP32_DEV) && (!defined __SAMD21G18A__)
/**
UNO:pin_2-----RX
pin_3-----TX
*/
SoftwareSerial mySerial(2,3);
DFRobot_GAS_SoftWareUart gas(&mySerial);
#else
/**
ESP32:IO16-----RX
IO17-----TX
*/
DFRobot_GAS_HardWareUart gas(&Serial2); //ESP32HardwareSerial
#endif
//#endif
void setup() {
/**
Serial port initialization, used to view print output
*/
Serial.begin(115200);
/**
Sensor initialization, used to initialize the serial port or initialize the IIC, determined by the communication method used at the time
*/
while(!gas.begin())
{
Serial.println("NO Deivces !");
delay(1000);
}
Serial.println("The device is connected successfully!");
/**
The data acquisition mode is: the main control needs to request data from the sensor
*/
while (!gas.changeAcquireMode(gas.PASSIVITY))
{
delay(1000);
}
Serial.println("change acquire mode success!");
/**
Turn on temperature compensation:gas.ON : Turn on
gas.OFF:Turn off
*/
gas.setTempCompensation(gas.ON);
/**
Change the probe type to: O2
*/
while (!gas.setGasType(gas.O2))
{
delay(1000);
}
Serial.println("change Gas Type success!");
}
void loop() {
/**
Fill in the type of gas to be obtained in the readGasConcentration() parameter, and print
Gas concentration at this time
Print with 1s delay time each time
*/
Serial.print("Ambient oxygen concentration is: ");
Serial.print(gas.readGasConcentrationPPM(/*气体类型*/gas.O2));
Serial.println(" %vol");
Serial.println();
delay(1000);
}
Result
Open the serial monitor, then you can get the corresponding gas concentration.
Note:
The product needs to be warmed up for more than 5 minutes when powered on for the first time, and it is recommended to warm up for more than 24 hours if it has not been used for a long time.
Additional Information
- The sample code uses an O2 probe. If you use other probes, you need to modify the detection gas type of the corresponding probe.
Was this article helpful?
