0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Telegram控制樹莓派上的GPIO引腳

科技觀察員 ? 來源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2022-11-30 17:22 ? 次閱讀

電報是與樹莓派結(jié)合的最佳應(yīng)用程序,用于我們所有的移動控制目的。它具有非常好的開發(fā)人員支持,并且計劃很快發(fā)布許多功能,以提高電報機器人的性能。

現(xiàn)在,我們將繼續(xù)下一步,學(xué)習(xí)如何使用 Telegram 控制樹莓引腳上的 GPIO 引腳,以便我們?yōu)闄C器人提供一些硬件支持。在本教程中,我們將四個 LED 連接到 Raspberry Pi GPIO 引腳,并使用 Telegram 中的自然語言(像聊天一樣)切換它們。聽起來很有趣吧?讓我們開始吧。

所需材料:

四個指示燈(任何顏色)

樹莓派(帶互聯(lián)網(wǎng)連接)

面包板

連接線

先決條件:

在繼續(xù)本教程之前,請確保您的樹莓派已連接到互聯(lián)網(wǎng),并且可以在 Pi 上運行 python 程序。另請閱讀前面的教程以了解如何使用Raspberry Pi Pi設(shè)置Telegram機器人,因為我假設(shè)您熟悉這些東西以繼續(xù)進(jìn)行該項目。

如果您不熟悉樹莓派,請按照我們的樹莓派介紹文章和其他樹莓派教程進(jìn)行操作。

電路圖:

使用Raspberry Pi和Telegram Android應(yīng)用程序控制LED的電路圖無非是四個LED和一些連接線。我們不需要限流電阻,因為Raspberry Pi GPIO引腳在3.3V TTL上工作。按照下面的電路連接您的 LED。

下表將幫助您確定連接四個 LED 的引腳編號和 GPIO 編號。

發(fā)光二極管端子 引腳編號 通用信息辦公室編號
綠色陽極 引腳 31 GPIO 6
紅色陽極 引腳 33 通用信息總局 13
黃色陽極 引腳 35 GPIO 19
白色陽極 引腳 37 GPIO 26
所有四個陰極 引腳 39

下面是根據(jù)上表連接四個LED的電路圖:

pYYBAGOHIOyAB7KyAACmYU1fQ_Q374.png

連接后,您的硬件設(shè)置應(yīng)如下所示。

poYBAGOHIO6AOp7nAADWg6IagZI936.jpg

Raspberry Python Program:

硬件準(zhǔn)備就緒后,我們可以繼續(xù)進(jìn)行 Python 程序。在這個程序中,我們必須讀取從電報機器人發(fā)送的數(shù)據(jù)(消息)并相應(yīng)地切換 LED。為了使它更自然,我們可以檢查單詞并相應(yīng)地進(jìn)行相應(yīng)的操作,而不是檢查每個句子并在程序中對這些句子進(jìn)行硬編碼。

因此,程序?qū)⒅饕獧z查兩個單詞,它們是打開和關(guān)閉的。一旦檢測到這兩個單詞中的任何一個,它將查找其他關(guān)鍵字,如白色、黃色、綠色和紅色。僅當(dāng)檢測到單詞時,才會切換相應(yīng)的顏色 LED。我們還將更新檢測到的單詞的字符串,以將消息發(fā)送回電報機器人。

完整的程序可以在此頁面底部找到;就在下面,我通過將程序分解為有意義的小垃圾來解釋該程序。

為了使該程序正常工作,我們需要將telepot下載并導(dǎo)入到我們的樹莓派中。在我們之前的教程中,我們已經(jīng)在樹莓派中下載了傳送,所以現(xiàn)在我們只需要將其與 GPIO 庫一起導(dǎo)入我們的程序,如下所示。

import RPi.GPIO as GPIO
import telepot
from telepot.loop import MessageLoop
我們將使用此程序控制 LED 燈,LED 的顏色將為白色、黃色、紅色和綠色。它們連接到電路圖所示的引腳;讓我們根據(jù)顏色定義這些LED的引腳名稱,以便在程序中使用它們。

white = 26
yellow = 19
red = 13
green = 6
下一步是將所有這些 LED 引腳定義為輸出引腳,并使用以下行將它們定義為默認(rèn)關(guān)閉。

#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
正如我們在前面的教程中學(xué)到的那樣,Raspberry 機器人必須完成的所有操作都將在函數(shù)操作中定義。在這里,我們必須讓機器人收聽從移動設(shè)備發(fā)送的消息,將其與某些關(guān)鍵字進(jìn)行比較并相應(yīng)地切換 LED。

對于我們從移動設(shè)備發(fā)送的每條消息,都會有一個聊天ID和命令。程序需要此聊天 ID 才能回復(fù)發(fā)件人。因此,我們保存聊天ID和消息,如下所示。

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

現(xiàn)在,我們從手機發(fā)送的任何內(nèi)容都將在變量命令中保存為字符串。因此,我們所要做的就是檢查此變量中的關(guān)鍵字。Python有一個命令使事情變得簡單。例如,如果我們必須檢查存儲在命令變量中的字符串中是否存在單詞“on”,我們可以簡單地使用以下行。

if 'on' in command:
同樣,我們檢查所有關(guān)鍵字,一旦收到“on”,我們繼續(xù)檢查用戶提到的顏色。這也是通過比較相同的關(guān)鍵字來使用相同的命令來完成的。我們還更新名為 message 的字符串,該字符串可以作為狀態(tài)消息回復(fù)給用戶。

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)
如上所示,我們僅查找“綠色”、“白色”、“紅色”、“黃色”和“全部”和“打開”等關(guān)鍵字。工作完成后,我們會向用戶發(fā)送一條關(guān)于剛剛發(fā)生的事情的消息。同樣的方法可以用來關(guān)燈。

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.關(guān)于紅色和黃色

