用 Raspberry Pi Pico W 创建 Wi-Fi 门铃
这里有一个简单而实用的教程,帮助您了解如何在按下连接到 Raspberry Pi Pico W 的按钮时触发电子邮件发送(或在手机上显示通知)。这样,您就可以将 Pico W 用作 Wi-Fi 门铃!
通过本项目,您将学习如何发出 HTTP 请求以连接到 IFTTT 端点。
视频
需要的零件
树莓派 Pico W 带页眉
为 Raspberry Pi 布线
为了将 Raspberry Pi Pico W 与按钮连接起来:
- 将按钮的一侧连接至 GPIO14
- 将按钮的另一端连接至 3.3V 引脚
请注意,有四棱的按钮,也有两棱的按钮。
如果您有一个四孔按钮,您可以斜着连接跳线,以确保它们在相对的两侧。
如果您有一个两芯插针,那么只需连接相反的两芯即可。
设置 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 门铃以满足您的需求?
问候
我想尝试几个 RPI Pico W 项目,例如 IFTT 发送邮件和网页项目。我遇到了一个问题,当我运行 IFTT 示例时,micropython 程序正在寻找一个 "sockets "模块。我找不到能让程序正常运行的套接字模块。你能提供正确的建议吗?
[...] 参考にしたサイト:Raspberry Pi Pico Wi-Fi门铃教程(HTTP请求和IFTTT) [...] 参考にしたサイト:Raspberry Pi Pico Wi-Fi门铃教程(HTTP请求和IFTTT) [...
[...] 值得注意的是,这个项目与我们去年 7 月分享的 Pico W 门铃教程并无太大区别。[...]
[...] 想要让您的家更智能?树莓派(Raspberry Pi)既可以作为一切自动化的核心设备,也可以作为外围设备。例如,您可以将它改造成监控摄像头或安全系统,可以将它用作语音助手,可以用它创建智能镜子,也可以将它用于智能照明。您甚至还可以用它来浇灌植物、监控院子里的鸟类或智能门铃![...]