電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuà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)。
  • 不需要額外的電源。

構建中繼庫所需的零件

接線圖

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)絡或星形網(wǎng)絡,但仍將所有 IO 擴展器互連到單個串行總線上。如果您必須將 IO 擴展器分離到 4000 英尺,則使用如下所示的IO 擴展器和標準藍色 Cat5 網(wǎng)絡線。

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

用于設置 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 中。許多傳感器和設備需要自動化到每個種植床或單個植物。這需要極端的 IO,而 IO 擴展器可以提供。

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


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

評論

查看更多

下載排行

本周

  1. 1XL4015+LM358恒壓恒流電路圖
  2. 0.38 MB   |  139次下載  |  1 積分
  3. 2PCB布線和布局電路設計規(guī)則
  4. 0.40 MB   |  8次下載  |  免費
  5. 3TPS6287B25降壓轉(zhuǎn)換器評估模塊
  6. 3.46MB   |  1次下載  |  免費
  7. 4INA226EVM用戶指南
  8. 4.7MB   |  1次下載  |  免費
  9. 5INA226EVM修訂版A模型用戶指南和軟件教程
  10. 2.28MB   |  1次下載  |  免費
  11. 6AHD/TVI/CVI/CVBS轉(zhuǎn)HDMI/VGA/CVBS高清轉(zhuǎn)換方案
  12. 0.19 MB   |  1次下載  |  免費
  13. 7基于c51的時鐘設計
  14. 0.56 MB   |  1次下載  |  免費
  15. 8SONY ICF-SX3R電路圖
  16. 1.13 MB   |  1次下載  |  3 積分

本月

  1. 1XL4015+LM358恒壓恒流電路圖
  2. 0.38 MB   |  139次下載  |  1 積分
  3. 2新概念模擬電路第四冊信號處理電路電子書免費下載
  4. 10.69 MB  |  60次下載  |  免費
  5. 3800VA純正弦波逆變器的參考設計
  6. 2.96MB   |  35次下載  |  免費
  7. 4純電動汽?的主要部件及?作原理
  8. 5.76 MB   |  15次下載  |  5 積分
  9. 5JESD79-5C_v1.30-2024 內(nèi)存技術規(guī)范
  10. 2.71 MB   |  10次下載  |  免費
  11. 6elmo直線電機驅(qū)動調(diào)試細則
  12. 4.76 MB   |  9次下載  |  6 積分
  13. 7明偉電源模塊RSP-3000圖紙
  14. 0.30 MB   |  9次下載  |  免費
  15. 8PCB布線和布局電路設計規(guī)則
  16. 0.40 MB   |  8次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935115次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73805次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分