RP2350-Relay-6CH 使用教程

说明

产品概述

RP2350-Relay-6CH 是一款基于 RP2350B 主控,支持 RS485、Pico 等外设接口的工业级 6 路继电器。内置电源隔离、光耦隔离等保护电路,安全稳定更可靠。

产品特性

  • 采用 Raspberry Pi 设计的 RP2350B 微控制器芯片
  • 独特的双核、双架构,搭载了双核 ARM Cortex-M33 处理器和双核 Hazard3 RISC-V 处理器,时钟运行频率均高达 150MHz,支持用户在两种架构间灵活切换
  • 内置 520KB 的 SRAM 和 16MB 的片上 Flash
  • 采用 Type-C 接口,无需纠结正反插
  • 采用优质继电器,允许接入负载:≤10A 250V AC 或 ≤10A 30V DC
  • 板载隔离型 RS485 接口,方便外扩接入各种 RS485 Modbus 工业扩展模块或传感器
  • 板载 Pico 兼容接口,可适配部分树莓派 Pico 扩展板,方便扩展 RTC / CAN / RS232 / LoRa / 传感器等功能
  • 板载有接线端子供电接口,支持 7~36V 宽电压范围供电,方便工业供电使用
  • 板载光耦隔离,避免继电器外接高压电路干扰控制芯片
  • 板载数字隔离,避免外部信号干扰控制芯片
  • 板载一体式电源隔离,可提供稳定的隔离电压,隔离端无须额外供电
  • 板载蜂鸣器,RGB 彩灯,以及电源和 RS485 收发指示灯,方便感知设备的运行工作状态
  • 导轨式 ABS 保护外壳,方便安装使用,带外壳更安全
  • USB1.1 主机和从设备支持
  • 支持低功耗睡眠和休眠模式
  • 可通过 USB 识别为大容量存储器进行拖放式下载程序
  • 引出 34 个多功能的 GPIO 引脚
  • 2 个 I2C,2 个 UART,8 个 12 位 ADC,以及 24 个可控 PWM 通道
  • 精确的片上时钟和定时器
  • 温度传感器
  • 片上加速浮点库
  • 12 个可编程 I/O (PIO) 状态机,用于自定义外设支持

引脚分布


尺寸图


Pico快速上手

固件下载


MicroPython固件下载



C_Blink固件下载


基础介绍

Raspberry Pi Pico的基础介绍

MicroPython系列

安装Thonny IDE

为了方便在电脑上使用MicroPython开发Pico/Pico2板,建议下载Thonny IDE


  • 配置Micrpython环境及选择Pico/Pico2端口
    • 先将Pico/Pico2接入电脑,左键点击Thonny右下角的配置环境选项--》选择configture interpreter
    • 在弹出的窗口栏中选择MicroPython(Raspberry Pi Pico),同时选择对应的端口



烧录固件

  • 点击ok后返回到Thonny主界面,下载对应的固件库并烧录到设备中,然后点击停止按钮,在Shell窗口中即可显示当前使用到的环境
  • 注意:烧录Micropython官方提供的Pico2固件可能导致无法识别设备,请使用下方或程序包中的固件
  • Pico/Pico2在windows下载固件库方法: 按住BOOT键后连接电脑后,松开BOOT键,电脑会出现一个可移动磁盘,将固件库复制进去即可
  • RP2040/RP2350在windows下载固件库方法: 连接电脑后,同时按下BOOT键跟RESET键,先松开RESET键再松开BOOT键,电脑会出现一个可移动磁盘,将固件库复制进去即可(用Pico/Pico2的方式也可以)


讲解视频

【MicroPython】machine.Pin类函数详解
【MicroPython】machine.PWM类函数详解
【MicroPython】machine.ADC类函数详解
【MicroPython】machine.UART类函数详解
【MicroPython】machine.I2C类函数详解
【MicroPython】machine.SPI类函数详解
【MicroPython】rp2.StateMachine类函数详解

C/C++系列

对于 C/C++,建议使用 Pico VSCode 进行开发,这是一款 Microsoft Visual Studio Code 扩展,旨在让您在为 Raspberry Pi Pico 系列开发板创建、开发和调试项目时更加轻松。无论您是初学者还是经验丰富的专业人士,此工具都可以帮助您自信而轻松地进行 Pico 开发。下面我们介绍如何安装该扩展并使用。

安装VSCode

  1. 首先,点击下载 pico-vscode 程序包,解压并打开程序包,双击安装 VSCode

    注意:如果已安装 vscode 注意检查版本是否为 v1.87.0 或更高版本


安装扩展

  1. 点击扩展,选择从 VSIX 安装

  2. 选择 vsix 后缀的软件包,点击安装

  3. 随后 vscode 会自动安装 raspberry-pi-pico 及其依赖扩展,可以点击刷新查看安装进度

  4. 右下角显示完成安装,关闭 vscode

