Codice per gy-bmp280

Ciao!
Sto cercando di far funzionare un sensore gy-bmp280 abbinato ad un mega2560 e ad una LCD shield..
Avevo trovato un codice ma la temperatura registrata era notevolmente superiore a quella registrata da un termometro professionale..cmq la LCD shield non funzionava correttamente..
Nel datasheet del sensore https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMP280-DS001-19.pdf è presente il codice per correggere l'errore ma non saprei come inserirlo nell'eventuale stringa di codice (codice che non ho..tra l'altro).
Chiedo cortesemente se qualcuno mi può aiutare..grazie!

Se è un BMP280 usa la libreria di Adafruit che funziona piuttosto bene e, se hai un termometro di rifermento, nel codice applica una correzione così da sistemare l'eventuale spostamento.

Guglielmo

Grazie mille, sembra però che il codice debba essere corretto con quella formula perché il 'riscaldamento' deriva ma una resistenza interna che si attiva random..
Grazie ancora!

Ripeto, prova a guardare la libreria di Adafruit ... magari fa lei l'impostazione cercata ...
... io ne ho vari in funzione e, a parte una piccola costante correttiva (... comunque sempre necessaria in fase di calibrazione), sono piuttosto precisi.

Guglielmo

Grazie mille..ho confrontato il datasheet e sembra ci sia..ma guardandolo e riguardandolo mi sembra lo stesso codice che non funzionava col sensore in mio possesso..
Per quanto riguarda l'lcd shield il codice è quello generico? Posso fare un semplice copia/incolla? Lo dico perché un precedente codice non funzionava e non solo..anche il monitor seriale segnalava un errore dei collegamenti..
Grazie comunque!

Quale shield LCD (metti il link) ? ... su che piedini la collegavi ? Che libreria (metti il link) ?

Guglielmo

La shield è una DF robot..il codice è lo stesso di adafruit..l'ho ricontrollato ora..il problema è che non ho un codice funzionante..avevo mixato il codice adafruit con quello trovato di una DF robot shield ma mancò partiva il monitor seriale..
Sono completamento allo scuro di come compilare un codice :frowning: e non sono riuscito a trovarne uno in rete..

Credo che tu possa usare qualunque libreria per il BMP085 o BMP180, dovrebbero essere compatibili.

Io uso quella di SparkFun.

Grazie mille!

Voglio innanzi tutto ringraziare chi è intervenuto..
sono riuscito a far funzionare il tutto! :slight_smile: :slight_smile: :slight_smile:
Adesso rimane il problema della temperatura..che deve essere modulata secondo il driver ufficiale Bosch..
La pagina di riferimento è questa https://github.com/BoschSensortec/BMP280_driver ..immagino che a questo punto debba scaricare il tutto come zip e caricare tra le librerie..e poi scrivere nel codice il riferimento alla libreria..
Ho provato ma risultano decine di errori..
il codice è questo sotto..ad adafruit_bmp280.h ho sostituito bmp280.h come nella scheda Bosch ma, appunto, vengono molti errori..chiedo cortesemente un aiuto a voi esperti..grazie!

Guarda che credo che quella roba la faccia già la libreria che ti ho linkato. Il codice Bosch non è per Arduino, non è banale da integrare in ogni caso.

Hai risultati non corretti?

grazie mille per la spiegazione :slight_smile:
si, ho risultati di un paio di gradi superiori..
la spiegazione è questa e vale anche per il bmp280:
Concerning BME280 values (which are different then those from DHT22):
When using the Adafruit driver with its default configuration, temperature values are 1-2 degrees too high! (and dependent other values are "wrong")

You can also check: http://www.esp8266.com/viewtopic.php?f=13&t=8030&sid=5b736d896eb9758f6ae56ce5aefbaceb&start=28

Reason: BME280 has some self heating depending its sampling configuration mode.

This can be optimizied by setting "oversampling" parameters during BME280 init (refer to spec https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf - "weather monitoring").

The Adafruit driver can enable this by calling "setSampling()" for "weather monitoring" mode.

This should be integrated into Airrohr-firmware - afterwards the values will not be that different to DHT22.

stewecar:
The Adafruit driver can enable this by calling “setSampling()” for “weather monitoring” mode.

Fai solo questo.

Grazie mille..mi puoi spiegare come per favore? Devo intervenire sul codice?

Intanto ho scoperto che Adafruit ha una libreria apposita per il BME280, e devi obbligatoriamente usare questa.

Fatto questo, se vedi l'esempio advancedsettings, ci sono vari tipi di inizializzazione, tutti commentati. Scommentali uno alla volta e prova quale va meglio per il tuo caso. Da quel che leggo sopra, dovrebbe essere weather monitoring.

>stewecar: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post #9 (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra). Grazie.

Guglielmo

Grazie mille!

stewecar:
Grazie mille!

:o :o :o ... prego, ma ... DEVI correggere il post #9 ... :wink:

Guglielmo

Una cosa..gli advanced settings sono nel bme ma nel bmp non ci sono..la variazione da eseguire comunque è quella, a quanto ho capito e se ho capito, di utilizzare la libreria originale Bosch bmp280..il fatto è che poi restituisce degli errori..come ho scritto precedentemente..

SukkoPera:
Intanto ho scoperto che Adafruit ha una libreria apposita per il BME280, e devi obbligatoriamente usare questa.

Questo l'ho detto proprio perché solo questa libreria ha la funzione che ti interessa. Credo che il motivo sia che il riscaldatore è utile solo per le misure di umidità, e siccome il BMP misura solo la pressione, non ha il riscaldatore e di conseguenza la sua libreria non possiede le relative funzioni.