You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Waveshare RP2040-ETH实现HTTP请求的相关技术问询

Waveshare RP2040-ETH 联网与HTTP请求解决方案

1. 替代官方PICO固件的选择

官方MicroPython固件未集成以太网相关模块,直接选用Waveshare官方提供的RP2040-ETH专用MicroPython固件即可,该固件已预集成以太网驱动和socket等联网所需库,完全适配板载ETH硬件。
刷写方法和官方固件一致:按住开发板的BOOTSEL键后插入USB,电脑会识别为U盘,将下载好的专用固件拖入U盘即可完成刷写。

2. 实现HTTP请求及CH9120驱动说明

发起HTTP请求(基于板载ETH)

在确认开发板已联网(路由器显示在线)的前提下,可直接使用socket模块编写HTTP请求代码,以下是简单的GET、POST请求示例:

GET请求示例

import socket
import network

# 初始化以太网(若已运行过联网示例代码,此段可省略)
eth = network.ETH()
eth.active(True)
while not eth.isconnected():
    pass
print("已联网,IP地址:", eth.ifconfig())

def http_get(url):
    # 解析URL的主机和路径
    host = url.split('/')[2]
    path = '/' + '/'.join(url.split('/')[3:]) if len(url.split('/')) > 3 else '/'
    
    # 创建socket连接并发送请求
    s = socket.socket()
    s.connect((host, 80))
    request = f"GET {path} HTTP/1.1\r\nHost: {host}\r\nConnection: close\r\n\r\n"
    s.send(request.encode())
    
    # 接收并返回响应
    response = b''
    while True:
        data = s.recv(1024)
        if not data:
            break
        response += data
    s.close()
    return response.decode()

# 测试请求
print(http_get("http://example.com"))

POST请求示例

def http_post(url, data):
    host = url.split('/')[2]
    path = '/' + '/'.join(url.split('/')[3:]) if len(url.split('/')) > 3 else '/'
    
    s = socket.socket()
    s.connect((host, 80))
    
    # 构造POST请求头与请求体
    content_length = len(data)
    request = f"POST {path} HTTP/1.1\r\nHost: {host}\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: {content_length}\r\nConnection: close\r\n\r\n{data}"
    s.send(request.encode())
    
    # 接收响应
    response = b''
    while True:
        data = s.recv(1024)
        if not data:
            break
        response += data
    s.close()
    return response.decode()

# 测试POST请求
print(http_post("http://example.com/post", "key1=value1&key2=value2"))

CH9120模块驱动说明

RP2040-ETH本身自带以太网接口,无需额外使用CH9120(串口转以太网模块)。如果确实需要搭配该模块使用,可通过MicroPython的uart模块驱动:

  1. 将CH9120的TX/RX引脚连接到RP2040的任意UART引脚(比如GPIO0/TX、GPIO1/RX)
  2. 初始化UART并发送AT指令控制CH9120联网和发起请求,示例代码框架:
from machine import UART
import time

# 初始化UART,波特率匹配CH9120默认设置(通常为9600)
uart = UART(0, baudrate=9600, tx=0, rx=1)

# 发送AT指令测试模块连通性
uart.write(b"AT\r\n")
time.sleep(0.5)
print(uart.read())

# 连接目标服务器
uart.write(b"AT+CONNECT=example.com,80\r\n")
time.sleep(1)
print(uart.read())

# 发送HTTP请求
uart.write(b"GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n")
time.sleep(2)
print(uart.read())

具体AT指令需参考CH9120官方手册,不同版本指令可能存在差异。

内容的提问来源于stack exchange,提问作者Sahm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:45:18