Telegram是与Raspberry Pi结合使用的最佳应用程序,可用于我们所有的移动控制目的。它具有良好的开发人员支持,并且计划很快发布许多功能以增强Telegram Bots的性能。在之前的教程中,我们学习了如何为树莓派设置电报机器人,还学会了与之聊天并共享图像,文档和音频文件。
现在,我们将通过学习如何使用Telegram来控制Raspberry Pins上的GPIO引脚来进行下一步,以便为我们的机器人提供一些硬件支持。在本教程中,我们将四个LED连接到Raspberry Pi GPIO引脚,并使用Telegram的自然语言(如聊天)切换它们。听起来很有趣吧?让我们开始吧。
所需材料:
- 四个LED(任何颜色)
- Raspberry Pi(具有互联网连接)
- 面包板
- 连接线
先决条件:
在继续学习本教程之前,请确保您的Raspberry Pi已连接到Internet,并且可以在Pi上运行python程序。还请阅读上一教程,以了解如何使用Raspberry Pi Pi设置Telegram机器人,因为我假设您熟悉该知识,可以继续进行该项目。
如果您不熟悉Raspberry Pi,请按照我们的Raspberry Pi简介文章和其他Raspberry Pi教程进行操作。
电路原理图:
使用Raspberry Pi和Telegram Android App控制LED的电路图不过是四个LED和一些连接线。由于Raspberry Pi GPIO引脚在3.3V TTL上工作,因此我们不需要限流电阻。请按照下面的电路连接LED。
下表将帮助您确定连接四个LED的引脚号和GPIO编号。
LED端子 |
针号 |
GPIO编号 |
绿色阳极 |
销31 |
GPIO 6 |
红色阳极 |
销33 |
GPIO 13 |
黄色阳极 |
销35 |
GPIO 19 |
白阳极 |
销37 |
GPIO 26 |
四个阴极 |
销39 |
地面 |
下面是根据上面给出的表格连接了四个LED的电路图:
连接完成后,您的硬件设置应如下所示。
Raspberry Python程序:
硬件准备好后,我们可以继续使用Python程序。在此程序中,我们必须读取Telegram机器人发送的数据(消息)并相应地切换LED。为了使其更自然,我们可以检查单词并进行相应处理,而不是检查每个句子并在程序中对这些句子进行硬编码。
因此,该程序将主要检查两个单词,它们是打开还是关闭。一旦检测到这两个单词中的任何一个,它将寻找其他关键字,例如白色,黄色,绿色和红色。仅当检测到单词时,相应的彩色LED才会切换。我们还将更新检测到的单词的字符串,以将消息发送回电报机器人。
该完整的程序可以在这个页面的底部找到; 在下面,我通过将程序分解为有意义的小片段来对其进行了说明。
为了使该程序正常工作,我们需要在Raspberry Pi中下载并导入 电传机 。在之前的教程中,我们已经在Raspberry Pi中下载了瞬移,因此现在我们只需要将其连同GPIO库一起导入到我们的程序中,如下所示。
导入RPi.GPIO作为GPIO从telepot.loop导入Telepot导入MessageLoop
我们将使用此程序控制LED灯,并且LED的颜色将为白色,黄色,红色和绿色。它们连接到电路图中所示的引脚。让我们根据它们的颜色定义这些LED的引脚名称,以便在程序中使用它们。
白色= 26黄色= 19红色= 13绿色= 6
下一步是将所有这些LED引脚定义为输出引脚,并使用下面的行将它们默认情况下定义为关闭。
#LED白色GPIO.setup(白色,GPIO.OUT)GPIO.output(白色,0)#初始关闭#LED黄色GPIO.setup(黄色,GPIO.OUT)GPIO.output(黄色,0)#初始关闭#LED红色GPIO.setup(红色,GPIO.OUT)GPIO.output(红色,0)#初始关闭#LED绿色GPIO.setup(绿色,GPIO.OUT)GPIO.output(绿色,0)#初始关闭
正如我们在上一教程中了解到的那样,Raspberry机器人必须执行的所有操作都将在function action内部定义。在这里,我们必须使机器人监听来自手机的消息,将其与某些关键字进行比较,并相应地切换LED。
对于我们从移动设备发送的每条消息,都会有一个聊天ID和命令。程序需要此聊天ID才能回复发件人。因此,我们保存了聊天ID和消息,如下所示。
chat_id =信息命令=信息
现在,我们从电话发送的任何内容都将被保存为字符串,并保存在variable 命令中 。因此,我们要做的就是检查此变量中的关键字。Python有一个使这里变得容易的命令。例如,如果我们必须检查 命令 变量中存储的字符串中是否存在单词“ on”,则可以简单地使用下面的行。
如果在命令中“打开”:
同样,我们检查所有关键字,一旦收到“ on”,我们便继续检查用户提到的颜色。同样的命令也可以通过比较相同的关键字来完成此操作。我们还更新了一个名为 message 的字符串,该字符串可以作为状态消息回复给用户。
如果命令中的'on'为:message =“打开”如果命令中的'white'为:message =消息+“ white” GPIO.output(white,1)如果命令中的'yellow'为:message =消息+“ yellow” GPIO.output(yellow,1)如果命令中的'red'是:message = message +“ red” GPIO.output(red,1)如果命令中的'red'是“ green”:message = message +“ green” GPIO.output(green,1 )如果命令中的'all':message = message +“ all” GPIO.output(white,1)GPIO.output(yellow,1)GPIO.output(red,1)GPIO.output(green,1)message = message +“灯” telegram_bot.sendMessage(聊天ID,消息)
如上所示,我们仅在搜索特定的LED时就寻找诸如“绿色”,“白色”,“红色”,“黄色”和“全部”以及“打开”之类的关键字。作业完成后,我们会向用户发送有关刚刚发生的事情的消息。该相同的方法可用于关灯关井。
如果在命令中使用“ off”:消息=“关闭”如果在命令中使用“ white”:消息=消息+“白色” GPIO.output(white,0)如果在命令中使用“ yellow”:消息=消息+“黄色” GPIO.output(yellow,0)如果在命令中使用'red':message = message +“ red” GPIO.output(red,0)如果在命令中使用'green':message = message +“ green” GPIO.output(green,0 )如果命令中的'all':message = message +“ all” GPIO.output(white,0)GPIO.output(yellow,0)GPIO.output(red,0)GPIO.output(green,0)message = message +“灯” telegram_bot.sendMessage(聊天ID,消息)
使用Raspberry Pi和Telegram机器人控制LED:
连接您的LED并在python上启动程序。确保更改了机器人的令牌地址。并开始输入所需的命令。例如,要打开红灯和黄灯,可以使用以下任何命令。
1.打开红色和黄色的光
2.Switch上红色和黄色的色彩权
3.红色和黄色
4.请把上的黄色和红色的光
如您所见,该漫游器仅查找关键字,而将忽略句子中的其他单词,因此您可以自然地对其说话。您可以在本页末尾的视频中找到该项目的完整工作。
前进!玩项目,玩得开心。您现在可以将其提升到一个全新的水平。通过将这两个教程结合在一起,我们可以控制智能手机在世界任何地方的任何硬件,还可以通过Raspberry Pi以消息,音频,图像甚至文档的形式获取输入/结果。如果将LED替换为继电器和AC设备,则可能是由智能手机控制的家庭自动化。因此,发挥您的创造力并建立自己的出色项目…
希望您喜欢这个项目并喜欢构建类似的东西。如果您有任何问题,请通过评论栏告诉我,我们将竭诚为您服务。另外,请与我分享您的好主意,让我们看看我们可以做什么。