电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用您的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 继电器板。
  • 易于使用的继电器控制命令。
  • 一次控制一个单独的继电器或一个组。
  • 无需驱动程序。节省代码空间。
  • 没有数据空间来维持中继状态。
  • 不需要额外的电源

构建中继库所需的零件

接线图

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 扩展器。这使我们能够将传感器和继电器分配到中央网络或星形网络,但仍将所有 IO 扩展器互连到单个串行总线上。如果您必须将 IO 扩展器分离到 4000 英尺,则使用如下所示的IO 扩展器和标准蓝色 Cat5 网络线。

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 操作系统也不支持标记和空间奇偶校验,因此对于使用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 扩展器并构建您的系统!


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  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开发指南
  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开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  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次下载  |  免费