当前位置:首页>科技 >内容

如何使用Telegram控制树莓派上的GPIO引脚

2024-05-06 23:32:51科技漂亮的斑马

电报是与树莓派结合的最佳应用,它用于我们所有的移动控制目的。它拥有非常好的开发者支持,并计划很快发布许多功能来提高电报机器人的性能

如何使用Telegram控制树莓派上的GPIO引脚

电报是与树莓派结合的最佳应用,它用于我们所有的移动控制目的。它拥有非常好的开发者支持,并计划很快发布许多功能来提高电报机器人的性能。

现在,我们将进入下一步,学习如何使用Telegram来控制raspberry引脚上的GPIO引脚,以便我们可以为机器人提供一些硬件支持。在本教程中,我们将四个led连接到raspberry pigiopio引脚,并使用Telegram中的自然语言进行切换(如聊天)。听起来有趣吗?让我们开始吧。

所需材料:

四个指示器(任何颜色)

覆盆子馅饼(带互联网连接)

面包板

连接线

先决条件:

在继续本教程之前,请确保您的树莓派已连接到互联网,并且您可以在Pi上运行python程序。也请阅读之前的教程,了解如何使用树莓皮皮设置电报机器人,因为我假设你熟悉这些东西才能继续项目。

如果你不熟悉树莓派,请跟随我们的介绍文章和其他树莓派教程。

电路图:

用Raspberry Pi和Telegram Android应用控制led的电路图,无非就是四个led和一些连接线。我们不需要限流电阻,因为Raspberry Pi GPIO引脚工作在3.3V TTL。根据以下电路连接您的LED。

下表将帮助您确定连接四个指示灯的引脚号和GPIO号。

LED端子引脚编号综合信息局编号绿色阳极引脚31GPIO 6红色阳极引脚33综合信息局13黄色阳极引脚35GPIO 19白色阳极引脚37GPIO 26所有四个阴极引脚39接地

以下是根据上表连接四个led的电路图:

连接后,您的硬件设置应该如下。

树莓Python程序:

硬件准备好之后,我们就可以继续Python程序了。在这个程序中,我们必须读取电报机器人发送的数据(消息),并相应地切换LED。为了让它更自然,我们可以检查单词并据此行动,而不是检查每一句话并在程序中硬编码。

所以程序会主要检查两个字,开和关。一旦检测到任何一个单词,它就会寻找其他关键词,如白色、黄色、绿色和红色。只有当检测到一个单词时,才会切换相应的彩色LED。我们还将更新检测到的单词串,以将消息发送回电报机器人。

完整的程序可以在本页底部找到;就在下面,我通过把程序分解成有意义的小垃圾来解释它。

为了使程序正常工作,我们需要下载telepot并将其导入到我们的覆盆子馅饼中。在我们之前的教程中,我们已经下载了树莓派中的传输,所以现在我们只需要将它和GPIO库一起导入到我们的程序中,如下所示。

