first commit

This commit is contained in:
stuce-bot 2025-06-30 20:47:33 +02:00
commit 5893b00dd2
1669 changed files with 1982740 additions and 0 deletions

View file

@ -0,0 +1,64 @@
/**
* @file ENV.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
DHT12 dht;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!dht.begin(&Wire, DHT12_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find DHT12");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (dht.update()) {
Serial.println("-----DHT12-----");
Serial.print("Temperature: ");
Serial.print(dht.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(dht.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file ENV_II.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_II
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,60 @@
/**
* @file ENV_III.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_III
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
Serial.begin(115200);
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 21, 22, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,71 @@
/**
* @file ENV_IV.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_IV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT4X sht4;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!sht4.begin(&Wire, SHT40_I2C_ADDR_44, 21, 22, 400000U)) {
Serial.println("Couldn't find SHT4x");
while (1) delay(1);
}
// You can have 3 different precisions, higher precision takes longer
sht4.setPrecision(SHT4X_HIGH_PRECISION);
sht4.setHeater(SHT4X_NO_HEATER);
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht4.update()) {
Serial.println("-----SHT4X-----");
Serial.print("Temperature: ");
Serial.print(sht4.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht4.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,142 @@
/**
* @file ENV_PRO.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_PRO
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* BME68x Sensor library: https://github.com/boschsensortec/Bosch-BME68x-Library
* BSEC2 Software Library: https://github.com/boschsensortec/Bosch-BSEC2-Library
*/
#include <bsec2.h>
/**
* @brief : This function checks the BSEC status, prints the respective error
* code. Halts in case of error
* @param[in] bsec : Bsec2 class object
*/
void checkBsecStatus(Bsec2 bsec);
/**
* @brief : This function is called by the BSEC library when a new output is
* available
* @param[in] input : BME68X sensor data before processing
* @param[in] outputs : Processed BSEC BSEC output data
* @param[in] bsec : Instance of BSEC2 calling the callback
*/
void newDataCallback(const bme68xData data, const bsecOutputs outputs,
Bsec2 bsec);
/* Create an object of the class Bsec2 */
Bsec2 envSensor;
/* Entry point for the example */
void setup(void) {
/* Desired subscription list of BSEC2 outputs */
bsecSensor sensorList[] = {
BSEC_OUTPUT_IAQ, BSEC_OUTPUT_RAW_TEMPERATURE,
BSEC_OUTPUT_RAW_PRESSURE, BSEC_OUTPUT_RAW_HUMIDITY,
BSEC_OUTPUT_RAW_GAS, BSEC_OUTPUT_STABILIZATION_STATUS,
BSEC_OUTPUT_RUN_IN_STATUS};
/* Initialize the communication interfaces */
Serial.begin(115200);
Wire.begin(21, 22);
/* Valid for boards with USB-COM. Wait until the port is open */
while (!Serial) delay(10);
/* Initialize the library and interfaces */
if (!envSensor.begin(BME68X_I2C_ADDR_HIGH, Wire)) {
checkBsecStatus(envSensor);
}
/* Subsribe to the desired BSEC2 outputs */
if (!envSensor.updateSubscription(sensorList, ARRAY_LEN(sensorList),
BSEC_SAMPLE_RATE_LP)) {
checkBsecStatus(envSensor);
}
/* Whenever new data is available call the newDataCallback function */
envSensor.attachCallback(newDataCallback);
Serial.println("BSEC library version " + String(envSensor.version.major) +
"." + String(envSensor.version.minor) + "." +
String(envSensor.version.major_bugfix) + "." +
String(envSensor.version.minor_bugfix));
}
/* Function that is looped forever */
void loop(void) {
/* Call the run function often so that the library can
* check if it is time to read new data from the sensor
* and process it.
*/
if (!envSensor.run()) {
checkBsecStatus(envSensor);
}
}
void newDataCallback(const bme68xData data, const bsecOutputs outputs,
Bsec2 bsec) {
if (!outputs.nOutputs) {
return;
}
Serial.println(
"BSEC outputs:\n\ttimestamp = " +
String((int)(outputs.output[0].time_stamp / INT64_C(1000000))));
for (uint8_t i = 0; i < outputs.nOutputs; i++) {
const bsecData output = outputs.output[i];
switch (output.sensor_id) {
case BSEC_OUTPUT_IAQ:
Serial.println("\tiaq = " + String(output.signal));
Serial.println("\tiaq accuracy = " +
String((int)output.accuracy));
break;
case BSEC_OUTPUT_RAW_TEMPERATURE:
Serial.println("\ttemperature = " + String(output.signal));
break;
case BSEC_OUTPUT_RAW_PRESSURE:
Serial.println("\tpressure = " + String(output.signal));
break;
case BSEC_OUTPUT_RAW_HUMIDITY:
Serial.println("\thumidity = " + String(output.signal));
break;
case BSEC_OUTPUT_RAW_GAS:
Serial.println("\tgas resistance = " + String(output.signal));
break;
case BSEC_OUTPUT_STABILIZATION_STATUS:
Serial.println("\tstabilization status = " +
String(output.signal));
break;
case BSEC_OUTPUT_RUN_IN_STATUS:
Serial.println("\trun in status = " + String(output.signal));
break;
default:
break;
}
}
}
void checkBsecStatus(Bsec2 bsec) {
if (bsec.status < BSEC_OK) {
Serial.println("BSEC error code : " + String(bsec.status));
} else if (bsec.status > BSEC_OK) {
Serial.println("BSEC warning code : " + String(bsec.status));
}
if (bsec.sensor.status < BME68X_OK) {
Serial.println("BME68X error code : " + String(bsec.sensor.status));
} else if (bsec.sensor.status > BME68X_OK) {
Serial.println("BME68X warning code : " + String(bsec.sensor.status));
}
}

View file

@ -0,0 +1,62 @@
/**
* @file Hat_ENVIII_M5StickC.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickC + Hat_ENVIII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
M5.begin();
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 0, 26, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 0, 26, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,62 @@
/**
* @file Hat_ENVIII_M5StickCPlus.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickCPlus + Hat_ENVIII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
M5.begin();
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 0, 26, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 0, 26, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,68 @@
/**
* @file Hat_ENVII_M5StickC.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickC + Hat_ENVII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
M5.begin();
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 0, 26, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 0, 26, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,68 @@
/**
* @file Hat_ENVII_M5StickCPlus.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickCPlus + Hat_ENVII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
M5.begin();
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 0, 26, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 0, 26, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,11 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitCO2
Required
- M5Unified: https://github.com/m5stack/M5Unified
*/
#include "main/PlotToSerial.cpp"

View file

@ -0,0 +1,99 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitCO2
*/
// #define USING_M5HAL // When using M5HAL
#include <M5Unified.h>
#include <M5UnitUnified.h>
#include <M5UnitUnifiedENV.h>
namespace {
auto& lcd = M5.Display;
m5::unit::UnitUnified Units;
m5::unit::UnitCO2 unit;
} // namespace
void setup()
{
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);
#if defined(USING_M5HAL)
#pragma message "Using M5HAL"
// Using M5HAL
m5::hal::bus::I2CBusConfig i2c_cfg;
i2c_cfg.pin_sda = m5::hal::gpio::getPin(pin_num_sda);
i2c_cfg.pin_scl = m5::hal::gpio::getPin(pin_num_scl);
auto i2c_bus = m5::hal::bus::i2c::getBus(i2c_cfg);
if (!Units.add(unit, i2c_bus ? i2c_bus.value() : nullptr) || !Units.begin()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#else
#pragma message "Using Wire"
// Using TwoWire
Wire.end();
Wire.begin(pin_num_sda, pin_num_scl, 400000U);
if (!Units.add(unit, Wire) || !Units.begin()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#endif
M5_LOGI("M5UnitUnified has been begun");
M5_LOGI("%s", Units.debugInfo().c_str());
{
auto ret = unit.stopPeriodicMeasurement();
float offset{};
ret &= unit.readTemperatureOffset(offset);
uint16_t altitude{};
ret &= unit.readSensorAltitude(altitude);
uint16_t pressure{};
ret &= unit.readAmbientPressure(pressure);
bool asc{};
ret &= unit.readAutomaticSelfCalibrationEnabled(asc);
uint16_t ppm{};
ret &= unit.readAutomaticSelfCalibrationTarget(ppm);
ret &= unit.startPeriodicMeasurement();
M5.Log.printf(
" temp offset:%f\n"
" sensor altitude:%u\n"
"ambient pressure:%u\n"
" ASC enabled:%u\n"
" ASC target:%u\n",
offset, altitude, pressure, asc, ppm);
if (!ret) {
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
}
lcd.clear(TFT_DARKGREEN);
}
void loop()
{
M5.update();
Units.update();
if (unit.updated()) {
// Can be checked e.g. by serial plotters
M5.Log.printf(">CO2:%u\n>Temperature:%2.2f\n>Humidity:%2.2f\n", unit.co2(), unit.temperature(),
unit.humidity());
}
}

View file

@ -0,0 +1,11 @@
/*
* SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitCO2L
Required
- M5Unified: https://github.com/m5stack/M5Unified
*/
#include "main/PlotToSerial.cpp"

View file

@ -0,0 +1,130 @@
/*
* SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitCO2L
*/
// #define USING_M5HAL // When using M5HAL
#include <M5Unified.h>
#include <M5UnitUnified.h>
#include <M5UnitUnifiedENV.h>
namespace {
auto& lcd = M5.Display;
m5::unit::UnitUnified Units;
m5::unit::UnitCO2L unit;
} // namespace
using namespace m5::unit::scd4x;
void setup()
{
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);
#if defined(USING_M5HAL)
#pragma message "Using M5HAL"
// Using M5HAL
m5::hal::bus::I2CBusConfig i2c_cfg;
i2c_cfg.pin_sda = m5::hal::gpio::getPin(pin_num_sda);
i2c_cfg.pin_scl = m5::hal::gpio::getPin(pin_num_scl);
auto i2c_bus = m5::hal::bus::i2c::getBus(i2c_cfg);
if (!Units.add(unit, i2c_bus ? i2c_bus.value() : nullptr) || !Units.begin()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#else
#pragma message "Using Wire"
// Using TwoWire
Wire.end();
Wire.begin(pin_num_sda, pin_num_scl, 400000U);
if (!Units.add(unit, Wire) || !Units.begin()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#endif
M5_LOGI("M5UnitUnified has been begun");
M5_LOGI("%s", Units.debugInfo().c_str());
{
auto ret = unit.stopPeriodicMeasurement();
float offset{};
ret &= unit.readTemperatureOffset(offset);
uint16_t altitude{};
ret &= unit.readSensorAltitude(altitude);
uint16_t pressure{};
ret &= unit.readAmbientPressure(pressure);
bool asc{};
ret &= unit.readAutomaticSelfCalibrationEnabled(asc);
uint16_t ppm{};
ret &= unit.readAutomaticSelfCalibrationTarget(ppm);
uint16_t initialPeriod{}, standardPeriod{};
ret &= unit.readAutomaticSelfCalibrationInitialPeriod(initialPeriod);
ret &= unit.readAutomaticSelfCalibrationStandardPeriod(standardPeriod);
ret &= unit.startPeriodicMeasurement();
M5.Log.printf(
" temp offset:%f\n"
" sensor altitude:%u\n"
"ambient pressure:%u\n"
" ASC enabled:%u\n"
" ASC target:%u\n"
" initial period:%u\n"
" standard period:%u\n",
offset, altitude, pressure, asc, ppm, initialPeriod, standardPeriod);
if (!ret) {
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(1000);
}
}
}
lcd.clear(TFT_DARKGREEN);
}
void loop()
{
M5.update();
auto touch = M5.Touch.getDetail();
// Periodic
Units.update();
if (unit.updated()) {
// Can be checked e.g. by serial plotters
M5.Log.printf(">CO2:%u\n>Temperature:%2.2f\n>Humidity:%2.2f\n", unit.co2(), unit.temperature(),
unit.humidity());
}
// Single shot
if (M5.BtnA.wasClicked() || touch.wasClicked()) {
static bool all{}; // false: RHT only
all = !all;
M5.Log.printf("Try single shot %u, waiting measurement...\n", all);
unit.stopPeriodicMeasurement();
Data d{};
if (all) {
if (unit.measureSingleshot(d)) {
M5.Log.printf(" SingleAll: %u/%2.2f/%2.2f\n", d.co2(), d.temperature(), d.humidity());
}
} else {
if (unit.measureSingleshotRHT(d)) {
M5.Log.printf(" SingleRHT: %2.2f/%2.2f", d.temperature(), d.humidity());
}
}
unit.startPeriodicMeasurement();
}
}

View file

@ -0,0 +1,11 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitENVIII
Required
- M5Unified: https://github.com/m5stack/M5Unified
*/
#include "main/PlotToSerial.cpp"

View file

@ -0,0 +1,153 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitENVIII
*/
#include <M5Unified.h>
#include <M5UnitUnified.h>
#include <M5UnitUnifiedENV.h>
// #define USING_M5HAL // When using M5HAL
// Using single shot measurement If defined
// #define USING_SINGLE_SHOT
// Using combined unit if defined
#define USING_ENV3
namespace {
auto& lcd = M5.Display;
m5::unit::UnitUnified Units;
#if defined(USING_ENV3)
#pragma message "Using combined unit(ENV3)"
m5::unit::UnitENV3 unitENV3;
#else
#pragma message "Using each unit"
m5::unit::UnitSHT30 unitSHT30;
m5::unit::UnitQMP6988 unitQMP6988;
#endif
#if defined(USING_ENV3)
auto& sht30 = unitENV3.sht30;
auto& qmp6988 = unitENV3.qmp6988;
#else
auto& sht30 = unitSHT30;
auto& qmp6988 = unitQMP6988;
#endif
} // namespace
void setup()
{
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);
#if defined(USING_SINGLE_SHOT)
{
auto cfg = sht30.config();
cfg.start_periodic = false;
sht30.config(cfg);
}
{
auto cfg = qmp6988.config();
cfg.start_periodic = false;
qmp6988.config(cfg);
}
#endif
#if defined(USING_ENV3)
#if defined(USING_M5HAL)
#pragma message "Using M5HAL"
m5::hal::bus::I2CBusConfig i2c_cfg;
i2c_cfg.pin_sda = m5::hal::gpio::getPin(pin_num_sda);
i2c_cfg.pin_scl = m5::hal::gpio::getPin(pin_num_scl);
auto i2c_bus = m5::hal::bus::i2c::getBus(i2c_cfg);
if (!Units.add(unitENV3, i2c_bus ? i2c_bus.value() : nullptr) || !Units.begin()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#else
#pragma message "Using Wire"
Wire.end();
Wire.begin(pin_num_sda, pin_num_scl, 400000U);
if (!Units.add(unitENV3, Wire) || !Units.begin()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#endif
#else
#if defined(USING_M5HAL)
#pragma message "Using M5HAL"
m5::hal::bus::I2CBusConfig i2c_cfg;
i2c_cfg.pin_sda = m5::hal::gpio::getPin(pin_num_sda);
i2c_cfg.pin_scl = m5::hal::gpio::getPin(pin_num_scl);
auto i2c_bus = m5::hal::bus::i2c::getBus(i2c_cfg);
if (!Units.add(unitSHT30, i2c_bus ? i2c_bus.value() : nullptr) ||
!Units.add(unitQMP6988, i2c_bus ? i2c_bus.value() : nullptr) || !Units.begin()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#else
#pragma message "Using Wire"
Wire.begin(pin_num_sda, pin_num_scl, 400000U);
if (!Units.add(unitSHT30, Wire) || !Units.add(unitQMP6988, Wire) || !Units.begin()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#endif
#endif
M5_LOGI("M5UnitUnified has been begun");
M5_LOGI("%s", Units.debugInfo().c_str());
#if defined(USING_SINGLE_SHOT)
M5_LOGI("\n>>> Click BtnA to single shot measurement");
#endif
lcd.clear(TFT_DARKGREEN);
}
void loop()
{
M5.update();
Units.update();
#if defined(USING_SINGLE_SHOT)
if (M5.BtnA.wasClicked()) {
m5::unit::sht30::Data ds{};
if (sht30.measureSingleshot(ds)) {
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.Log.printf(">QMP6988Temp:%2.2f\n>Pressure:%.2f\n", dq.temperature(), dq.pressure() * 0.01f);
}
}
#else
if (sht30.updated()) {
M5.Log.printf(">SHT30Temp:%2.2f\n>Humidity:%2.2f\n", sht30.temperature(), sht30.humidity());
}
if (qmp6988.updated()) {
M5.Log.printf(">QMP6988Temp:%2.2f\n>Pressure:%.2f\n", qmp6988.temperature(), qmp6988.pressure() * 0.01f);
}
#endif
}

View file

@ -0,0 +1,11 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitENVIV
Required
- M5Unified: https://github.com/m5stack/M5Unified
*/
#include "main/PlotToSerial.cpp"

View file

@ -0,0 +1,109 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitENVIV
*/
#include <M5Unified.h>
#include <M5UnitUnified.h>
#include <M5UnitUnifiedENV.h>
#include <cmath>
#define USING_ENV4
namespace {
auto& lcd = M5.Display;
m5::unit::UnitUnified Units;
#if defined(USING_ENV4)
#pragma message "Using combined unit(ENV4)"
m5::unit::UnitENV4 unitENV4;
#else
#pragma message "Using each unit"
m5::unit::UnitSHT40 unitSHT40;
m5::unit::UnitBMP280 unitBMP280;
#endif
#if defined(USING_ENV4)
auto& sht40 = unitENV4.sht40;
auto& bmp280 = unitENV4.bmp280;
#else
auto& sht40 = unitSHT40;
auto& bmp280 = unitBMP280;
#endif
float calculate_altitude(const float pressure, const float seaLvhPa = 1013.25f)
{
return 44330.f * (1.0f - pow((pressure / 100.f) / seaLvhPa, 0.1903f));
}
} // namespace
void setup()
{
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);
{
using namespace m5::unit::bmp280;
auto cfg = bmp280.config();
cfg.osrs_pressure = Oversampling::X16;
cfg.osrs_temperature = Oversampling::X2;
cfg.filter = Filter::Coeff16;
cfg.standby = Standby::Time500ms;
bmp280.config(cfg);
}
#if defined(USING_ENV4)
Wire.end();
Wire.begin(pin_num_sda, pin_num_scl, 400000U);
if (!Units.add(unitENV4, Wire) || !Units.begin()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#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");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
#endif
M5_LOGI("M5UnitUnified has been begun");
M5_LOGI("%s", Units.debugInfo().c_str());
lcd.clear(TFT_DARKGREEN);
}
void loop()
{
M5.update();
Units.update();
if (sht40.updated()) {
M5.Log.printf(
">SHT40Temp:%.4f\n"
">Humidity:%.4f\n",
sht40.temperature(), sht40.humidity());
}
if (bmp280.updated()) {
auto p = bmp280.pressure();
M5.Log.printf(
">BMP280Temp:%.4f\n"
">Pressure:%.4f\n"
">Altitude:%.4f\n",
bmp280.temperature(), p * 0.01f /* To hPa */, calculate_altitude(p));
}
}

View file

@ -0,0 +1,11 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitENVPro
Required
- M5Unified: https://github.com/m5stack/M5Unified
*/
#include "main/PlotToSerial.cpp"

View file

@ -0,0 +1,56 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitENVPro
*/
#include <M5Unified.h>
#include <M5UnitUnified.h>
#include <M5UnitUnifiedENV.h>
namespace {
auto& lcd = M5.Display;
m5::unit::UnitUnified Units;
m5::unit::UnitENVPro unit;
} // namespace
void setup()
{
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()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
M5_LOGI("M5UnitUnified has been begun");
M5_LOGI("%s", Units.debugInfo().c_str());
lcd.clear(TFT_DARKGREEN);
}
void loop()
{
M5.update();
Units.update();
if (unit.updated()) {
#if defined(UNIT_BME688_USING_BSEC2)
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.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
}
}

View file

@ -0,0 +1,9 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitTVOC
*/
#include "main/PlotToSerial.cpp"

View file

@ -0,0 +1,56 @@
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
Example using M5UnitUnified for UnitTVOC
*/
#include <M5Unified.h>
#include <M5UnitUnified.h>
#include <M5UnitUnifiedENV.h>
#include <Wire.h>
namespace {
auto& lcd = M5.Display;
m5::unit::UnitUnified Units;
m5::unit::UnitTVOC unit;
} // namespace
void setup()
{
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()) {
M5_LOGE("Failed to begin");
lcd.clear(TFT_RED);
while (true) {
m5::utility::delay(10000);
}
}
M5_LOGI("M5UnitUnified has been begun");
M5_LOGI("%s", Units.debugInfo().c_str());
M5_LOGW("SGP30 measurement starts 15 seconds after begin");
lcd.clear(TFT_DARKGREEN);
}
void loop()
{
M5.update();
Units.update();
// SGP30 measurement starts 15 seconds after begin.
if (unit.updated()) {
// Can be checked on serial plotters
M5.Log.printf("\n>CO2eq:%u\n>TVOC:%u", unit.co2eq(), unit.tvoc());
}
}

View file

@ -0,0 +1,43 @@
/**
* @file Unit_BPS1.1_M5Atom.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Atom + Unit BPS 1.1
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
QMP6988 qmp;
void setup() {
Serial.begin(115200);
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 26, 32, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
}
void loop() {
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,43 @@
/**
* @file Unit_BPS1.1_M5AtomS3.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5AtomS3 + Unit BPS 1.1
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
QMP6988 qmp;
void setup() {
Serial.begin(115200);
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 2, 1, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
}
void loop() {
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,43 @@
/**
* @file Unit_BPS1.1_M5AtomS3Lite.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5AtomS3Lite + Unit BPS 1.1
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
QMP6988 qmp;
void setup() {
Serial.begin(115200);
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 2, 1, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
}
void loop() {
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,43 @@
/**
* @file Unit_BPS1.1_M5Core.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit BPS 1.1
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
QMP6988 qmp;
void setup() {
Serial.begin(115200);
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 21, 22, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
}
void loop() {
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,45 @@
/**
* @file Unit_BPS1.1_M5Core2.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core2 + Unit BPS 1.1
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
QMP6988 qmp;
void setup() {
M5.begin();
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 32, 33, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
}
void loop() {
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,45 @@
/**
* @file Unit_BPS1.1_M5StickC.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickC + Unit BPS 1.1
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
QMP6988 qmp;
void setup() {
M5.begin();
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 32, 33, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
}
void loop() {
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,45 @@
/**
* @file Unit_BPS1.1_M5StickCPlus.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickCPlus + Unit BPS 1.1
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
QMP6988 qmp;
void setup() {
M5.begin();
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 32, 33, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
}
void loop() {
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,49 @@
/**
* @file Unit_BPS_M5Atom.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Atom + Unit BPS
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 26, 32, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,49 @@
/**
* @file Unit_BPS_M5AtomS3.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5AtomS3 + Unit BPS
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,49 @@
/**
* @file Unit_BPS_M5AtomS3Lite.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5AtomS3Lite + Unit BPS
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,49 @@
/**
* @file Unit_BPS_M5Core.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit BPS
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,51 @@
/**
* @file Unit_BPS_M5Core2.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core2 + Unit BPS
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
BMP280 bmp;
void setup() {
M5.begin();
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,51 @@
/**
* @file Unit_BPS_M5StickC.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickC + Unit BPS
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
BMP280 bmp;
void setup() {
M5.begin();
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,51 @@
/**
* @file Unit_BPS_M5StickCPlus.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickCPlus + Unit BPS
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
BMP280 bmp;
void setup() {
M5.begin();
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,51 @@
#include "M5UnitENV.h"
SCD4X scd4x;
void setup() {
Serial.begin(115200);
if (!scd4x.begin(&Wire, SCD4X_I2C_ADDR, 26, 32, 400000U)) {
Serial.println("Couldn't find SCD4X");
while (1) delay(1);
}
uint16_t error;
// stop potentially previously started measurement
error = scd4x.stopPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute stopPeriodicMeasurement(): ");
}
// Start Measurement
error = scd4x.startPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute startPeriodicMeasurement(): ");
}
Serial.println("Waiting for first measurement... (5 sec)");
}
void loop() {
if (scd4x.update()) // readMeasurement will return true when
// fresh data is available
{
Serial.println();
Serial.print(F("CO2(ppm):"));
Serial.print(scd4x.getCO2());
Serial.print(F("\tTemperature(C):"));
Serial.print(scd4x.getTemperature(), 1);
Serial.print(F("\tHumidity(%RH):"));
Serial.print(scd4x.getHumidity(), 1);
Serial.println();
} else {
Serial.print(F("."));
}
delay(1000);
}

View file

@ -0,0 +1,51 @@
#include "M5UnitENV.h"
SCD4X scd4x;
void setup() {
Serial.begin(115200);
if (!scd4x.begin(&Wire, SCD4X_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find SCD4X");
while (1) delay(1);
}
uint16_t error;
// stop potentially previously started measurement
error = scd4x.stopPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute stopPeriodicMeasurement(): ");
}
// Start Measurement
error = scd4x.startPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute startPeriodicMeasurement(): ");
}
Serial.println("Waiting for first measurement... (5 sec)");
}
void loop() {
if (scd4x.update()) // readMeasurement will return true when
// fresh data is available
{
Serial.println();
Serial.print(F("CO2(ppm):"));
Serial.print(scd4x.getCO2());
Serial.print(F("\tTemperature(C):"));
Serial.print(scd4x.getTemperature(), 1);
Serial.print(F("\tHumidity(%RH):"));
Serial.print(scd4x.getHumidity(), 1);
Serial.println();
} else {
Serial.print(F("."));
}
delay(1000);
}

View file

@ -0,0 +1,51 @@
#include "M5UnitENV.h"
SCD4X scd4x;
void setup() {
Serial.begin(115200);
if (!scd4x.begin(&Wire, SCD4X_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find SCD4X");
while (1) delay(1);
}
uint16_t error;
// stop potentially previously started measurement
error = scd4x.stopPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute stopPeriodicMeasurement(): ");
}
// Start Measurement
error = scd4x.startPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute startPeriodicMeasurement(): ");
}
Serial.println("Waiting for first measurement... (5 sec)");
}
void loop() {
if (scd4x.update()) // readMeasurement will return true when
// fresh data is available
{
Serial.println();
Serial.print(F("CO2(ppm):"));
Serial.print(scd4x.getCO2());
Serial.print(F("\tTemperature(C):"));
Serial.print(scd4x.getTemperature(), 1);
Serial.print(F("\tHumidity(%RH):"));
Serial.print(scd4x.getHumidity(), 1);
Serial.println();
} else {
Serial.print(F("."));
}
delay(1000);
}

View file

@ -0,0 +1,51 @@
#include "M5UnitENV.h"
SCD4X scd4x;
void setup() {
Serial.begin(115200);
if (!scd4x.begin(&Wire, SCD4X_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find SCD4X");
while (1) delay(1);
}
uint16_t error;
// stop potentially previously started measurement
error = scd4x.stopPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute stopPeriodicMeasurement(): ");
}
// Start Measurement
error = scd4x.startPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute startPeriodicMeasurement(): ");
}
Serial.println("Waiting for first measurement... (5 sec)");
}
void loop() {
if (scd4x.update()) // readMeasurement will return true when
// fresh data is available
{
Serial.println();
Serial.print(F("CO2(ppm):"));
Serial.print(scd4x.getCO2());
Serial.print(F("\tTemperature(C):"));
Serial.print(scd4x.getTemperature(), 1);
Serial.print(F("\tHumidity(%RH):"));
Serial.print(scd4x.getHumidity(), 1);
Serial.println();
} else {
Serial.print(F("."));
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file Unit_CO2_M5Core2.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core2 + Unit CO2
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SCD4X scd4x;
void setup() {
M5.begin();
if (!scd4x.begin(&Wire, SCD4X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SCD4X");
while (1) delay(1);
}
uint16_t error;
// stop potentially previously started measurement
error = scd4x.stopPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute stopPeriodicMeasurement(): ");
}
// Start Measurement
error = scd4x.startPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute startPeriodicMeasurement(): ");
}
Serial.println("Waiting for first measurement... (5 sec)");
}
void loop() {
if (scd4x.update()) // readMeasurement will return true when
// fresh data is available
{
Serial.println();
Serial.print(F("CO2(ppm):"));
Serial.print(scd4x.getCO2());
Serial.print(F("\tTemperature(C):"));
Serial.print(scd4x.getTemperature(), 1);
Serial.print(F("\tHumidity(%RH):"));
Serial.print(scd4x.getHumidity(), 1);
Serial.println();
} else {
Serial.print(F("."));
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file Unit_CO2_M5StickC.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickC + Unit CO2
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SCD4X scd4x;
void setup() {
M5.begin();
if (!scd4x.begin(&Wire, SCD4X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SCD4X");
while (1) delay(1);
}
uint16_t error;
// stop potentially previously started measurement
error = scd4x.stopPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute stopPeriodicMeasurement(): ");
}
// Start Measurement
error = scd4x.startPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute startPeriodicMeasurement(): ");
}
Serial.println("Waiting for first measurement... (5 sec)");
}
void loop() {
if (scd4x.update()) // readMeasurement will return true when
// fresh data is available
{
Serial.println();
Serial.print(F("CO2(ppm):"));
Serial.print(scd4x.getCO2());
Serial.print(F("\tTemperature(C):"));
Serial.print(scd4x.getTemperature(), 1);
Serial.print(F("\tHumidity(%RH):"));
Serial.print(scd4x.getHumidity(), 1);
Serial.println();
} else {
Serial.print(F("."));
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file Unit_CO2_M5StickCPlus.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickCPlus + Unit CO2
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SCD4X scd4x;
void setup() {
M5.begin();
if (!scd4x.begin(&Wire, SCD4X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SCD4X");
while (1) delay(1);
}
uint16_t error;
// stop potentially previously started measurement
error = scd4x.stopPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute stopPeriodicMeasurement(): ");
}
// Start Measurement
error = scd4x.startPeriodicMeasurement();
if (error) {
Serial.print("Error trying to execute startPeriodicMeasurement(): ");
}
Serial.println("Waiting for first measurement... (5 sec)");
}
void loop() {
if (scd4x.update()) // readMeasurement will return true when
// fresh data is available
{
Serial.println();
Serial.print(F("CO2(ppm):"));
Serial.print(scd4x.getCO2());
Serial.print(F("\tTemperature(C):"));
Serial.print(scd4x.getTemperature(), 1);
Serial.print(F("\tHumidity(%RH):"));
Serial.print(scd4x.getHumidity(), 1);
Serial.println();
} else {
Serial.print(F("."));
}
delay(1000);
}

View file

@ -0,0 +1,63 @@
/**
* @file ENV_III.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.2
* @date 2024-07-18
*
*
* @Hardwares: M5Atom + Unit ENV_III
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
Serial.begin(115200);
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 26, 32, 400000U)) {
while (1) {
Serial.println("Couldn't find QMP6988");
delay(500);
}
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 26, 32, 400000U)) {
while (1) {
Serial.println("Couldn't find SHT3X");
delay(500);
}
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,63 @@
/**
* @file ENV_III.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.2
* @date 2024-07-18
*
*
* @Hardwares: M5AtomS3 + Unit ENV_III
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
Serial.begin(115200);
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 2, 1, 400000U)) {
while (1) {
Serial.println("Couldn't find QMP6988");
delay(500);
}
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 2, 1, 400000U)) {
while (1) {
Serial.println("Couldn't find SHT3X");
delay(500);
}
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,63 @@
/**
* @file ENV_III.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.2
* @date 2024-07-18
*
*
* @Hardwares: M5AtomS3Lite + Unit ENV_III
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
Serial.begin(115200);
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 2, 1, 400000U)) {
while (1) {
Serial.println("Couldn't find QMP6988");
delay(500);
}
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 2, 1, 400000U)) {
while (1) {
Serial.println("Couldn't find SHT3X");
delay(500);
}
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,60 @@
/**
* @file ENV_III.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_III
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
Serial.begin(115200);
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 21, 22, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,61 @@
/**
* @file Unit_ENVIII_M5Core2.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core2 + Unit ENVIII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
M5.begin();
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 32, 33, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,61 @@
/**
* @file Unit_ENVIII_M5Station.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Station + Unit ENVIII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
M5.begin();
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 32, 33, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,62 @@
/**
* @file Unit_ENVIII_M5StickC.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickC + Unit ENVIII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
M5.begin();
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 32, 33, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,61 @@
/**
* @file Unit_ENVIII_M5StickCPlus.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickCPlus + Unit ENVIII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
QMP6988 qmp;
void setup() {
M5.begin();
if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 32, 33, 400000U)) {
Serial.println("Couldn't find QMP6988");
while (1) delay(1);
}
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (qmp.update()) {
Serial.println("-----QMP6988-----");
Serial.print(F("Temperature: "));
Serial.print(qmp.cTemp);
Serial.println(" *C");
Serial.print(F("Pressure: "));
Serial.print(qmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(qmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file ENV_II.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_II
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 26, 32, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 26, 32, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file ENV_II.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_II
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file ENV_II.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_II
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file ENV_II.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_II
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,68 @@
/**
* @file Unit_ENVII_M5Core2.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core2 + Unit ENVII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
M5.begin();
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,67 @@
/**
* @file Unit_ENVII_M5StickC.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickC + Unit ENVII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
M5.begin();
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,68 @@
/**
* @file Unit_ENVII_M5StickCPlus.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickCPlus + Unit ENVII
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
SHT3X sht3x;
BMP280 bmp;
void setup() {
M5.begin();
if (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find SHT3X");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht3x.update()) {
Serial.println("-----SHT3X-----");
Serial.print("Temperature: ");
Serial.print(sht3x.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht3x.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,71 @@
/**
* @file ENV_IV.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV_IV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
SHT4X sht4;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!sht4.begin(&Wire, SHT40_I2C_ADDR_44, 21, 22, 400000U)) {
Serial.println("Couldn't find SHT4x");
while (1) delay(1);
}
// You can have 3 different precisions, higher precision takes longer
sht4.setPrecision(SHT4X_HIGH_PRECISION);
sht4.setHeater(SHT4X_NO_HEATER);
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (sht4.update()) {
Serial.println("-----SHT4X-----");
Serial.print("Temperature: ");
Serial.print(sht4.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(sht4.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,111 @@
/*
*******************************************************************************
* Copyright (c) 2023 by M5Stack
* Equipped with M5Core2 sample source code
* M5Core2
* Visit to get information: https://docs.m5stack.com/en/unit/ENV%E2%85%A3%20Unit
* 访: https://docs.m5stack.com/zh_CN/unit/ENV%E2%85%A3%20Unit
*
* Product: ENVIV_SHT40_BMP280.
* Date: 2023/8/24
*******************************************************************************
Please connect to Port,Read temperature, humidity and atmospheric pressure and
display them on the display screen
,湿
Libraries:
- [Adafruit_BMP280](https://github.com/adafruit/Adafruit_BMP280_Library)
- [Adafruit_Sensor](https://github.com/adafruit/Adafruit_Sensor)
- [SensirionI2CSht4x](https://github.com/Tinyu-Zhao/arduino-i2c-sht4x)
*/
#include <M5Core2.h>
#include <SensirionI2CSht4x.h>
#include <Adafruit_BMP280.h>
#include "Adafruit_Sensor.h"
// 初始化传感器
Adafruit_BMP280 bmp;
SensirionI2CSht4x sht4x;
float temperature, pressure,
humidity; // Store the vuale of pressure and Temperature. 存储压力和温度
void setup()
{
// 初始化传感器
M5.begin();
M5.Lcd.setTextSize(2);
Wire.begin(); // SDA = 16, SCL = 34
Serial.begin(115200);
while (!Serial)
{
delay(100);
}
while (!bmp.begin(
0x76))
{ // Init this sensor,True if the init was successful, otherwise
// false. 初始化传感器,如果初始化成功返回1
M5.Lcd.println("Could not find a valid BMP280 sensor, check wiring!");
Serial.println(F("BMP280 fail"));
}
M5.Lcd.clear(); // Clear the screen. 清屏
Serial.println(F("BMP280 test"));
uint16_t error;
char errorMessage[256];
sht4x.begin(Wire);
uint32_t serialNumber;
error = sht4x.serialNumber(serialNumber);
if (error)
{
Serial.print("Error trying to execute serialNumber(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
}
else
{
Serial.print("Serial Number: ");
Serial.println(serialNumber);
}
// 设置传感器的采样率和滤波器
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, // 模式:正常
Adafruit_BMP280::SAMPLING_X2, // 温度采样率2倍
Adafruit_BMP280::SAMPLING_X16, // 压力采样率16倍
Adafruit_BMP280::FILTER_X16, // 滤波器16倍
Adafruit_BMP280::STANDBY_MS_500); // 等待时间500毫秒
}
void loop()
{
uint16_t error;
char errorMessage[256];
delay(1000);
error = sht4x.measureHighPrecision(temperature, humidity);
if (error)
{
Serial.print("Error trying to execute measureHighPrecision(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
}
else
{
Serial.print("Temperature:");
Serial.print(temperature);
Serial.print("\t");
Serial.print("Humidity:");
Serial.println(humidity);
}
pressure = bmp.readPressure();
M5.Lcd.setCursor(0, 0); // 将光标设置在(0 ,0). Set the cursor to (0,0)
M5.Lcd.printf("Pressure:%2.0fPa\nTemperature:%2.0f^C", pressure,
temperature);
M5.Lcd.setCursor(0, 40);
M5.Lcd.print("humidity:");
M5.Lcd.print(humidity);
M5.Lcd.print("%");
delay(100);
}

View file

@ -0,0 +1,64 @@
/**
* @file ENV.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
DHT12 dht;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!dht.begin(&Wire, DHT12_I2C_ADDR, 26, 32, 400000U)) {
Serial.println("Couldn't find DHT12");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 26, 32, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (dht.update()) {
Serial.println("-----DHT12-----");
Serial.print("Temperature: ");
Serial.print(dht.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(dht.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,64 @@
/**
* @file ENV.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
DHT12 dht;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!dht.begin(&Wire, DHT12_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find DHT12");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (dht.update()) {
Serial.println("-----DHT12-----");
Serial.print("Temperature: ");
Serial.print(dht.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(dht.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,64 @@
/**
* @file ENV.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
DHT12 dht;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!dht.begin(&Wire, DHT12_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find DHT12");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 2, 1, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (dht.update()) {
Serial.println("-----DHT12-----");
Serial.print("Temperature: ");
Serial.print(dht.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(dht.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,64 @@
/**
* @file ENV.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core + Unit ENV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
*/
#include "M5UnitENV.h"
DHT12 dht;
BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!dht.begin(&Wire, DHT12_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find DHT12");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 21, 22, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (dht.update()) {
Serial.println("-----DHT12-----");
Serial.print("Temperature: ");
Serial.print(dht.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(dht.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file Unit_ENV_M5Core2.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5Core2 + Unit ENV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
DHT12 dht;
BMP280 bmp;
void setup() {
M5.begin();
if (!dht.begin(&Wire, DHT12_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find DHT12");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (dht.update()) {
Serial.println("-----DHT12-----");
Serial.print("Temperature: ");
Serial.print(dht.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(dht.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file Unit_ENV_M5StickC.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickC + Unit ENV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
DHT12 dht;
BMP280 bmp;
void setup() {
M5.begin();
if (!dht.begin(&Wire, DHT12_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find DHT12");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (dht.update()) {
Serial.println("-----DHT12-----");
Serial.print("Temperature: ");
Serial.print(dht.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(dht.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}

View file

@ -0,0 +1,66 @@
/**
* @file Unit_ENV_M5StickCPlus.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief
* @version 0.1
* @date 2024-01-30
*
*
* @Hardwares: M5StickCPlus + Unit ENV
* @Platform Version: Arduino M5Stack Board Manager v2.1.0
* @Dependent Library:
* M5UnitENV: https://github.com/m5stack/M5Unit-ENV
* M5Unified: https://github.com/m5stack/M5Unified
*/
#include <M5Unified.h>
#include "M5UnitENV.h"
DHT12 dht;
BMP280 bmp;
void setup() {
M5.begin();
if (!dht.begin(&Wire, DHT12_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find DHT12");
while (1) delay(1);
}
if (!bmp.begin(&Wire, BMP280_I2C_ADDR, 32, 33, 400000U)) {
Serial.println("Couldn't find BMP280");
while (1) delay(1);
}
/* Default settings from datasheet. */
bmp.setSampling(BMP280::MODE_NORMAL, /* Operating Mode. */
BMP280::SAMPLING_X2, /* Temp. oversampling */
BMP280::SAMPLING_X16, /* Pressure oversampling */
BMP280::FILTER_X16, /* Filtering. */
BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (dht.update()) {
Serial.println("-----DHT12-----");
Serial.print("Temperature: ");
Serial.print(dht.cTemp);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(dht.humidity);
Serial.println("% rH");
Serial.println("-------------\r\n");
}
if (bmp.update()) {
Serial.println("-----BMP280-----");
Serial.print(F("Temperature: "));
Serial.print(bmp.cTemp);
Serial.println(" degrees C");
Serial.print(F("Pressure: "));
Serial.print(bmp.pressure);
Serial.println(" Pa");
Serial.print(F("Approx altitude: "));
Serial.print(bmp.altitude);
Serial.println(" m");
Serial.println("-------------\r\n");
}
delay(1000);
}