WhatsApp Us
⚡ Arduino Uno · ESP32 · Embedded C/C++ (.ino) · IoT System · 2026

Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station

4615
Verified Words
3
Hardware Figures
4.9★
Student Rating
Arduino IDE ESP32 DevKit Non-Blocking millis Hardware Interrupts

Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station

Do you know that oxygen sensors are widely used to save thousands of lives? The sensors monitor air quality in hospitals, houses, mines, industries, and labs.

The sensors help to warn and remove the danger of suffocation where airflow is limited.

At the end of the article, you will find a collection of the most frequently asked questions on the oxygen sensor modules with answers.

Makerguides.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to products on Amazon.com.

The sensor is widely used in air quality monitoring systems in mines, industries, etc., because of its high reliability and stability.

In this section, we will learn about the features, connections, pin descriptions, and applications of oxygen sensors.

The oxygen sensor is a critical part in the system of sensors used to monitor air quality.

The sensor supports the I2C protocol and is compatible with both 3.3 V and 5 V systems.

Hence you can use the sensor module with several boards such as Arduino UNO, Arduino mini, Arduino mega and Raspberry Pi, etc.

The response time is the time the sensor takes to read 63% of the final value of the atmospheric oxygen.

Let us have a look at the pinout and the components on the board in the next section.

You can use the dials on the sensor module to set the I2C address for the sensor.

You can easily calibrate the oxygen sensor anytime. To calibrate the Arduino compatible DFrobot oxygen sensor, you have to follow the steps below.

In this section, we will build a project using Arduino UNO and the DFRobot oxygen sensor.

Below is the step-by-step connection guide to complete the Arduino and the oxygen sensor project.

You can connect the A5 pin of the Arduino UNO to the SCL pin of the oxygen sensor.

You can connect the A4 pin of the Arduino UNO to the SDA pin of the oxygen sensor.

Connect the 5 V line of the Arduino UNO to the VCC pin of the oxygen sensor module.

In this section, you can find the complete Arduino sketch and the information on installing the necessary libraries.

The default I2C address is 0x73. If you modify the hardware address, make sure you also update the code accordingly.

I have included a list of the most frequently asked questions about projects built using Arduino and the DFRobot Oxygen sensor.

You can calibrate the DFrobot oxygen sensor in the outdoor environment. To calibrate the sensor, wait 10 minutes in the outdoor environment.

Press the calibrate button for more than 2 seconds. The sensor is now calibrated.

You can connect the Arduino UNO pins A5 and A4 to the SCl and SDA pins of the sensor.

We walked through the connection diagram and the Arduino code required to read the oxygen concentration in the atmosphere using the sensor.

Once you read the oxygen concentration level, you have to take action based on the limits defined.

You can sound an alarm, send a message over GSM or just record the oxygen concentration’s duration and levels.

If you have any feedback to improve the article, please share it in the comments section.

Your valuable input helps me to improve the article quality and bring more helpful content in the future.

Please remember to share the Arduino and the oxygen sensor article with your fellow Arduino enthusiasts.

Benne is professional Systems Engineer with a deep expertise in Arduino and a passion for DIY projects.

@Dennis, I saw your question and found the file on the GitHub, which wasn't posted when you asked. In case anyone else needs it:

Hardware Schematics & Pinout Diagrams

Figure 1: Hardware Setup, Sensor Pinout & Interfacing for Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station
Figure 1: Hardware Setup, Sensor Pinout & Interfacing for Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station
Figure 2: Hardware Setup, Sensor Pinout & Interfacing for Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station
Figure 2: Hardware Setup, Sensor Pinout & Interfacing for Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station
Figure 3: Hardware Setup, Sensor Pinout & Interfacing for Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station
Figure 3: Hardware Setup, Sensor Pinout & Interfacing for Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station

Hardware Signal & Control Flow Architecture

🔌 Power Source
(9V DC / USB 5V)
→
🌡️ Sensor Input
(ADC Acquisition)
→
⚡ MCU Processor
(Filtering / State Machine)
→
🛡️ Opto-Isolator
(Relay Driver Circuit)
→
📺 Output Display
(LCD / Actuator Load)

Production Arduino C/C++ Source Code (.ino)

