2

I've got a small 5v relay board ("Ontengfei" JQC-3FF-S-Z) connected to my Raspberry Pi 3 B+. When I set the GPIO pin mode to OUTPUT, the relay turns on. When I toggle the GPIO pin between HIGH / LOW, the relay just stays on, it doesn't toggle like I'd expect it to. If I set the GPIO mode to INPUT, the relay turns off. This is really confusing, because I'd expect toggling LOW / HIGH, while the GPIO pin is in OUTPUT mode, to turn the relay on/off.

Relay image


I'm using physical pin 12, wPi 1, BCM 18, depending on your preference. Even though voltage is set to 0 (LOW), the relay is still receiving a signal.

$ gpio readall

+-----+-----+---------+------+---+---Pi 3+--+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | OUT | 0 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 0 | OUT | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | OUT | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | OUT | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 3+--+---+------+---------+-----+-----+

What I've tried

  • Adding various resistors in between the GPIO pin and the relay, to reduce the voltage
  • Tried physical pin 8 and 12; both exhibited the same behavior
  • Added a diode to prevent voltage from being sent from the relay board to the Raspberry Pi. It still worked as above, but didn't fix the issue.
  • Connecting it to 3v3 power instead of 5v (same behavior)
  • 1
    Without detail of the mystery "relay board" who knows? Many (poorly designed) Arduino boards don't work with the Pi. – Milliways Nov 18 '18 at 3:41
  • 1
    I'd guess the relay is Active Low because both 0v and 3.3v are not 5v (in my experience, 3v3 sometimes "behaves" like HIGH, and sometimes LOW on a 5v relay - depending on a bunch of factors) - the only flaw to my assumption is that setting the GPIO as input turns the relay off (if it's active LOW as I suspect, then the relay would turn off when the input is "HIGH") – Jaromanda X Nov 18 '18 at 22:45
  • When I toggle the GPIO pin between HIGH / LOW .... how do you know that is what happens? .... the output may already be LOW – jsotola Nov 19 '18 at 3:09
  • @goldilocks no, I meant input to the relay – Jaromanda X Nov 19 '18 at 20:26
3

Without knowing the nature and needs of the mistery relay board is hard to help. Nonetheless I'll try. This are steps that I'd try to solve the problem:

  • Connect led diode trough some resistor and see if that lights up as expected

  • figure out what drives the relay (low or high) signal

  • once established that figure out at what voltage relay triggers

  • for RPi protection I'd use optocoupler triggering for relays

  • Try some other GPIO like 24 or 23 as they don't have alternative functions

  • Thanks, your answer was helpful. It turns out that a low signal actually triggers the relay, not a high signal. I'm still learning. However, the real problem is that 5v was apparently too much for the relay. Connecting it to 3v3 power works just fine. I'm using the gpio toggle 1 command to switch it on and off. It's working perfectly. – Trevor Sullivan Nov 21 '18 at 18:50
0

Even though the relay clearly says it's a 5v relay, it only worked when I connected it to the 3v3 power rail.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.