4.請亮起黃燈和紅燈

什么不是。

如您所見,機器人僅查找關(guān)鍵字,并會忽略句子中的其他單詞,這樣您就可以自然地與之交談。該項目的完整工作可以在本頁末尾的視頻中找到。

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)



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 樹莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1684

    瀏覽量

    105413
  • gpio引腳
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    2622
收藏 人收藏

    評論

    相關(guān)推薦

    樹莓控制gpio

    樹莓派在哪里編寫程序控制gpio引腳
    發(fā)表于 07-23 09:05

    樹莓派MCC118

    +,B +,2和3型號上。HAT 配置HAT配置參數(shù)已存儲在采集卡EEPROM中,允許樹莓派在連接HAT時自動設(shè)置GPIO引腳??啥询BHATs最多可將8個MCC HAT堆疊到單個樹莓
    發(fā)表于 01-21 09:22

    通過Python RPi.GPIO控制樹莓引腳

    零、匯總通過Python RPi.GPIO 控制樹莓引腳輸出高低電平、脈沖電平驅(qū)動器接收接收樹莓派信號,驅(qū)動57步進(jìn)電機工作一、
    發(fā)表于 08-31 07:59

    HiHope的產(chǎn)品,是否有類似于樹莓派的GPIO引腳的設(shè)計?

    【對比樹莓派】使用過樹莓派產(chǎn)品的人都知道:樹莓派上GPIO引腳(如下圖)。通過
    發(fā)表于 07-14 10:40

    樹莓gpio接口及編程方法

    GPIO(GeneralPurposeI/OPorts)意思為通用輸入/輸出端口,通俗地說,就是一些引腳,可以通過它們輸出高低電平或者通過它們讀入引腳的狀態(tài)-是高電平或是低電平。GPIO
    發(fā)表于 11-22 11:54 ?6.5w次閱讀

    樹莓派的gpio有什么用_怎么用

    樹莓派現(xiàn)在越來越火,網(wǎng)上樹莓派的資料也越來越多。樹莓派源自英國,國外嵌入式開源領(lǐng)域具有良好的分享精神,樹莓派各種集成庫也層出不窮,而GPIO
    發(fā)表于 12-06 09:05 ?1.6w次閱讀

    樹莓派上MAX7219的字符驅(qū)動程序編寫

    本文主要介紹了在樹莓派上MAX7219的字符驅(qū)動程序編寫。拿到MAX7219驅(qū)動的LED矩陣,第一件事是先連接并嘗試顯示圖案。使用MAX7219除了需要提供GND以及VCC外,只需要再提供三根引腳
    發(fā)表于 01-17 11:16 ?6952次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派上</b>MAX7219的字符驅(qū)動程序編寫

    怎樣在樹莓派上使用Telegram發(fā)送和接收消息

    Telegram是Android,iOS和Windows上提供的即時消息服務(wù)電話。
    的頭像 發(fā)表于 07-31 17:52 ?5779次閱讀

    怎樣在樹莓派上設(shè)置Telegram Bot

      我希望本教程可以幫助您首次在Raspberry Pi上設(shè)置Telegram Bot。正如我所說,這僅僅是一個開始。只要您可以與Pi進(jìn)行通信,就可以告訴它做任何您想做的事,也可以告訴它告訴您它想做的事。
    的頭像 發(fā)表于 09-26 15:33 ?3195次閱讀

    如何在樹莓派上運行Fedora

    樹莓派基金會這幾年來生產(chǎn)了很多型號。本文的安裝過程已經(jīng)在第三代樹莓派上進(jìn)行了測試:3B v1.2 和 B+(較舊的 樹莓派 2 和新的 樹莓
    的頭像 發(fā)表于 09-08 14:12 ?3703次閱讀

    如何將ubuntu安裝到樹莓派上

    本文將描述如何將ubuntu安裝到樹莓派上。環(huán)境介紹:
    的頭像 發(fā)表于 08-08 14:49 ?2754次閱讀

    用網(wǎng)頁控制樹莓派的GPIO引腳

    電子發(fā)燒友網(wǎng)站提供《用網(wǎng)頁控制樹莓派的GPIO引腳.zip》資料免費下載
    發(fā)表于 11-16 14:57 ?1次下載
    用網(wǎng)頁<b class='flag-5'>控制</b><b class='flag-5'>樹莓</b>派的<b class='flag-5'>GPIO</b><b class='flag-5'>引腳</b>

    樹莓派上的Kubernetes

    電子發(fā)燒友網(wǎng)站提供《樹莓派上的Kubernetes.zip》資料免費下載
    發(fā)表于 11-17 11:19 ?0次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派上</b>的Kubernetes

    如何在樹莓派上面安裝Windows

    早期,想要在樹莓派上面安裝Windows一直是個比較麻煩的事情,下載系統(tǒng)鏡像,燒錄、還有一系列復(fù)雜的配置。
    的頭像 發(fā)表于 09-12 09:54 ?1674次閱讀
    如何在<b class='flag-5'>樹莓</b><b class='flag-5'>派上</b>面安裝Windows

    樹莓gpio有什么用,樹莓gpio接口及編程方法

    /Output,通用輸入/輸出)是樹莓派提供的一組可編程的引腳,是樹莓派與外部世界進(jìn)行交互的重要橋梁。通過GPIO,用戶可以控制外部電路,讀
    的頭像 發(fā)表于 10-22 18:09 ?164次閱讀