Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. My Project
  3. Office plant monitoring

Office plant monitoring

Scheduled Pinned Locked Moved My Project
223 Posts 39 Posters 131.7k Views 42 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Nicklas Starkel

    @mfalkvidd that is really awesome!

    Did you set any Brown Out Fuses?
    From what I gather the arduino pro mini will stop working at 2.8V and you have to set other fuses for it to reach the lower voltages.

    I did a quick test with one flowerpot and from what I see my power consumption will be around 0.2V per year. It's more than double of what you're getting. But still low enough as changing 2 AA over 1-2 years is OK in my book if I'm not changing the fuses :)

    EDIT: Actually, calculating with your numbers of updates I get around 0.6V consumption per year for my setup and that is far from your low power consumption.
    I think I will have to go through this thread once more to try to find why the difference is so big and what you have done. I see 2 potential culprits. One is the arduino mini pro (china clone without power LED and voltage regulator) or maybe it could be my mysensors 2.0 version vs your 1.6.

    mfalkviddM Offline
    mfalkviddM Offline
    mfalkvidd
    Mod
    wrote on last edited by
    #167

    @Nicklas-Starkel if I remember correctly I disabled bod completely.

    J 2 Replies Last reply
    0
    • mfalkviddM mfalkvidd

      @Nicklas-Starkel if I remember correctly I disabled bod completely.

      J Offline
      J Offline
      joshmosh
      wrote on last edited by
      #168

      @mfalkvidd, @Nicklas-Starkel
      similar problem here. I have a bare ATMega 328P, running @ 8 MHz internal oszillator. no LED, bod disabled, (if enabled, the ADC is running also during sleep, so this means additional power consumption), nothing else connected that could draw additional power.
      I use mfalkvidd's sketch (BTW, thanks a lot for it !), but converted to mysensors 2.0. I see a voltage drop way higher than mfalkvidd, although I don't use a china clone ;-).
      So it seems, that the higher power consumption may be due to mysensors V2 ? I cannot imagine a reason for that, because why should relatively low level functions like power save routines be different in 2.0 ?
      Perhaps hek can comment ?

      Fat FlyF 1 Reply Last reply
      0
      • mfalkviddM mfalkvidd

        @Nicklas-Starkel if I remember correctly I disabled bod completely.

        J Offline
        J Offline
        joshmosh
        wrote on last edited by
        #169

        @mfalkvidd
        I think that in a previous post you mentioned that you are using mysensors V1.6, right ? Where did you get it from ? On the mysensors pages I only found references and links to V1.4 and V1,5, not V1.6. I would like to try to remove V2.0 from my system and switch to V1.6 - no idea if this will work ...
        I would like to use a setup as close as possible to yours to track down the problem. Your very low power consumption is really amazing and I would like to come as close as possibe to int in my case. I have a 'clone' of your hardware setup described in openhardware.io - minus the LED. So in my case, power consumption should be even lower than yours ;-)

        korttomaK 1 Reply Last reply
        0
        • J joshmosh

          @mfalkvidd
          I think that in a previous post you mentioned that you are using mysensors V1.6, right ? Where did you get it from ? On the mysensors pages I only found references and links to V1.4 and V1,5, not V1.6. I would like to try to remove V2.0 from my system and switch to V1.6 - no idea if this will work ...
          I would like to use a setup as close as possible to yours to track down the problem. Your very low power consumption is really amazing and I would like to come as close as possibe to int in my case. I have a 'clone' of your hardware setup described in openhardware.io - minus the LED. So in my case, power consumption should be even lower than yours ;-)

          korttomaK Offline
          korttomaK Offline
          korttoma
          Hero Member
          wrote on last edited by
          #170

          @joshmosh I think that version 1.5.4 or 1.5.3 was called 1.6 while it was under development but no version 1.6 was ever released.

          • Tomas
          J 2 Replies Last reply
          1
          • korttomaK korttoma

            @joshmosh I think that version 1.5.4 or 1.5.3 was called 1.6 while it was under development but no version 1.6 was ever released.

            J Offline
            J Offline
            joshmosh
            wrote on last edited by
            #171

            @korttoma
            OK, thanks for the hint. I will try if I can get this version work with the Arduino version I am using.

            1 Reply Last reply
            0
            • korttomaK korttoma

              @joshmosh I think that version 1.5.4 or 1.5.3 was called 1.6 while it was under development but no version 1.6 was ever released.

              J Offline
              J Offline
              joshmosh
              wrote on last edited by
              #172

              @korttoma
              OK, after some fiddling I was able to exchange mysensors V2.0 with V1.5.4 and to compile mfalkvidd's sketch. I will adapt it now to my hardware (removing references to LED etc) and give it a twirl. Please be patient, since I need to run it at least a coupl eof days to see if there is a difference in power consumption.
              Very interesting stuff :-)

              1 Reply Last reply
              1
              • N Offline
                N Offline
                Nicklas Starkel
                wrote on last edited by
                #173

                @joshmosh , actually there is so many variables that it is impossible to check and the term "milage may vary" is spot on.
                All batteries are not the same.
                Temperature.
                Arduino.
                Time between readings (some batteries prefer small current over time and some handle bursts better).
                etc

                I've set to report moisture every 30 seconds and obviously the voltage report from an arduino is not 100%. And with that said, it is probably not 100% consistent neither as it could differ between readings as well.
                The only real way to tell is know starting point via multimeter and then check after a month what has happened.
                For me, doing a check, I've come down to 0.08V per 76000 readings.
                I did the estimation based on about 8500 readings and extrapolated it to 76000 reports based on @mfalkvidd information.

                For me, this is enough and I'm sure my sensor will survive for a long time and can now program it to take more reasonable moisture readings. Example, 1reading/h for the plots that dries the fastest (in direct sunlight) and less when they are in the shade.
                In the spring the balcony will have several sensors with automatic watering :)

                J 1 Reply Last reply
                0
                • N Nicklas Starkel

                  @joshmosh , actually there is so many variables that it is impossible to check and the term "milage may vary" is spot on.
                  All batteries are not the same.
                  Temperature.
                  Arduino.
                  Time between readings (some batteries prefer small current over time and some handle bursts better).
                  etc

                  I've set to report moisture every 30 seconds and obviously the voltage report from an arduino is not 100%. And with that said, it is probably not 100% consistent neither as it could differ between readings as well.
                  The only real way to tell is know starting point via multimeter and then check after a month what has happened.
                  For me, doing a check, I've come down to 0.08V per 76000 readings.
                  I did the estimation based on about 8500 readings and extrapolated it to 76000 reports based on @mfalkvidd information.

                  For me, this is enough and I'm sure my sensor will survive for a long time and can now program it to take more reasonable moisture readings. Example, 1reading/h for the plots that dries the fastest (in direct sunlight) and less when they are in the shade.
                  In the spring the balcony will have several sensors with automatic watering :)

                  J Offline
                  J Offline
                  joshmosh
                  wrote on last edited by
                  #174

                  @Nicklas-Starkel
                  After some reading and thinking, I came to a very similar conclusion. There are tons of parameter which will influence the mesurement.
                  I am planning to use four or five moisture probes distributed at various places in my garden for irrigation automatisation. I guess my lawn will not suffer if I start watering at a reading of 41 % instead of 44 % ;-)
                  During the upcoming winter months there is enough time to gather empirical data about the behaviour of my probes.
                  Anyway, it's a fun project ...

                  1 Reply Last reply
                  2
                  • cattooC Offline
                    cattooC Offline
                    cattoo
                    wrote on last edited by
                    #175

                    Well I have some issues with battery-power.
                    When ill use the Usb cable to power the sensor up, everything is working fine. But when ill use 2x1,5V battery´s it does not show up in domoticz. Im not sure if I have connected the battery correct. Its on the VIN and GND and nothing more. Is it correct?

                    mfalkviddM 1 Reply Last reply
                    0
                    • cattooC cattoo

                      Well I have some issues with battery-power.
                      When ill use the Usb cable to power the sensor up, everything is working fine. But when ill use 2x1,5V battery´s it does not show up in domoticz. Im not sure if I have connected the battery correct. Its on the VIN and GND and nothing more. Is it correct?

                      mfalkviddM Offline
                      mfalkviddM Offline
                      mfalkvidd
                      Mod
                      wrote on last edited by
                      #176

                      @cattoo which Arduino are you using? I'm asking because the Pro Mini doesn't have any pin called VIN.

                      cattooC 1 Reply Last reply
                      0
                      • mfalkviddM mfalkvidd

                        @cattoo which Arduino are you using? I'm asking because the Pro Mini doesn't have any pin called VIN.

                        cattooC Offline
                        cattooC Offline
                        cattoo
                        wrote on last edited by
                        #177

                        @mfalkvidd
                        Its a Arduino Nano (clone)

                        mfalkviddM 1 Reply Last reply
                        0
                        • NetRapN Offline
                          NetRapN Offline
                          NetRap
                          wrote on last edited by
                          #178

                          Why not using this sensor?
                          Giesomat

                          It didn't cost much and work like an angel.

                          And if the frequency is to high, or you need a other logic level, you can use this one:
                          frequency divider and level shifter

                          Don't have any troubles with this.
                          I only count the pulses. That all.

                          mfalkviddM 1 Reply Last reply
                          0
                          • NetRapN NetRap

                            Why not using this sensor?
                            Giesomat

                            It didn't cost much and work like an angel.

                            And if the frequency is to high, or you need a other logic level, you can use this one:
                            frequency divider and level shifter

                            Don't have any troubles with this.
                            I only count the pulses. That all.

                            mfalkviddM Offline
                            mfalkviddM Offline
                            mfalkvidd
                            Mod
                            wrote on last edited by
                            #179

                            @NetRap You have already stated the same 3 times earlier in this thread. It looks like spam/advertising. What's your point?

                            1 Reply Last reply
                            0
                            • cattooC cattoo

                              @mfalkvidd
                              Its a Arduino Nano (clone)

                              mfalkviddM Offline
                              mfalkviddM Offline
                              mfalkvidd
                              Mod
                              wrote on last edited by
                              #180

                              @cattoo VIN on the Nano is used when powering with higher than 5V.
                              The Nano is not suitable for battery power. I recommend that you use a Pro Mini instead. See https://www.mysensors.org/build/battery

                              cattooC 1 Reply Last reply
                              0
                              • NetRapN Offline
                                NetRapN Offline
                                NetRap
                                wrote on last edited by
                                #181

                                I don't want to spam.
                                The point is, that the conducting based sensors are poison.
                                The electrolytic processes destroy the sensor and giving ions into the
                                earth !!!

                                Look at this site:
                                All Technologies
                                There are compared all possible technology's.
                                Giesomat wins.

                                1 Reply Last reply
                                0
                                • mfalkviddM mfalkvidd

                                  @cattoo VIN on the Nano is used when powering with higher than 5V.
                                  The Nano is not suitable for battery power. I recommend that you use a Pro Mini instead. See https://www.mysensors.org/build/battery

                                  cattooC Offline
                                  cattooC Offline
                                  cattoo
                                  wrote on last edited by
                                  #182

                                  @mfalkvidd said:
                                  Ah okey, well then ill use them with proper power and buy new pro mini´s instead. Tack :)

                                  1 Reply Last reply
                                  0
                                  • TON RIJNAARDT Offline
                                    TON RIJNAARDT Offline
                                    TON RIJNAARD
                                    wrote on last edited by
                                    #183

                                    Hello,

                                    Is there a sketch for mysensors 2.0
                                    I get error on the Mysensor gw;

                                    Ton

                                    1 Reply Last reply
                                    0
                                    • J Offline
                                      J Offline
                                      joshmosh
                                      wrote on last edited by
                                      #184

                                      Just to give a feedback on power consumption: I have switched back to mysensors V 1.5.4. This was roughly one month ago. I take meadurements every two hours. Battery voltage hasn't changed a bit since then. So my guess is, that - for whatever reason - mysensors V 2.0 seems to produce a more power hungry code.
                                      Whatever ...
                                      I am happy now and will stick with V 1.5.4
                                      I am

                                      N 1 Reply Last reply
                                      0
                                      • J joshmosh

                                        Just to give a feedback on power consumption: I have switched back to mysensors V 1.5.4. This was roughly one month ago. I take meadurements every two hours. Battery voltage hasn't changed a bit since then. So my guess is, that - for whatever reason - mysensors V 2.0 seems to produce a more power hungry code.
                                        Whatever ...
                                        I am happy now and will stick with V 1.5.4
                                        I am

                                        N Offline
                                        N Offline
                                        Nicklas Starkel
                                        wrote on last edited by
                                        #185

                                        @joshmosh I use MySensors V2 and took a sample every 30 seconds over a few days simulating almost 28000 transmits.
                                        I've come down to have roughly 0.08V decrease for all these transmits which is very close to what @mfalkvidd has.

                                        @TON-RIJNAARD , here is my sketch! I think I use signing as well, so if you don't use it just remove :)

                                        // Enable debug prints to serial monitor
                                        #define MY_DEBUG
                                        //The node ID
                                        #define MY_NODE_ID 7 //250 is test 
                                        // Enable and select radio type attached and also set parent ID
                                        #define MY_RADIO_NRF24
                                        #define MY_PARENT_NODE_ID 0
                                        #define MY_PARENT_NODE_IS_STATIC
                                        //Signing, make sure the arduino is prepped for signing before!
                                        #define MY_SIGNING_SOFT
                                        #define MY_SIGNING_SOFT_RANDOMSEED_PIN 7
                                        #define MY_SIGNING_REQUEST_SIGNATURES
                                        #include <SPI.h>
                                        #include <MySensors.h>
                                        
                                        #define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
                                        #define N_ELEMENTS(array) (sizeof(array)/sizeof((array)[0]))
                                        
                                        #define CHILD_ID_MOISTURE 0
                                        #define CHILD_ID_BATTERY 1
                                        #define SLEEP_TIME 1800000 // Sleep time between reads (in milliseconds)
                                        #define STABILIZATION_TIME 1000 // Let the sensor stabilize before reading
                                        #define BATTERY_FULL 3000 // 3,000 millivolts for 2xAA
                                        #define BATTERY_ZERO 2800 // 1,900 millivolts (1.9V, limit for nrf24l01 without step-up. 2.8V limit for Atmega328 without BOD disabled))
                                        const int SENSOR_ANALOG_PINS[] = {A0, A1}; // Sensor is connected to these two pins. Avoid A3 if using ATSHA204. A6 and A7 cannot be used because they don't have pullups.
                                        
                                        MyMessage msg(CHILD_ID_MOISTURE, V_HUM);
                                        MyMessage voltage_msg(CHILD_ID_BATTERY, V_VOLTAGE);
                                        long oldvoltage = 0;
                                        byte direction = 0;
                                        int oldMoistureLevel = -1;
                                        
                                        void setup()
                                        {
                                          sendSketchInfo("Plant moisture w bat", "1.5");
                                        
                                          present(CHILD_ID_MOISTURE, S_HUM);
                                          delay(250);
                                          present(CHILD_ID_BATTERY, S_CUSTOM);
                                          for (int i = 0; i < N_ELEMENTS(SENSOR_ANALOG_PINS); i++) {
                                            pinMode(SENSOR_ANALOG_PINS[i], OUTPUT);
                                            digitalWrite(SENSOR_ANALOG_PINS[i], LOW);
                                          }
                                        }
                                        
                                        void loop()
                                        {
                                          pinMode(SENSOR_ANALOG_PINS[direction], INPUT_PULLUP); // Power on the sensor
                                          analogRead(SENSOR_ANALOG_PINS[direction]);// Read once to let the ADC capacitor start charging
                                          sleep(STABILIZATION_TIME);
                                          int moistureLevel = (1023 - analogRead(SENSOR_ANALOG_PINS[direction]));
                                        
                                          // Turn off the sensor to conserve battery and minimize corrosion
                                          pinMode(SENSOR_ANALOG_PINS[direction], OUTPUT);
                                          digitalWrite(SENSOR_ANALOG_PINS[direction], LOW);
                                        
                                          direction = (direction + 1) % 2; // Make direction alternate between 0 and 1 to reverse polarity which reduces corrosion
                                          // Always send moisture information so the controller sees that the node is alive
                                        
                                          // Send rolling average of 2 samples to get rid of the "ripple" produced by different resistance in the internal pull-up resistors
                                          // See http://forum.mysensors.org/topic/2147/office-plant-monitoring/55 for more information
                                          if (oldMoistureLevel == -1) { // First reading, save value
                                            oldMoistureLevel = moistureLevel;
                                          }
                                          send(msg.set((moistureLevel + oldMoistureLevel +  0.5) / 2 / 10.23, 1));
                                          oldMoistureLevel = moistureLevel;
                                          long voltage = readVcc();
                                          if (oldvoltage != voltage) { // Only send battery information if voltage has changed, to conserve battery.
                                            send(voltage_msg.set(voltage / 1000.0, 3)); // redVcc returns millivolts. Set wants volts and how many decimals (3 in our case)
                                            sendBatteryLevel(round((voltage - BATTERY_ZERO) * 100.0 / (BATTERY_FULL - BATTERY_ZERO)));
                                            oldvoltage = voltage;
                                          }
                                          sleep(SLEEP_TIME);
                                        }
                                        
                                        long readVcc() {
                                          // From http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
                                          // Read 1.1V reference against AVcc
                                          // set the reference to Vcc and the measurement to the internal 1.1V reference
                                        #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
                                          ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
                                        #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
                                          ADMUX = _BV(MUX5) | _BV(MUX0);
                                        #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
                                          ADMUX = _BV(MUX3) | _BV(MUX2);
                                        #else
                                          ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
                                        #endif
                                        
                                          delay(2); // Wait for Vref to settle
                                          ADCSRA |= _BV(ADSC); // Start conversion
                                          while (bit_is_set(ADCSRA, ADSC)); // measuring
                                        
                                          uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH
                                          uint8_t high = ADCH; // unlocks both
                                        
                                          long result = (high << 8) | low;
                                        
                                          result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
                                          return result; // Vcc in millivolts
                                        }```
                                        J 1 Reply Last reply
                                        0
                                        • N Nicklas Starkel

                                          @joshmosh I use MySensors V2 and took a sample every 30 seconds over a few days simulating almost 28000 transmits.
                                          I've come down to have roughly 0.08V decrease for all these transmits which is very close to what @mfalkvidd has.

                                          @TON-RIJNAARD , here is my sketch! I think I use signing as well, so if you don't use it just remove :)

                                          // Enable debug prints to serial monitor
                                          #define MY_DEBUG
                                          //The node ID
                                          #define MY_NODE_ID 7 //250 is test 
                                          // Enable and select radio type attached and also set parent ID
                                          #define MY_RADIO_NRF24
                                          #define MY_PARENT_NODE_ID 0
                                          #define MY_PARENT_NODE_IS_STATIC
                                          //Signing, make sure the arduino is prepped for signing before!
                                          #define MY_SIGNING_SOFT
                                          #define MY_SIGNING_SOFT_RANDOMSEED_PIN 7
                                          #define MY_SIGNING_REQUEST_SIGNATURES
                                          #include <SPI.h>
                                          #include <MySensors.h>
                                          
                                          #define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
                                          #define N_ELEMENTS(array) (sizeof(array)/sizeof((array)[0]))
                                          
                                          #define CHILD_ID_MOISTURE 0
                                          #define CHILD_ID_BATTERY 1
                                          #define SLEEP_TIME 1800000 // Sleep time between reads (in milliseconds)
                                          #define STABILIZATION_TIME 1000 // Let the sensor stabilize before reading
                                          #define BATTERY_FULL 3000 // 3,000 millivolts for 2xAA
                                          #define BATTERY_ZERO 2800 // 1,900 millivolts (1.9V, limit for nrf24l01 without step-up. 2.8V limit for Atmega328 without BOD disabled))
                                          const int SENSOR_ANALOG_PINS[] = {A0, A1}; // Sensor is connected to these two pins. Avoid A3 if using ATSHA204. A6 and A7 cannot be used because they don't have pullups.
                                          
                                          MyMessage msg(CHILD_ID_MOISTURE, V_HUM);
                                          MyMessage voltage_msg(CHILD_ID_BATTERY, V_VOLTAGE);
                                          long oldvoltage = 0;
                                          byte direction = 0;
                                          int oldMoistureLevel = -1;
                                          
                                          void setup()
                                          {
                                            sendSketchInfo("Plant moisture w bat", "1.5");
                                          
                                            present(CHILD_ID_MOISTURE, S_HUM);
                                            delay(250);
                                            present(CHILD_ID_BATTERY, S_CUSTOM);
                                            for (int i = 0; i < N_ELEMENTS(SENSOR_ANALOG_PINS); i++) {
                                              pinMode(SENSOR_ANALOG_PINS[i], OUTPUT);
                                              digitalWrite(SENSOR_ANALOG_PINS[i], LOW);
                                            }
                                          }
                                          
                                          void loop()
                                          {
                                            pinMode(SENSOR_ANALOG_PINS[direction], INPUT_PULLUP); // Power on the sensor
                                            analogRead(SENSOR_ANALOG_PINS[direction]);// Read once to let the ADC capacitor start charging
                                            sleep(STABILIZATION_TIME);
                                            int moistureLevel = (1023 - analogRead(SENSOR_ANALOG_PINS[direction]));
                                          
                                            // Turn off the sensor to conserve battery and minimize corrosion
                                            pinMode(SENSOR_ANALOG_PINS[direction], OUTPUT);
                                            digitalWrite(SENSOR_ANALOG_PINS[direction], LOW);
                                          
                                            direction = (direction + 1) % 2; // Make direction alternate between 0 and 1 to reverse polarity which reduces corrosion
                                            // Always send moisture information so the controller sees that the node is alive
                                          
                                            // Send rolling average of 2 samples to get rid of the "ripple" produced by different resistance in the internal pull-up resistors
                                            // See http://forum.mysensors.org/topic/2147/office-plant-monitoring/55 for more information
                                            if (oldMoistureLevel == -1) { // First reading, save value
                                              oldMoistureLevel = moistureLevel;
                                            }
                                            send(msg.set((moistureLevel + oldMoistureLevel +  0.5) / 2 / 10.23, 1));
                                            oldMoistureLevel = moistureLevel;
                                            long voltage = readVcc();
                                            if (oldvoltage != voltage) { // Only send battery information if voltage has changed, to conserve battery.
                                              send(voltage_msg.set(voltage / 1000.0, 3)); // redVcc returns millivolts. Set wants volts and how many decimals (3 in our case)
                                              sendBatteryLevel(round((voltage - BATTERY_ZERO) * 100.0 / (BATTERY_FULL - BATTERY_ZERO)));
                                              oldvoltage = voltage;
                                            }
                                            sleep(SLEEP_TIME);
                                          }
                                          
                                          long readVcc() {
                                            // From http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
                                            // Read 1.1V reference against AVcc
                                            // set the reference to Vcc and the measurement to the internal 1.1V reference
                                          #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
                                            ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
                                          #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
                                            ADMUX = _BV(MUX5) | _BV(MUX0);
                                          #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
                                            ADMUX = _BV(MUX3) | _BV(MUX2);
                                          #else
                                            ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
                                          #endif
                                          
                                            delay(2); // Wait for Vref to settle
                                            ADCSRA |= _BV(ADSC); // Start conversion
                                            while (bit_is_set(ADCSRA, ADSC)); // measuring
                                          
                                            uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH
                                            uint8_t high = ADCH; // unlocks both
                                          
                                            long result = (high << 8) | low;
                                          
                                            result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
                                            return result; // Vcc in millivolts
                                          }```
                                          J Offline
                                          J Offline
                                          joshmosh
                                          wrote on last edited by
                                          #186

                                          @Nicklas-Starkel
                                          Strange ...
                                          But since I am not missing / using any of the advanced features offered by V 2.0, I don't see a problem (at least for now) to stick with V 1.5.4
                                          In any case it is amazing what you can do with low power battery poweroperated sensors.

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          19

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.0k

                                          Posts


                                          Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • MySensors
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular