• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Button

Scheduled Pinned Locked Moved Troubleshooting
23 Posts 9 Posters 21.0k Views 5 Watching
Loading More Posts
  • 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.
  • C Offline
    CGabo @dicker182
    last edited by Jul 26, 2016, 9:26 AM

    @dicker182

    And to complement @KirAsh4 comment: probably the cause is some voltage / EMI feedback, likely due to the wires and switches.

    From what I see, the Pi does not have protective diodes on the inputs like the AVR chips (and Arduino) do. As a result, feedback to the Pi can probably cause the behaviour which you experienced. Try to switch on/off some lights and electrical devices and see the result.

    To correct this condition, use a combination of current limiting, filtering and shielding.

    You could use for current limiting, a 1K resistor in line with the switch, installed on a PCB inches from the Pi. Also use a low-pass filter made up of another pull-up / pull-down resistor and a capacitor alternatively to the build in PULL-UP and PULL-DOWN resistors of the PI.

    Here are some additional links:

    https://www.raspberrypi.org/forums/viewtopic.php?t=53548

    http://www.digikey.com/en/articles/techzone/2012/apr/protecting-inputs-in-digital-electronics

    1 Reply Last reply Reply Quote 0
    • D Offline
      dicker182
      last edited by Jul 26, 2016, 8:13 PM

      Both, thank you for your answer. I will try to give you more informations. The following button from Ebay are used:

      http://www.ebay.de/itm/272129888717?_trksid=p2060353.m2749.l2649&var=570940259633&ssPageName=STRK%3AMEBIDX%3AIT

      Art-Nr. 041

      At first, I tryed the configuration from PtrBld´s howto:

      0_1469563372766_upload-9e2a744a-191c-4bc0-a573-f60bb97298ea

      0_1469563330027_upload-82d3e24f-3dc3-445c-b383-2bfbd97945fd
      https://developer.microsoft.com/de-de/windows/iot/win10/samples/PushButton.htm


      After the false positiv pressed buttons, I tryed the actually config:

      0_1469563460478_upload-01973e92-35f2-4c6e-a8f0-54d28cd740ee https://dracarysdiy.files.wordpress.com/2016/03/button.jpg?w=474

      But the problem is always the same.

      @CGabo, I will have a look to your links tomorrow. But I am not an electrican, so I hope to understand.

      Thank you in advance!

      1 Reply Last reply Reply Quote 0
      • K Offline
        KirAsh4 Moderator
        last edited by Jul 26, 2016, 8:51 PM

        Yeah, that’s a floating button. You need a pull-down on it, a known state, so the rpi can detect a change. You can either do that in software with RPi.GPIO and configuring it as such:

        GPIO.setup(PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
        

        Or through hardware:
        https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/buttons_and_switches/

        A Life? Cool! Where can I download one of those from?

        1 Reply Last reply Reply Quote 0
        • D Offline
          dicker182
          last edited by dicker182 Jul 27, 2016, 12:09 PM Jul 27, 2016, 11:58 AM

          Okay, now I have a script button.py which starts with rc.local after boot.

          import RPi.GPIO as GPIO
          import time
          
          GPIO.setmode(GPIO.BCM)
          GPIO.setup(9, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
          GPIO.cleanup()           # clean up GPIO on normal exit
          

          But it´s also not working. Did I miss something?

          1 Reply Last reply Reply Quote 0
          • K Offline
            KirAsh4 Moderator
            last edited by Jul 27, 2016, 7:36 PM

            Different permissions. Your rc.local runs with system privileges, however the MM² task runs as the pi user. You need to have those GPIO setting in the script that the pi user runs.

            A Life? Cool! Where can I download one of those from?

            1 Reply Last reply Reply Quote 0
            • D Offline
              dicker182
              last edited by dicker182 Jul 27, 2016, 8:35 PM Jul 27, 2016, 8:25 PM

              Okay thanks, the script now starting as user pi.
              Other question, has my button.py script to run in a loop?

              EDIT: Okay the message “button pressed” are coming when I turn the floor lights on 0o?

              1 Reply Last reply Reply Quote 0
              • K Offline
                KirAsh4 Moderator
                last edited by Jul 27, 2016, 8:47 PM

                1. Take out that 'GPIO.cleanup()' call that you have. That resets everything you just did above it.
                2. Button getting triggered because you turning on the floor (?) lights is because that button is still floating, see #1 above.
                3. I’m assuming the rpi isn’t on the same circuit as the floor (??) lights, a voltage difference could also falsely trigger the button.

                A Life? Cool! Where can I download one of those from?

                1 Reply Last reply Reply Quote 0
                • D Offline
                  dicker182
                  last edited by dicker182 Jul 27, 2016, 8:54 PM Jul 27, 2016, 8:54 PM

                  Yes it seems it is on the same circuit. The button is pressed when the light goes on and when the light goes off… :D unbelievable

                  C 1 Reply Last reply Jul 27, 2016, 10:58 PM Reply Quote 0
                  • K Offline
                    KirAsh4 Moderator
                    last edited by Jul 27, 2016, 9:06 PM

                    So your rpi is then experiencing a dip in voltage, which is coming from whatever you have it connected to, I presume a wall adapter. What’s the output of that adapter? What’s the Amp rating on it? Is it a regulated or unregulated? The latter means with no load, it could very well be supplying ad much as 7-9V, and with a load it drops to 5V, however it also means it will dip rather low if something else comes on on the same circuit. Unfortunately there is no easy way to tell other than to measure its power output.

                    A Life? Cool! Where can I download one of those from?

                    1 Reply Last reply Reply Quote 0
                    • C Offline
                      CGabo @dicker182
                      last edited by Jul 27, 2016, 10:58 PM

                      @dicker182
                      See my previous posting:

                      Probably the cause is some voltage / EMI feedback, likely due to the wires and switches. Try to switch on/off some lights and electrical devices and see the result!
                      To correct this condition, use a combination of current limiting, filtering and shielding.
                      ;-)

                      Did you read the link?
                      https://www.raspberrypi.org/forums/viewtopic.php?t=53548

                      Try following:

                      • Reduce the cable length to the switch.
                      • Detect either only the rising (GPIO.RISING) or falling event.
                      • Use bouncetime in ms (minimum time between two callbacks in milliseconds (intermediate events will be ignored))
                      • Use a capacitor, see folowing example.
                        http://raspberrypihobbyist.blogspot.ch/2014/11/debouncing-gpio-input.html
                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 3
                      • 2 / 3
                      2 / 3
                      • First post
                        11/23
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy