GravityGeneral

SEN0465 Gravity O2 sensor (V1.1) reads 15.7 %Vol in fresh air instead of 20.9 after 24 h warm-up

userHead furkankaplan 2026-11-05 20:04:24 23 Views0 Replies

Hello everyone,

I have a Gravity: Factory Calibrated Electrochemical O2 Sensor (SEN0465, 0–25 %Vol, I2C), board revision V1.1, connected to an ESP8266 (NodeMCU). Communication works perfectly, but the sensor reports 15.7 %Vol in fresh outdoor air instead of ~20.9 %Vol, and the value has not changed after more than 24 hours of continuous power. I emailed techsupport@dfrobot.com on [DATE] but haven't received a reply yet, so I'm hoping someone here can help.

 

Hardware / setup

Sensor: SEN0465, board V1.1, purchased [PURCHASE DATE] from [SHOP], order no. [ORDER NUMBER – optional, or send privately]MCU: ESP8266 NodeMCU (CH340), Arduino core [ESP8266 CORE VERSION]Wiring: D/T (SDA) → D2/GPIO4, C/R (SCL) → D1/GPIO5, "–" → GND, "+" → 3.3 V (also tested on 5 V, same result)SEL switch = 0 (I2C), address switches A0 = A1 = 0 → address 0x74 (found by I2C scan)Another sensor on the same bus (SHT21 at 0x40) works fineSensor is in open air, not enclosed, away from breath or any gas source

 

Software

Library: DFRobot_MultiGasSensor v3.0.0 (the .cpp is byte-identical to the current GitHub version)Sequence (same as the wiki passive-mode example): 

gas.begin();
gas.changeAcquireMode(gas.PASSIVITY);
gas.setTempCompensation(gas.OFF);
float o2 = gas.readGasConcentrationPPM();   // returns 15.7

 

What I've verified

Every command gets a full 9-byte response, endTransmission() returns 0, checksum is correct on all frames.Gas type reported by the module = 0x05 (O2).Raw frames (repeated many times, always identical):

 

Cmd 0x86 (concentration): FF 86 00 9D 05 01 00 00 D7   -> 0x009D = 157, 1 decimal -> 15.7 %Vol, gas type 0x05
Cmd 0x87 (temperature)  : FF 87 01 E3 00 00 00 00 95   -> board temp ~28 °C
Cmd 0x91 (cell voltage) : FF 91 00 67 00 00 00 00 08   -> 0x67 = 103 -> ~0.604 V

 

So the low value is calculated by the module itself; the library is only decoding it correctly.Warm-up: powered continuously for 24+ h ([TOTAL HOURS] h by now) in fresh air — no change (still 15.7 %, cell voltage still 0.604 V).Supply 3.3 V vs 5 V: no change.Temperature compensation ON/OFF: no change (the library doesn't apply it to O2 anyway).I have not used the module's calibration command, because as far as I understand it overwrites the factory calibration without a reference gas.The board is V1.1, so the V1.0 hardware issue mentioned in the wiki FAQ should not apply.

 

Questions

1) Is a cell voltage of ~0.60 V in fresh air normal for this sensor, or does it indicate a degraded / faulty electrochemical cell? What cell voltage would you expect at 20.9 %Vol?2) Is there a safe way to re-calibrate in fresh air (20.9 %) without a reference gas cylinder, and would that be accurate across the 0–25 % range?3) If this looks like a defective unit, what information do you need for a warranty replacement?