用 Raspberry Pi Pico W 创建 Wi-Fi 门铃

Raspberry Pi Pico W项目的WiFi门铃和通知

这里有一个简单而实用的教程,帮助您了解如何在按下连接到 Raspberry Pi Pico W 的按钮时触发电子邮件发送(或在手机上显示通知)。这样,您就可以将 Pico W 用作 Wi-Fi 门铃!

通过本项目,您将学习如何发出 HTTP 请求以连接到 IFTTT 端点。

视频

需要的零件

树莓派 Pico W 带页眉

为 Raspberry Pi 布线

raspberry pi pico w 按钮

为了将 Raspberry Pi Pico W 与按钮连接起来:

  • 将按钮的一侧连接至 GPIO14
  • 将按钮的另一端连接至 3.3V 引脚

请注意,有四棱的按钮,也有两棱的按钮。

如果您有一个四孔按钮,您可以斜着连接跳线,以确保它们在相对的两侧。

如果您有一个两芯插针,那么只需连接相反的两芯即可。

设置 IFTTT 发送电子邮件

IFTTT 通知

IFTTT 代表 IF T他的 T母鸡 T帽子

我们将使用 IFTTT 来简化一切,而不是自己编写代码。

单击此处前往 IFTTT.com 并注册一个账户。

注册后,点击 "创建

在 "如果这样 "部分,点击 "添加 "设置一个事件。这样就设置了触发 "然后 "部分(即发送通知)所需的条件。

在下面的 "选择服务 "页面中,输入 "Webhooks "并点击。

然后点击 "接收网络请求"。

键入事件名称 pico_w_request 然后向下滚动并 "创建触发器"。

您将返回 "如果这样,那么那样 "页面。现在是设置 "然后 "部分的时候了,点击它。

搜索 Gmail 并点击它。然后点击 "给自己发送电子邮件

选择您的电子邮件。

然后输入主题。我们写的是 "有人按门铃!"

在正文中,我们或多或少地重复了主题的信息,只不过,我们在其中加入了

{{发生日期}} 以显示触发时间。

点击"创建行动".在下一个屏幕中,点击 "继续"。

然后输入 Applet 的名称。我们使用的是 "Pico W to Gmail"。

酷!是时候点击 "完成 "了。

设置 IFTTT 向手机应用程序发送通知

您还可以让 IFTTT 在每次有人按门铃时向应用程序发送通知。

该过程与电子邮件通知过程非常相似。

在 "如果这样 "部分,选择 "Webhooks "作为服务,并选择 "接收网络请求"。输入事件名称。我们使用的是 "door_bell_rang"。

至于 "然后 "部分,这就是不同之处。

您可以选择 "通知 "服务,然后 "从 IFTTT 应用程序发送通知"。

当 "If This "和 "Then That "都填写完毕后,点击 "continue"(继续)。键入 Applet 标题,然后单击 "完成"。

查找 IFTTT 证书

现在,您已经设置好了 If-Then 小程序,可以继续查找您的凭据,以便 Pico W 可以连接到 IFTTT。

为此

  • 点击右上角的个人照片
  • 点击 "我的服务
  • 单击 Webhooks
  • 单击 "文档 "按钮。

您将在此页面看到一些信息,包括您的密匙。

将 Raspberry Pi Pico W 连接到 IFTTT

全部 我们的代码已发布在 Github 代码库中您可以在这里找到。

下载代码并解压。将代码复制到 Raspberry Pi Pico W 上。

您需要修改 secrets.py.

更换 侧面 输入 WiFi 网络的 SSID,然后将密码输入 pw field.

使用从上一节获得的密钥,将其粘贴到 ifttt_key的值。

门铃密码

门铃密码 以之前的教程为基础.简而言之,代码的作用如下:

  • 导入必要的软件包
  • 设置 WiFi 并连接网络

下面是门铃专用代码:

door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

last_state = False
current_state = False

while True:
    current_state = door_bell.value()
    if last_state == False and current_state == True:
        # Make a GET request to trigger webhook on IFTTT
        # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
        ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
        request = requests.get(ifttt_url)
        print(request.content)
        request.close()
        time.sleep(2)
    last_state = current_state

如果你还记得,我们将按钮连接到了 GPIO14。因此,我们要创建一个对象来读取 GPIO 的值。

door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

我们希望 IFTTT 只在状态从 假的正确. 我们还希望避免 IFTTT 在按钮被按下一次的情况下发送多个通知。

因此,有了这些保障措施:

last_state = False
current_state = False

while True:
    current_state = door_bell.value()
    if last_state == False and current_state == True:
        # Make a GET request to trigger webhook on IFTTT
        # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
        ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
        request = requests.get(ifttt_url)
        print(request.content)
        request.close()
        time.sleep(2)
    last_state = current_state

问题在于,当您按下按钮时,您可能会不知不觉地按住一会儿。这对你来说可能只是按了一下,但对 Pico W 来说,可能是按了五下。因此,我们要避免收到五次通知。

这就是 last_state current_state 变量进来。

按下按钮时 current_state 成为 正确.

这将触发与 IFTTT 连接的代码。

完成后,会有两秒钟的停顿,这要归功于 time.sleep(2)。

那么 last_state 成为 正确 因为它的值是 current_state.

因此,这就阻止了任何进一步的记录按键触发更多通知,因为这两个变量现在都是 正确因为这条线:

  if last_state == False and current_state == True:

一旦额外的压力过去了、 last_state 返回为 "假",因此可以接收 正确 以再次触发与 IFTTT 的连接。

选择通知方式

现在,就是你选择道路的时候了。

如果您已创建了电子邮件发送通知,则可以取消对这一行的注释:

 # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']

假设您已将事件命名为 "pico_w_request"。否则,请将 URL 的这一部分更改为您给它起的名称。

如果您想要应用程序通知,则需要使用下一行:

 ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']

你将何去何从?

通过这个简单的项目,您可以走得更远。

一旦熟悉了与应用程序接口的交互,按钮就可以用来触发很多事情。

例如,您可以对按钮进行编程,使其点击 Spotify API 来停止音乐或跳过曲目。

想要了解最新消息和其他 Pico 项目?请点击此处:

如何设置 Pico Wi-Fi 门铃以满足您的需求?

4评论

  1. Tom 在8 月 12, 2022在3:06 上午

    问候

    我想尝试几个 RPI Pico W 项目,例如 IFTT 发送邮件和网页项目。我遇到了一个问题,当我运行 IFTT 示例时,micropython 程序正在寻找一个 "sockets "模块。我找不到能让程序正常运行的套接字模块。你能提供正确的建议吗?

  2. [...] 参考にしたサイト:Raspberry Pi Pico Wi-Fi门铃教程(HTTP请求和IFTTT) [...] 参考にしたサイト:Raspberry Pi Pico Wi-Fi门铃教程(HTTP请求和IFTTT) [...

  3. [...] 值得注意的是,这个项目与我们去年 7 月分享的 Pico W 门铃教程并无太大区别。[...]

  4. [...] 想要让您的家更智能?树莓派(Raspberry Pi)既可以作为一切自动化的核心设备,也可以作为外围设备。例如,您可以将它改造成监控摄像头或安全系统,可以将它用作语音助手,可以用它创建智能镜子,也可以将它用于智能照明。您甚至还可以用它来浇灌植物、监控院子里的鸟类或智能门铃![...]

发表评论