日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

继电器Relay:ZZR08

發布時間:2023/12/19 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 继电器Relay:ZZR08 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

繼電器常識:

繼電器有三個接線柱:常開(NO),常閉(NC),接地(C)

如果連接的時間長,偶爾需要斷電, 那么接NC 和 C, 這樣繼電器set on 時為斷電。除此之外,繼電器還可以控制按鍵,以及長按。

繼電器接通時,該繼電器的燈會亮。ZZR08有8個繼電器,以一個字節表示其整體狀態,以每位的位高(bit high)代表對應繼電器的狀態。例如:第一個繼電器set on 時為00000001,set off 時該位為0;第二個set on 時為00000010(2), set off 時該位為0。以此類推.

怎樣使用繼電器:

1. Command “ls /dev/tty*”, you can find like this
/dev/ttyRelayCard

在接入繼電器之前運行“ls /dev/tty*”, 接入之后再運行一次,多出來的就是繼電器的標識。

2.Check the file /etc/udev/rules.d/ACS.rules. In this file, there have a code like

this:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",
SYMLINK+="ttyRelayCard", MODE="0666", OWNER="buildbot"

If there don’t have this code, please add it by manual. And then re-plugin the

relay card’s USB cable.

查看是否存在/etc/udev/rules.d/ACS.rules,如果不存在,則建立文件:touch ACS.rules,文件內容如上。

3. 查看權限:ls -l/dev/ttyRelayCard, 結果crw-rw---- 1 rootdialout.

可以更改繼電器權限:chmod a+rw/dev/ttyRelayCard. 這樣壞處是,每次插拔繼電器都要更改。

繼電器的user是root, group是dialout??梢允巩斍坝脩魪膶儆赿ialout用戶組。查看user的用戶組:groups user。更改user的附屬用戶組list: sudo usermod -G dialout,adm,...

4. python script

import serial
import sys, time
'''
ser = serial.Serial(
port=None,              # number of device, numbering starts at
# zero. if everything fails, the user
# can specify a device string, note
# that this isn't portable anymore
# if no port is specified an unconfigured
# an closed serial port object is created
baudrate=9600,          # baud rate
bytesize=EIGHTBITS,     # number of databits
parity=PARITY_NONE,     # enable parity checking
stopbits=STOPBITS_ONE,  # number of stopbits
timeout=None,           # set a timeout value, None for waiting forever
xonxoff=0,              # enable software flow control
rtscts=0,               # enable RTS/CTS flow control
interCharTimeout=None   # Inter-character timeout, None to disable
)
'''

device = sys.argv[1] # /dev/ttyRelayCard
ser = serial.Serial(device, 19200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_TWO, None)
W = 0.05

def get_version():
    cmd = 90
    print "get the relay software version"
    ser.write(chr(cmd))
    time.sleep(W)
    a = ser.read(1)
    print ord(a)
    b = ser.read(1)
    print ord(b)
    time.sleep(1)

def set_relay_on(i):
    ''' relay No is from 1 to 8'''
    cmd = 100 + i
    print "set relay %d on "%(i)
    ser.write(chr(cmd))
    time.sleep(W)
    ser.write(chr(91)) # get relay states
    a = ser.read(1)
    print ord(a)
    time.sleep(W)

def set_relay_off(i):
    ''' relay No is from 1 to 8'''
    cmd = 110 + i
    print "set relay %d off"%(i)
    ser.write(chr(cmd))
    time.sleep(W)
    ser.write(chr(91))
    a = ser.read(1)
    print ord(a)
    time.sleep(W)
    
set_relay_off(1)
# set_relay_on(1)

newer edition:

import serial
import sys, time
'''
base API of controlling Relay.
'''
class RelayControl(object):
    def __init__(self, relay_id='/dev/ttyACM0', interval=0.05):
        self.relay_id = relay_id
        self.interval = interval
        self.handler = serial.Serial(relay_id, 19200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_TWO, None)

    def get_version(self, cmd=90):
        print "get the relay software version"
        self.handler.write(chr(cmd))
        time.sleep(self.interval)
        a = self.handler.read(1)
        print ord(a)
        b = self.handler.read(1)
        print ord(b)
        time.sleep(1)

    def get_relay_status(self, cmd=91):
        self.handler.write(chr(cmd))
        a = self.handler.read(1)
        print ord(a)
        time.sleep(self.interval)
        return ord(a)

    def set_relay_on(self, relay_no):
        ''' relay No is from 1 to 8'''
        cmd = 100 + relay_no
        print "set relay %d on "%(relay_no)
        self.handler.write(chr(cmd))
        time.sleep(self.interval)
        self.get_relay_status()

    def set_relay_off(self, relay_no):
        ''' relay No is from 1 to 8'''
        cmd = 110 + relay_no
        print "set relay %d off"%(relay_no)
        self.handler.write(chr(cmd))
        time.sleep(self.interval)
        self.get_relay_status()

    def set_all_relay_on(self, cmd=100):
        print "set all relays on "
        self.handler.write(chr(cmd))
        time.sleep(self.interval)
        self.get_relay_status()

    def set_all_relay_on(self, cmd=110):
        print "set all relays off "
        self.handler.write(chr(cmd))
        time.sleep(self.interval)
        self.get_relay_status()

附錄

ZZR08 command Table

Command Action
Character DEC HEX
90 5A Get software version - returns 2 bytes, the first being the module
ID which is 8, followed by the software version
91 5B Get relay states -
sends a single byte back to the controller, bit high
meaning the corresponding relay is powered
92 5C Set relay states -
the next single byte will set all relays states, All on
= 255 (11111111) ,All off = 0
d 100 64 All relays on
e 101 65 Turn relay 1 on
f 102 66 Turn relay 2 on
g 103 67 Turn relay 3 on
h 104 68 Turn relay 4 on
i 105 69 Turn relay 5 on
j 106 6A Turn relay 6 on
k 107 6B Turn relay 7 on
l 108 6C Turn relay 8 on
n 110 6E All relays off
o 111 6F Turn relay 1 off
p 112 70 Turn relay 2 off
q 113 71 Turn relay 3 off
r 114 72 Turn relay 4 off
s 115 73 Turn relay 5 off
t 116 74 Turn relay 6 off
u 117 75 Turn relay 7 off
v 118 76 Turn relay 8 off

總結

以上是生活随笔為你收集整理的继电器Relay:ZZR08的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。