-
• #2
Hi! I think your wiring might be a bit off - the power wires seem to be connected to 3.3v and RST. See: http://www.espruino.com/Pixl.js#pinout
Basically you want to move the blue wire 3 pins downwards to connect it to GND, and that will probably help a lot.
-
• #3
Diffrent numbers but thet change i sequence. Thanks for the sudgestion
1 Attachment
-
• #4
I think IM doing something wrong any ideas? Does anyone here have an idea how to extract data from it? Is it even analog? The 3 wires att sig, vcc and gnd.
-
• #5
I don't really know - do you get an obvious digital output out of it if you stick it in water?
-
• #6
i have something similar from a grooove sensor kit. i can try it this weekend, or at least give the arduino code. i know i just did an analog read off of a0. the values ranged from 0 - 800 or so. using it for plant soil moisture, i had values between 300 and 650 as acceptable moisture.
-
• #7
Thank you Im looking forward to your findings or your code :)
-
• #8
No it just cycles between some values not dependant on the environment
-
• #9
There is big chances the moisture sensor is analog, like the one from Adafruit (https://www.sparkfun.com/products/13322).
Then, the code is quite easy:
Just use theanalogRead(PIN)
function with the correct pin name and there it is. Then you can add some threshold or whatever you want depending on your application -
• #10
Thank you, so My code above should do the trick?
-
• #11
It should. If not, could you please share the sensor model? (reference, name, manufacturer or datasheet)
-
• #12
here's the arduino code i'll try to convert to a pixl when i get home this weekend. it reads from a moisture sensor, and a temperature/humidity sensor, and displays the values to an rgb display. unfortunately i won't be able to change the display color based on the moisture level, but it will be a good test. in my case i'm using an arduino shield with a grove sensor kit, so it will be a good test on the pixl as a shield as well.
[#include](https://forum.espruino.com/search/?q=%23include) "Arduino.h" [#include](https://forum.espruino.com/search/?q=%23include) "Wire.h" [#include](https://forum.espruino.com/search/?q=%23include) <rgb_lcd.h> [#include](https://forum.espruino.com/search/?q=%23include) <TH02_dev.h> [#include](https://forum.espruino.com/search/?q=%23include) <stdio.h> [#include](https://forum.espruino.com/search/?q=%23include) <math.h> [#include](https://forum.espruino.com/search/?q=%23include) <TimeLib.h> [#include](https://forum.espruino.com/search/?q=%23include) <TimeAlarms.h> rgb_lcd lcd; const int button = 2; // connect a button const int buzzer = 3; // connect a buzzer // Test code for Grove - Moisture Sensor int sensorPin = A0; // select the input pin for the potentiometer int moisture = -1; // variable to store the value coming from the sensor7 int prec = 0; int buttonPress = 0; int displayOn = 1; void setup() { Serial.begin(9600); // declare the ledPin as an OUTPUT: pinMode(button, INPUT); //set button as an INPUT device pinMode(buzzer, OUTPUT); //set LED as an OUTPUT device // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Set the LCD background color setColor(); Serial.println("****TH02_dev demo by seeed studio****\n"); /* Power up,delay 150ms,until voltage is stable */ delay(150); /* Reset HP20x_dev */ TH02.begin(); delay(100); /* Determine TH02_dev is available or not */ Serial.println("TH02_dev is available.\n"); Alarm.timerRepeat(5, readSensors); Alarm.timerRepeat(60, displayOff); } void loop() { buttonPress = digitalRead(button); //read the status of the button if( buttonPress && !displayOn ) { lcd.display(); displayOn = 1; setColor(); } //digitalWrite(buzzer, btn); Alarm.delay(10); } void readSensors() { Serial.println("Reading sensors"); // read the value from the sensor: moisture = analogRead(sensorPin); Serial.print("Moisture = " ); Serial.println(moisture); float temper = TH02.ReadTemperature(); Serial.println("Temperature: "); Serial.print(temper); Serial.println("C\r\n"); float humidity = TH02.ReadHumidity(); Serial.println("Humidity: "); Serial.print(humidity); Serial.println("%\r\n"); char message1[16]; char message2[16]; float ftemp = 1.8*temper + 32; long t = lround(ftemp); int tm = int((ftemp-floor(ftemp))*100)%100; long h = lround(humidity); int hm = int((humidity-floor(humidity))*100)%100; long m = moisture; sprintf(message1, "%ld.%dF, %ld.%dRH", t, tm, h, hm); Serial.println(int((temper-floor(temper))*100)%100); setColor(); lcd.clear(); lcd.setCursor(0,0); lcd.print(message1); lcd.setCursor(0,1); sprintf(message2, "Moisture: %3ld", m); lcd.print(message2); } void displayOff() { if( buttonPress ) { buttonPress = 0; } else { lcd.noDisplay(); lcd.setColorAll(); displayOn = 0; } } void setColor() { if( displayOn ) { if( moisture < 0 ) { lcd.setColorAll(); } else if( moisture < 300 ) { lcd.setColor(RED); } else if( moisture < 650 ) { lcd.setColor(GREEN); } else { lcd.setColor(BLUE); } } }
-
• #13
I suspect that the kind of sensor that J{a}SON is using is this one: http://wiki.seeedstudio.com/Grove-Temperature_and_Humidity_Sensor_Pro/
If true, It is probably discussing through I2C, which cannot be the case of the sensor of @furuskog, which has only 3 pins (I2C would have at least 4 pins) -
• #14
the moisture sensor is only using 3 of the pins: vcc, gnd, sig. it's this one
http://wiki.seeedstudio.com/Grove-Moisture_Sensor/ -
• #15
Well in this case @furuskog probably owns some kind of clone of this moisture sensor, it should work fine with a simple
analogRead(PIN)
. If not working, possible issues could be- the sensor is not correctly wired up
- the
PIN
is not the one which is connected to the sensor - the soil humidity is way too low and the sensor is continuously reading the minimal value
- the transistor on the moisture sensor is dead
- the sensor is not correctly wired up
-
• #16
i'm going to convert my shield arduino code to pixl anyway, just as an exercise. it was accurate on the arduino as a setup for my indoor plant starters, but it didn't have a sleep mode, and drained the batteries too quickly. i look forward to seeing how energy efficient the pixl can be with this setup.
-
• #18
Nice, code :)
-
• #19
- 🤔
- A0
- Tested in a glas of water
- I have 4 sensors tested with 2 so far :)
- 🤔
-
• #20
Well, can you try to call
analogRead(A0)
with the sensor unplugged? The pin should pick-up random values and you'll be able to see them change in the console -
• #21
yes I have done that it cycles through.
-
• #22
Are you powering the sensor with 3.3 or 5.0 V?
-
• #23
hmm 3.3v seems to work now.
in water
h = 0.45629882812
h = 0.45678710937
h = 0.45971679687
h = 0.46044921875
h = 0.46020507812
h = 0.4619140625
h = 0.4619140625
h = 0.462890625
h = 0.46362304687in air
h = 0.00024414062
h = 0.00048828125
h = 0.0009765625
h = -0.00024414062
h = 0.00024414062Now i just have to calculate it in %, an have som treshold for 0% because of the fluxuation, maybe an upper limit too?
I will check the code you guys provided :)
-
• #24
I came up with this
var high = 0.55; var low = 0.0017; function map_value(val, in_min, in_max, out_min, out_max){ var result = (val - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; if(result < out_min) { return out_min; } else if(result > out_max) { return out_max; } return result; } function onTimer() { var h = analogRead(A0); var hp = map_value(h, low, high, 0, 100); var percentage = hp.toFixed(0)+"%"; // Clear display g.clear(); // Use the small font for a title g.setFontBitmap(); g.drawString("Soil moister:"); // Use a large font for the value itself g.setFontVector(10); g.drawString(percentage, 5,10); // Update the screen g.flip(); } // Update soil moister every 2 seconds setInterval(onTimer, 2000); // Update soil moister immediately onTimer();
Feedback on the code is welcome
I have 3 pucks im gooing to try next :) Im gooing to send via bluetooth to my pixl.js
edit:
Strange the high and low changes with battery vs plug -
• #25
Strange the high and low changes with battery vs plug
Yes that's is probably the downside of this sensor. Due to its circuit, the sensor output may be a function of VCC. You could try to power it through an LDO (low dropout regulator).
Or you can also monitor its voltage through a resistor divider an compensate digitally ?
Anyway, good to know that you finally got it work!
Hello!
I have a analog moister sensor, how do I make it work? How can I read the proper values from pin A0. I have a CR2032 battery. And i think the sensor can run on 3,3V
2 Attachments