first commit
This commit is contained in:
commit
5893b00dd2
1669 changed files with 1982740 additions and 0 deletions
64
libraries/M5Unit-ENV/examples/ENV/ENV.ino
Normal file
64
libraries/M5Unit-ENV/examples/ENV/ENV.ino
Normal 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);
|
||||
}
|
||||
66
libraries/M5Unit-ENV/examples/ENV_II/ENV_II.ino
Normal file
66
libraries/M5Unit-ENV/examples/ENV_II/ENV_II.ino
Normal 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);
|
||||
}
|
||||
60
libraries/M5Unit-ENV/examples/ENV_III/ENV_III.ino
Normal file
60
libraries/M5Unit-ENV/examples/ENV_III/ENV_III.ino
Normal 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);
|
||||
}
|
||||
71
libraries/M5Unit-ENV/examples/ENV_IV/ENV_IV.ino
Normal file
71
libraries/M5Unit-ENV/examples/ENV_IV/ENV_IV.ino
Normal 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);
|
||||
}
|
||||
142
libraries/M5Unit-ENV/examples/ENV_PRO/ENV_PRO.ino
Normal file
142
libraries/M5Unit-ENV/examples/ENV_PRO/ENV_PRO.ino
Normal 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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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"
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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"
|
||||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
/*
|
||||
Example using M5UnitUnified for UnitTVOC
|
||||
*/
|
||||
#include "main/PlotToSerial.cpp"
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue