Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ void setup()
if (!ret) {
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(1000);
m5::utility::delay(10000);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
namespace {
auto& lcd = M5.Display;
m5::unit::UnitUnified Units;
// m5::unit::UnitCO2 unit;
m5::unit::UnitCO2L unit;

} // namespace
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ void setup()
}
#else
#pragma message "Using Wire"
Wire.end();
Wire.begin(pin_num_sda, pin_num_scl, 400000U);

if (!Units.add(unitENV3, Wire) || !Units.begin()) {
Expand Down Expand Up @@ -134,19 +135,19 @@ void loop()
if (M5.BtnA.wasClicked()) {
m5::unit::sht30::Data ds{};
if (sht30.measureSingleshot(ds)) {
M5_LOGI("\n>SHT30Temp:%2.2f\n>Humidity:%2.2f", ds.temperature(), ds.humidity());
M5.Log.printf(">SHT30Temp:%2.2f\n>Humidity:%2.2f\n", ds.temperature(), ds.humidity());
}
m5::unit::qmp6988::Data dq{};
if (qmp6988.measureSingleshot(dq)) {
M5_LOGI("\n>QMP6988Temp:%2.2f\n>Pressure:%.2f", dq.temperature(), dq.pressure());
M5.Log.printf(">QMP6988Temp:%2.2f\n>Pressure:%.2f\n", dq.temperature(), dq.pressure() * 0.01f);
}
}
#else
if (sht30.updated()) {
M5_LOGI("\n>SHT30Temp:%2.2f\n>Humidity:%2.2f", sht30.temperature(), sht30.humidity());
M5.Log.printf(">SHT30Temp:%2.2f\n>Humidity:%2.2f\n", sht30.temperature(), sht30.humidity());
}
if (qmp6988.updated()) {
M5_LOGI("\n>QMP6988Temp:%2.2f\n>Pressure:%.2f", qmp6988.temperature(), qmp6988.pressure());
M5.Log.printf(">QMP6988Temp:%2.2f\n>Pressure:%.2f\n", qmp6988.temperature(), qmp6988.pressure() * 0.01f);
}
#endif
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ void setup()
}

#if defined(USING_ENV4)
Wire.end();
Wire.begin(pin_num_sda, pin_num_scl, 400000U);

