如何实现RPI Pico W开发板的无线烧录?
树莓派Pico W无线烧录实现方案
针对频繁调优、烧录Pico W的需求,以下两种方案可以帮你摆脱USB连接的限制,提升效率:
方案一:MicroPython代码无线上传(适合Python代码调优)
这个方案适合频繁修改Python脚本的场景,通过在Pico W上运行一个简易HTTP服务,实现代码上传与自动重启加载:
部署初始服务脚本
先通过USB给Pico W烧录以下main.py脚本,它会自动连接WiFi并启动文件上传服务:import network import socket import machine import os # 替换为你的WiFi信息 SSID = "YOUR_WIFI_SSID" PASSWORD = "YOUR_WIFI_PASSWORD" # 连接WiFi wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(SSID, PASSWORD) while not wlan.isconnected(): pass print(f"WiFi已连接,IP: {wlan.ifconfig()[0]}") # 启动HTTP上传服务 def start_upload_server(): addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] s = socket.socket() s.bind(addr) s.listen(1) print("等待上传请求,端口80") while True: cl, addr = s.accept() request = cl.recv(1024).decode('utf-8') # 处理文件上传请求 if "POST /upload" in request: content = request.split('\r\n\r\n')[1] with open('main.py', 'w') as f: f.write(content) cl.send('HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n上传成功,设备即将重启') cl.close() machine.reset() else: cl.send('HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n请通过POST方法将文件发送至/upload路径') cl.close() start_upload_server()无线上传修改后的代码
重启Pico W后,从串口输出或路由器后台获取它的IP地址,之后每次修改代码后,用以下命令上传:curl -X POST -d "@你修改后的main.py" http://<PICO_W_IP>/upload上传完成后设备会自动重启,加载新代码。
方案二:网络Bootloader烧录UF2固件(适合固件更新)
如果需要频繁更新整个固件(比如C/C++编译的UF2文件),可以使用RP2040的网络Bootloader:
刷入网络Bootloader固件
先通过USB将支持网络Bootloader的UF2固件刷入Pico W。配置局域网连接
刷入后Pico W会开启名为rp2040-setup的热点,连接该热点后访问http://192.168.4.1,配置你的局域网WiFi信息,完成后设备会接入你的局域网。无线烧录UF2固件
获取Pico W的局域网IP后,访问对应的Web界面(默认端口80),直接上传UF2文件即可完成烧录。添加触发进入Bootloader的逻辑
为了不用每次按BOOTSEL按键,可以在代码中添加触发逻辑,比如通过HTTP请求触发:import machine import rp2 def enter_network_bootloader(): rp2.bootsel() machine.reset() # 在你的HTTP服务中添加以下判断(可整合到方案一的服务脚本中) if "GET /bootloader" in request: cl.send('HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n即将进入网络Bootloader模式') cl.close() enter_network_bootloader()
注意事项
- 确保PC与Pico W处于同一局域网,避免网络传输失败
- 建议在路由器后台给Pico W分配固定IP,省去每次查找IP的麻烦
- 上传前尽量在本地验证代码/固件的基本功能,减少无效上传次数
内容的提问来源于stack exchange,提问作者unlucky_chap
相关产品推荐
相关产品推荐

