電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用您的Raspberry Pi控制多達65280個繼電器

使用您的Raspberry Pi控制多達65280個繼電器

2022-11-09 | zip | 2.77 MB | 次下載 | 2積分

資料介紹

描述

使用IO 擴展器繼電器擴展器可控制多達 65,280 個繼電器。

需要在您的項目中添加大量繼電器嗎?然后您需要帶有繼電器擴展器的 IO 擴展器。每個 IO 擴展器最多可以控制 16 個菊花鏈繼電器擴展器,總共 256 個繼電器。然后將 255 個 IO 擴展器連接在一起,您可以選擇性地控制多達 65,280 個繼電器。

帶有單個 IO 擴展器的控制繼電器。

pYYBAGNofrSAZc_2AA7Ayl1mZyk451.jpg
控制 64 個繼電器

功能列表

  • 使用價格低于 15 美元的 Arduino 16 繼電器板。
  • 易于使用的繼電器控制命令。
  • 一次控制一個單獨的繼電器或一個組。
  • 無需驅(qū)動程序。節(jié)省代碼空間。
  • 沒有數(shù)據(jù)空間來維持中繼狀態(tài)。
  • 不需要額外的電源。

構(gòu)建中繼庫所需的零件

接線圖

poYBAGNofrmAS21UAAfoIAQM4mQ152.jpg
64 個繼電器的接線
?

注意:在上面的接線圖中,IO 擴展器由第一個繼電器板供電所有繼電器擴展器都由它們連接的繼電器板供電。

#!/usr/bin/env python
import ioexpander
import time

ioexpander.ser.flushInput()
ioexpander.SerialCmdDone(b'eb4')

relay = 1

while 1:
  cmd = b'e' + bytes(str(relay),'raw_unicode_escape') + b'f'  
    ioexpander.SerialCmdDone(cmd)
    relay += 1
  if relay > 64:
        relay = 1
  cmd = b'e' + bytes(str(relay),'raw_unicode_escape') + b'o'
    ioexpander.SerialCmdDone(cmd)
 
  time.sleep(0.1)

多個 IO 擴展器控制繼電器

另一種控制繼電器的方法是使用多個 IO 擴展器。這使我們能夠?qū)?a target='_blank' class='arckwlink_none'>傳感器和繼電器分配到中央網(wǎng)絡(luò)或星形網(wǎng)絡(luò),但仍將所有 IO 擴展器互連到單個串行總線上。如果您必須將 IO 擴展器分離到 4000 英尺,則使用如下所示的IO 擴展器和標準藍色 Cat5 網(wǎng)絡(luò)線。

pYYBAGNofsGAClabABCEEAqTGOU082.jpg
使用 IO 擴展器的 64 個繼電器

接線圖

poYBAGNofsaAJ3FpAAizYDHMAJM599.jpg
使用多個 IO 擴展器為繼電器接線
?

注意:在上面的接線圖中,所有的 IO 擴展器都由第一個繼電器板通過串行總線供電。所有繼電器擴展器都由它們連接的繼電器板供電。

#!/usr/bin/env python
import ioexpander9bit
import time

MAX_BOARDS = 4

ioexpander9bit.ser.flushInput()

# set IO Expander to 9-bit
ioexpander9bit.ser.write(b'\0')
# switch to simulated 9-bit mode using SPACE and MARK parity
ioexpander9bit.SerialSPACEParity()

for board in range(1, MAX_BOARDS+1):
    ioexpander9bit.SerialCmdDone(board, b'eb1')

board = 1
relay = 1

while 1:
  cmd = b'e' + bytes(str(relay),'raw_unicode_escape') + b'f'  
    ioexpander9bit.SerialCmdDone(board, cmd)
    relay += 1
  if relay > 16:
        relay = 1
        board += 1
  if board > MAX_BOARDS:
            board = 1
  cmd = b'e' + bytes(str(relay),'raw_unicode_escape') + b'o'
    ioexpander9bit.SerialCmdDone(board, cmd)
 
  time.sleep(0.1)

樹莓派 9 位

Raspberry Pi 不支持 9 位,因此我們必須使用 8 位標記和空間奇偶校驗。唯一的問題是 Raspbian 操作系統(tǒng)也不支持標記和空間奇偶校驗,因此對于使用BCM2711 (pg.186)的 Pi4,我們將不得不使用一些未記錄的代碼并使用由位 7 選擇的所謂的棒奇偶校驗(SPS) 在 LCRH 寄存器中。

pYYBAGNofsqAY8x9AAAqEGSfo5U017.png
樹莓派奇偶校驗表
?

默認情況下,頭針 14 和 15 上的主串行端口使用不支持任何奇偶校驗位的 UART1 (MiniUART/ttyS0)。我們將不得不切換引腳以使用不同的 UART0 (ttyAMA0) 作為主串行端口。

為此,將以下行添加到 /boot/config.txt 文件中。

enable_uart=1
dtoverlay=disable-bt

同樣在控制臺上運行以下命令,以斷開藍牙與 UART0 的連接。

pi@raspberrypi:~ $ sudo systemctl disable hciuart

用于設(shè)置 MARK 或 SPACE 奇偶校驗的 Python 代碼。

import serial
import termios

ser = serial.Serial(
    port='/dev/serial0',
    baudrate=115200,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=5
  )

# extra termios flags
CMSPAR = 0x40000000  # Use "stick" (mark/space) parity

# select SPACE parity to clear the address bit
def SerialSPACEParity():
    iflag,oflag,cflag,lflag,ispeed,ospeed,cc = termios.tcgetattr(ser)
    cflag |= termios.PARENB | CMSPAR
    cflag &= ~termios.PARODD
  termios.tcsetattr(ser, termios.TCSANOW, [iflag, oflag, cflag, lflag, ispeed, ospeed, cc])

# select MARK parity to set the address bit
def SerialMARKParity():
    iflag,oflag,cflag,lflag,ispeed,ospeed,cc = termios.tcgetattr(ser)
    cflag |= termios.PARENB | CMSPAR | termios.PARODD
  termios.tcsetattr(ser, termios.TCSANOW, [iflag,oflag,cflag,lflag,ispeed,ospeed,cc])  

# select the IO Expander board by setting the 9th or address bit
def SerialWriteBoard(board):
  if board is not None and board > 0:
        SerialMARKParity()  
        ser.write(bytes(chr(board),'raw_unicode_escape'))
        SerialSPACEParity()

那么為什么我需要控制這么多繼電器呢?

一種這樣的應用是在 Aquaponics 或 Hydroponics 中。許多傳感器和設(shè)備需要自動化到每個種植床或單個植物。這需要極端的 IO,而 IO 擴展器可以提供。

因此,立即獲取您的 IO 擴展器并構(gòu)建您的系統(tǒng)!


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費