Problemi con Grove Multichannel Gas Sensor connesso a MKR Wifi 1010

Buongiorno a tutti, il mio progetto prevede la realizzazione di un Data Logger che misura le concentrazioni di alcuni Gas (tramite Grove Multichannel Gas Sensor) e le invia tramite POST http ad una API.

Il problema è il seguente: per qualsiasi gas la concentrazione risulta invalid (<0).
Per verificare che il problema non fosse effettivamente il mio sensore, ho provato a collegarlo ad un Arduino Uno e in questo caso le misurazioni risultavano corrette.
Purtroppo non essendo un grande esperto ho diversi problemi a trovare cosa sia a non funzionare con la mia scheda MKR.
Vi posto qua sotto il codice che ho utilizzato come test per le misurazioni.
Vi ringrazio in anticipo per la disponibilità.

#include <Wire.h>
#include "MutichannelGasSensor.h"

void setup()
{
    Serial.begin(115200);  // start serial for output
    Serial.println("power on!");
    gas.begin(0x04);
    gas.powerOn();
    Serial.print("Firmware Version = ");
    Serial.println(gas.getVersion());
}

void loop()
{
    float c;

    c = gas.measure_NH3();
    Serial.print("The concentration of NH3 is ");
    if(c>=0) Serial.print(c);
    else Serial.print("invalid");
    Serial.println(" ppm");

    c = gas.measure_CO();
    Serial.print("The concentration of CO is ");
    if(c>=0) Serial.print(c);
    else Serial.print("invalid");
    Serial.println(" ppm");

    c = gas.measure_NO2();
    Serial.print("The concentration of NO2 is ");
    if(c>=0) Serial.print(c);
    else Serial.print("invalid");
    Serial.println(" ppm");

    c = gas.measure_C3H8();
    Serial.print("The concentration of C3H8 is ");
    if(c>=0) Serial.print(c);
    else Serial.print("invalid");
    Serial.println(" ppm");

    c = gas.measure_C4H10();
    Serial.print("The concentration of C4H10 is ");
    if(c>=0) Serial.print(c);
    else Serial.print("invalid");
    Serial.println(" ppm");

    c = gas.measure_CH4();
    Serial.print("The concentration of CH4 is ");
    if(c>=0) Serial.print(c);
    else Serial.print("invalid");
    Serial.println(" ppm");

    c = gas.measure_H2();
    Serial.print("The concentration of H2 is ");
    if(c>=0) Serial.print(c);
    else Serial.print("invalid");
    Serial.println(" ppm");

    c = gas.measure_C2H5OH();
    Serial.print("The concentration of C2H5OH is ");
    if(c>=0) Serial.print(c);
    else Serial.print("invalid");
    Serial.println(" ppm");

    delay(1000);
    Serial.println("...");
}

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Provvedo subito!

… ah, dopo che avrai fatto quanto su richiesto, cortesemente mette un link al sensore che stai utilizzando (credo sia quello di SeeedStudio, ma è meglio avere le informazioni esatte).

Guglielmo

Si tratta proprio di quello di SeeedStudio. Lascio comunque il link qua sotto:

http://wiki.seeedstudio.com/Grove-Multichannel_Gas_Sensor/

Presa come riferimento QUESTA altra pagina di SeeedStudio, vedo tra i documenti una libreria per interfacciarsi, QUESTA è quella che stai utilizzando?

Nel .h leggo:

#define ADDR_I2C_ADDRESS        20

... non è che bisogna cominciare con tale address e poi programmare l'address voluto (non conosco il sensore per cui chiedo :wink:)?

Guglielmo

La libreria è questa.
Il codice postato è stato preso dagli esempi della libreria e tra i commenti viene specificato che l'indirizzo di default è 0x04.
Questo funziona perfettamente su Arduino Uno ma restituisce "invalid" su MKR. Purtroppo non essendo molto pratico con I2C non so darle più informazioni di così :-[