在 Raspberry Pi Pico W 上运行网络服务器

本项目可视为 Pico W 的 "Hello World!"。它演示了如何连接 Wi-Fi、如何在 Pico W 上运行 HTTP 网络服务器以及如何控制 GPIO 引脚。

如果您正在寻找一个快速、简单的项目来开始使用 Pico,那么这个项目就是为您准备的!

在Pico W上通过WiFi闪动LED的步骤

为了完成这项工作,有三个总体性的主题。

设置MicroPython

首先,你需要设置MicroPython。 在此下载UF2文件 这是为Pico W专门设计的。

Pico W Bootsel 按钮

按住BOOTSEL按钮,通过USB连接你的Pico W。

一旦安装完毕,将你刚刚下载的UF2文件复制到Pico上。

使用Thonny为Pico W编程

Thonny使Pico W的编程变得很容易,它预装在Raspberry Pi操作系统上。你也可以 在此下载Windows、Mac和Linux版本。

确保你的解释器被设置为MicroPython(Raspberry Pi Pico)。

运行 Micropython 的 Thonny IDE

Thonny将连接到Raspberry Pi Pico W,你可以在shell(Thonny IDE的底部部分)运行命令。

运行网络扫描以确认Pico W的无线网络正在工作

Thonny IDE 运行 WLAN 扫描

在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 网络服务器

下面的文件将是你加载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>

运转的时间

Pico W 网络服务器

点击Thonny的运行按钮,这是一个带有播放符号的绿色按钮。

你会看到Pico W的IP地址,将其复制到连接到同一无线网络的网络浏览器中。

点击按钮,你应该看到变化。

你可以找到 Github repo这里有所有的文件。

我们的 此项目的 YouTube 视频还对代码解释等细节进行了深入介绍.

如果您正在寻找更多的项目来激发您的灵感,那就来看看我们的 Paragon 项目系列吧 这里.

6评论

  1. Pablo 在7 月 13, 2022在4:31 下午

    我试着做的时候发现了错误

    %Run -c $EDITOR_CONTENT
    回溯(最近的一次调用)。
    文件"",第1行,在
    ImportError: 没有名为'网络'的模块

  2. Charles 在10 月 25, 2022在8:51 下午

    在第100行,你使用了get_html()函数。当我运行你的代码时,我得到一个'get_html'没有定义的错误。

  3. Gunther 在11 月 28, 2022在12:51 上午

    如果引用者包含'led=xx'字符串,查找功能也会返回一个值。因此,led_on和led_off同时得到一个正值,并且LED在想要打开时又被关掉了。为了克服这个问题,if语句必须被扩展,以检查一个小的索引值(我只用20作为经验法则)。

    如果(led_on>-1和led_on-1和led_off<20)。
    现在它像预期的那样工作。

    • Tonton 在8 月 1, 2024在4:09 下午

      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

  4. Gunther 在11 月 28, 2022在12:53 上午

    我试着发表评论,但不知为何,评论没有正确出来......

发表评论