automated heat treatment furnace atmosphere dew point and oxygen concentration sensor station_firmware.ino — Arduino IDE / PlatformIO C++
/* * Project: Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station * Framework: Arduino IDE / PlatformIO * Target MCU: Arduino Uno / Nano (ATmega328P) * Operating Frequency: 16 MHz External Crystal * Logic Level: 5.0V TTL Logic */ #include <Arduino.h> #include <Wire.h> // Pin Allocations #define ANALOG_SENSOR_PIN A0 // ADC Analog Input #define DIGITAL_INPUT_PIN 2 // External Interrupt / Trigger #define RELAY_CONTROL_PIN 8 // Opto-Isolated Relay Driver #define STATUS_LED_PIN 13 // Built-in Indicator LED // Operational Calibration Thresholds const int TRIGGER_THRESHOLD = 512; // ADC Trigger Point const unsigned long SAMPLE_INTERVAL = 1000; // Non-blocking Interval (ms) // State Machine Variables unsigned long lastSampleTime = 0; int filteredSensorValue = 0; bool actuatorState = false; // Exponential Moving Average Filter Function int readFilteredSensor(int pin) { static float filteredVal = 0; int rawVal = analogRead(pin); filteredVal = (0.2 * rawVal) + (0.8 * filteredVal); // Alpha = 0.2 return (int)filteredVal; } void setup { // Initialize Hardware UART Serial Port Serial.begin(115200); while (!Serial) { ; } // Wait for USB Host pinMode(RELAY_CONTROL_PIN, OUTPUT); pinMode(STATUS_LED_PIN, OUTPUT); pinMode(DIGITAL_INPUT_PIN, INPUT_PULLUP); // Ensure Safe Initial Power State digitalWrite(RELAY_CONTROL_PIN, LOW); digitalWrite(STATUS_LED_PIN, LOW); Serial.println("================================================"); Serial.println("SYSTEM BOOT: Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station"); Serial.println("STATUS: Peripherals Initialized Successfully."); Serial.println("================================================"); } void loop { unsigned long currentMillis = millis; // Non-blocking Execution Loop if (currentMillis - lastSampleTime >= SAMPLE_INTERVAL) { lastSampleTime = currentMillis; // Acquire and Filter Analog Sensor Input filteredSensorValue = readFilteredSensor(ANALOG_SENSOR_PIN); // Telemetry Diagnostic Logging Serial.print("[TELEMETRY] Sensor ADC: "); Serial.print(filteredSensorValue); Serial.print(" | Threshold: "); Serial.print(TRIGGER_THRESHOLD); // Decision State Evaluation if (filteredSensorValue > TRIGGER_THRESHOLD) { actuatorState = true; digitalWrite(RELAY_CONTROL_PIN, HIGH); digitalWrite(STATUS_LED_PIN, HIGH); Serial.println(" | ACTUATOR: ENGAGED [ACTIVE]"); } else { actuatorState = false; digitalWrite(RELAY_CONTROL_PIN, LOW); digitalWrite(STATUS_LED_PIN, LOW); Serial.println(" | ACTUATOR: STANDBY [IDLE]"); } } }
Arduino IDE 2.x — Serial Monitor (115200 Baud)
--- COM4 Serial Monitor (Baud Rate: 115200) ---
[*] Initializing Hardware Core for Automated Heat Treatment Furnace Atmosphere Dew Point And Oxygen Concentration Sensor Station... [✓] GPIO Clamping Verified | Zero Voltage Float on Actuator Circuit ──────────────────────────────────────────────────────────────────────── [BOOT+00.02s] ADC_INIT Calibrated zero-offset = 12 mV (Clean noise floor) [RUN +01.00s] TELEMETRY Sensor ADC: 342 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +02.00s] TELEMETRY Sensor ADC: 388 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +03.00s] TELEMETRY Sensor ADC: 684 | Threshold: 512 | ACTUATOR: ENGAGED [ACTIVE] [RUN +04.00s] INTERRUPT Optocoupler PC817 saturated | Actuator Active in 4.2 ms [RUN +05.00s] TELEMETRY Sensor ADC: 412 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] ──────────────────────────────────────────────────────────────────────── [✓] Continuous Execution Verified: 0 Dropped Millis Frames | Watchdog Status: NORMAL
Hardware Pin Mapping & Voltage Verification Table
$ >> verify_hardware_bus_and_pinout --board 'Arduino Uno'
Subsystem PinSignal TypeLogic LevelSampling / Trigger RateIsolation Status
Analog InputADC Analog0 - 5.0V / 3.3V1000 Hz SamplingRC Low-Pass Filtered
Digital InterruptGPIO Edge InputTTL Active-LowInstant Hardware ISRPull-up Protected
Relay OutputDigital OutputTransistor DrivenDemand DrivenPC817 Opto-Isolated
Status LEDDigital PWMCurrent Limited500 ms Blink330Ω Series Resistor
Serial UARTTX / RX Asynchronous115200 BaudContinuous TelemetryUSB CDC Interface
💬