0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技观察员 来源:circuitdigest 作者:阿斯文斯·拉吉 2022-11-30 17:22 次阅读

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

现在,我们将继续下一步,学习如何使用 Telegram 控制树莓引脚上的 GPIO 引脚,以便我们为机器人提供一些硬件支持。在本教程中,我们将四个 LED 连接到 Raspberry Pi GPIO 引脚,并使用 Telegram 中的自然语言(像聊天一样)切换它们。听起来很有趣吧?让我们开始吧。

所需材料:

四个指示灯(任何颜色)

树莓派(带互联网连接)

面包板

连接线

先决条件:

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

如果您不熟悉树莓派,请按照我们的树莓派介绍文章和其他树莓派教程进行操作。

电路图:

使用Raspberry Pi和Telegram Android应用程序控制LED的电路图无非是四个LED和一些连接线。我们不需要限流电阻,因为Raspberry Pi GPIO引脚在3.3V TTL上工作。按照下面的电路连接您的 LED。

下表将帮助您确定连接四个 LED 的引脚编号和 GPIO 编号。

发光二极管端子 引脚编号 通用信息办公室编号
绿色阳极 引脚 31 GPIO 6
红色阳极 引脚 33 通用信息总局 13
黄色阳极 引脚 35 GPIO 19
白色阳极 引脚 37 GPIO 26
所有四个阴极 引脚 39

下面是根据上表连接四个LED的电路图:

pYYBAGOHIOyAB7KyAACmYU1fQ_Q374.png

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

poYBAGOHIO6AOp7nAADWg6IagZI936.jpg

Raspberry Python Program:

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

因此,程序将主要检查两个单词,它们是打开和关闭的。一旦检测到这两个单词中的任何一个,它将查找其他关键字,如白色、黄色、绿色和红色。仅当检测到单词时,才会切换相应的颜色 LED。我们还将更新检测到的单词的字符串,以将消息发送回电报机器人。

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

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

import RPi.GPIO as GPIO
import telepot
from telepot.loop import MessageLoop
我们将使用此程序控制 LED 灯,LED 的颜色将为白色、黄色、红色和绿色。它们连接到电路图所示的引脚;让我们根据颜色定义这些LED的引脚名称,以便在程序中使用它们。

white = 26
yellow = 19
red = 13
green = 6
下一步是将所有这些 LED 引脚定义为输出引脚,并使用以下行将它们定义为默认关闭。

#LED White
GPIO.setup(white, GPIO.OUT)
GPIO.output(white, 0) #Off initially
#LED Yellow
GPIO.setup(yellow, GPIO.OUT)
GPIO.output(yellow, 0) #Off initially
#LED Red
GPIO.setup(red, GPIO.OUT)
GPIO.output(red, 0) #Off initially
#LED green
GPIO.setup(green, GPIO.OUT)
GPIO.output(green, 0) #Off initially
正如我们在前面的教程中学到的那样,Raspberry 机器人必须完成的所有操作都将在函数操作中定义。在这里,我们必须让机器人收听从移动设备发送的消息,将其与某些关键字进行比较并相应地切换 LED。

对于我们从移动设备发送的每条消息,都会有一个聊天ID和命令。程序需要此聊天 ID 才能回复发件人。因此,我们保存聊天ID和消息,如下所示。

chat_id = msg['chat']['id']
command = msg['text']

现在,我们从手机发送的任何内容都将在变量命令中保存为字符串。因此,我们所要做的就是检查此变量中的关键字。Python有一个命令使事情变得简单。例如,如果我们必须检查存储在命令变量中的字符串中是否存在单词“on”,我们可以简单地使用以下行。

if 'on' in command:
同样,我们检查所有关键字,一旦收到“on”,我们继续检查用户提到的颜色。这也是通过比较相同的关键字来使用相同的命令来完成的。我们还更新名为 message 的字符串,该字符串可以作为状态消息回复给用户。

if 'on' in command:
message = "Turned on "
if 'white' in command:
message = message + "white "
GPIO.output(white, 1)
if 'yellow' in command:
message = message + "yellow "
GPIO.output(yellow, 1)
if 'red' in command:
message = message + "red "
GPIO.output(red, 1)
if 'green' in command:
message = message + "green "
GPIO.output(green, 1)
if 'all' in command:
message = message + "all "
GPIO.output(white, 1)
GPIO.output(yellow, 1)
GPIO.output(red, 1)
GPIO.output(green, 1)
message = message + "light(s)"
telegram_bot.sendMessage (chat_id, message)
如上所示,我们仅查找“绿色”、“白色”、“红色”、“黄色”和“全部”和“打开”等关键字。工作完成后,我们会向用户发送一条关于刚刚发生的事情的消息。同样的方法可以用来关灯。

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 "
GPIO.output(white, 0)
GPIO.output(yellow, 0)
GPIO.output(red, 0)
GPIO.output(green, 0)
message = message + "light(s)"
telegram_bot.sendMessage (chat_id, message)

使用 Raspberry Pi 和 Telegram bot 控制 LED:

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

1.开启红黄灯

2.打开红色和黄色右边

3.关于红色和黄色

4.请亮起黄灯和红灯

什么不是。

如您所见,机器人仅查找关键字,并会忽略句子中的其他单词,这样您就可以自然地与之交谈。该项目的完整工作可以在本页末尾的视频中找到。

pYYBAGOHIO-AYVJyAADNcV4r1qQ152.jpg

import time, datetime

import RPi.GPIO as GPIO

import telepot

from telepot.loop import MessageLoop


white = 26

yellow = 19

red = 13

green = 6


now = datetime.datetime.now()

GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False)





