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

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

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

使用Adafruit IO作為MQTT控制Raspberry Pi GPIO的AC設(shè)備

科技觀察員 ? 來源:circuitdigest ? 作者:Rishabh Jain ? 2022-09-01 16:30 ? 次閱讀

在本教程中,我們將使用 Adafruit IO 作為 MQTT 代理來控制連接到 Raspberry Pi GPIO 的 AC 設(shè)備。

所需組件

安裝了 Raspbian Stretch 的 Raspberry Pi。

繼電器模塊

電燈泡

跳線

在這里,我們將使用 SSH 訪問筆記本電腦上的 Raspberry Pi。您可以在筆記本電腦上使用 VNC 或遠(yuǎn)程桌面連接,或者可以將您的 Raspberry pi 連接到顯示器。

電路原理

這個帶有 MQTT 云和樹莓派物聯(lián)網(wǎng)控制家電的電路圖很簡單,只需在樹莓派的 GPIO 引腳 35 上連接一個帶有繼電器模塊的燈泡。

poYBAGMQbOiARbUtAAEGtMapGzc982.png

pYYBAGMQbOSACJgVAAOv-ZWko8o183.png

在樹莓派上安裝 MQTT 云庫

這里Adafruit IO 平臺與 Raspberry Pi 一起用作 MQTT 代理。正如我們在之前的教程中多次使用Adafruit IO平臺一樣,我們可以在 Raspberry Pi 中使用它。

制作儀表板后,在 Raspberry Pi 中安裝一些庫以開始使用 MQTT。

1.首先,通過發(fā)出以下命令更新您的 Pi 和 Python

sudo apt-get update

sudo apt-get upgrade

sudo pip3 install --upgrade setuptools

2. 現(xiàn)在,使用以下命令安裝 Rpi.gpio 和 Adafruit blink 庫

sudo pip3 install RPI.GPIO

sudo pip3 install adafruit-blinka

3. 使用以下命令安裝 Adafruit IO 庫

sudo pip3 安裝 adafruit-io

4. 使用以下命令從 github 克隆 adafruit 示例

git 克隆 https://github.com/adafruit/Adafruit_IO_Python.git

5. 然后,通過在終端中輸入以下命令導(dǎo)航到示例文件夾:

cd Adafruit_IO_Python/examples/basics

如果你不確定你在哪個目錄,你可以通過運(yùn)行 pwd來檢查。

6. 對于此文件夾中的所有示例,您需要設(shè)置 ADAFRUIT_IO_KEY 和 ADAFRUIT_IO_USERNAME,這可以從 Adafruit 儀表板中找到。如下所示

poYBAGMQbOCAQUxJAAEBbrfIwWY757.png

切換 Adafruit IO 儀表板上的按鈕,您應(yīng)該在 Pi 的終端中看到以下內(nèi)容。

7. 現(xiàn)在,使用nano編輯器打開subscribe.py文件。輸入以下命令打開它

須藤納米訂閱.py

我們必須修改這個程序來控制儀表板上的任何 GPIO。

MQTT控制樹莓派GPIO的編碼說明

首先,導(dǎo)入所有必需的庫以使用 GPIO 引腳和 Adafruit MQTT 客戶端。

將 RPi.GPIO 導(dǎo)入為 GPIO
從 Adafruit_IO 導(dǎo)入sys導(dǎo)入 MQTTClient

現(xiàn)在,設(shè)置 GPIO 模式并定義 LED 引腳號并設(shè)置為輸出。

GPIO.setmode(GPIO.BOARD) 
GPIO.setwarnings(False) 
ledPin = 12 
GPIO.setup(ledPin, GPIO.OUT)

接下來,我們必須設(shè)置在創(chuàng)建儀表板時找到的 AIO 密鑰和用戶名。

ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' 
ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'

輸入您為打開和關(guān)閉燈而提供的提要名稱。在這里,它是“光”。

FEED_ID = '光'

現(xiàn)在,定義一個在有事件發(fā)生時將被調(diào)用的函數(shù)。因此,我們將使用client.subscribe(FEED_ID)訂閱 Feed

def connected(client): 
    client.subscribe(FEED_ID) 
    print('Waiting for feed data...')

訂閱提要后,我們必須檢查新值并將其存儲到有效負(fù)載變量中。為此消息函數(shù)被調(diào)用。因此,每當(dāng)有效載荷變量中有“1”時,將 LED 引腳設(shè)為高電平,“0”將其設(shè)為低電平。