配置扩展

  1. 打开目录 C:\Users\用户名,将整个 .pico-sdk 拷贝至该目录

  2. 拷贝完成

  3. 打开 vscode,对 Raspberry Pi Pico 扩展中各个路径进行配置

    配置如下:
    Cmake Path:
    ${HOME}/.pico-sdk/cmake/v3.28.6/bin/cmake.exe
    
    Git Path:
    ${HOME}/.pico-sdk/git/cmd/git.exe    
    
    Ninja Path:
    ${HOME}/.pico-sdk/ninja/v1.12.1/ninja.exe
    
    Python3 Path:
    ${HOME}/.pico-sdk/python/3.12.1/python.exe             
    

新建工程

  1. 配置完成,测试新建工程,输入工程名、选择路径后点击 Creat 创建工程
    测试官方示例,可以点击工程名旁的 Example 进行选择

  2. 创建工程成功

编译工程

  1. 选择SDK版本

  2. 选择 Yes 进行高级配置

  3. 选择交叉编译链,13.2.Rel1 适用 ARM 核,RISCV.13.3 适用 RISCV 核,这里根据您的需求任意选择其中一个即可

  4. CMake 版本选择 Default(前面配置的路径)

  5. Ninja 版本选择 Default

  6. 选择开发板

  7. 点击 Complie 进行编译

  8. 成功编译出 uf2 格式文件即可

烧录固件

这里提供两种方法烧录固件

  1. 使用pico-vscode插件烧录固件
    将开发板连接到电脑上,点击Run直接烧录固件

  2. 手动烧录固件
    1.按住Boot按键
    2.将开发板连接到电脑上     
    3.然后会电脑会将开发板识别成一个U盘设备
    4.将.uf2文件复制到U盘中,设备就会自动重启,程序烧录成功
    

导入工程

  1. 选择工程目录,导入工程

  2. 导入工程的 Cmake 文件不能有中文(包括注释),否则可能导致导入失败
  3. 导入自己的工程需要在 Cmake 文件中加一行代码,才能正常切换 pico 和 pico2,否则即使选择 pico2,编译得到的固件仍是适用于 pico 的

    set(PICO_BOARD pico CACHE STRING "Board type")
    

更新扩展

  1. 离线包中的扩展版本为0.15.2,安装完成后,您也可以选择更新至最新版本

Arduino IDE 系列

安装Arduino IDE

  1. 首先到Arduino官网下载Arduino IDE的安装包。

  2. 这里选择仅下载就可以了。

  3. 下载完成后,点击安装。

    注意:安装过程中会提示你安装驱动,我们点击安装即可

Arduino IDE中文界面

  1. 第一次安装完成后,打开Arduino IDE全是英文界面,我们可以在File>Preferences切换成简体中文。

  2. 在Language里面选择简体中文,点击OK。

在Arduino IDE中安装Arduino-Pico Core

  1. 打开Arduino IDE,点击左上角的文件,选择首选项

  2. 在附加开发板管理器网址中添加如下链接,然后点击OK
    该链接已包含RP2040、RP2350等版型,最新版型文件请访问arduino-pico获取
    https://github.com/earlephilhower/arduino-pico/releases/download/4.5.2/package_rp2040_index.json


    注意:如果您已经有ESP32板URL,您可以使用逗号分隔 URL,如下所示:

    https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/4.5.2/package_rp2040_index.json
  3. 点击工具>开发板>开发板管理器>搜索pico,由于我的电脑已经安装过了,所以显示已安装


国内用户
  • 因为网络原因,国内用户连接github并不稳定,我们另外提供了一份安装包,可以跳过在线的过程
  • 安装包适用于RP2040、RP2350
  • 若已经成功配置了pico环境,可以直接跳过本章
  1. 下载rp2040压缩包,将解压的rp2040文件夹复制到如下路径下
    C:\Users\[username]\AppData\Local\Arduino15\packages


    注意:将里面用户名:[username]替换成自己的用户名

第一次上传程序

  1. 按住Pico板上的BOOTSET按键,将pico通过Micro USB线接到电脑的USB接口,待电脑识别出一个可移动硬盘(RPI-RP2)后,松开按键。

  2. 下载程序,打开arduino\PWM\D1-LED路径下的D1-LED.ino
  3. 点击工具>端口,记住已有的COM,不需要点击这个COM(不同电脑显示的COM不一样,记住自己电脑上已有的COM)

  4. 用USB线将驱动板和计算机连接起来,再点击工具>端口,第一次连接选择uf2 Board,上传完成后,再次连接就会多出一个COM口

  5. 点击工具>开发板>Raspberry Pi Pico>Raspberry Pi Pico或Raspberry Pi Pico 2


  6. 设置完成后,点击向右箭头将上传程序

  • 如果期间遇到了问题,需要重新安装或者更换Arduino IDE版本时,卸载Arduino IDE需要卸载干净,卸载软件后需要手动删除C:\Users\[name]\AppData\Local\Arduino15这个文件夹内的所有内容(需要显示隐藏文件才能看到) 再重新安装

开源例程

MircoPython视频例程(github)
MicroPython固件/Blink例程(C)
树莓派官方C/C++示例程序 (github)
树莓派官方micropython示例程序 (github)
Arduino官方C/C++示例程序 (github)


示例程序

C/C++例程

【程序说明】


  • 本示例实现了通过 RS485 去控制 6 个继电器的开关

