3

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)
6
  • 1
    Without detail of the mystery "relay board" who knows? Many (poorly designed) Arduino boards don't work with the Pi.
    – Milliways
    Commented Nov 18, 2018 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") Commented Nov 18, 2018 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
    Commented Nov 19, 2018 at 3:09
  • @goldilocks no, I meant input to the relay Commented Nov 19, 2018 at 20:26

2 Answers 2

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

1
  • 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. Commented Nov 21, 2018 at 18:50
1

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 and acknowledge you have read our privacy policy.

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