def message(client, feed_id, payload): 
  print('Feed {0} received new value: {1}'.format(feed_id, payload)) 
  if payload == 1: 
       GPIO.output(ledPin, GPIO.HIGH) 
else :
      GPIO.輸出(ledPin,GPIO.LOW)

現(xiàn)在,創(chuàng)建一個 MQTT 客戶端來連接 Adafruit IO 平臺并來回發(fā)送消息。

client = MQTTClient(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) 
client.on_connect = 已連接
client.on_disconnect = 已斷開

另外,請注意代碼中的正確縮進(jìn),否則會顯示錯誤。教程末尾給出了完整的 Python 代碼。

最后,使用 ctrl+x 保存程序并回車?,F(xiàn)在,我們必須運(yùn)行腳本才能訂閱消息。所以在終端輸入python subscribe.py并回車。

python訂閱.py

您將看到一條消息正在等待 Feed 數(shù)據(jù)。..,如下圖所示。

現(xiàn)在,確保繼電器模塊與 Raspberry Pi 的 GPIO 引腳連接,然后轉(zhuǎn)到 Adafruit IO 儀表板并更改光饋。收到“ 1”時燈泡應(yīng)打開,收到“0”時應(yīng)關(guān)閉,如下圖所示。

pYYBAGMQbNmAHuEqAAGeFeUC9uw276.png

通過這種方式,我們可以使用 Raspberry Pi 和 MQTT 云從世界任何地方控制任何設(shè)備

將 RPi.GPIO 作為 GPIO

導(dǎo)入 sys

從 Adafruit_IO 導(dǎo)入 MQTTClient

GPIO.setmode(GPIO.BOARD)

GPIO.setwarnings(False)

ledPin = 12

GPIO.setup(ledPin, GPIO.OUT)

ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY'

ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'

FEED_ID = 'light'

def connected(client):

# 訂閱名為 Counter 的提要的更改。

print('訂閱 Feed {0}'.format(FEED_ID))

client.subscribe(FEED_ID)

print('正在等待 Feed 數(shù)據(jù)...')


def 斷開連接(客戶端):

sys.exit(1)


def message(client, feed_id, payload):

print('Feed {0} received new value: {1}'.format(feed_id, payload))

if payload == 1:

GPIO.output(ledPin, GPIO.HIGH)

else :

GPIO.output(ledPin, GPIO.LOW)

# 創(chuàng)建一個 MQTT 客戶端實例。

client = MQTTClient(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY)

# 設(shè)置上面定義的回調(diào)函數(shù)。

client.on_connect = 已連接

client.on_disconnect = 已斷開

client.on_message = 消息


# 連接到 Adafruit IO 服務(wù)器。

client.connect()

client.loop_blocking()

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

    關(guān)注

    16

    文章

    1184

    瀏覽量

    51752
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    641

    瀏覽量

    22362
