Powering a sensor with digital out
-
@TheoL , Thanks for the suggestion . Tried that, same result.
@mfalkvidd , Thanks for the code suggestion, I made the change. Regarding the issue, I did check with a multi-meter and it shows 0V . To make sure I also used the example blink sketch with pin 2 as output and it is showing 3.24V I will attach the wiring diagram(I haven't drawn one). Things I noticed.
- On commenting the Mysensor.h library and related code from above sketch I'm able to turn on the Pin
- I tried using different digital pins and same result.
- To make sure I measured the output pin voltage powering it with USB ( without connecting the board to radio and soil sensor ) , same result voltage is 0V
-
@TheoL , Thanks for the suggestion . Tried that, same result.
@mfalkvidd , Thanks for the code suggestion, I made the change. Regarding the issue, I did check with a multi-meter and it shows 0V . To make sure I also used the example blink sketch with pin 2 as output and it is showing 3.24V I will attach the wiring diagram(I haven't drawn one). Things I noticed.
- On commenting the Mysensor.h library and related code from above sketch I'm able to turn on the Pin
- I tried using different digital pins and same result.
- To make sure I measured the output pin voltage powering it with USB ( without connecting the board to radio and soil sensor ) , same result voltage is 0V
@hozze looks like good troubleshooting, great work.
Very interesting that it works when uncommenting the MySensors stuff. I think there are some leds blinking features in 2.0 (have not yet moved to 2.0 myself so I don't know more than what I've read in the forum), but I think that is only enabled for gateways.
Does it help if you remove include <SPI.h>? It looks like SPI is not used so it shouldn't make a difference but you might as well remove it if you aren't using it.
-
@hozze looks like good troubleshooting, great work.
Very interesting that it works when uncommenting the MySensors stuff. I think there are some leds blinking features in 2.0 (have not yet moved to 2.0 myself so I don't know more than what I've read in the forum), but I think that is only enabled for gateways.
Does it help if you remove include <SPI.h>? It looks like SPI is not used so it shouldn't make a difference but you might as well remove it if you aren't using it.
@mfalkvidd said:
there are some leds blinking features in 2.0
This feature is also present in previous versions and not limited to gateways.
Pin 2 however is never used for leds as it is the default irq pin for nRF.
Try with another pin, e.g. 4/5/6 and see if that makes a difference. -
@mfalkvidd : Removed SPI.h , it didn't help though. Thanks for pointers on cleaning up the code :smiley:
@Yveaux :
Tried with pin 5 , same result.
Tried using a different pro mini ( Atmega328 16Mhz 5 v ) got same result , no output on pin :expressionless: -
@mfalkvidd : Removed SPI.h , it didn't help though. Thanks for pointers on cleaning up the code :smiley:
@Yveaux :
Tried with pin 5 , same result.
Tried using a different pro mini ( Atmega328 16Mhz 5 v ) got same result , no output on pin :expressionless: -
@Yveaux I don't have those defined. Below is my current code.
#define MY_NODE_ID 1 // node id #define MY_RADIO_NRF24 // enabling support for NRF radio module #define NODE_ID 1 // sensor id #define SENS_ON 5 #define VAL_PROBE A0 #include <MySensors.h> MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg void setup() { pinMode(SENS_ON, OUTPUT); } void presentation() { present(NODE_ID, S_MOISTURE); // presenting the sensor sendSketchInfo("SoilSensor", "0.1"); //meta data } void loop() { digitalWrite(SENS_ON, HIGH); delay(1000); // To check the input voltage of pin 2 int moisture = analogRead(VAL_PROBE); //measuring the moisture send(msg.set(moisture)); // sending the data digitalWrite(SENS_ON, LOW); // turn it off // sleep(1000); // sleeping for 10 sec }An as soon as I comment it out like below the pin out on 5 works
#define MY_NODE_ID 1 // node id #define MY_RADIO_NRF24 // enabling support for NRF radio module #define NODE_ID 1 // sensor id #define SENS_ON 5 #define VAL_PROBE A0 //#include <MySensors.h> MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg void setup() { pinMode(SENS_ON, OUTPUT); } void presentation() { // present(NODE_ID, S_MOISTURE); // presenting the sensor // sendSketchInfo("SoilSensor", "0.1"); //meta data } void loop() { digitalWrite(SENS_ON, HIGH); delay(1000); // To check the input voltage of pin 2 int moisture = analogRead(VAL_PROBE); //measuring the moisture // send(msg.set(moisture)); // sending the data digitalWrite(SENS_ON, LOW); // turn it off // sleep(1000); // sleeping for 10 sec } -
@Yveaux I don't have those defined. Below is my current code.
#define MY_NODE_ID 1 // node id #define MY_RADIO_NRF24 // enabling support for NRF radio module #define NODE_ID 1 // sensor id #define SENS_ON 5 #define VAL_PROBE A0 #include <MySensors.h> MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg void setup() { pinMode(SENS_ON, OUTPUT); } void presentation() { present(NODE_ID, S_MOISTURE); // presenting the sensor sendSketchInfo("SoilSensor", "0.1"); //meta data } void loop() { digitalWrite(SENS_ON, HIGH); delay(1000); // To check the input voltage of pin 2 int moisture = analogRead(VAL_PROBE); //measuring the moisture send(msg.set(moisture)); // sending the data digitalWrite(SENS_ON, LOW); // turn it off // sleep(1000); // sleeping for 10 sec }An as soon as I comment it out like below the pin out on 5 works
#define MY_NODE_ID 1 // node id #define MY_RADIO_NRF24 // enabling support for NRF radio module #define NODE_ID 1 // sensor id #define SENS_ON 5 #define VAL_PROBE A0 //#include <MySensors.h> MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg void setup() { pinMode(SENS_ON, OUTPUT); } void presentation() { // present(NODE_ID, S_MOISTURE); // presenting the sensor // sendSketchInfo("SoilSensor", "0.1"); //meta data } void loop() { digitalWrite(SENS_ON, HIGH); delay(1000); // To check the input voltage of pin 2 int moisture = analogRead(VAL_PROBE); //measuring the moisture // send(msg.set(moisture)); // sending the data digitalWrite(SENS_ON, LOW); // turn it off // sleep(1000); // sleeping for 10 sec } -
@hozze it's strange that you only measure 3.24V on the output pin if you're using a 5V pro mini. This is IMHO an indication that something is wrong, also when your pin does seem to toggle.
-
@TheoL I have two pro mini's. I measured the voltage across a output pin ( HIGH ) and GND and it gives me near 5V on one and near 3.3V on another .So it looks as if I do have 5V pro mini.
I have tried few other sketches on both, seems they are working fine, I face the specific issue only when including the Mysensor.h library. I will give it a try on a nano that I have and see what happens.
-
@TheoL I have two pro mini's. I measured the voltage across a output pin ( HIGH ) and GND and it gives me near 5V on one and near 3.3V on another .So it looks as if I do have 5V pro mini.
I have tried few other sketches on both, seems they are working fine, I face the specific issue only when including the Mysensor.h library. I will give it a try on a nano that I have and see what happens.
-
@hozze It was just a guess. I once compiled a sketch for a 5V and uploaded it to a ProMini 3.3V. Took me a while before I noticed my mistake. I just didn;t understand why my Arduino couldn't control my relay boards ;-)
@TheoL :smiley: me too learning things the hard way.
Thanks for all the pointers that you guys are giving . Looks as if I'm in the right place and with a great community,
Let me tinker a bit more and see if I can get somewhere, if anyone can give any further info kindly do.
-
@TheoL :smiley: me too learning things the hard way.
Thanks for all the pointers that you guys are giving . Looks as if I'm in the right place and with a great community,
Let me tinker a bit more and see if I can get somewhere, if anyone can give any further info kindly do.
@hozze You should enable debugging at the top of your sketch with
// Enable debug prints to serial monitor #define MY_DEBUGand check the serial monitor to see if the radio is initialising . Maybe the loop part of the program will not run if this does not happen. That could be why commenting out the #include <MySensors.h> allows it to work.
You might also use wait instead of delay
-
@Boots33 , I enabled MY_DEBUG. Sorry if I sound stupid. I have connected the pro mini to computer with USB serial CP2102 for programming/serial debug , at the same time can I power the pro mini + Radio with an external power supply 3.3V ?
I did something similar with a ATTINY85 few days back and bricked it :cry: ( Connected it to USB and same time powered it )
-
@Boots33 , I enabled MY_DEBUG. Sorry if I sound stupid. I have connected the pro mini to computer with USB serial CP2102 for programming/serial debug , at the same time can I power the pro mini + Radio with an external power supply 3.3V ?
I did something similar with a ATTINY85 few days back and bricked it :cry: ( Connected it to USB and same time powered it )
-
@Boots33 , I enabled MY_DEBUG. Sorry if I sound stupid. I have connected the pro mini to computer with USB serial CP2102 for programming/serial debug , at the same time can I power the pro mini + Radio with an external power supply 3.3V ?
I did something similar with a ATTINY85 few days back and bricked it :cry: ( Connected it to USB and same time powered it )
-
Was away from arduino for over a week with regular job. Tested the code with debug on a new arduino pro mini 3.3v 8Mhz and the below is the output ( please note that the values getting send are random values , i'm still not able to power the sensor with digital Pin )
TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=ok:0100 TSP:MSG:SEND 1-1-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=ok:2.0.0 TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=ok:0 TSP:MSG:READ 0-0-1 s=255,c=3,t=15,pt=6,l=2,sg=0:0100 TSP:MSG:SEND 1-1-0-0 s=1,c=0,t=35,pt=0,l=0,sg=0,ft=0,st=ok: TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=11,pt=0,l=10,sg=0,ft=0,st=ok:SoilSensor TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=ok:0.1 Request registration... TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=ok:2 TSP:MSG:READ 0-0-1 s=255,c=3,t=27,pt=1,l=1,sg=0:1 Node registration=1 Init complete, id=1, parent=0, distance=1, registration=1 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:786 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:503 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:410 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:425 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:461 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:539 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:507 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:392Looks fine for me , still I can't turn a digital pin On :disappointed:
-
Was away from arduino for over a week with regular job. Tested the code with debug on a new arduino pro mini 3.3v 8Mhz and the below is the output ( please note that the values getting send are random values , i'm still not able to power the sensor with digital Pin )
TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=ok:0100 TSP:MSG:SEND 1-1-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=ok:2.0.0 TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=ok:0 TSP:MSG:READ 0-0-1 s=255,c=3,t=15,pt=6,l=2,sg=0:0100 TSP:MSG:SEND 1-1-0-0 s=1,c=0,t=35,pt=0,l=0,sg=0,ft=0,st=ok: TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=11,pt=0,l=10,sg=0,ft=0,st=ok:SoilSensor TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=ok:0.1 Request registration... TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=ok:2 TSP:MSG:READ 0-0-1 s=255,c=3,t=27,pt=1,l=1,sg=0:1 Node registration=1 Init complete, id=1, parent=0, distance=1, registration=1 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:786 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:503 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:410 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:425 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:461 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:539 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:507 TSP:MSG:SEND 1-1-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:392Looks fine for me , still I can't turn a digital pin On :disappointed:
@hozze It really should be working. I tried your original above and with a led connected to pin 5 it turns on when the code is run
try the code below with some serial prints to see what happens
// Enable debug prints to serial monitor #define MY_DEBUG #define MY_NODE_ID 150 // node id #define MY_RADIO_NRF24 // enabling support for NRF radio module #define NODE_ID 1 // sensor id #define SENS_ON 5 #define VAL_PROBE A0 #include <MySensors.h> #define POWER_ON 1 // value to write to turn on sensor #define POWER_OFF 0 // value to write to turn off sensor MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg void setup() { pinMode(SENS_ON, OUTPUT); } void presentation() { present(NODE_ID, S_MOISTURE); // presenting the sensor sendSketchInfo("SoilSensor", "0.1"); //meta data } void loop() { digitalWrite(SENS_ON, POWER_ON); Serial.print("Sensor Power on pin "); Serial.print(SENS_ON); Serial.print(" is..."); Serial.println((POWER_ON)); wait(1000); // To check the input voltage of pin 2 int moisture = analogRead(VAL_PROBE); //measuring the moisture send(msg.set(moisture)); // sending the data digitalWrite(SENS_ON, POWER_OFF); // turn it off Serial.print("Sensor Power on pin "); Serial.print(SENS_ON); Serial.print(" is..."); Serial.println((POWER_OFF)); wait(1000); }I get an output like this below and the led flashes on and off at 1 second intervals. Maybe try just a led with a 200 to 300 ohm resistor on pin 5 to see what is happening. could the moisture sensor be drawing more than the arduino can give?
TSP:MSG:SEND 150-150-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,ft=1,st=ok:0 TSP:MSG:READ 0-0-150 s=255,c=3,t=6,pt=0,l=1,sg=0:M TSP:MSG:SEND 150-150-0-0 s=1,c=0,t=35,pt=0,l=0,sg=0,ft=0,st=ok: TSP:MSG:SEND 150-150-0-0 s=255,c=3,t=11,pt=0,l=10,sg=0,ft=0,st=ok:SoilSensor TSP:MSG:SEND 150-150-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=ok:0.1 Request registration... TSP:MSG:SEND 150-150-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=ok:2 TSP:MSG:READ 0-0-150 s=255,c=3,t=27,pt=1,l=1,sg=0:1 Node registration=1 Init complete, id=150, parent=0, distance=1, registration=1 Sensor Power on pin 5 is...1 TSP:MSG:SEND 150-150-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:511 Sensor Power on pin 5 is...0 Sensor Power on pin 5 is...1 TSP:MSG:SEND 150-150-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:313 Sensor Power on pin 5 is...0 Sensor Power on pin 5 is...1 TSP:MSG:SEND 150-150-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:254 Sensor Power on pin 5 is...0 Sensor Power on pin 5 is...1 TSP:MSG:SEND 150-150-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:326 Sensor Power on pin 5 is...0 Sensor Power on pin 5 is...1 TSP:MSG:SEND 150-150-0-0 s=1,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=ok:235 Sensor Power on pin 5 is...0 Sensor Power on pin 5 is...1