Library bme680 werkt niet op Arduino pro micro

Hallo iedereen,

Voor ons eindwerk maken we een thermostaat. We zouden graag werken met een bme680, omdat die module luchtvochtigheid, temperatuur, luchtdruk en luchtkwaliteit kan meten. Ideaal dus voor een thermostaat. Het probleem is dat we geen enkele library vinden die werkt op een Arduino pro micro. De meesten werken wel op een Arduino mego. Is er iets wat we moeten aanpassen aan de code/library, of weten jullie nog iets anders?

Alvast bedankt.

runeRune

De pro micro heeft dezelfde controller als de Leonardo, en die is echt anders dan die van de Uno.
Maar zo'n groot probleem mag dat nou ook weer niet zijn.

Geen idee wat de bme680 is en doet.
Maar als je er al wat voor hebt, waarom laat je dan niet zien wat je nu hebt ?
Anders moeten we hier ook maar een beetje gaan zitten gokken en das niet helemaal de bedoeling.

Ik heb de bme680 van adafruit gekocht, we hebben dan hun library met hun voorbeeld code getest op ee pro micro en dat werkte niet, op de mega werkte dat wel.

Ik weet niet of ik jou vraag goed heb, anders moet je het maar zeggen.

Laat het programma zien dat je gebruikt hebt voor het testen (jouw programma, niet het programma van de Adafruit website). Gebruik je I2C of SPI? Correct aangesloten?

Niet zeker of the Pro Micro bestaat in een 3.3V versie; indien je een 3.3V versie hebt, heb je daar rekening megehouden bij het aansluiten?

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include “Adafruit_BME680.h”

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME680 bme; // I2C
//Adafruit_BME680 bme(BME_CS); // hardware SPI
//Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);

void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println(F(“BME680 test”));

if (!bme.begin()) {
Serial.println(“Could not find a valid BME680 sensor, check wiring!”);
while (1);
}

// Set up oversampling and filter initialization
bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
bme.setGasHeater(320, 150); // 320*C for 150 ms
}

void loop() {
if (! bme.performReading()) {
Serial.println(“Failed to perform reading :(”);
return;
}
Serial.print(“Temperature = “);
Serial.print(bme.temperature);
Serial.println(” *C”);

Serial.print(“Pressure = “);
Serial.print(bme.pressure / 100.0);
Serial.println(” hPa”);

Serial.print(“Humidity = “);
Serial.print(bme.humidity);
Serial.println(” %”);

Serial.print(“Gas = “);
Serial.print(bme.gas_resistance / 1000.0);
Serial.println(” KOhms”);

Serial.print(“Approx. Altitude = “);
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(” m”);

Serial.println();
delay(2000);
}

Ik heb via I2C en via spi geprobeerd, beiden werken niet. De pro micro bestaat voor 5v en voor 3.3v. ik gebruik die van 5v. De bovenstaande code is de code van de website, maar het is die code die werkt op de mega.

Hoi.

Volgende keer graag je code in [code] [/code] tags zetten; dat helpt ons jou te helpen.
Dit staat vermeld in de gebruiksaanwijzing van het forum.

Het is precies wat je zou verwachten wanneer je de code voor 1 board gebruikt voor een ander board.
De pinnen die in de code worden gedefinieerd, kloppen niet met hoe het op het board dat je wil gebruiken zit.

.

Zoek de verschillen zou ik zeggen (je kunt op het plaatje klikken voor de bron ervan).
[edit]
Oeps, dit klopt niet helemaal.
In je code worden dingen gedefinieerd die helemaal niet gebruikt worden.
Maar toch zijn de pinnen die gebruikt worden, anders als de pinnen van het andere board.
Heb je daar rekening mee gehouden ?
[/edit]

Adafruit BME680: Adafruit BME680 - Temperature, Humidity, Pressure and Gas Sensor [STEMMA QT] : ID 3660 : $18.95 : Adafruit Industries, Unique & fun DIY electronics and kits.
Schema: Adafruit Learning System.
Dat is met level shifters voor I2C en MOSI en SCL. De CS en MISO zijn een beetje halfslachtig gedaan, maar zouden ook moeten werken met een Arduino 5V board.

Als je I2C mode hebt, kun je dan eens de I2C Scanner draaien ?
Als dat lukt, dan kun een paar registers proberen te lezen.

De BMP280 ... BME680 series vereisen nogal wat rekenwerk en de sensor heeft soms tijd nodig om een sample te nemen. De Adafruit libraries doen dat niet zo goed. Ik heb voor een BME280 ook een andere library moeten zoeken.

Hoe lang zijn de draden naar de sensor ? Ik hoop dat je geen flat-ribbon-kabel gebruikt.

@MAS3

sorry van die code, ik was bezig op mijn smartphone en ik wist niet hoe je zoiets moest doen.

ik had rekening gehouden met die verkeerd gedefinieerde pinnen, ik had ze aangepast, maar had het nog niet opgeslaan op mijn dropbox. ik zou nog willen vermelden dat het gebruiken van een rtc module via I2C en een lcd via I2C wel werkt.

@Koepel

de librarys die ik gebruikt heb zijn :
BlueDot BME680_Library
Adafruit_BME680_Library => samen met Adafruit_Sensor-master
ClosedCube_BME680
DFRobot_BME680-master

geen enkele van deze librarys werken op de pro micro.

Ik zal morgen eens testen met een I2C scanner, maar ik heb nu geen tijd meer. ik zal ook eens proberen op een arduino nano. misschien kunnen we veranderen van boards.

ik weet niet of dit belangrijk is, maar ik kan wel een lcd display en een rtc module aansturen via een I2C op de pro micro.