在 Raspberry Pi Pico W 上运行网络服务器
本项目可视为 Pico W 的 "Hello World!"。它演示了如何连接 Wi-Fi、如何在 Pico W 上运行 HTTP 网络服务器以及如何控制 GPIO 引脚。
如果您正在寻找一个快速、简单的项目来开始使用 Pico,那么这个项目就是为您准备的!
在Pico W上通过WiFi闪动LED的步骤
为了完成这项工作,有三个总体性的主题。
设置MicroPython
首先,你需要设置MicroPython。 在此下载UF2文件 这是为Pico W专门设计的。
按住BOOTSEL按钮,通过USB连接你的Pico W。
一旦安装完毕,将你刚刚下载的UF2文件复制到Pico上。
使用Thonny为Pico W编程
Thonny使Pico W的编程变得很容易,它预装在Raspberry Pi操作系统上。你也可以 在此下载Windows、Mac和Linux版本。
确保你的解释器被设置为MicroPython(Raspberry Pi Pico)。
Thonny将连接到Raspberry Pi Pico W,你可以在shell(Thonny IDE的底部部分)运行命令。
运行网络扫描以确认Pico W的无线网络正在工作
在Shell中,你可以运行这段代码来测试你的无线芯片是否在工作。
使用这个代码可以打印出你所在地区的所有可用的无线网络。
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print(wlan.scan())
为网络服务器编程
创建一个名为 secrets.py 并使用以下内容,将sid和pw的值替换成你的网络。
secrets = {
'ssid': 'Replace-this-with-your-Wi-Fi-Name',
'pw': 'Replace-this-with-your-Wi-Fi-Password'
}
然后,创建 main.py 它将承载你的主代码.由于代码有很多行。 你可以在我们的Github上找到它。.
创建将被提供的HTML页面
下面的文件将是你加载Pico W的IP地址时提供的HTML文件。将其保存为 index.html
这是一个简单的页面,有两个按钮,允许你打开和关闭Pico W的LED。
<!DOCTYPE html>
<html>
<head>
<title>Pico W</title>
</head>
<body>
<h1>Pico W</h1>
<p>Control the onboard LED</p>
<a href=\"?led=on\"><button>ON</button></a>
<a href=\"?led=off\"><button>OFF</button></a>
</body>
</html>
运转的时间
点击Thonny的运行按钮,这是一个带有播放符号的绿色按钮。
你会看到Pico W的IP地址,将其复制到连接到同一无线网络的网络浏览器中。
点击按钮,你应该看到变化。
你可以找到 Github repo这里有所有的文件。
我们的 此项目的 YouTube 视频还对代码解释等细节进行了深入介绍.
如果您正在寻找更多的项目来激发您的灵感,那就来看看我们的 Paragon 项目系列吧 这里.
我试着做的时候发现了错误
%Run -c $EDITOR_CONTENT
回溯(最近的一次调用)。
文件"",第1行,在
ImportError: 没有名为'网络'的模块
嗨,巴勃罗 - 确保你使用的是最新的UF2文件,用于Pico W(不仅仅是Pico) - 在这里找到。 https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
网络模块是作为标准配置存在的!
在第100行,你使用了get_html()函数。当我运行你的代码时,我得到一个'get_html'没有定义的错误。
如果引用者包含'led=xx'字符串,查找功能也会返回一个值。因此,led_on和led_off同时得到一个正值,并且LED在想要打开时又被关掉了。为了克服这个问题,if语句必须被扩展,以检查一个小的索引值(我只用20作为经验法则)。
如果(led_on>-1和led_on-1和led_off<20)。
现在它像预期的那样工作。
J'ai résolu le problème en ajoutant la ligne :
r = r[:50]
前卫
led_on = r.find('?led=on')
led_off = r.find('?led=off')
Cela retire les caractères superflus de la requête
我试着发表评论,但不知为何,评论没有正确出来......