Всем здравствуйте!
Мне хотелось подключить датчик BME280 но для него нет ноды. Я не очень могу в C++ Но датчик подключить надо. ПРошу пожалуйста ноду. Буду благодарен!
This sensor uses I2C communication, so xod/i2c/* nodes can probably be used to communicate with it. Some info on wiring and what to read/write is available in spec sheet: https://www.bosch-sensortec.com/media/boschsensortec/downloads/environmental_sensors_2/humidity_sensors_1/bme280/bst-bme280-ds002.pdf.
Есть библиотека для BMX280.
Нода сама определяет тип датчика - BMP280 или BME280.
https://xod.io/libs/dinosalvioni/hwlibrary/
Можно скинуть мне что подправить. А то я маленько рукожоп.
Тебе придётся разобраться самому. Есть нюансы, относительно распиновки, подключения модуля, адреса и т.п. Разверни код ноды, почитай. Там всё описано.
Попробовал. Не понял ничего. Помогите. Я не знаю где поправить
Подключите датчик, согласно указанной в коде распиновке.
Если не заработает - проверьте адрес датчика I2C сканером.
не работает. что делать
А что конкретно не работает?
Я вижу, что у вас даже компиляция не проходит.
Не говоря уж о работоспособности кода или модуля.
#pragma XOD require “https://github.com/christandlg/BMx280MI”
// Arduino - BMP280 / BME280
// 3.3V ---- VCC
// GND ----- GND
// SDA ----- SDA
// SCL ----- SCL
// some BMP280/BME280 modules break out the CSB and SDO pins as well:
// 5V ------ CSB (enables the I2C interface)
// GND ----- SDO (I2C Address 0x76)
// 5V ------ SDO (I2C Address 0x77)
// other pins can be left unconnected.
{{#global}}
#include <Arduino.h>
#include <Wire.h>
#include <BMx280I2C.h>
#define I2C_ADDRESS 0x76
{{/global}}
struct State {
};
{{ GENERATED_CODE }}
void evaluate(Context ctx) {
auto state = getState(ctx);
if (isInputDirty<input_UPD>(ctx)) {
Wire.begin();
//create a BMx280I2C object using the I2C interface with I2C Address 0x76
//auto I2C_ADDRESS = getValue<input_ADDR>(ctx);
BMx280I2C bmx280(I2C_ADDRESS);
if (!bmx280.begin())
{
Serial.println("begin() failed. check your BMx280 Interface and I2C Address.");
}
if (bmx280.isBME280())
Serial.println("sensor is a BME280");
else
Serial.println("sensor is a BMP280");
//reset sensor to default parameters.
bmx280.resetToDefaults();
//by default sensing is disabled and must be enabled by setting a non-zero
//oversampling setting.
//set an oversampling setting for pressure and temperature measurements.
bmx280.writeOversamplingPressure(BMx280MI::OSRS_P_x16);
bmx280.writeOversamplingTemperature(BMx280MI::OSRS_T_x16);
//if sensor is a BME280, set an oversampling setting for humidity measurements.
if (bmx280.isBME280())
bmx280.writeOversamplingHumidity(BMx280MI::OSRS_H_x16);
//start a measurement
if (!bmx280.measure())
{
//Serial.println("could not start measurement, is a measurement already running?");
return;
}
//wait for the measurement to finish
int i = 0;
do
{
delay(100);
i=i+1;
} while (!bmx280.hasValue() or i<10);
auto temperature = bmx280.getTemperature();
auto pressure = bmx280.getPressure();
auto humidity = bmx280.getHumidity();
emitValue<output_PRES>(ctx, pressure);
emitValue<output_TEMP>(ctx, temperature);
if (bmx280.isBME280())
// emitValue<output_HUM>(ctx, humidity);
}emitValue<output_DONE>(ctx, 1);
}
I have the same problem. This node for BME280 has an error in this block
{{#global}}
#include <Arduino.h>
#include <Wire.h>
#include <BMx280I2C.h>
#define I2C_ADDRESS 0x76
{{/global}}
Adding the line has helped me.
#include <BMx280MI.h>
Now block looks like this
{{#global}}
#include <Arduino.h>
#include <Wire.h>
#include <BMx280I2C.h>
#include <BMx280MI.h>
//#define I2C_ADDRESS 0x76
{{/global}}
If you go to my reply on this topic it may help. ### Topic: GY-BMP280 Temperature humidity and pressure senzor
https://forum.xod.io/t/gy-bmp280-temperature-humidity-and-pressure-senzor/3220?u=skippy2k
из коробки не завелось.
нет, это дает ошибку компиляции. я могу только заставить его работать, отредактировав c ++ в BMx280i2c.h
BMx280I2C.h так правильнее ( регистр имеет значения)
вот у меня так:
{{#global}}
#include <Arduino.h>
#include <Wire.h>
#include <BMx280I2C.h>
//#define I2C_ADDRESS 0x76
{{/global}}
и все работает
адрес датчика указал в патче проекта
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.