π¬ Button size radionode with sensors swarm extension
-
@bjornhallberg
I have some insertable switch boards without radio. I planned to solder nrf24 into them but can sell them without radio too (it supports only cw modules). Will put up for sale soon.@Koresh Sounds great! Oh and btw, any idea how customs will handle the packages, any chance of taxes and customs fees? You're outside of the EU customs union right?
-
@Koresh Sounds great! Oh and btw, any idea how customs will handle the packages, any chance of taxes and customs fees? You're outside of the EU customs union right?
@bjornhallberg I do not know exactly, but I don't think there should be any fees. Try to find out tomorrow.
-
@Koresh I got one of boards and would like to add Si1132-A10-GMR. What else I need to add? C8?
Why are you not using this sensor on your board?@alexsh1 yes, you should solder the sensor and the bypass capacitor. I have a lot of si1132 sensors, but I can't find the correct library. Almost promo videos of commertial sensors based on the si1132 shows incorrect data ))) It shows correct UV and IR level, but incorrect visible light value. So I decided to not solder this sensor yet.
-
@Koresh I would only use it for UV so this is good for me.
No need to use a lib:
// Distributed with a free-will license. // Use it any way you want, profit or free, provided it fits in the licenses of its associated works. // SI1132 // This code is designed to work with the SI1132_I2CS I2C Mini Module available from ControlEverything.com. // https://www.controleverything.com/content/Light?sku=SI1132_I2CS#tabs-0-product_tabset-2 #include<Wire.h> // SI1132 I2C address is 0x60(96) #define Addr 0x60 int response = 0; void setup() { // Initialise I2C communication as MASTER Wire.begin(); // Initialise Serial Communication, Baud rate = 9600 Serial.begin(9600); // Enable UVindex measurement coefficients // Start I2C Transmission Wire.beginTransmission(Addr); // Select COFF-1 register Wire.write(0x13); // Default value Wire.write(0x29); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COFF-2 register Wire.write(0x14); // Default value Wire.write(0x89); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COFF-3 register Wire.write(0x15); // Default value Wire.write(0x02); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COFF-4 register Wire.write(0x16); // Default value Wire.write(0x00); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Enable uv, Visible, IR Wire.write(0xF0); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select command register Wire.write(0x18); // Select CHLIST register in RAM Wire.write(0x01 | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select HW_KEY register Wire.write(0x07); // Default value Wire.write(0x17); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Small IR photodiode Wire.write(0x00); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_IR_ADCMUX register in RAM Wire.write(0x0E | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Set ADC Clock divided / 1 Wire.write(0x00); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_IR_ADC_GAIN register in RAM Wire.write(0x1E | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Set 511 ADC Clock Wire.write(0x70); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_IR_ADC_COUNTER register in RAM Wire.write(0x1D | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Set ADC Clock divided / 1 Wire.write(0x00); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_VIS_ADC_GAIN register in RAM Wire.write(0x11 | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // High Signal Range Wire.write(0x20); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_IR_ADC_MISC register in RAM Wire.write(0x1F | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Set 511 ADC Clock Wire.write(0x70); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_VIS_ADC_COUNTER register in RAM Wire.write(0x10 | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // High Signal Range Wire.write(0x20); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_VIS_ADC_MISC register in RAM Wire.write(0x12 | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); delay(300); } void loop() { unsigned int data[4]; // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Start ALS conversion Wire.write(0x0E); // Stop I2C Transmission Wire.endTransmission(); delay(500); // Start I2C Transmission Wire.beginTransmission(Addr); // Select data register Wire.write(0x22); // Stop I2C Transmission Wire.endTransmission(); // Request 4 byte of data Wire.requestFrom(Addr, 4); // Read 4 bytes of data // visible lsb, visible msb, ir lsb, ir msb if (Wire.available() == 4) { data[0] = Wire.read(); data[1] = Wire.read(); data[2] = Wire.read(); data[3] = Wire.read(); } float visible = (data[1] * 256.0 + data[0]); float ir = (data[3] * 256 + data[2]); // Start I2C Transmission Wire.beginTransmission(Addr); // Select data register Wire.write(0x2C); // Stop I2C Transmission Wire.endTransmission(); // Request 2 bytes of data Wire.requestFrom(Addr, 2); // Read 2 bytes of data // uv lsb, uv msb if (Wire.available() == 2) { data[0] = Wire.read(); data[1] = Wire.read(); } // Convert the data float uv = (data[1] * 256 + data[0]); // Output data to screen Serial.print("Visible Light of Source : "); Serial.print(visible); Serial.println(" lux"); Serial.print("IR Of Source : "); Serial.print(ir); Serial.println(" lux"); Serial.print("UV Of the Source : "); Serial.print(uv); Serial.println(" lux"); delay(500); } -
@Koresh I would only use it for UV so this is good for me.
No need to use a lib:
// Distributed with a free-will license. // Use it any way you want, profit or free, provided it fits in the licenses of its associated works. // SI1132 // This code is designed to work with the SI1132_I2CS I2C Mini Module available from ControlEverything.com. // https://www.controleverything.com/content/Light?sku=SI1132_I2CS#tabs-0-product_tabset-2 #include<Wire.h> // SI1132 I2C address is 0x60(96) #define Addr 0x60 int response = 0; void setup() { // Initialise I2C communication as MASTER Wire.begin(); // Initialise Serial Communication, Baud rate = 9600 Serial.begin(9600); // Enable UVindex measurement coefficients // Start I2C Transmission Wire.beginTransmission(Addr); // Select COFF-1 register Wire.write(0x13); // Default value Wire.write(0x29); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COFF-2 register Wire.write(0x14); // Default value Wire.write(0x89); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COFF-3 register Wire.write(0x15); // Default value Wire.write(0x02); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COFF-4 register Wire.write(0x16); // Default value Wire.write(0x00); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Enable uv, Visible, IR Wire.write(0xF0); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select command register Wire.write(0x18); // Select CHLIST register in RAM Wire.write(0x01 | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select HW_KEY register Wire.write(0x07); // Default value Wire.write(0x17); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Small IR photodiode Wire.write(0x00); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_IR_ADCMUX register in RAM Wire.write(0x0E | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Set ADC Clock divided / 1 Wire.write(0x00); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_IR_ADC_GAIN register in RAM Wire.write(0x1E | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Set 511 ADC Clock Wire.write(0x70); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_IR_ADC_COUNTER register in RAM Wire.write(0x1D | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Set ADC Clock divided / 1 Wire.write(0x00); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_VIS_ADC_GAIN register in RAM Wire.write(0x11 | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // High Signal Range Wire.write(0x20); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_IR_ADC_MISC register in RAM Wire.write(0x1F | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // Set 511 ADC Clock Wire.write(0x70); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_VIS_ADC_COUNTER register in RAM Wire.write(0x10 | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_WR register Wire.write(0x17); // High Signal Range Wire.write(0x20); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Select ALS_VIS_ADC_MISC register in RAM Wire.write(0x12 | 0xA0); // Stop I2C Transmission Wire.endTransmission(); delay(10); // Start I2C Transmission Wire.beginTransmission(Addr); // Select PARAM_RD register Wire.write(0x2E); // Stop I2C Transmission Wire.endTransmission(); // Request 1 byte of data Wire.requestFrom(Addr, 1); // Read 1 byte of data response = Wire.read(); delay(300); } void loop() { unsigned int data[4]; // Start I2C Transmission Wire.beginTransmission(Addr); // Select COMMAND register Wire.write(0x18); // Start ALS conversion Wire.write(0x0E); // Stop I2C Transmission Wire.endTransmission(); delay(500); // Start I2C Transmission Wire.beginTransmission(Addr); // Select data register Wire.write(0x22); // Stop I2C Transmission Wire.endTransmission(); // Request 4 byte of data Wire.requestFrom(Addr, 4); // Read 4 bytes of data // visible lsb, visible msb, ir lsb, ir msb if (Wire.available() == 4) { data[0] = Wire.read(); data[1] = Wire.read(); data[2] = Wire.read(); data[3] = Wire.read(); } float visible = (data[1] * 256.0 + data[0]); float ir = (data[3] * 256 + data[2]); // Start I2C Transmission Wire.beginTransmission(Addr); // Select data register Wire.write(0x2C); // Stop I2C Transmission Wire.endTransmission(); // Request 2 bytes of data Wire.requestFrom(Addr, 2); // Read 2 bytes of data // uv lsb, uv msb if (Wire.available() == 2) { data[0] = Wire.read(); data[1] = Wire.read(); } // Convert the data float uv = (data[1] * 256 + data[0]); // Output data to screen Serial.print("Visible Light of Source : "); Serial.print(visible); Serial.println(" lux"); Serial.print("IR Of Source : "); Serial.print(ir); Serial.println(" lux"); Serial.print("UV Of the Source : "); Serial.print(uv); Serial.println(" lux"); delay(500); }@Koresh BTW, Found this library - working fine for my needs
https://github.com/hardkernel/WEATHER-BOARD/tree/master/libraries/ODROID_Si1132
I am using this sensor purely for UV Index.
PS Got your sensor. Soldered it to the mote. Works just fine
-
@alexsh1 yes, you should solder the sensor and the bypass capacitor. I have a lot of si1132 sensors, but I can't find the correct library. Almost promo videos of commertial sensors based on the si1132 shows incorrect data ))) It shows correct UV and IR level, but incorrect visible light value. So I decided to not solder this sensor yet.
-
@Koresh I can see Si1132 visible light is twice more than BH1750.
Not sure what's wrong, but as you said it reports incorrect value.UV Index is in line with VEML6070
The sensor looks more complicated that I thought:
2.2. Ambient Light
The Si1132 has photodiodes capable of measuring both vi
sible and infrared light. Howe
ver, the visible photodiode
is also influenced by infrared light. The measurement of illuminance require
s the same spectral response as the
human eye. If an accurate lux measurement is desired, the
extra IR response of the vi
sible-light photodiode must
be compensated. Therefore, to allow the host to make corrections to the infrared lightβs influence, the Si1132
reports the infrared light measurement on a separate channel. The separate visible and IR photodiodes lend
themselves to a variety of algorithmic solutions. The
host can then take these two measurements and run an
algorithm to derive an equivalent lux level as perceive
d by a human eye. Having
the IR correction algorithm
running in the host a
llows for the most flexibility in adjusting for system-dependent
variables. For example, if the
glass used in the system blocks visibl
e light more than infrared light, the
IR correction needs to be adjusted.I will have to spend more time to understand how to extract the correct ambient light
-
The sensor looks more complicated that I thought:
2.2. Ambient Light
The Si1132 has photodiodes capable of measuring both vi
sible and infrared light. Howe
ver, the visible photodiode
is also influenced by infrared light. The measurement of illuminance require
s the same spectral response as the
human eye. If an accurate lux measurement is desired, the
extra IR response of the vi
sible-light photodiode must
be compensated. Therefore, to allow the host to make corrections to the infrared lightβs influence, the Si1132
reports the infrared light measurement on a separate channel. The separate visible and IR photodiodes lend
themselves to a variety of algorithmic solutions. The
host can then take these two measurements and run an
algorithm to derive an equivalent lux level as perceive
d by a human eye. Having
the IR correction algorithm
running in the host a
llows for the most flexibility in adjusting for system-dependent
variables. For example, if the
glass used in the system blocks visibl
e light more than infrared light, the
IR correction needs to be adjusted.I will have to spend more time to understand how to extract the correct ambient light
-
The sketch I posted above contains some errors
(it sets COFFs 0x29, 0x89, 0x02 and 0x00 to the 0x13, 0x14, 0x15 and 0x16 registers).The correct UCOEF values are 0x7B, 0x6B, 0x01, and 0x00
The sensor is quite complex.
I got the following values from the sensor:
- V_VOLTAGE (3.21)
- V_HUM (51
- V_TEMP (30)
- V_LIGHT_LEVEL (4466)
- V_UV (1.74)
- V_LIGHT_LEVEL (3367)
- V_LIGHT_LEVEL (3367)
Clearly, Si1132 is not in line with BH1750. VEML6075 is giving me UV Index 1.65, which is close to the Si1132.
Moreover, depending where it is used, the coeff in formula has to change (I am using 0.282 for the direct sunlight) :
Visible Photodiode Response Sunlight ALS_VIS_ADC_GAIN=0 VIS_RANGE=0 β 0.282 2500K incandescent bulb ALS_VIS_ADC_GAIN=0 VIS_RANGE=0 0.319 βCool whiteβ fluorescent ALS_VIS_ADC_GAIN=0 VIS_RANGE=0 0.146 -
@Koresh My 2032 died in 2 days and I noticed that power consumption is 3.5mA. OK, maybe bad soldering - I desoldered Si1132, but the consumption is still 0.14mA while sleeping. For 2032 this is a huge consumption. Did you measure consumption at all? I am using CW radio
Si1132 must be consuming around < 500 nA standby current according to the datasheet. Not sure why consumption was increased with Si1132.
-
@Koresh My 2032 died in 2 days and I noticed that power consumption is 3.5mA. OK, maybe bad soldering - I desoldered Si1132, but the consumption is still 0.14mA while sleeping. For 2032 this is a huge consumption. Did you measure consumption at all? I am using CW radio
Si1132 must be consuming around < 500 nA standby current according to the datasheet. Not sure why consumption was increased with Si1132.
@alexsh1 Do not forget put BH1750 into sleep mode. Unfortunatelly standart library do not put the sensor into this mode. I described it on the github page.
/* Please comment out private declaration in BH1750.h * Otherwise you can't call lightMeter.write8(BH1750_POWER_DOWN); and BH1750 will not sleep! * * //private: * void write8(uint8_t data); */ lightMeter.write8(BH1750_POWER_DOWN); -
@alexsh1 Do not forget put BH1750 into sleep mode. Unfortunatelly standart library do not put the sensor into this mode. I described it on the github page.
/* Please comment out private declaration in BH1750.h * Otherwise you can't call lightMeter.write8(BH1750_POWER_DOWN); and BH1750 will not sleep! * * //private: * void write8(uint8_t data); */ lightMeter.write8(BH1750_POWER_DOWN); -
@Koresh I did it on the first day I got the sensor. The consumption above is with BH1750 in the sleeping mode as per your github
-
@alexsh1 said in π¬ Button size radionode with sensors swarm extension:
it on the first day I got
Could you post the code you use? and links for the libs. we will check tomorrow consumption with your code . mysensors 2.0 or 2.2?
@yury It is the latest bh1750 lib -> https://github.com/claws/BH1750
I am using MySensors 2.2.0b
I am using a default code :
https://github.com/EasySensors/ButtonSizeNode/blob/master/ButtonSizeNode.ino -
@yury It is the latest bh1750 lib -> https://github.com/claws/BH1750
I am using MySensors 2.2.0b
I am using a default code :
https://github.com/EasySensors/ButtonSizeNode/blob/master/ButtonSizeNode.ino@yury One thing I did notice is this. To put BH1750 into a sleep mode (1uA consumption), it has to be called as follows:
void setup() { lightMeter.begin(BH1750_ONE_TIME_HIGH_RES_MODE); }After a one time measurement it goes to sleep automatically.
Please see -> https://github.com/claws/BH1750/blob/master/examples/BH1750advanced/BH1750advanced.inoI have tried above, but still getting 0.14mA consumption in a sleep mode. Very odd!
-
@yury It is the latest bh1750 lib -> https://github.com/claws/BH1750
I am using MySensors 2.2.0b
I am using a default code :
https://github.com/EasySensors/ButtonSizeNode/blob/master/ButtonSizeNode.ino@alexsh1 Very strange. I can't see a method write8 in current lib version (https://github.com/claws/BH1750). So I can't understand how is it possible to compile default code with this string
lightMeter.write8(BH1750_POWER_DOWN);I couldn't put this sensor into power down mode without this.
-
@yury One thing I did notice is this. To put BH1750 into a sleep mode (1uA consumption), it has to be called as follows:
void setup() { lightMeter.begin(BH1750_ONE_TIME_HIGH_RES_MODE); }After a one time measurement it goes to sleep automatically.
Please see -> https://github.com/claws/BH1750/blob/master/examples/BH1750advanced/BH1750advanced.inoI have tried above, but still getting 0.14mA consumption in a sleep mode. Very odd!
@alexsh1 said in π¬ Button size radionode with sensors swarm extension:
...
After a one time measurement it goes to sleep automatically.
...
I have tried above, but still getting 0.14mA consumption in a sleep mode. Very odd!I've read the claws library briefly again. I'm a litte doubt that this code:
_delay_ms(10);is enough to ensure correctly timings and sensors work :)
-
@alexsh1 said in π¬ Button size radionode with sensors swarm extension:
...
After a one time measurement it goes to sleep automatically.
...
I have tried above, but still getting 0.14mA consumption in a sleep mode. Very odd!I've read the claws library briefly again. I'm a litte doubt that this code:
_delay_ms(10);is enough to ensure correctly timings and sensors work :)