【代码分析】


  • Relay_Control():该函数主要根据通过参数传递的数组下标,执行相应的继电器控制操作以及输出相应的状态提示信息
    • 参数分析
      • uint8_t index:在main函数中,程序会解析接收到 RS485 数据,并与预设的控制命令数组进行匹配。当找到匹配项时,会调用Relay_Control函数,并通过index参数传递匹配命令在数组中的下标位置
    • 逻辑流程
      • 通过if else语句根据index的值来执行不同的操作:
        • 对于index < 6的情况,即对于CH1~CH6指令,通过DEV_Digital_Write函数来切换对应的 GPIO 引脚(如RELAY1_PIN等)的电平状态,同时更新对应的relay_status数组元素来记录继电器状态的改变,并且根据继电器的最终状态输出相应的开启或关闭提示信息,最后在main函数中调用Beep函数控制蜂鸣器。
        • 对于index = 6的情况,即对于ALL_ON指令,将所有的 GPIO 引脚(对应 6 个通道继电器)设置为高电平(开启状态),通过memset函数将relay_status数组所有元素设置为 1,表示全部继电器开启,输出全部继电器开启提示信息,最后在main函数中调用Beep函数控制蜂鸣器。
        • 对于index = 7的情况,即对于ALL_OFF指令,将所有的 GPIO 引脚(对应 6 个通道继电器)设置为低电平(关闭状态),通过memset函数将relay_status数组所有元素设置为 0,表示全部继电器关闭,输出全部继电器关闭提示信息,最后在main函数中调用Beep函数控制蜂鸣器。
        • 如果index 的值不属于上述指令情况,则输出接收到非指令数据的提示信息

MicroPython例程

【程序说明】


  • 本示例实现了通过 RS485 去控制 6 个继电器的开关

【代码分析】


  • relay_control():该函数主要根据通过参数传递的数组下标,执行相应的继电器控制操作以及输出相应的状态提示信息
    • 参数分析
      • index:在main函数中,程序会解析接收到 RS485 数据,并与预设的控制命令数组进行匹配。当找到匹配项时,会调用relay_control函数,并通过index参数传递匹配命令在数组中的下标位置
    • 逻辑流程
      • 通过if else语句根据index的值来执行不同的操作:
        • 对于index < 6的情况,即对于CH1~CH6指令,通过relays[index].value函数来切换对应的 GPIO 引脚的电平状态,同时更新对应的relay_status数组元素来记录继电器状态的改变,并且根据继电器的最终状态输出相应的开启或关闭提示信息,最后再调用beep函数控制蜂鸣器。
        • 对于index = 6的情况,即对于ALL_ON指令,将所有的 GPIO 引脚(对应 6 个通道继电器)设置为高电平(开启状态),通过for循环将relay_status数组所有元素设置为 1,表示全部继电器开启,输出全部继电器开启提示信息,最后再调用beep函数控制蜂鸣器。
        • 对于index = 7的情况,即对于ALL_OFF指令,将所有的 GPIO 引脚(对应 6 个通道继电器)设置为低电平(关闭状态),通过for循环将relay_status数组所有元素设置为 0,表示全部继电器关闭,输出全部继电器关闭提示信息,最后再调用beep函数控制蜂鸣器。
        • 如果index 的值不属于上述指令情况,则输出接收到非指令数据的提示信息

外部扩展


RS485 扩展继电器路数

  • 使用 Modbus RTU Relay 扩展 8 路继电器
  • 将 Modbus RTU Relay 连接至 RP2350-Relay-6CH RS485 接口
  • 示例将逐一开启 Modbus-RTU-Relay 的 CH1~CH6,再逐一关闭

兼 Pico 接口扩展定时开关功能

  • 使用 Pico-RTC-DS3231 扩展 定时开关功能
  • 将 Pico-RTC-DS3231 连接至 RP2350-Relay-6CH Pico 接口
  • 示例将每隔 5s 翻转所有继电器状态

兼 Pico 接口扩展 CAN 接口


  • 数据发送:使用串口调试助手查看打印的数据




兼 Pico 接口扩展环境监测功能


兼 Pico 接口扩展 RS485 接口

  • 请注意,使用 Pico-2CH-RS485 扩展 RS485 接口时仅支持通道0,通道1不可使用
  • 将 Pico-2CH-RS485 连接至 RP2350-Relay-6CH Pico 接口
  • 将 Pico-2CH-RS485 的通道0 连接至 RP2350-Relay-6CH Pico 接口
  • 示例将进行数据收发回环测试,验证板载 RS485 接口与拓展 RS485 接口数据收发功能


资料

配套资料

示例程序

原理图

官方资料

树莓派官方文档

树莓派开源例程

开发软件


FAQ

问题:Raspberry Pi Pico 2 GPIO配置为下拉输入,引脚悬空时,为什么读取IO为高电平?

可以参考RP2350-datasheet中RP2350-E9部分内容


问题:使用RS485控制其他设备时不灵敏、或通信不上?

请将跳线帽移至 120R 再次尝试,部分 RS485 设备需要串入 120R 电阻


技术支持

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841