Office plant monitoring
-
I made a node with 1 fork and it works great!
Any tips on how i can use more than one fork to monitor say 3-4 plants?
-
@Stric interesting (and strange) effect. I wonder what causes it. Maybe the wait time beween turning on the pin and doing the measurement is too short so the level doesn't settle completely?
@mfalkvidd I'm going to do some tests with changing the sampling time and sleep time, but I'm not so hopeful since the effect is seen hours/days after an "unrelated" change.. I got stuck yesterday playing with ESPEasy, but I'll get back to debugging this..
-
I made a node with 1 fork and it works great!
Any tips on how i can use more than one fork to monitor say 3-4 plants?
@meanmrgreen See my post a few up, I'm seeing some weird effects when connecting to more than one plant..
-
@meanmrgreen See my post a few up, I'm seeing some weird effects when connecting to more than one plant..
Does reverse polarity really help with corrosion then? Maybe it has something to do with that.
-
Small problem with my plant sensor. Used only the fork and the reverse polarity.
But the sensor is reporting around 80-70% all the time, alltho the plant is pretty dry.
When i remove the sensor from pot it shows 0% ?
Can you calibrate the fork somehow?
-
Small problem with my plant sensor. Used only the fork and the reverse polarity.
But the sensor is reporting around 80-70% all the time, alltho the plant is pretty dry.
When i remove the sensor from pot it shows 0% ?
Can you calibrate the fork somehow?
-
@meanmrgreen I calibrate by putting my finger in the soil. When the soil is too dry I note the current value and set a notification to trigger next time it reaches that level.
Ok :)
But Its normal just to lower by a few percent in a few days time? -
Ok :)
But Its normal just to lower by a few percent in a few days time? -
I need to check my node. It Constantly shows 80-90%. Have switched forks and plant same number. If I pull it out of the dirt it gets to 0%
Using only the fork no board in the middle with the alternate current sketch.
-
Re: Office plant monitoring
Hello, i have build the sensor from the building page. I directly connect the fork to pin D6,D7. When i show the measurement i see strange values. anyone an idea what i did wrong?09.02.2017 19:22:23 Multi Sensor (multi2) SoilMoistPercentageSensor 3 % 09.02.2017 19:16:51 Multi Sensor (multi2) SoilMoistPercentageSensor 0 % 09.02.2017 19:11:20 Multi Sensor (multi2) SoilMoistPercentageSensor 3 % 09.02.2017 19:05:48 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 19:00:17 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:54:46 Multi Sensor (multi2) SoilMoistPercentageSensor 8 % 09.02.2017 18:48:41 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 18:43:10 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 18:37:38 Multi Sensor (multi2) SoilMoistPercentageSensor 1 % 09.02.2017 18:32:07 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:26:36 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:21:04 Multi Sensor (multi2) SoilMoistPercentageSensor 4 % 09.02.2017 18:15:33 Multi Sensor (multi2) SoilMoistPercentageSensor 4 % 09.02.2017 18:10:02 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 18:03:57 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:58:26 Multi Sensor (multi2) SoilMoistPercentageSensor 0 % 09.02.2017 17:52:54 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:46:50 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 17:41:19 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 17:34:41 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:29:10 Multi Sensor (multi2) SoilMoistPercentageSensor -3 % 09.02.2017 17:23:39 Multi Sensor (multi2) SoilMoistPercentageSensor -11 % -
Re: Office plant monitoring
Hello, i have build the sensor from the building page. I directly connect the fork to pin D6,D7. When i show the measurement i see strange values. anyone an idea what i did wrong?09.02.2017 19:22:23 Multi Sensor (multi2) SoilMoistPercentageSensor 3 % 09.02.2017 19:16:51 Multi Sensor (multi2) SoilMoistPercentageSensor 0 % 09.02.2017 19:11:20 Multi Sensor (multi2) SoilMoistPercentageSensor 3 % 09.02.2017 19:05:48 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 19:00:17 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:54:46 Multi Sensor (multi2) SoilMoistPercentageSensor 8 % 09.02.2017 18:48:41 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 18:43:10 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 18:37:38 Multi Sensor (multi2) SoilMoistPercentageSensor 1 % 09.02.2017 18:32:07 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:26:36 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:21:04 Multi Sensor (multi2) SoilMoistPercentageSensor 4 % 09.02.2017 18:15:33 Multi Sensor (multi2) SoilMoistPercentageSensor 4 % 09.02.2017 18:10:02 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 18:03:57 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:58:26 Multi Sensor (multi2) SoilMoistPercentageSensor 0 % 09.02.2017 17:52:54 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:46:50 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 17:41:19 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 17:34:41 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:29:10 Multi Sensor (multi2) SoilMoistPercentageSensor -3 % 09.02.2017 17:23:39 Multi Sensor (multi2) SoilMoistPercentageSensor -11 %Which sketch did you use? The one from this page needs the fork connected to analog input pins Ax.
-
Which sketch did you use? The one from this page needs the fork connected to analog input pins Ax.
@Jan-Gatzke I have connected the fork to A0 and A1 of mine arduino nano. Now i have this result:
10.02.2017 12:17:35 Multi Sensor (multi2) SoilMoistPercentageSensor -182 % 10.02.2017 12:12:04 Multi Sensor (multi2) SoilMoistPercentageSensor -455 % 10.02.2017 12:06:33 Multi Sensor (multi2) SoilMoistPercentageSensor -317 % 10.02.2017 12:01:02 Multi Sensor (multi2) SoilMoistPercentageSensor 255 % 10.02.2017 11:55:31 Multi Sensor (multi2) SoilMoistPercentageSensor -547 % 10.02.2017 11:49:26 Multi Sensor (multi2) SoilMoistPercentageSensor 1169 % 10.02.2017 11:43:55 Multi Sensor (multi2) SoilMoistPercentageSensor 40 % 10.02.2017 11:38:24 Multi Sensor (multi2) SoilMoistPercentageSensor -250 %This is the sketch i use:
/* * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * DESCRIPTION * * Arduino soil moisture based on gypsum sensor/resistive sensor to avoid electric catalyse in soil * Required to interface the sensor: 2 * 4.7kOhm + 2 * 1N4148 * * Gypsum sensor and calibration: * DIY: See http://vanderleevineyard.com/1/category/vinduino/1.html * Built: Davis / Watermark 200SS * http://www.cooking-hacks.com/watermark-soil-moisture-sensor?_bksrc=item2item&_bkloc=product * http://www.irrometer.com/pdf/supportmaterial/sensors/voltage-WM-chart.pdf * cb (centibar) http://www.irrometer.com/basics.html * 0-10 Saturated Soil. Occurs for a day or two after irrigation * 10-20 Soil is adequately wet (except coarse sands which are drying out at this range) * 30-60 Usual range to irrigate or water (except heavy clay soils). * 60-100 Usual range to irrigate heavy clay soils * 100-200 Soil is becoming dangerously dry for maximum production. Proceed with caution. * * Connection: * D6, D7: alternative powering to avoid sensor degradation * A0, A1: alternative resistance mesuring * * Based on: * "Vinduino" portable soil moisture sensor code V3.00 * Date December 31, 2012 * Reinier van der Lee and Theodore Kaskalis * www.vanderleevineyard.com * Contributor: epierre */ // Copyright (C) 2015, Reinier van der Lee // www.vanderleevineyard.com // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // Enable debug prints to serial monitor #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 #include <math.h> // Conversion equation from resistance to % #include <MySensors.h> // Setting up format for reading 3 soil sensors #define NUM_READS 10 // Number of sensor reads for filtering #define CHILD_ID 0 MyMessage msg(CHILD_ID, V_LEVEL); unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds) long buffer[NUM_READS]; int index; /// @brief Structure to be used in percentage and resistance values matrix to be filtered (have to be in pairs) typedef struct { int moisture; //!< Moisture long resistance; //!< Resistance } values; const long knownResistor = 4700; // Constant value of known resistor in Ohms int supplyVoltage; // Measured supply voltage int sensorVoltage; // Measured sensor voltage values valueOf[NUM_READS]; // Calculated moisture percentages and resistances to be sorted and filtered int i; // Simple index variable void setup() { // initialize the digital pins as an output. // Pin 6,7 is for sensor 1 // initialize the digital pin as an output. // Pin 6 is sense resistor voltage supply 1 pinMode(6, OUTPUT); // initialize the digital pin as an output. // Pin 7 is sense resistor voltage supply 2 pinMode(7, OUTPUT); } void presentation() { sendSketchInfo("Soil Moisture Sensor Reverse Polarity", "1.0"); present(CHILD_ID, S_MOISTURE); } void loop() { measure(6,7,1); Serial.print ("\t"); Serial.println (average()); long read1 = average(); measure(7,6,0); Serial.print ("\t"); Serial.println (average()); long read2= average(); long sensor1 = (read1 + read2)/2; Serial.print ("resistance bias =" ); Serial.println (read1-read2); Serial.print ("sensor bias compensated value = "); Serial.println (sensor1); Serial.println (); //send back the values send(msg.set((long int)ceil(sensor1))); // delay until next measurement (msec) sleep(SLEEP_TIME); } void measure (int phase_b, int phase_a, int analog_input) { // read sensor, filter, and calculate resistance value // Noise filter: median filter for (i=0; i<NUM_READS; i++) { // Read 1 pair of voltage values digitalWrite(phase_a, HIGH); // set the voltage supply on delayMicroseconds(25); supplyVoltage = analogRead(analog_input); // read the supply voltage delayMicroseconds(25); digitalWrite(phase_a, LOW); // set the voltage supply off delay(1); digitalWrite(phase_b, HIGH); // set the voltage supply on delayMicroseconds(25); sensorVoltage = analogRead(analog_input); // read the sensor voltage delayMicroseconds(25); digitalWrite(phase_b, LOW); // set the voltage supply off // Calculate resistance // the 0.5 add-term is used to round to the nearest integer // Tip: no need to transform 0-1023 voltage value to 0-5 range, due to following fraction long resistance = (knownResistor * (supplyVoltage - sensorVoltage ) / sensorVoltage) ; delay(1); addReading(resistance); Serial.print (resistance); Serial.print ("\t"); } } // Averaging algorithm void addReading(long resistance) { buffer[index] = resistance; index++; if (index >= NUM_READS) { index = 0; } } long average() { long sum = 0; for (int i = 0; i < NUM_READS; i++) { sum += buffer[i]; } return (long)(sum / NUM_READS); } -
Thanks for this great solution @mfalkvidd! It works great when my Arduino Pro Mini is connected to the computer, but not when I try to run it off a battery pack.
I have a Pro Mini 3.3v connected to a 0.8-3.3v step up from a battery pack (2xAA; 3v). And then I have connected the radio and sensor to VCC on the Pro Mini. When the Pro Mini is connected to my iMac, Domoticz receives everything as it should. However, when I disconnect it from the computer and connect the battery source, all LEDs light as they should, indicitating that they have power, but it won't connect to Domoticz over NRF24.
I have used a multimeter to check the voltage and if the radio receives enough power, and it does. All power/ground pins show around 3.3v. Any ideas to debug what's wrong?
-
@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 ? -
Thanks for this great solution @mfalkvidd! It works great when my Arduino Pro Mini is connected to the computer, but not when I try to run it off a battery pack.
I have a Pro Mini 3.3v connected to a 0.8-3.3v step up from a battery pack (2xAA; 3v). And then I have connected the radio and sensor to VCC on the Pro Mini. When the Pro Mini is connected to my iMac, Domoticz receives everything as it should. However, when I disconnect it from the computer and connect the battery source, all LEDs light as they should, indicitating that they have power, but it won't connect to Domoticz over NRF24.
I have used a multimeter to check the voltage and if the radio receives enough power, and it does. All power/ground pins show around 3.3v. Any ideas to debug what's wrong?
@ronnyandre a multimeter is unfortunately not sensitive enough to display if there is enough power during the short bursts when the radio is active.
Most step-ups don't deliver power that is stable enough. You could try adding more/larger capacitors, but from what I have seen in the forum, people seldom get thing working reliably with a step-up. I have never tried using step-up myself, I use power directly from the batteries.
If you haven't checked already, see the troubleshooting chart at https://forum.mysensors.org/topic/666/debug-faq-and-how-ask-for-help/
-
-
@ronnyandre a multimeter is unfortunately not sensitive enough to display if there is enough power during the short bursts when the radio is active.
Most step-ups don't deliver power that is stable enough. You could try adding more/larger capacitors, but from what I have seen in the forum, people seldom get thing working reliably with a step-up. I have never tried using step-up myself, I use power directly from the batteries.
If you haven't checked already, see the troubleshooting chart at https://forum.mysensors.org/topic/666/debug-faq-and-how-ask-for-help/
@mfalkvidd Thanks for the quick answer! I also read on the page for battery powered sensors that the step up generates alot of noise that can interfere with the radio, and that a solution might be to add capacitators (which I already tried), but also powering the radio directly from batteries. I'll try that later today. Thanks! :smiley:
And thank you for the link to the troubleshooting. It's now bookmarked! :wink: