I very luckily got landed with a:
I wired the Tripwire sensor to the Phidget board as described in the wiring diagram and as shown in the video:
I connected the USB cable from the Phidgets Board to the USB port on a Raspberry Pi 3 and proceeded to compile the Phidget libraries on the Pi (info):
sudo apt-get install libusb-1.0-0-dev wget http://www.phidgets.com/downloads/libraries/libphidget.tar.gz tar xzf libphidget.tar.gz cd libphidget-2.1.8.20151217 ./configure make sudo make install
I then tested some C code examples:
wget http://www.phidgets.com/downloads/examples/phidget21-c-examples.tar.gz tar xzf phidget21-c-examples.tar.gz cd phidget21-c-examples-2.1.8.20151217 gcc HelloWorld.c -o HelloWorld -lphidget21 sudo ./HelloWorld
That successfully showed the Phidgets Board serial number so I moved on to the Python libraries:
wget http://www.phidgets.com/downloads/libraries/PhidgetsPython.zip unzip PhidgetsPython.zip cd PhidgetsPython sudo python setup.py install
With the python libraries installed I downloaded and tested a sample Python script:
wget http://www.phidgets.com/downloads/examples/Python.zip unzip Python.zip cd Python sudo python HelloWorld.py
sudo python InterfaceKit-simple.py
This showed details of the Phidget Board including sensors connected to the Input/Output pins. When I activated and tripped the tripwire I could see the True/False outputs as follows:
Next I amended the InterfaceKit-simple.py script to print out a message when the sensor was tripped and to play a sound file. This could obviously be improved but is a starting point for what we are aiming to do.
#!/usr/bin/env python """Copyright 2010 Phidgets Inc. This work is licensed under the Creative Commons Attribution 2.5 Canada License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.5/ca/ """ __author__ = 'Adam Stelmack' __version__ = '2.1.8' __date__ = 'May 17 2010' #Basic imports from ctypes import * import sys import random import pygame #Phidget specific imports from Phidgets.PhidgetException import PhidgetErrorCodes, PhidgetException from Phidgets.Events.Events import AttachEventArgs, DetachEventArgs, ErrorEventArgs, InputChangeEventArgs, OutputChangeEventArgs, SensorChangeEventArgs from Phidgets.Devices.InterfaceKit import InterfaceKit from Phidgets.Phidget import PhidgetLogLevel #Create an interfacekit object try: interfaceKit = InterfaceKit() except RuntimeError as e: print("Runtime Exception: %s" % e.details) print("Exiting....") exit(1) #Information Display Function def displayDeviceInfo(): print("|------------|----------------------------------|--------------|------------|") print("|- Attached -|- Type -|- Serial No. -|- Version -|") print("|------------|----------------------------------|--------------|------------|") print("|- %8s -|- %30s -|- %10d -|- %8d -|" % (interfaceKit.isAttached(), interfaceKit.getDeviceName(), interfaceKit.getSerialNum(), interfaceKit.getDeviceVersion())) print("|------------|----------------------------------|--------------|------------|") print("Number of Digital Inputs: %i" % (interfaceKit.getInputCount())) print("Number of Digital Outputs: %i" % (interfaceKit.getOutputCount())) print("Number of Sensor Inputs: %i" % (interfaceKit.getSensorCount())) #Event Handler Callback Functions def interfaceKitAttached(e): attached = e.device print("InterfaceKit %i Attached!" % (attached.getSerialNum())) def interfaceKitDetached(e): detached = e.device print("InterfaceKit %i Detached!" % (detached.getSerialNum())) def interfaceKitError(e): try: source = e.device print("InterfaceKit %i: Phidget Error %i: %s" % (source.getSerialNum(), e.eCode, e.description)) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) def interfaceKitInputChanged(e): source = e.device print("InterfaceKit %i: Input %i: %s" % (source.getSerialNum(), e.index, e.state)) if e.index == 3 and e.state == True: print(" ----- TRIPPED ----- ") # Prepare the sound file pygame.mixer.init() pygame.mixer.music.load("fart.wav") pygame.mixer.music.play() def interfaceKitSensorChanged(e): source = e.device print("InterfaceKit %i: Sensor %i: %i" % (source.getSerialNum(), e.index, e.value)) def interfaceKitOutputChanged(e): source = e.device print("InterfaceKit %i: Output %i: %s" % (source.getSerialNum(), e.index, e.state)) #Main Program Code try: #logging example, uncomment to generate a log file #interfaceKit.enableLogging(PhidgetLogLevel.PHIDGET_LOG_VERBOSE, "phidgetlog.log") interfaceKit.setOnAttachHandler(interfaceKitAttached) # interfaceKit.setOnDetachHandler(interfaceKitDetached) interfaceKit.setOnErrorhandler(interfaceKitError) interfaceKit.setOnInputChangeHandler(interfaceKitInputChanged) interfaceKit.setOnOutputChangeHandler(interfaceKitOutputChanged) interfaceKit.setOnSensorChangeHandler(interfaceKitSensorChanged) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Opening phidget object....") try: interfaceKit.openPhidget() except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Waiting for attach....") try: interfaceKit.waitForAttach(10000) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) try: interfaceKit.closePhidget() except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Exiting....") exit(1) else: # displayDeviceInfo() print("Would normally display device ino but not today ") print("Setting the data rate for tripwire sensor 3 to 4ms....") try: interfaceKit.setDataRate(3, 4) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) #print("Setting the data rate for each sensor index to 4ms....") #for i in range(interfaceKit.getSensorCount()): # try: # # interfaceKit.setDataRate(i, 4) # except PhidgetException as e: # print("Phidget Exception %i: %s" % (e.code, e.details)) print("Press Enter to quit....") chr = sys.stdin.read(1) print("Closing...") try: interfaceKit.closePhidget() except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Done.") exit(0)