RP2350-ETH-8DI-8RO 是一款基于 RP2350B 主控,支持 RS485、以太网口等外设接口的工业级 8 路网络继电器。内置电源隔离、光耦隔离等保护电路,安全稳定更可靠。


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




【MicroPython】machine.Pin类函数详解
【MicroPython】machine.PWM类函数详解
【MicroPython】machine.ADC类函数详解
【MicroPython】machine.UART类函数详解
【MicroPython】machine.I2C类函数详解
【MicroPython】machine.SPI类函数详解
【MicroPython】rp2.StateMachine类函数详解
对于 C/C++,建议使用 Pico VSCode 进行开发,这是一款 Microsoft Visual Studio Code 扩展,旨在让您在为 Raspberry Pi Pico 系列开发板创建、开发和调试项目时更加轻松。无论您是初学者还是经验丰富的专业人士,此工具都可以帮助您自信而轻松地进行 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.按住Boot按键 2.将开发板连接到电脑上 3.然后会电脑会将开发板识别成一个U盘设备 4.将.uf2文件复制到U盘中,设备就会自动重启,程序烧录成功


set(PICO_BOARD pico CACHE STRING "Board type")








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


C:\Users\[username]\AppData\Local\Arduino15\packages

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






MircoPython视频例程(github)
MicroPython固件/Blink例程(C)
树莓派官方C/C++示例程序 (github)
树莓派官方micropython示例程序 (github)
Arduino官方C/C++示例程序 (github)
【程序说明】
【代码分析】
uint8_t index:在main函数中,程序会解析接收到 RS485 数据,并与预设的控制命令数组进行匹配。当找到匹配项时,会调用Relay_Control函数,并通过index参数传递匹配命令在数组中的下标位置if else语句根据index的值来执行不同的操作:index < 8的情况,即对于CH1~CH6指令,通过DEV_Digital_Write函数来切换对应的 GPIO 引脚(如RELAY1_PIN等)的电平状态,同时更新对应的relay_status数组元素来记录继电器状态的改变,并且根据继电器的最终状态输出相应的开启或关闭提示信息,最后在main函数中调用Beep函数控制蜂鸣器。index = 8的情况,即对于ALL_ON指令,将所有的 GPIO 引脚(对应 8 个通道继电器)设置为高电平(开启状态),通过memset函数将relay_status数组所有元素设置为 1,表示全部继电器开启,输出全部继电器开启提示信息,最后在main函数中调用Beep函数控制蜂鸣器。index = 9的情况,即对于ALL_OFF指令,将所有的 GPIO 引脚(对应 8 个通道继电器)设置为低电平(关闭状态),通过memset函数将relay_status数组所有元素设置为 0,表示全部继电器关闭,输出全部继电器关闭提示信息,最后在main函数中调用Beep函数控制蜂鸣器。index 的值不属于上述指令情况,则输出接收到非指令数据的提示信息【程序说明】
【注意事项】
【代码分析】
ConnectNetwork():通过以太网口连接网络MQTTClientInit():MQTT 初始化MQTTConnect():连接 MQTT 服务器MQTTSubscribe():订阅 MQTT 主题MQTTPublish():发布 MQTT 消息MQTT_CLIENT_ID:客户端 IDMQTT_USERNAME:用户名MQTT_PASSWORD:密码MQTT_SUBSCRIBE_TOPIC:订阅主题名称MQTT_PUBLISH_TOPIC:发布主题名称g_net_info.mac:MAC 地址g_net_info.ip:IP地址g_net_info.sn:子网掩码g_net_info.gw:网关g_net_info.dns:DNS 服务器ConnectNetwork()、MQTTConnect()连接网络和 MQTT 服务器,调用MQTTSubscribe()订阅 MQTT 主题g_mqtt_client.msg.payload不为空时,解析 MQTT 消息并控制相应继电器开关MQTTPublish()向服务端发送继电器最新状态【程序说明】
【代码分析】
index:在main函数中,程序会解析接收到 RS485 数据,并与预设的控制命令数组进行匹配。当找到匹配项时,会调用relay_control函数,并通过index参数传递匹配命令在数组中的下标位置if else语句根据index的值来执行不同的操作:index < 8的情况,即对于CH1~CH6指令,通过relays[index].value函数来切换对应的 GPIO 引脚的电平状态,同时更新对应的relay_status数组元素来记录继电器状态的改变,并且根据继电器的最终状态输出相应的开启或关闭提示信息,最后再调用beep函数控制蜂鸣器。index = 8的情况,即对于ALL_ON指令,将所有的 GPIO 引脚(对应 8 个通道继电器)设置为高电平(开启状态),通过for循环将relay_status数组所有元素设置为 1,表示全部继电器开启,输出全部继电器开启提示信息,最后再调用beep函数控制蜂鸣器。index = 9的情况,即对于ALL_OFF指令,将所有的 GPIO 引脚(对应 8 个通道继电器)设置为低电平(关闭状态),通过for循环将relay_status数组所有元素设置为 0,表示全部继电器关闭,输出全部继电器关闭提示信息,最后再调用beep函数控制蜂鸣器。index 的值不属于上述指令情况,则输出接收到非指令数据的提示信息【程序说明】
【注意事项】
【代码分析】
ethernet_init():通过以太网口连接网络mqtt_connect():连接 MQTT 服务器mqtt_subscribe():订阅 MQTT 主题mqtt_publish():发布 MQTT 消息MQTT_SERVER:服务端 IPMQTT_PORT:服务端端口号MQTT_CLIENT_ID:客户端 IDMQTT_USERNAME:用户名MQTT_PASSWORD:密码MQTT_SUBSCRIBE_TOPIC:订阅主题名称MQTT_PUBLISH_TOPIC:发布主题名称ethernet_init()、mqtt_connect()连接网络和 MQTT 服务器,调用mqtt_subscribe()订阅 MQTT 主题client.set_callback()设置 MQTT 接收回调函数,在主循环中等待 MQTT 消息,当判断接收的 MQTT 消息后调用mqtt_recv_callback(),解析 MQTT 消息并控制相应继电器开关mqtt_publish()向服务端发送继电器最新状态可以参考RP2350-datasheet中RP2350-E9部分内容
请将跳线帽移至 120R 再次尝试,部分 RS485 设备需要串入 120R 电阻
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841
