Python編寫Phidget Relay控制

這幾天收拾的時候發(fā)現(xiàn)了Phidget,這還是上一個案子客戶給的猿妈。型號是1014_2吹菱,記得是當時拿來做壓力測試用的。

過太久都忘了怎么用了彭则,所以再拾遺一下鳍刷。

因為重裝Ubuntu 16.04的系統(tǒng),所以就從頭裝一遍phidget在Linux平臺上的運行環(huán)境俯抖。

可參考Phidget官網(wǎng)输瓜,這里只是大體說一下。

Linux環(huán)境的搭建

安裝libusb的開發(fā)庫

sudo apt-get install libusb-1.0-0-dev

安裝Phidget庫

點擊下載路徑下載Phidget庫芬萍。

解壓后尤揣,依次執(zhí)行:

./configure

make

sudo make install


檢查Phidget庫的安裝

Software:

下載官方提供的示例

解壓后編譯HelloWorld.c

gcc HelloWorld.c -o HelloWorld -lphidget21

運行HelloWorld

jasper@jasper:~/phidget/phidget21-c-examples-2.1.8.20151217$ sudo ./HelloWorld

Opening...

Phidget Simple Playground (plug and unplug devices)

Press Enter to end anytime...

Hello Device Phidget InterfaceKit 0/0/4, Serial Number: 381507

Goodbye Device Phidget InterfaceKit 0/0/4, Serial Number: 381507

Closing...

正常情況下,伴隨著phidget設備的插入/拔出柬祠,能對應的看到Hello/Goodbye的信息芹缔。

Hardware:

使用kernal log查看插入/拔出信息:

插入:

jasper@jasper:~$ dmesg | tail

.......

[17239.182460] usb 2-1.4: new low-speed USB device number 13 using ehci-pci

.......

拔出:

jasper@jasper:~$ dmesg | tail

......

[17262.852520] usb 2-1.4: USB disconnect, device number 13

......

正常情況下插入時用到ehci-pci的device number會在拔出時disconnect掉。


Phidget的python套件安裝

下載并解壓phidget的python套件

jasper@jasper:~/phidget/PhidgetsPython$ sudo python setup.py install

可以下載官方示例驗證瓶盛。

至此最欠,Phidget在Linux平臺上的Python環(huán)境就安裝好了示罗。


Phidget的使用步驟

Python API可參考官方API文檔

Step 4:設備的初始化和打開

self.device = InterfaceKit()

self.device.openPhidget()

Step 4:等待phidget設備的接入

self.device.waitForAttach(10000)

Step 4:對設備的操作

self.device.setOutputState(output,1)

Step 4:設備的關閉

self.device.closePhidget()


實際操作

手頭材料

phidget板: 型號是1014_2(實際上就是4個relay),能做的無非就是當作開關控制線路。

小米電風扇: 小米官網(wǎng)可購芝硬,19塊好像蚜点。

USB線: 延長線更好,能省去不少麻煩拌阴。

Micro USB線: 10年以后的Phidget 1014_2采用了Micro USB連接绍绘。

實操

因為只是為了控制電風扇的開關,所以USB的四條線我們只用電源正級和接地就好迟赃,因為用不到數(shù)據(jù)部分陪拘,所以D+/D-就不用管了。

將USB小的那頭剪去,并扯出紅線和黑線。將紅線剪下一半腰埂。然后按照下圖連接Phidget和風扇就好畔乙。這里在連風扇的USB時很麻煩,有延長線的話就簡單多了,但是我這里就一條,舍不得浪費….接風扇的時候連USB長的那兩條即可,中間那兩個是數(shù)據(jù)傳輸用的喇辽。

連接方法

連好后的總體效果如圖:

最后效果圖

控制代碼如下:

import time

from Phidgets.PhidgetException import *

from Phidgets.Devices.InterfaceKit import *

class TestPhidget(object):

? ? def __init__(self):

? ? ? ? pass

? ? def __enter__(self):

? ? ? ? try:

? ? ? ? ? ? self.device = InterfaceKit()

? ? ? ? ? ? self.device.openPhidget()

? ? ? ? ? ? self.device.waitForAttach(10000)

? ? ? ? ? ? returnself

? ? ? ? exceptPhidgetException, e:

? ? ? ? ? ? exit(1)

? ? def relayOn(self, output):

? ? ? ? self.device.setOutputState(output,1)

? ? ? ? time.sleep(1)

? ? def relayOff(self, output):

? ? ? ? self.device.setOutputState(output,0)

? ? ? ? time.sleep(1)

? ? def __exit__(self, e_t, e_v, t_b):

? ? ? ? try:

? ? ? ? ? ? self.device.closePhidget()

? ? ? ? exceptPhidgetException, e:

? ? ? ? ? ? exit(1)

? ? def test():

? ? ? ? import optparse

? ? ? ? parser = optparse.OptionParser()

? ? ? ? parser.add_option("-n",

? ? ? ? ? ? dest ="counts",

? ? ? ? ? ? action ="store",

? ? ? ? ? ? help ="Number of test counts"

? ? ? ? )

? ? ? ? (options, args) = parser.parse_args()

? ? ? ? counts = int(options.counts)

? ? ? ? with TestPhidget() as testphidget:

? ? ? ? ? ? time.sleep(1)

? ? ? ? ? ? foriinrange(0, counts):

? ? ? ? ? ? testphidget.relayOff(3)

? ? ? ? ? ? time.sleep(7)

? ? ? ? ? ? testphidget.relayOn(3)

? ? ? ? ? ? time.sleep(5)

if __name__ == '__main__':

? ? test()

這些統(tǒng)統(tǒng)可以在官方API文檔里找得到。

效果就是控制風扇的開關雨席。僅此而已(好無聊@@)

結語

想了解更多Phidget的信息可以查看官方網(wǎng)址菩咨。

想要了解1014_2原理的可以參考這里,只要你學過高中物理,我覺得理解應該沒有問題陡厘。

更多請參考4coding

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末旦委,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子雏亚,更是在濱河造成了極大的恐慌缨硝,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罢低,死亡現(xiàn)場離奇詭異查辩,居然都是意外死亡,警方通過查閱死者的電腦和手機网持,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門宜岛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人功舀,你說我怎么就攤上這事萍倡。” “怎么了辟汰?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵列敲,是天一觀的道長阱佛。 經常有香客問我,道長戴而,這世上最難降的妖魔是什么凑术? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮所意,結果婚禮上淮逊,老公的妹妹穿的比我還像新娘。我一直安慰自己扶踊,他們只是感情好泄鹏,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著秧耗,像睡著了一般备籽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绣版,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音歼疮,去河邊找鬼杂抽。 笑死,一個胖子當著我的面吹牛韩脏,可吹牛的內容都是我干的缩麸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赡矢,長吁一口氣:“原來是場噩夢啊……” “哼杭朱!你這毒婦竟也來了?” 一聲冷哼從身側響起吹散,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤弧械,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后空民,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刃唐,經...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年界轩,在試婚紗的時候發(fā)現(xiàn)自己被綠了画饥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡浊猾,死狀恐怖抖甘,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情葫慎,我是刑警寧澤衔彻,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布薇宠,位于F島的核電站,受9級特大地震影響米奸,放射性物質發(fā)生泄漏昼接。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一悴晰、第九天 我趴在偏房一處隱蔽的房頂上張望慢睡。 院中可真熱鬧,春花似錦铡溪、人聲如沸漂辐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽髓涯。三九已至,卻和暖如春哈扮,著一層夾襖步出監(jiān)牢的瞬間纬纪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工滑肉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留包各,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓靶庙,卻偏偏與公主長得像问畅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子六荒,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內容