Grove Oxygen Sensor Pro (Pre-calibration) always reads 25% O2

Hi Guys

Any updates as I am seeing the same thing - so I wrote a simple script to just look at the raw readout and voltage, when it is placed in an anaerobic cabinet (5% Carbon Dioxide, 5% Hydrogen, and 90% Nitrogen) and the sensor is very unstable - the Raw/AD is jumping between 77 and 1020 and the Voltage is 0.07 to 0.8V - I have a Grove Oxygen Sensor Pro (Pre-calibration. Part No. 101020912) - running with a Wio Terminal and this code


#include “TFT_eSPI.h”

TFT_eSPI tft;

void setup() {
// Initialize Serial
Serial.begin(9600);

// Initialize the TFT screen
tft.init();
tft.setRotation(3); // Landscape orientation
tft.fillScreen(TFT_BLACK);

// Set up the display layout
tft.setTextColor(TFT_WHITE);
tft.setTextSize(2);
tft.drawString(“Grove O2 Sensor”, 10, 10);
tft.drawString(“Voltage Reader”, 10, 40);

// Draw labels
tft.setTextColor(TFT_CYAN);
tft.drawString(“Raw A/D:”, 10, 80);
tft.drawString(“Voltage:”, 10, 110);
tft.drawString(“V”, 200, 110);

Serial.println(“Grove O2 Sensor - Simple Voltage Reader”);
Serial.println(“Sensor connected to A0”);
}

void loop() {
// Read analog value from A0 (Grove connector)
int rawValue = analogRead(A0);

// Convert to voltage (Wio Terminal: 3.3V reference, 12-bit ADC = 4096 levels)
float voltage = (rawValue * 3.3) / 4096.0;

// Clear previous readings on screen
tft.fillRect(120, 80, 120, 60, TFT_BLACK);

// Display readings on screen
tft.setTextColor(TFT_GREEN);
tft.setTextSize(2);
tft.drawString(String(rawValue), 120, 80);
tft.drawString(String(voltage, 4), 120, 110); // 4 decimal places

// Print to Serial monitor
Serial.print("Raw A/D: “);
Serial.print(rawValue);
Serial.print(” - Voltage: ");
Serial.print(voltage, 4);
Serial.println(“V”);

// Update every second
delay(1000);
}

cheers - Julian