if (!Units.add(unitENV4, Wire) || !Units.begin()) {
Expand All @@ -70,6 +71,7 @@ void setup()
}
}
#else
Wire.end();
Wire.begin(pin_num_sda, pin_num_scl, 400000U);
if (!Units.add(unitSHT40, Wire) || !Units.add(unitBMP280, Wire) || !Units.begin()) {
M5_LOGE("Failed to begin");
Expand All @@ -91,17 +93,17 @@ void loop()
Units.update();

if (sht40.updated()) {
M5_LOGI(
"\n>SHT40Temp:%.4f\n"
">Humidity:%.4f",
M5.Log.printf(
">SHT40Temp:%.4f\n"
">Humidity:%.4f\n",
sht40.temperature(), sht40.humidity());
}
if (bmp280.updated()) {
auto p = bmp280.pressure();
M5_LOGI(
"\n>BMP280Temp:%.4f\n"
M5.Log.printf(
">BMP280Temp:%.4f\n"
">Pressure:%.4f\n"
">Altitude:%.4f",
">Altitude:%.4f\n",
bmp280.temperature(), p * 0.01f /* To hPa */, calculate_altitude(p));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,12 @@ m5::unit::UnitENVPro unit;

void setup()
{
m5::utility::delay(2000);

M5.begin();

auto pin_num_sda = M5.getPin(m5::pin_name_t::port_a_sda);
auto pin_num_scl = M5.getPin(m5::pin_name_t::port_a_scl);
M5_LOGI("getPin: SDA:%u SCL:%u", pin_num_sda, pin_num_scl);
Wire.end();
Wire.begin(pin_num_sda, pin_num_scl, 400 * 1000U);

if (!Units.add(unit, Wire) || !Units.begin()) {
Expand All @@ -46,11 +45,11 @@ void loop()
Units.update();
if (unit.updated()) {
#if defined(UNIT_BME688_USING_BSEC2)
M5_LOGI("\n>IAQ:%.2f\n>Temperature:%.2f\n>Pressure:%.2f\n>Humidity:%.2f\n>GAS:%.2f", unit.iaq(),
unit.temperature(), unit.pressure(), unit.humidity(), unit.gas());
M5.Log.printf(">IAQ:%.2f\n>Temperature:%.2f\n>Pressure:%.2f\n>Humidity:%.2f\n>GAS:%.2f\n", unit.iaq(),
unit.temperature(), unit.pressure(), unit.humidity(), unit.gas());
#else
M5_LOGI("\n>Temperature:%.2f\n>Pressure:%.2f\n>Humidity:%.2f\n>GAS:%.2f", unit.temperature(), unit.pressure(),
unit.humidity(), unit.gas());
M5.Log.printf(">Temperature:%.2f\n>Pressure:%.2f\n>Humidity:%.2f\n>GAS:%.2f\n", unit.temperature(),
unit.pressure(), unit.humidity(), unit.gas());
m5::utility::delay(1000);
#endif
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ void setup()
auto pin_num_sda = M5.getPin(m5::pin_name_t::port_a_sda);
auto pin_num_scl = M5.getPin(m5::pin_name_t::port_a_scl);
M5_LOGI("getPin: SDA:%u SCL:%u", pin_num_sda, pin_num_scl);
Wire.end();
Wire.begin(pin_num_sda, pin_num_scl, 400 * 1000U);

if (!Units.add(unit, Wire) || !Units.begin()) {
Expand All @@ -50,6 +51,6 @@ void loop()
// SGP30 measurement starts 15 seconds after begin.
if (unit.updated()) {
// Can be checked on serial plotters
M5_LOGI("\n>CO2eq:%u\n>TVOC:%u", unit.co2eq(), unit.tvoc());
M5.Log.printf("\n>CO2eq:%u\n>TVOC:%u", unit.co2eq(), unit.tvoc());
}
}
11 changes: 6 additions & 5 deletions library.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@
"type": "git",
"url": "https://github.com/m5stack/M5Unit-ENV.git"
},
"dependencies": {
"M5UnitUnified": "https://github.com/m5stack/M5UnitUnified.git",
"BME68x Sensor library": "https://github.com/boschsensortec/Bosch-BME68x-Library.git",
"bsec2": "https://github.com/boschsensortec/Bosch-BSEC2-Library"
"dependencies":
{
"m5stack/M5UnitUnified": ">=0.1.0",
"boschsensortec/BME68x Sensor library": ">=1.3.40408",
"boschsensortec/bsec2": ">=1.10.2610"
},
"version": "1.2.1",
"version": "1.3.0",
"frameworks": [
"arduino"
],
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=M5Unit-ENV
version=1.2.1
version=1.3.0
author=M5Stack
maintainer=M5Stack
sentence=Library for M5Stack UNIT ENV
Expand Down
4 changes: 2 additions & 2 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ test_framework = googletest
test_build_src = true
lib_deps=m5stack/M5Unified
m5stack/M5UnitUnified
https://github.com/boschsensortec/Bosch-BME68x-Library.git @ 1.2.40408
boschsensortec/BME68x Sensor library@>=1.3.40408

; --------------------------------
[bsec2]
lib_deps = https://github.com/boschsensortec/Bosch-BSEC2-Library.git @ 1.8.2610
lib_deps = boschsensortec/bsec2@>=1.10.2610

[m5base]
monitor_speed = 115200
Expand Down
2 changes: 1 addition & 1 deletion src/unit/unit_BME688.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ float Data::get(const bsec_virtual_sensor_t vs) const
//
const char UnitBME688::name[] = "UnitBME688";
const types::uid_t UnitBME688::uid{"UnitBME688"_mmh3};
const types::attr_t UnitBME688::attr{};
const types::attr_t UnitBME688::attr{attribute::AccessI2C};

// I2C accessor
int8_t UnitBME688::read_function(uint8_t reg_addr, uint8_t* reg_data, uint32_t length, void* intf_ptr)
Expand Down
16 changes: 8 additions & 8 deletions src/unit/unit_BME688.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,6 @@
#ifndef M5_UNIT_ENV_UNIT_BME688_HPP
#define M5_UNIT_ENV_UNIT_BME688_HPP

#if (defined(ESP_PLATFORM) && (!defined(CONFIG_IDF_TARGET_ESP32C6) && \
(!defined(ARDUINO_M5Stack_NanoC6) && !defined(ARDUINO_M5STACK_NANOC6)))) || \
defined(DOXYGEN_PROCESS)
#pragma message "Using BSEC2"
#define UNIT_BME688_USING_BSEC2
#endif

#include <M5UnitComponent.hpp>
#include <m5_utility/stl/extension.hpp>

Expand All @@ -26,14 +19,21 @@
#include <bme68x/bme68x.h>
#endif

#if defined(UNIT_BME688_USING_BSEC2)
#if defined(CONFIG_IDF_TARGET_ESP32C6)
#pragma message "Not using bsec2"

#else
#pragma message "Using bsec2"
#define UNIT_BME688_USING_BSEC2

#if defined(ARDUINO)
#include <bsec2.h>
#else
#include <inc/bsec_datatypes.h>
#endif

#endif

#include <memory>
#include <limits>
#include <initializer_list>
Expand Down
2 changes: 1 addition & 1 deletion src/unit/unit_BMP280.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ float Data::pressure() const

const char UnitBMP280::name[] = "UnitBMP280";
const types::uid_t UnitBMP280::uid{"UnitBMP280"_mmh3};
const types::attr_t UnitBMP280::attr{};
const types::attr_t UnitBMP280::attr{attribute::AccessI2C};

bool UnitBMP280::begin()
{
Expand Down
22 changes: 14 additions & 8 deletions src/unit/unit_ENV3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ namespace m5 {
namespace unit {

using namespace m5::utility::mmh3;
using namespace m5::unit::types;

const char UnitENV3::name[] = "UnitENVIII";
const types::uid_t UnitENV3::uid{"UnitENVIII"_mmh3};
const types::attr_t UnitENV3::attr{0};
const char UnitENV3::name[] = "UnitENV3";
const types::uid_t UnitENV3::uid{"UnitENV3"_mmh3};
const types::attr_t UnitENV3::attr{attribute::AccessI2C};

UnitENV3::UnitENV3(const uint8_t addr) : Component(addr)
{
Expand All @@ -28,14 +29,19 @@ UnitENV3::UnitENV3(const uint8_t addr) : Component(addr)
_valid = add(sht30, 0) && add(qmp6988, 1);
}

Adapter* UnitENV3::duplicate_adapter(const uint8_t ch)
std::shared_ptr<Adapter> UnitENV3::ensure_adapter(const uint8_t ch)
{
if (ch >= 2) {
if (ch > 2) {
M5_LIB_LOGE("Invalid channel %u", ch);
return nullptr;
return std::make_shared<Adapter>(); // Empty adapter
}
auto unit = _children[ch];
return adapter()->duplicate(unit->address());
auto unit = child(ch);
if (!unit) {
M5_LIB_LOGE("Not exists unit %u", ch);
return std::make_shared<Adapter>(); // Empty adapter
}
auto ad = asAdapter<AdapterI2C>(Adapter::Type::I2C);
return ad ? std::shared_ptr<Adapter>(ad->duplicate(unit->address())) : std::make_shared<Adapter>();
}

} // namespace unit
Expand Down
3 changes: 1 addition & 2 deletions src/unit/unit_ENV3.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#define M5_UNIT_ENV_UNIT_ENV3_HPP

#include <M5UnitComponent.hpp>
#include <array>
#include "unit_SHT30.hpp"
#include "unit_QMP6988.hpp"

Expand Down Expand Up @@ -42,7 +41,7 @@ class UnitENV3 : public Component {
}

protected:
virtual Adapter* duplicate_adapter(const uint8_t ch) override;
virtual std::shared_ptr<Adapter> ensure_adapter(const uint8_t ch);

private:
bool _valid{}; // Did the constructor correctly add the child unit?
Expand Down
22 changes: 14 additions & 8 deletions src/unit/unit_ENV4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ namespace m5 {
namespace unit {

using namespace m5::utility::mmh3;
using namespace m5::unit::types;

const char UnitENV4::name[] = "UnitENVIV";
const types::uid_t UnitENV4::uid{"UnitENVIV"_mmh3};
const types::attr_t UnitENV4::attr{0};
const char UnitENV4::name[] = "UnitENV4";
const types::uid_t UnitENV4::uid{"UnitENV4"_mmh3};
const types::attr_t UnitENV4::attr{attribute::AccessI2C};

UnitENV4::UnitENV4(const uint8_t addr) : Component(addr)
{
Expand All @@ -28,14 +29,19 @@ UnitENV4::UnitENV4(const uint8_t addr) : Component(addr)
_valid = add(sht40, 0) && add(bmp280, 1);
}

Adapter* UnitENV4::duplicate_adapter(const uint8_t ch)
std::shared_ptr<Adapter> UnitENV4::ensure_adapter(const uint8_t ch)
{
if (ch >= 2) {
if (ch > 2) {
M5_LIB_LOGE("Invalid channel %u", ch);
return nullptr;
return std::make_shared<Adapter>(); // Empty adapter
}
auto unit = _children[ch];
return adapter()->duplicate(unit->address());
auto unit = child(ch);
if (!unit) {
M5_LIB_LOGE("Not exists unit %u", ch);
return std::make_shared<Adapter>(); // Empty adapter
}
auto ad = asAdapter<AdapterI2C>(Adapter::Type::I2C);
return ad ? std::shared_ptr<Adapter>(ad->duplicate(unit->address())) : std::make_shared<Adapter>();
}

} // namespace unit
Expand Down
2 changes: 1 addition & 1 deletion src/unit/unit_ENV4.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class UnitENV4 : public Component {
}

protected:
virtual Adapter* duplicate_adapter(const uint8_t ch) override;
virtual std::shared_ptr<Adapter> ensure_adapter(const uint8_t ch);

private:
bool _valid{}; // Did the constructor correctly add the child unit?
Expand Down
2 changes: 1 addition & 1 deletion src/unit/unit_QMP6988.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ float Data::pressure() const
//
const char UnitQMP6988::name[] = "UnitQMP6988";
const types::uid_t UnitQMP6988::uid{"UnitQMP6988"_mmh3};
const types::attr_t UnitQMP6988::attr{};
const types::attr_t UnitQMP6988::attr{attribute::AccessI2C};

types::elapsed_time_t calculatInterval(const Standby st, const Oversampling ost, const Oversampling osp, const Filter f)
{
Expand Down
2 changes: 1 addition & 1 deletion src/unit/unit_SCD40.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ float Data::humidity() const
// class UnitSCD40
const char UnitSCD40::name[] = "UnitSCD40";
const types::uid_t UnitSCD40::uid{"UnitSCD40"_mmh3};
const types::attr_t UnitSCD40::attr{0};
const types::attr_t UnitSCD40::attr{attribute::AccessI2C};

bool UnitSCD40::begin()
{
Expand Down
2 changes: 1 addition & 1 deletion src/unit/unit_SCD41.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ namespace unit {
// class UnitSCD41
const char UnitSCD41::name[] = "UnitSCD41";
const types::uid_t UnitSCD41::uid{"UnitSCD41"_mmh3};
const types::attr_t UnitSCD41::attr{};
const types::attr_t UnitSCD41::attr{attribute::AccessI2C};

bool UnitSCD41::is_valid_chip()
{
Expand Down
2 changes: 1 addition & 1 deletion src/unit/unit_SGP30.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ uint16_t Data::tvoc() const
// class UnitSGP30
const char UnitSGP30::name[] = "UnitSGP30";
const types::uid_t UnitSGP30::uid{"UnitSGP30"_mmh3};
const types::attr_t UnitSGP30::attr{};
const types::attr_t UnitSGP30::attr{attribute::AccessI2C};

bool UnitSGP30::begin()
{
Expand Down
2 changes: 1 addition & 1 deletion src/unit/unit_SHT30.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ float Data::humidity() const

const char UnitSHT30::name[] = "UnitSHT30";
const types::uid_t UnitSHT30::uid{"UnitSHT30"_mmh3};
const types::attr_t UnitSHT30::attr{};
const types::attr_t UnitSHT30::attr{attribute::AccessI2C};

bool UnitSHT30::begin()
{
Expand Down
2 changes: 1 addition & 1 deletion src/unit/unit_SHT40.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ float Data::humidity() const

const char UnitSHT40::name[] = "UnitSHT40";
const types::uid_t UnitSHT40::uid{"UnitSHT40"_mmh3};
const types::attr_t UnitSHT40::attr{};
const types::attr_t UnitSHT40::attr{attribute::AccessI2C};

bool UnitSHT40::begin()
{
Expand Down
Loading