Relay not working with Raspberry


#1

Hello! I have installed GrovePi on Raspberry Pi B. Everything is installed and detection of GrovePi works exactly as in instructions. I have Relay connected to Digital 4 and this program produces no results:

import time
import grovepi

relay = 4
grovepi.pinMode(relay,“OUTPUT”)
print(“Relay ON…”)
grovepi.digitalWrite(relay,1)
time.sleep(0.5)
print(“Relay OFF…”)
grovepi.digitalWrite(relay,0)
time.sleep(0.5)

Should relay have clicking sound and LED on when circuit switches? I heas nothing and circuit is not closed of course, I measured that.

Jan


#2

Which sensor are you using? Can you provide a link?


#3

Hello John, it is this relay: http://www.seeedstudio.com/wiki/Grove_-_Relay

I have modified the code so it does not include button sensor which I do not have. Does not seem to work…

Jan


#4

Hey Jan, you might have a defective relay. You might try running the code in a loop though:

import time
import grovepi


relay = 4
grovepi.pinMode(relay,”OUTPUT”)
while True:
   print(“Relay ON…”)
   grovepi.digitalWrite(relay,1)
   time.sleep(0.5)
   print(“Relay OFF…”)
   grovepi.digitalWrite(relay,0)
   time.sleep(0.5)

#5

Thanks. I will try. Should the relay click or blink?


#6

I think it has a clicking sound when it goes back and forth. Best way though to check is to use a multimeter and read resistance across the screw terminals: that should change as you cycle the switch.


#7

Just to be sure, we’re taling about using this sensor, right? http://www.seeedstudio.com/depot/Grove-Relay-p-769.html?cPath=39_42


#8

Hello Yes, it is the sensor (relay). I tried your script and also digital port 3 and nothing happenned. I have ordered another one from seeedstudio. It is not worth paying for postage to send it back :slight_smile:


#9

Agreed. Might be worth trying another sensor. I think the LED should indeed be turning on and you should at least hear a clicking sound.


#10

I am having the same issue with a Raspberry Pi 2, and GrovePi+. I am just wondering whether the relay is driven by the voltage from the SIG pin, it is less than 2 volts when turned on? As the relay would only work with min voltage of 3.3v, correct?


#11

Hey seatkiwitle,
The relay is driven by the sig pin on the GrovePi ports. The sig pin can be 0-5V depending on the state set by the program. Can you post a picture of your setup along with the program. Can you follow the instructions here and run the troubleshooting script for the GrovePi and upload log here: https://www.youtube.com/watch?v=ZMadpIEYq5o.

Also, do you have a Grove LED which you can use to test the port instead of the relay. Logically it is the same as the relay.

-Karan


#12

Hi Karan

Thanks for your prompt attention. Sorry for the late reply. Attached is a photo of the configuration I have. I have also tried different digital port. All work with the Grove LED, but only light up the led on the Grove Relay. The sig pin is always below 2V. The program I am using is a Windows IoT Core Application using the GrovePi api and a single line for turn the relay on.

DeviceFactory.Build.GrovePi().DigitalWrite(Pin.DigitalPin3),1);

The log from the test is as follow

Check space left

Filesystem Size Used Avail Use% Mounted on
/dev/root 3.6G 2.7G 724M 79% /
devtmpfs 427M 0 427M 0% /dev
tmpfs 432M 0 432M 0% /dev/shm
tmpfs 432M 6.1M 425M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 432M 0 432M 0% /sys/fs/cgroup
/dev/mmcblk0p1 60M 21M 40M 35% /boot
tmpfs 87M 4.0K 87M 1% /run/user/1000

Check for dependencies

python 2.7.9-1 install ok installed
python-pip 1.5.6-5 install ok installed
git 1:2.1.4-2.1+deb8u2 install ok installed
libi2c-dev 3.1.1+svn-2 install ok installed
python-serial 2.6-1.1 install ok installed
python-rpi.gpio 0.6.2~jessie-1 install ok installed
i2c-tools 3.1.1+svn-2 install ok installed
python-smbus 3.1.1+svn-2 install ok installed
arduino 2:1.0.5+dfsg2-4 install ok installed
minicom 2.7-1 install ok installed
scratch 1.4.0.6~dfsg1-5 install ok installed

wiringPi Found
wiringPi Found
I2C already removed from blacklist
SPI already removed from blacklist

Check for addition in /modules

I2C-dev already there
i2c-bcm2708 already there
spi-dev already there

Hardware revision

gpio version: 2.32
Copyright © 2012-2015 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
Type: Pi 2, Revision: 01, Memory: 1024MB, Maker: Embest

  • Device tree is enabled.
  • This Raspberry Pi supports user-level GPIO access.
    -> See the man-page for more details
    -> ie. export WIRINGPI_GPIOMEM=1

