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. Development
  3. Powering a sensor with digital out

Powering a sensor with digital out

Scheduled Pinned Locked Moved Development
27 Posts 7 Posters 4.5k Views 7 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.
  • hozzeH hozze

    Hi,

    I'm trying to power a sensor with one of the digital pins of Arduino. Issue I'm facing is I'm unable to turn on digital pin, I have tried quite few options. I feel I'm missing something simple but its wrecking my brain. Can any one of you look at the code and see what I'm doing wrong, please.

    Arduino : pro mini Atmega168 3.3v

    #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 2
    #include <MySensors.h>
    #include <SPI.h>
    
    
    MyMessage msg(NODE_ID, V_LEVEL); // constructing the msg
    const int VAL_PROBE = 0; // initializing the moisture variable
    
    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(10000); // To check the input voltage on pin 2
      int moisture = analogRead(VAL_PROBE); //measuring the moisture
      send(msg.set(moisture));  // sending the data 
      sleep(1000);  // sleeping for 10 sec
    }
    
    mfalkviddM Offline
    mfalkviddM Offline
    mfalkvidd
    Mod
    wrote on last edited by
    #3

    @hozze I'm using a similar solution if my office plant monitoring. It works well. What observation made you think that it doesn't work? Have you tried measuring the output pin with a multimeter? Could you show your wiring diagram?

    1 Reply Last reply
    1
    • mfalkviddM Offline
      mfalkviddM Offline
      mfalkvidd
      Mod
      wrote on last edited by
      #4

      You could try changing

      const int VAL_PROBE = 0; // initializing the moisture variable
      

      to

      #define VAL_PROBE A0
      

      I don't see any point in declaring it const int, and I prefer to use the An naming to make it clear which pin I am using.

      1 Reply Last reply
      1
      • hozzeH Offline
        hozzeH Offline
        hozze
        wrote on last edited by hozze
        #5

        @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
        mfalkviddM 1 Reply Last reply
        0
        • hozzeH hozze

          @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
          mfalkviddM Offline
          mfalkviddM Offline
          mfalkvidd
          Mod
          wrote on last edited by mfalkvidd
          #6

          @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.

          YveauxY 1 Reply Last reply
          2
          • mfalkviddM mfalkvidd

            @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.

            YveauxY Offline
            YveauxY Offline
            Yveaux
            Mod
            wrote on last edited by
            #7

            @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.

            http://yveaux.blogspot.nl

            1 Reply Last reply
            0
            • hozzeH Offline
              hozzeH Offline
              hozze
              wrote on last edited by
              #8

              @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:

              YveauxY 1 Reply Last reply
              0
              • hozzeH hozze

                @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:

                YveauxY Offline
                YveauxY Offline
                Yveaux
                Mod
                wrote on last edited by
                #9

                @hozze make sure you don't define MY_LEDS_BLINKING_FEATURE or MY_INCLUSION_MODE_FEATURE, as their pin mappings might interfere with your application.

                http://yveaux.blogspot.nl

                1 Reply Last reply
                2
                • hozzeH Offline
                  hozzeH Offline
                  hozze
                  wrote on last edited by
                  #10

                  @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
                  }
                  
                  YveauxY 1 Reply Last reply
                  0
                  • hozzeH hozze

                    @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
                    }
                    
                    YveauxY Offline
                    YveauxY Offline
                    Yveaux
                    Mod
                    wrote on last edited by
                    #11

                    @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.

                    http://yveaux.blogspot.nl

                    TheoLT 1 Reply Last reply
                    0
                    • hozzeH Offline
                      hozzeH Offline
                      hozze
                      wrote on last edited by
                      #12

                      I see that output on pro mini Atmega168 3.3v with commented sketch.
                      I tried with a different 5v pro mini Atmega368 and I'm getting 5.04V on output pin with commented sketch.

                      1 Reply Last reply
                      0
                      • YveauxY Yveaux

                        @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.

                        TheoLT Offline
                        TheoLT Offline
                        TheoL
                        Contest Winner
                        wrote on last edited by
                        #13

                        @Yveaux @hozze Are you sure it's a ProMini 5V? Could you measure the voltage on the Raw pin.

                        I've received some Pro Mini 3.3V while I actually did order 5V.

                        It's just a guess.

                        hozzeH 1 Reply Last reply
                        0
                        • TheoLT TheoL

                          @Yveaux @hozze Are you sure it's a ProMini 5V? Could you measure the voltage on the Raw pin.

                          I've received some Pro Mini 3.3V while I actually did order 5V.

                          It's just a guess.

                          hozzeH Offline
                          hozzeH Offline
                          hozze
                          wrote on last edited by
                          #14

                          @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.

                          TheoLT 1 Reply Last reply
                          0
                          • hozzeH hozze

                            @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.

                            TheoLT Offline
                            TheoLT Offline
                            TheoL
                            Contest Winner
                            wrote on last edited by
                            #15

                            @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 ;-)

                            hozzeH 1 Reply Last reply
                            0
                            • TheoLT TheoL

                              @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 ;-)

                              hozzeH Offline
                              hozzeH Offline
                              hozze
                              wrote on last edited by
                              #16

                              @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.

                              Boots33B 1 Reply Last reply
                              1
                              • hozzeH hozze

                                @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.

                                Boots33B Offline
                                Boots33B Offline
                                Boots33
                                Hero Member
                                wrote on last edited by
                                #17

                                @hozze You should enable debugging at the top of your sketch with

                                // Enable debug prints to serial monitor
                                #define MY_DEBUG
                                

                                and 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

                                1 Reply Last reply
                                1
                                • hozzeH Offline
                                  hozzeH Offline
                                  hozze
                                  wrote on last edited by
                                  #18

                                  @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 )

                                  mfalkviddM Boots33B 2 Replies Last reply
                                  0
                                  • hozzeH hozze

                                    @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 )

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

                                    @hozze connect gnd from the serial adapter AND the external power supply to gnd on the Arduino. Connect + on the external adapter to the pin you normally use (vcc or raw). Do not connect + from the serial adapter. That's it.

                                    1 Reply Last reply
                                    1
                                    • hozzeH hozze

                                      @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 )

                                      Boots33B Offline
                                      Boots33B Offline
                                      Boots33
                                      Hero Member
                                      wrote on last edited by
                                      #20

                                      @hozze The whole purpose of a good forum is for people to share ideas and knowledge. So never be worried about asking questions. :)

                                      1 Reply Last reply
                                      1
                                      • hozzeH Offline
                                        hozzeH Offline
                                        hozze
                                        wrote on last edited by
                                        #21

                                        Thanks guys, I will check this out.

                                        1 Reply Last reply
                                        0
                                        • hozzeH Offline
                                          hozzeH Offline
                                          hozze
                                          wrote on last edited by
                                          #22

                                          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:392
                                          

                                          Looks fine for me , still I can't turn a digital pin On :disappointed:

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


                                          15

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.1k

                                          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