import rpi . gpio s gpio s gpio s import telepot from telepot . loop import message loop我们会用这个程序来控制LED灯,LED的颜色会是白、黄、红、绿。它们连接到电路图中所示的引脚;让我们根据它们的颜色来定义这些led的引脚名称,以便在程序中使用它们。White=26yellow=19red=13green=6下一步是将所有这些LED引脚定义为输出引脚,并使用以下代码行将其定义为默认关闭。#LED白色GPIO.setup(白色,GPIO。OUT)GPIO.output(白色,0)# Off initial # LED yellow GPIO . setup(黄色,GPIO。OUT)GPIO.output(黄色,0)# Off initially # LED red GPIO . setup(红色,GPIO。OUT)GPIO.output(红色,0)# Off initial # LED green GPIO . setup(绿色,GPIO。OUT)GPIO.output(green,0) #Off最初我们在上一个教程中已经了解到,树莓机器人必须完成的所有操作都会在函数操作中定义。在这里,我们必须让机器人听从移动设备发送的消息,将其与一些关键字进行比较,并相应地切换LED。对于我们从移动设备发送的每条消息,都会有一个聊天ID和命令。程序需要这个聊天ID来回复发送者。因此,我们保存聊天ID和消息,如下所示。chat _ id=msg[' chat '][' id ']command=msg[' text ']现在,我们从手机发送的任何内容都将作为字符串保存在变量command中。因此,我们要做的就是检查这个变量中的关键字。Python有一个让事情变得简单的命令。例如,如果我们必须检查命令变量中存储的字符串中是否存在单词“on ”,我们可以简单地使用下面的行。If 'on' in command:同样,我们检查所有的关键字,一旦收到“on”,就继续检查用户提到的颜色。这也是通过比较相同的关键字以使用相同的命令来完成的。我们还更新了名为message的字符串,它可以作为状态消息回复给用户。如果命令中为' on ' message=' Turned on '如果命令中为' white ' message=message ' white ' gpio . output(white,1)如果命令中为' yellow ' message=message ' yellow ' gpio . output(yellow,1)如果命令中为' red ' message=message ' red ' gpio . output(red,1)如果命令中为' green 'GPIO.output(green,1)如果命令中为' all ' message=message ' all ' all ' all ' gpio . output(white,1)。工作完成后,我们将向用户发送一条消息,告知刚刚发生了什么。同样的方法也可以用来关灯。if ' off in command:message=' Turned off ' if ' white in command:message=message ' white ' gpio . output(white,0)if ' yellow in command:message=message ' yellow ' gpio . output(yellow,0)if ' red in command:message=message ' red ' gpio . output(red,0)if ' green in command:message=message ' green ' gpio . output(green,0)if ' all in command:message=message ' all ' all ' all ' gpio . output(white,0)。

使用Raspberry Pi和Telegram bot控制LED:

连接您的LED并在python上启动您的程序。确保机器人的令牌地址已更改。并开始键入您想要的命令。例如,要打开红灯和黄灯,可以使用以下任何命令。

1.打开红色和黄色的灯

2.打开红色和黄色的右边。

3.关于红色和黄色

请打开黄灯和红灯。

什么?号码

正如你所看到的,机器人只寻找关键词,忽略句子中的其他单词,这样你就可以自然地与它对话。这个项目的完整工作可以在本页末尾的文章中找到。

导入时间,日期时间导入RPi .GPIO作为GPIO从telepot导入telepot。循环导入消息循环白色=26黄色=19红色=13绿色=6现在=日期时间。日期时间。now()GPIO。设置模式(GPIO .BCM)GPIO。设置警告(假)# LED白色GPIO。设置(白色,GPIO .OUT)GPIO.output(白色,0)# Off初始# LED黄色GPIO。设置(黄色,GPIO .OUT)GPIO.output(黄色,0)#最初关闭# LED红色GPIO。设置(红色,GPIO .OUT)GPIO.output(红色,0)# Off初始# LED绿色GPIO。设置(绿色,GPIO .OUT)GPIO.output(green,0)# Off initial y def action(msg):chat _ id=msg[' chat '][' id ']command=msg[' text ']print ' Received:% s ' % command if ' on in command:message=message ' white ' gpio。如果命令为“黄色”,则输出(白色,1 ): message=message ' red ' gpio。输出(白色,1)if '黄色in command:message=message ' red ' red ' gpio message)if ' off in command:message=' off ' if ' white in command:message=message ' white ' gpio。如果“命令中为黄色,则输出(白色,0):消息=消息“黄色”gpio。如果是“红色”gpio,则输出(黄色,0)。如果命令中的‘绿色’是输出(红色,0 ):消息=消息‘绿色’gpio。如果‘all in command:message=message ' all ' all ' all ' gpio,则输出(绿色,0)。输出(白色,0)bot(' 470583174:AAG 7 mpzc 93 qchp-tjqA _ k2 merycqior 7 x7y ')print(telegram _ bot。getme())消息循环(telegram _ bot,action).运行线程()打印"启动并运行…”而1:时间.睡眠(10)

声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们

Top