收藏 人收藏

    評論

    相關(guān)推薦

    基于Amazon?Echo?和?Raspberry?Pi?的自動窗簾控制

    GPIO 的水晶頭網(wǎng)線一塊 Raspberry Pi 開發(fā)板與Raspberry Pi GPIO
    發(fā)表于 08-23 16:04

    黑科技!使用Raspberry Pi和Python GUI控制伺服電機(jī)(原理圖、源碼、項目教程)

    教程中,我們將介紹如何使用Raspberry Pi和Python TK GUI精確控制伺服。硬件組件:Raspberry Pi 3型號B.×
    發(fā)表于 10-16 16:49

    使用raspberry pi Pico的原因

    使用raspberry pi Pico的原因在硬件產(chǎn)品(單片機(jī))的開發(fā)中我們往往需要借助一些額外的儀器/設(shè)備進(jìn)行產(chǎn)品的輔助測試, 假設(shè)我們需要一個IO+ADC類型輔助
    發(fā)表于 02-07 09:16

    Raspberry Pi上的IO引腳編號有幾種方法

    一. 導(dǎo)入RPI.GPIOimport RPi.GPIO as GPIO二. 指定引腳編號方式RPi.GPIO中的Raspberry Pi
    發(fā)表于 02-17 06:33

    帶超頻冷卻孔徑的Raspberry Pi GPIO

    描述Raspberry Pi GPIO 帽,帶超頻冷卻孔徑這是一個 Raspberry Pi 帽子,它允許
    發(fā)表于 09-12 06:14

    如何使用ESP-01板通過MQTT和OpenHab使用Raspberry Pi控制LED?

    在這里寫了一篇非常基本的文章 ,但如果它對某人有用,我很樂意嘗試寫更多關(guān)于使用 ESP-01 板通過 MQTT 和 OpenHab 使用 Raspberry Pi 控制 LED 的正式
    發(fā)表于 05-24 07:34

    如何使用Thingsboard通過MQTT進(jìn)行Raspberry Pi GPIO控制

    為簡化此說明,我們在每個Thingboard安裝中可用的演示數(shù)據(jù)中都包含了“ Raspberry PI GPIO演示儀表板”。當(dāng)然,您可以修改此儀表板:調(diào)整,添加,刪除小部件等。您可以通過以租戶管理員身份登錄來訪問此儀表板。
    的頭像 發(fā)表于 10-12 14:32 ?1.7w次閱讀
    如何使用Thingsboard通過<b class='flag-5'>MQTT</b>進(jìn)行<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>GPIO</b><b class='flag-5'>控制</b>

    Raspberry Pi GPIO帽開源分享

    電子發(fā)燒友網(wǎng)站提供《Raspberry Pi GPIO帽開源分享.zip》資料免費(fèi)下載
    發(fā)表于 08-18 11:01 ?2次下載
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>GPIO</b>帽開源分享

    用于40針Raspberry Pi型號的GPIO分線板

    電子發(fā)燒友網(wǎng)站提供《用于40針Raspberry Pi型號的GPIO分線板.zip》資料免費(fèi)下載
    發(fā)表于 08-19 09:35 ?2次下載
    用于40針<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>型號的<b class='flag-5'>GPIO</b>分線板

    Raspberry Pi上安裝和測試MQTT進(jìn)行IoT通信

    在本教程中,我們將更多地了解 MQTT 及其相關(guān)術(shù)語。在這里,我們將使用Raspberry Pi 作為本地 MQTT 代理,并通過
    的頭像 發(fā)表于 09-06 15:14 ?2940次閱讀
    在<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>上安裝和測試<b class='flag-5'>MQTT</b>進(jìn)行IoT通信

    從Alexa控制Raspberry Pi(Linux設(shè)備

    電子發(fā)燒友網(wǎng)站提供《從Alexa控制Raspberry Pi(Linux設(shè)備).zip》資料免費(fèi)下載
    發(fā)表于 12-09 16:18 ?0次下載
    從Alexa<b class='flag-5'>控制</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>(Linux<b class='flag-5'>設(shè)備</b>)

    如何使用GPIO引腳將按鈕連接到Raspberry Pi

    電子發(fā)燒友網(wǎng)站提供《如何使用GPIO引腳將按鈕連接到Raspberry Pi.zip》資料免費(fèi)下載
    發(fā)表于 12-23 17:04 ?0次下載
    如何使用<b class='flag-5'>GPIO</b>引腳將按鈕連接到<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>

    Raspberry Pi Pico作為HID鼠標(biāo)

    電子發(fā)燒友網(wǎng)站提供《Raspberry Pi Pico作為HID鼠標(biāo).zip》資料免費(fèi)下載
    發(fā)表于 02-01 10:17 ?1次下載
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico<b class='flag-5'>作為</b>HID鼠標(biāo)

    Raspberry Pi GPIO引腳介紹

    近年來,Raspberry Pi因其可以用作可用于媒體和復(fù)古視頻游戲的廉價、兼容的Linux機(jī)器以及網(wǎng)絡(luò)設(shè)備而備受喜愛。
    的頭像 發(fā)表于 02-24 18:08 ?3212次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>GPIO</b>引腳介紹

    IO設(shè)備接入MQTT

    隨著物聯(lián)網(wǎng)的迅速發(fā)展,越來越多的IO設(shè)備需要與云平臺進(jìn)行通信,以實現(xiàn)遠(yuǎn)程監(jiān)控和控制。本文將基于EsDA開發(fā)套件快速實現(xiàn)將IO設(shè)備接入
    的頭像 發(fā)表于 09-28 08:26 ?691次閱讀
    <b class='flag-5'>IO</b><b class='flag-5'>設(shè)備</b>接入<b class='flag-5'>MQTT</b>