#LED White

GPIO.setup(white, GPIO.OUT)

GPIO.output(white, 0) #Off initially

#LED Yellow

GPIO.setup(yellow, GPIO.OUT)

GPIO.output(yellow, 0) #Off initially

#LED Red

GPIO.setup(red, GPIO.OUT)

GPIO.output(red, 0) #Off initially

#LED green

GPIO.setup(green, GPIO.OUT)

GPIO.output(green, 0) #Off initially



def action(msg):

chat_id = msg['chat']['id']

command = msg['text']


print 'Received: %s' % command


if 'on' in command:

message = "Turned on "

if 'white' in command:

message = message + "white "

GPIO.output(white, 1)

if 'yellow' in command:

message = message + "yellow "

GPIO.output(yellow, 1)

if 'red' in command:

message = message + "red "

GPIO.output(red, 1)

if 'green' in command:

message = message + "green "

GPIO.output(green, 1)

if 'all' in command:

message = message + "all "

GPIO.output(white, 1)

GPIO.output(yellow, 1)

GPIO.output(red, 1)

GPIO.output(green, 1)

message = message + "light(s)"

telegram_bot.sendMessage (chat_id, message)



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 "

GPIO.output(white, 0)

GPIO.output(yellow, 0)

GPIO.output(red, 0)

GPIO.output(green, 0)

message = message + "light(s)"

telegram_bot.sendMessage (chat_id, message)





telegram_bot = telepot.Bot('470583174:AAG7MPZc93qchp-tjqA_K2meRYcQiOR7X7Y')

print (telegram_bot.getMe())


MessageLoop(telegram_bot, action).run_as_thread()

print 'Up and Running....'


while 1:

time.sleep(10)



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    116

    文章

    1686

    浏览量

    105439
  • gpio引脚
    +关注

    关注

    0

    文章

    7

    浏览量

    2622
收藏 人收藏

    评论

    相关推荐

    树莓控制gpio

    树莓派在哪里编写程序控制gpio引脚
    发表于 07-23 09:05

    如何在树莓派上安装系统

    如何在树莓派上安装系统
    发表于 11-17 16:17

    树莓派MCC118

    +,B +,2和3型号上。HAT 配置HAT配置参数已存储在采集卡EEPROM中,允许树莓派在连接HAT时自动设置GPIO引脚。可堆叠HATs最多可将8个MCC HAT堆叠到单个树莓
    发表于 01-21 09:22

    通过Python RPi.GPIO控制树莓引脚

    零、汇总通过Python RPi.GPIO 控制树莓引脚输出高低电平、脉冲电平驱动器接收接收树莓派信号,驱动57步进电机工作一、
    发表于 08-31 07:59

    HiHope的产品,是否有类似于树莓派的GPIO引脚的设计?

    【对比树莓派】使用过树莓派产品的人都知道:树莓派上GPIO引脚(如下图)。通过
    发表于 07-14 10:40

    树莓gpio接口及编程方法

    GPIO(GeneralPurposeI/OPorts)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。GPIO
    发表于 11-22 11:54 6.5w次阅读

    树莓派上MAX7219的字符驱动程序编写

    本文主要介绍了在树莓派上MAX7219的字符驱动程序编写。拿到MAX7219驱动的LED矩阵,第一件事是先连接并尝试显示图案。使用MAX7219除了需要提供GND以及VCC外,只需要再提供三根引脚
    发表于 01-17 11:16 6976次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派上</b>MAX7219的字符驱动程序编写

    怎样在树莓派上使用Telegram发送和接收消息

    Telegram是Android,iOS和Windows上提供的即时消息服务电话。
    的头像 发表于 07-31 17:52 5801次阅读

    怎样在树莓派上设置Telegram Bot

      我希望本教程可以帮助您首次在Raspberry Pi上设置Telegram Bot。正如我所说,这仅仅是一个开始。只要您可以与Pi进行通信,就可以告诉它做任何您想做的事,也可以告诉它告诉您它想做的事。
    的头像 发表于 09-26 15:33 3204次阅读

    如何在树莓派上运行Fedora

    树莓派基金会这几年来生产了很多型号。本文的安装过程已经在第三代树莓派上进行了测试:3B v1.2 和 B+(较旧的 树莓派 2 和新的 树莓
    的头像 发表于 09-08 14:12 3723次阅读

    如何将ubuntu安装到树莓派上

    本文将描述如何将ubuntu安装到树莓派上。环境介绍:
    的头像 发表于 08-08 14:49 2772次阅读

    用网页控制树莓派的GPIO引脚

    电子发烧友网站提供《用网页控制树莓派的GPIO引脚.zip》资料免费下载
    发表于 11-16 14:57 1次下载
    用网页<b class='flag-5'>控制</b><b class='flag-5'>树莓</b>派的<b class='flag-5'>GPIO</b><b class='flag-5'>引脚</b>

    树莓派上的Kubernetes

    电子发烧友网站提供《树莓派上的Kubernetes.zip》资料免费下载
    发表于 11-17 11:19 0次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派上</b>的Kubernetes

    如何在树莓派上面安装Windows

    早期,想要在树莓派上面安装Windows一直是个比较麻烦的事情,下载系统镜像,烧录、还有一系列复杂的配置。
    的头像 发表于 09-12 09:54 1717次阅读
    如何在<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>面安装Windows

    树莓gpio有什么用,树莓gpio接口及编程方法

    /Output,通用输入/输出)是树莓派提供的一组可编程的引脚,是树莓派与外部世界进行交互的重要桥梁。通过GPIO,用户可以控制外部电路,读
    的头像 发表于 10-22 18:09 299次阅读