PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Supporting 2.6 and up
testpresta2
Phidgetsian
Posts: 13
Joined: Fri Jan 19, 2018 2:16 pm
Contact:

PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby testpresta2 » Sat Jan 20, 2018 2:14 am

Hello,

I want to connect a PhidgetInterfaceKit 0/0/4 (4 relays) via USB to a raspberry pi3.

I want to drive the 4 relays with a python program.

Here is what i've done:

$ wget http://www.phidgets.com/downloads/libra ... Python.zip
(I've unzip and changed directory)
$ sudo python setup.py install
At this point, everything is okay, i have no error message.

Here is my very basic python program:

Code: Select all

from Phidget22.Devices.DigitalOutput import *
from Phidget22.Phidget import *

ch = DigitalOutput()
ch.openWaitForAttachment(5000)
ch.close()


I get this error:

Code: Select all

Traceback (most recent call last):
  File "test3.py", line 4, in <module>
    ch = DigitalOutput()
  File "/usr/local/lib/python2.7/dist-packages/Phidget22/Devices/DigitalOutput.py", line 28, in __init__
    __func = PhidgetSupport.getDll().PhidgetDigitalOutput_create
  File "/usr/local/lib/python2.7/dist-packages/Phidget22/PhidgetSupport.py", line 17, in getDll
    PhidgetSupport.__dll = cdll.LoadLibrary("libphidget22.so.0.0.0")
  File "/usr/lib/python2.7/ctypes/__init__.py", line 440, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 362, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libphidget22.so.0.0.0: cannot open shared object file: No such file or directory
Exception OSError: OSError('libphidget22.so.0.0.0: cannot open shared object file: No such file or directory',) in <bound method DigitalOutput.__del__ of <Phidget22.Devices.DigitalOutput.DigitalOutput instance at 0x76bb3f08>> ignored


Maybe this is because libphidget22 is not designed for ARM architecture ? I've read some tutorials about phidget and raspberry pi

I have successfully compiled and installed this library on my raspberry
http://www.phidgets.com/downloads/libra ... get.tar.gz

But this library contains a different version: libphidget21.so

So i do not know what to do.

Thanks

LucasP
Phidgetly
Posts: 17
Joined: Fri Oct 07, 2016 4:47 pm
Contact:

Re: PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby LucasP » Sat Jan 20, 2018 11:52 am

You should follow the Getting Started section on Linux OS Page:
https://www.phidgets.com/docs/OS_-_Linux#Getting_Started_with_Linux

After you have the libraries installed correctly, you should then follow the Linux section on the Python page:
https://www.phidgets.com/docs/Language_-_Python#Linux

testpresta2
Phidgetsian
Posts: 13
Joined: Fri Jan 19, 2018 2:16 pm
Contact:

Re: PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby testpresta2 » Sat Jan 20, 2018 1:29 pm

Thanks it seems to work

Just one more question: This line can set on/off a relay but is there a way to read the current state of a relay ?

Code: Select all

ch.setState(1)  # ON
ch.setState(0)  # OFF



Thanks

LucasP
Phidgetly
Posts: 17
Joined: Fri Oct 07, 2016 4:47 pm
Contact:

Re: PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby LucasP » Sat Jan 20, 2018 4:49 pm

There is a getState method available. Navigate to the API tab on the product page (link below) and select Python from the drop-down list for all available methods and descriptions.

https://www.phidgets.com/?tier=3&catid=46&pcid=39&prodid=1020

testpresta2
Phidgetsian
Posts: 13
Joined: Fri Jan 19, 2018 2:16 pm
Contact:

Re: PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby testpresta2 » Sun Jan 21, 2018 3:31 am

Thanks but there is no full example for 4 relay board.

How can i select the relay from the 4 ?

Can i create 4 digitaloutput at the same time this way: ?

Code: Select all

from Phidget22.Devices.DigitalOutput import *
from Phidget22.Phidget import *

# relay 0
ch0 = DigitalOutput()
ch0.openWaitForAttachment(5000)
ch0.setChannel(0)

# relay 1
ch1 = DigitalOutput()
ch1.openWaitForAttachment(5000)
ch1.setChannel(0)

# relay 2
ch2 = DigitalOutput()
ch2.openWaitForAttachment(5000)
ch2.setChannel(0)

# relay 3
ch3 = DigitalOutput()
ch3.openWaitForAttachment(5000)
ch3.setChannel(0)

# Some stuff
ch0.getState()

ch0.setState(1)
ch1.setState(1)
ch2.setState(0)
ch3.setState(0)

time.sleep(1)

ch0.setState(0)
ch1.setState(0)
ch2.setState(1)
ch3.setState(1)

# clean up
ch0.close()
ch1.close()
ch2.close()
ch3.close()



I have not buy the board. I will do it next week but i need to know before if this code is correct and if it will work on raspebrry pi3

Thanks

LucasP
Phidgetly
Posts: 17
Joined: Fri Oct 07, 2016 4:47 pm
Contact:

Re: PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby LucasP » Sun Jan 21, 2018 1:58 pm

Under the API tab there is a Software Objects section that will tell you the API to use, and the channels associated with it.

Screen Shot 2018-01-21 at 1.04.04 PM.png


Your code should then look like this:

Code: Select all

...
# relay 0
ch0 = DigitalOutput()
ch0.setChannel(0)
ch0.openWaitForAttachment(5000)

# relay 1
ch1 = DigitalOutput()
ch1.setChannel(1)
ch1.openWaitForAttachment(5000)
...


Note that I am setting the channel before opening. For more information on addressing/channel matching try this page:
https://www.phidgets.com/docs/Phidget_Programming_Basics#Channel_Matching

testpresta2
Phidgetsian
Posts: 13
Joined: Fri Jan 19, 2018 2:16 pm
Contact:

Re: PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby testpresta2 » Mon Jan 22, 2018 12:58 am

Thanks but the sample you told me does not show a multi relay case.
So i want to be sure it will work...

LucasP
Phidgetly
Posts: 17
Joined: Fri Oct 07, 2016 4:47 pm
Contact:

Re: PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby LucasP » Mon Jan 22, 2018 10:42 am

The code sample you provided for the multiple relays was correct, you just need to make the modification I suggested in my previous comment.

testpresta2
Phidgetsian
Posts: 13
Joined: Fri Jan 19, 2018 2:16 pm
Contact:

Re: PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby testpresta2 » Wed Jan 31, 2018 6:07 am

I have received my relay boards.

I have tried this code.

When i try to set state to 1 of relay 3 (channel3), the relay 0 (channel0) goes from 1 to 0 whereas i do not touch anything on channel0.

Please note i am maybe changing value too fast. Does the setState method async ? I mean if setState returns something, does it mean the operation is done ?

Any idea ?

Thanks

LucasP
Phidgetly
Posts: 17
Joined: Fri Oct 07, 2016 4:47 pm
Contact:

Re: PhidgetInterfaceKit 0/0/4 USB on raspberry pi3 - Python

Postby LucasP » Wed Jan 31, 2018 10:40 am

There are both synchronous and asynchronous versions of setState available, check the API for more information.

If you are setting the state of one channel and another is responding, make sure your channel matching/addressing is correct. Also note that when a channel is closed, it will reset. There is a forum post that describes this: (viewtopic.php?f=7&t=8471)


Return to “Linux”

Who is online

Users browsing this forum: No registered users and 0 guests