Check the /dev folder

i2c-1
spidev0.0
spidev0.1
ttyAMA0

USB device status

Bus 001 Device 004: ID 045e:07b2 Microsoft Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
|__ Port 5: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 5: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 5: Dev 4, If 2, Class=Human Interface Device, Driver=usbhid, 12M
Raspbian for Robots Version

V 6.9

This version of Raspbian was modified by Dexter Industries on the Jessie Raspbian Build.
This version was updated on 2016.03.20

Hostname

dex

Checking for Atmega chip

avrdude: Version 5.10, compiled on Jun 18 2012 at 12:38:29
Copyright © 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright © 2007-2009 Joerg Wunsch

     System wide configuration file is "/etc/avrdude.conf"
     User configuration file is "/root/.avrduderc"
     User configuration file does not exist or is not a regular file, skipping

     Using Port                    : unknown
     Using Programmer              : gpio
     AVR Part                      : ATMEGA328P
     Chip Erase delay              : 9000 us
     PAGEL                         : PD7
     BS2                           : PC2
     RESET disposition             : dedicated
     RETRY pulse                   : SCK
     serial program mode           : yes
     parallel program mode         : yes
     Timeout                       : 200
     StabDelay                     : 100
     CmdexeDelay                   : 25
     SyncLoops                     : 32
     ByteDelay                     : 0
     PollIndex                     : 3
     PollValue                     : 0x53
     Memory Detail                 :

                              Block Poll               Page                       Polled
       Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
       ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
       eeprom        65     5     4    0 no       1024    4      0  3600  3600 0xff 0xff
       flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
       lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
       hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
       efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
       lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
       calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
       signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

     Programmer Type : GPIO
     Description     : Use sysfs interface to bitbang GPIO lines

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f

avrdude done. Thank you.

Checking I2C bus for devices

Checking I2C bus 0

Error: Could not open file /dev/i2c-0’ or/dev/i2c/0’: No such file or directory

Checking I2C bus 1

 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f

00: – 04 – -- – -- – -- – -- – -- –
10: – -- – -- – -- – -- – -- – -- – -- – --
20: – -- – -- – -- – -- – -- – -- – -- – --
30: – -- – -- – -- – -- – -- – -- – -- – --
40: – -- – -- – -- – -- – -- – -- – -- – --
50: – -- – -- – -- – -- – -- – -- – -- – --
60: – -- – -- – -- – -- – -- – -- – -- – --
70: – -- – -- – -- – --

Checking for firmware version

GrovePi has firmware version: 255.255.255


#13

Here is the image of the setup


#14

Hey seatkiwitle,
The logs and the image do not show any problem. Can you try out the python examples here: https://github.com/DexterInd/GrovePi/blob/master/Software/Python/grove_led_blink.py and see if the voltage goes above 2V. Are you measuring the voltage with the relay disconnected or with the relay connected.

-Karan


#15

Hi Karan

I tried it with one of the samples in Raspbian and it worked with a SIG voltage of 4.85v. So it looks like the issue lies in either Windows 10 IoT Core or the GrovePi api.

James


#16

Hi Karan

It looks like the issue lies in the GrovePi api. I’d tried a different way of turning the relay on and it worked.

DeviceFactory.Build.Relay(Pin.DigitalPin7).ChangeState(GrovePi.Sensors.SensorStatus.On); //This set the SIG pin on D7 to 4.85V

DeviceFactory.Build.GrovePi().DigitalWrite(Pin.DigitalPin7, 1); //This set the SIG pin on D7 to less than 2V

The two calls should be equivalent, right?!

James


#17

Hey James,
Can you send me a link the code that you were trying. I’ll have a look. Did you try setting pinMode as output before turning the pin on/off.

-Karan


#18

Hey seatkiwitle, so you’re using WinIoT? I’ll have to dig a little into the API, I was just working on this a few weeks ago. Did you try out the example/sample we have for the relay here: https://github.com/DexterInd/GrovePi/tree/master/Software/CSharp/Samples/Example-Relay

We’re using the call
relay.ChangeState(SensorStatus.On);
Which is essentially the same as the first call you’ve got there.


#19

Yes, I did use the relay example. That’s how I found out

DeviceFactory.Build.Relay(Pin.DigitalPin7).ChangeState(GrovePi.Sensors.SensorStatus.On); //This set the SIG pin on D7 to 4.85V

works as expected and

DeviceFactory.Build.GrovePi().DigitalWrite(Pin.DigitalPin7, 1); //This set the SIG pin on D7 to less than 2V

does not work. Both should be equivalent, right?!

James


#20

Hey James, I’m stumped why the second option doesn’t work. I’ll have to try a few things. But in the mean time is your project working with the first line of code?