From e4ed2439c428ccbd4da6e03b9f365b4653ce924b Mon Sep 17 00:00:00 2001 From: Craig Markwardt Date: Fri, 22 Mar 2019 11:15:07 -0400 Subject: [PATCH 1/3] sensors - allow a second BMX280 sensor --- code/espurna/config/sensors.h | 3 ++- code/espurna/sensor.ino | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/code/espurna/config/sensors.h b/code/espurna/config/sensors.h index f1d16825..fb127a7f 100644 --- a/code/espurna/config/sensors.h +++ b/code/espurna/config/sensors.h @@ -159,8 +159,9 @@ #endif #ifndef BMX280_ADDRESS -#define BMX280_ADDRESS 0x00 // 0x00 means auto +#define BMX280_ADDRESS 0x00 // 0x00 means auto (0x76 or 0x77 allowed) #endif +//#define BMX280_ADDRESS2 0x77 // Address of 2nd BMX (must not use auto for either if two are present) #define BMX280_MODE 1 // 0 for sleep mode, 1 or 2 for forced mode, 3 for normal mode #define BMX280_STANDBY 0 // 0 for 0.5ms, 1 for 62.5ms, 2 for 125ms diff --git a/code/espurna/sensor.ino b/code/espurna/sensor.ino index 8c2571d4..d380fede 100644 --- a/code/espurna/sensor.ino +++ b/code/espurna/sensor.ino @@ -481,6 +481,13 @@ void _sensorLoad() { BMX280Sensor * sensor = new BMX280Sensor(); sensor->setAddress(BMX280_ADDRESS); _sensors.push_back(sensor); + + #ifdef BMX280_ADDRESS2 + // Up to two BME sensors allowed on one bus + BMX280Sensor * sensor2 = new BMX280Sensor(); + sensor->setAddress(BMX280_ADDRESS2); + _sensors.push_back(sensor2); + #endif } #endif From b5748c9c263e789d8e5eb3b9293df4291201d8b9 Mon Sep 17 00:00:00 2001 From: Craig Markwardt Date: Tue, 26 Mar 2019 09:29:05 -0400 Subject: [PATCH 2/3] Up to two BMX280 sensors are allowed on a single I2C bus, with addresses 0x76 and 0x77. Currently espurna only supports one of them. This change adds a second sensor object to deal with two sensors, if BMX280_NUMBER == 2 --- code/espurna/config/sensors.h | 9 +++++++-- code/espurna/sensor.ino | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/code/espurna/config/sensors.h b/code/espurna/config/sensors.h index f1d16825..e0ac7e76 100644 --- a/code/espurna/config/sensors.h +++ b/code/espurna/config/sensors.h @@ -158,9 +158,14 @@ #define BMX280_SUPPORT 0 #endif -#ifndef BMX280_ADDRESS -#define BMX280_ADDRESS 0x00 // 0x00 means auto +#ifndef BMX280_NUMBER +#define BMX280_NUMBER 2 // Number of sensors present. Either 1 or 2 allowed #endif +#ifndef BMX280_ADDRESS +#define BMX280_ADDRESS 0x00 // 0x00 means auto (0x76 or 0x77 allowed) for sensor #0 +#endif // If (BMX280_NUMBER == 2) and + // (BMX280_ADDRESS == 0x00) then sensor #1 is auto-discovered + // (BMX280_ADDRESS != 0x00) then sensor #1 is the unnamed address #define BMX280_MODE 1 // 0 for sleep mode, 1 or 2 for forced mode, 3 for normal mode #define BMX280_STANDBY 0 // 0 for 0.5ms, 1 for 62.5ms, 2 for 125ms diff --git a/code/espurna/sensor.ino b/code/espurna/sensor.ino index 93d11e10..eb7c6cbd 100644 --- a/code/espurna/sensor.ino +++ b/code/espurna/sensor.ino @@ -484,6 +484,15 @@ void _sensorLoad() { BMX280Sensor * sensor = new BMX280Sensor(); sensor->setAddress(BMX280_ADDRESS); _sensors.push_back(sensor); + + #if (BMX280_NUMBER == 2) + // Up to two BME sensors allowed on one I2C bus + BMX280Sensor * sensor2 = new BMX280Sensor(); + // For second sensor, if BMX280_ADDRESS is 0x00 then auto-discover + // otherwise choose the other unnamed sensor address + sensor->setAddress( (BMX280_ADDRESS == 0x00) ? 0x00 : (0x76 + 0x77 - BMX280_ADDRESS)); + _sensors.push_back(sensor2); + #endif } #endif From 504b45a852db32c9a4c0f79acdfb12bc952702d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Fri, 29 Mar 2019 13:15:35 +0100 Subject: [PATCH 3/3] Fix compile typo --- code/espurna/pwm.c | 2 +- code/espurna/sensors/ECH1560Sensor.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/espurna/pwm.c b/code/espurna/pwm.c index e85500b4..b925da8e 100644 --- a/code/espurna/pwm.c +++ b/code/espurna/pwm.c @@ -445,5 +445,5 @@ get_pwm_version(void) void ICACHE_FLASH_ATTR set_pwm_debug_en(uint8_t print_en) { - UNUSED(print_en); + (void) print_en; } diff --git a/code/espurna/sensors/ECH1560Sensor.h b/code/espurna/sensors/ECH1560Sensor.h index 48541ca0..a8a34648 100644 --- a/code/espurna/sensors/ECH1560Sensor.h +++ b/code/espurna/sensors/ECH1560Sensor.h @@ -127,7 +127,7 @@ class ECH1560Sensor : public BaseSensor { void ICACHE_RAM_ATTR handleInterrupt(unsigned char gpio) { - UNSUSED(gpio); + UNUSED(gpio); // if we are trying to find the sync-time (CLK goes high for 1-2ms) if (_dosync == false) {