[IoT] Telegram Bot with Arduino MKR WiFi 1010
组件和用品
| × | 1 |
关于这个项目
该项目演示了如何将 Arduino 与 Telegram Bot API 连接起来。该项目围绕配备 U-BLOX ESP32 模块的新型 MKR WiFi 1010 板构建。
在这个阶段,该项目只是一个概念验证,只是为了向您展示您可以做什么,因此为此您只需要 Arduino 板。
但什么是 Telegram 机器人?
好吧,机器人只是由软件而不是人操作的 Telegram 帐户,它们通常具有 AI 功能。他们可以做任何事情——教、玩、搜索、广播、提醒、连接、与其他服务集成,甚至向物联网传递命令。 (电报来源:https://telegram.org/blog/bot-revolution)
在我们的例子中,我们将命令传递给 Arduino,以构建一个简单的 IoT 设备。它将回答简单的命令并打开/关闭内置 LED。我会让你的想象力发挥更多作用......(想象一下,将一个或多个继电器连接到 I/O 引脚,并使用智能手机打开/关闭加热器或空调系统,例如)。
第 1 步:您需要什么 图>
对于这个项目,你需要:
- Arduino 商店的 Arduino MKR WiFi 1010:https://store.arduino.cc/arduino-mkr-wifi-1010
- Arduino IDE 1.8.5 或更高版本:https://www.arduino.cc/en/Main/Software
- 用于将 Arduino 连接到您的 PC 的微型 USB 电缆
- 互联网连接,需要 SSID 和密码。如果您使用自己的家用路由器以确保它没有被阻止,那就更好了。
- 您的智能手机上安装了 Telegram 应用,无论是什么品牌。也请查看这里的 PC 和 Web 版本!
第二步:安装IDE 图> 图>
是的,我知道,我知道……你们中的大多数人已经在 PC 中安装了 Arduino IDE,但本教程也适用于初学者。
因此,首先,下载您选择的 Arduino IDE 1.8.5(“非管理员”或 exe 文件的 zip 文件)
推荐使用1.8.5版本,老版本没测试,项目中使用的新板完全不支持。
现在您需要安装带有驱动程序的新板:
- 启动IDE
- 来自工具 菜单选择板 然后,在处理器列表的顶部,选择 Boards manager .
- 滚动新窗口(见图),直到找到包含新 MKR WiFi 1010 的 Arduino SAMD 板。
- 点击该标签或点击标签内的更多信息,选择最新版本并安装。
- 等待安装完成。它还会负责驱动程序的安装
- 您还需要一个新的用于该开发板的 WiFi 库:选择 Sketch、Include Library 和管理图书馆。 搜索 Wifinina 并按照使用上述处理器的方式进行安装。
现在连接您的新 Arduino 板并等待 Windows 完成驱动程序安装。
从工具->板 菜单中您会找到新板,选择 MKR WiFi 1010。
这个项目需要另一个特殊的库,它是 Giancarlo Bacchio 的 ESP8266TelegramBot 库。该库已稍作修改以与该板配合使用,因此它包含在草图的文件夹中。
选择正确的 com 端口并使用 Get Board Info 测试电路板 命令。
恭喜,您已经完成了 IDE!
第 3 步:创建 Telegram Bot 图> 图>
创建一个新的 Telegram 机器人非常简单。
打开 Telegram 应用程序,然后在搜索栏中输入 @BotFather 并开始与他聊天(图 1)。BotFather 是... Bot 工厂。它将帮助您创建一个新机器人并更改其设置。
在 /start 之后 命令你会看到帮助列表(图片2)。
- 输入 /newbot (image3) 现在输入您的机器人的名称。该姓名显示在联系方式和其他地方。
- BotFather 会要求您提供用户名。用户名是一个短名称,用于提及和 telegram.me 链接。用户名长度为 5-32 个字符,不区分大小写,但只能包含拉丁字符、数字和下划线。 您的机器人用户名必须以“bot”结尾,例如‘tetris_bot’ 或 ‘TetrisBot’ .
- 如果名称和用户名都有效,您将收到一长串称为 TOKEN 的字符。这是您用于与 Telegram 服务器通信的个人“密钥”。暂时将其复制并粘贴到 PC 上的文本文件中。我们稍后会在 Arduino 代码中使用它。如果你弄丢了别担心,只需重新打开聊天并输入 /token 生成一个新的。
这里描述了所有步骤:https://core.telegram.org/bots#6-botfather
高级 (可选)
重新打开聊天并输入 /help
点击(或输入)/setuserpic 为您的机器人上传图片。点击(或输入)/setabouttext 为您的机器人设置“关于”部分:人们将在机器人的个人资料页面上看到此文本,并且当他们与某人共享时,它将连同指向您的机器人的链接一起发送。
点击(或输入)/setdescription 为您的机器人设置描述部分。人们在与您的机器人打开聊天时会看到此说明,位于标题为“此机器人能做什么?”的区块中。
第 4 步:修改、上传和测试草图 图> 图> 图>
是时候将软件上传到 Arduino MKR WiFi 1010 板了。
下载随附的草图并解压,除非您知道自己在做什么,否则请不要更改名称和文件夹。
修改
打开草图,我们需要填写一些信息(图1),
转到 arduino_secrets.h 选项卡:
- 找到 WiFi 网络信息并输入您的网络名称 (SSID) 和密码。
- 找到电报机器人信息并输入@BotFather提供的名称、用户名和令牌
上传
确保 ide 中的电路板是正确的 (image2) 并已连接,然后尝试编译代码。如果编译顺利,上传到板子上,只需几秒钟。
如果出现问题,请检查拼写错误并重试。
测试
[重要!] 草图将日志发送到 IDE。处理器有一个本地 USB 端口(如 Leonardo 板)。一旦通电,代码将等待串行监视器运行。因此,让它连接到PC并打开串行监视器。 Arduino 将首先连接到互联网,然后它将开始轮询 Telegram 服务器以获取新消息(图 3)。
现在在您的首选设备上打开 Telegram,然后在搜索框中输入您的机器人的名称(而不是以“bot”结尾的用户名)。与它开启聊天。
开始与机器人聊天的第一个命令是 /start , 我们的 Arduino 将回复一条欢迎信息。现在输入 help (不带斜线),它会回答一个支持的命令列表,你可以全部尝试(图4)。
你已经完成了测试,如果有什么不工作,请检查草图中输入的信息(姓名、用户名、令牌...)
证书 如果您在连接到电报服务器时遇到错误(日志:Bot 未连接):
- 打开工具->Wifi101/wifinina 更新程序
- 确保您的电路板已连接,检查更新工具左侧的端口,电路板必须在那里
- 点击打开更新程序草图并将其上传到开发板
- 上传后,在更新程序中为您的主板选择最新的固件,然后点击更新固件
- 更新后,在更新程序的 SSL 证书部分,单击添加域,在对话框中写入 telegram.org:443,然后按 OK。
- 点击将证书上传到 wifi 模块
- 将此草图上传到板上
第 5 步:改进
查看代码,实现新命令并回答用户非常简单。
新命令
您可以为每个新命令编写一个子命令。每个 sub 将负责完成命令并(最终)向用户返回状态信息。
限制用户
当然这个项目只是一个演示。任何 Telegram 用户都可以连接到您的家并发送不需要的命令。你不想要这个!
好吧,看看 image1,它显示了 2 个连接的用户。如您所见,每个用户都有自己的用户 ID。通过在代码方面做一些工作,您可以只为授权用户过滤(或建立一个列表)。只需研究代码并尝试拦截用户ID号。然后只执行来自知名用户的命令。
硬件
在硬件方面,很多传感器和继电器可以连接到Arduino的I/O引脚。
注意:这个项目中使用的板子是 3.3V 耐受的!!!必要时使用电压电平转换器!有关此板的更多信息和提示,请阅读此处:https://www.arduino.cc/en/Guide/MKRWiFi1010
就这样,尽情享受吧!
代码
- MKR1010Bot_V1_02.zip
MKR1010Bot_V1_02.zipC/C++
Telegram Bot 草图无预览(仅限下载)。
制造工艺