使用Adafruit IO作為MQTT控制Raspberry Pi GPIO的AC設(shè)備
來(lái)源:互聯(lián)網(wǎng)發(fā)布者:司馬缸砸光 關(guān)鍵詞: GPIO MQTT 更新時(shí)間: 2024/05/17
在本教程中,我們將使用 Adafruit IO 作為 MQTT 代理來(lái)控制連接到 Raspberry Pi GPIO 的 AC 設(shè)備。
所需組件
安裝了 Raspbian Stretch 的 Raspberry Pi。
繼電器模塊
電燈泡
跳線
在這里,我們將使用 SSH 訪問(wèn)筆記本電腦上的 Raspberry Pi。您可以在筆記本電腦上使用 VNC 或遠(yuǎn)程桌面連接,或者可以將您的 Raspberry pi 連接到顯示器。
電路原理圖
這個(gè)帶有 MQTT 云和樹(shù)莓派的物聯(lián)網(wǎng)控制家電的電路圖很簡(jiǎn)單,只需在樹(shù)莓派的 GPIO 引腳 35 上連接一個(gè)帶有繼電器模塊的燈泡。
在樹(shù)莓派上安裝 MQTT 云庫(kù)
這里Adafruit IO 平臺(tái)與 Raspberry Pi 一起用作 MQTT 代理。正如我們?cè)谥暗慕坛讨卸啻问褂肁dafruit IO平臺(tái)一樣,我們可以在 Raspberry Pi 中使用它。
制作儀表板后,在 Raspberry Pi 中安裝一些庫(kù)以開(kāi)始使用 MQTT。
1.首先,通過(guò)發(fā)出以下命令更新您的 Pi 和 Python
sudo apt-get update
sudo apt-get upgrade
sudo pip3 install --upgrade setuptools
2. 現(xiàn)在,使用以下命令安裝 Rpi.gpio 和 Adafruit blink 庫(kù)
sudo pip3 install RPI.GPIO
sudo pip3 install adafruit-blinka
3. 使用以下命令安裝 Adafruit IO 庫(kù)
sudo pip3 安裝 adafruit-io
4. 使用以下命令從 github 克隆 adafruit 示例
git 克隆 https://github.com/adafruit/Adafruit_IO_Python.git
5. 然后,通過(guò)在終端中輸入以下命令導(dǎo)航到示例文件夾:
cd Adafruit_IO_Python/examples/basics
如果你不確定你在哪個(gè)目錄,你可以通過(guò)運(yùn)行 pwd來(lái)檢查。
6. 對(duì)于此文件夾中的所有示例,您需要設(shè)置 ADAFRUIT_IO_KEY 和 ADAFRUIT_IO_USERNAME,這可以從 Adafruit 儀表板中找到。如下所示
切換 Adafruit IO 儀表板上的按鈕,您應(yīng)該在 Pi 的終端中看到以下內(nèi)容。
7. 現(xiàn)在,使用nano編輯器打開(kāi)subscribe.py文件。輸入以下命令打開(kāi)它
須藤納米訂閱.py
我們必須修改這個(gè)程序來(lái)控制儀表板上的任何 GPIO。
MQTT控制樹(shù)莓派GPIO的編碼說(shuō)明
首先,導(dǎo)入所有必需的庫(kù)以使用 GPIO 引腳和 Adafruit MQTT 客戶端。
將 RPi.GPIO 導(dǎo)入為 GPIO 從 Adafruit_IO 導(dǎo)入sys導(dǎo)入 MQTTClient
現(xiàn)在,設(shè)置 GPIO 模式并定義 LED 引腳號(hào)并設(shè)置為輸出。
GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) ledPin = 12 GPIO.setup(ledPin, GPIO.OUT)
接下來(lái),我們必須設(shè)置在創(chuàng)建儀表板時(shí)找到的 AIO 密鑰和用戶名。
ADAFRUIT_IO_KEY = ’YOUR_AIO_KEY’ ADAFRUIT_IO_USERNAME = ’YOUR_AIO_USERNAME’
輸入您為打開(kāi)和關(guān)閉燈而提供的提要名稱。在這里,它是“光”。
FEED_ID = ’光’
現(xiàn)在,定義一個(gè)在有事件發(fā)生時(shí)將被調(diào)用的函數(shù)。因此,我們將使用client.subscribe(FEED_ID)訂閱 Feed
def connec
訂閱提要后,我們必須檢查新值并將其存儲(chǔ)到有效負(fù)載變量中。為此消息函數(shù)被調(diào)用。因此,每當(dāng)有效載荷變量中有“1”時(shí),將 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)建一個(gè) MQTT 客戶端來(lái)連接 Adafruit IO 平臺(tái)并來(lái)回發(fā)送消息。
client = MQTTClient(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = 已連接 client.on_disconnect = 已斷開(kāi)
另外,請(qǐng)注意代碼中的正確縮進(jìn),否則會(huì)顯示錯(cuò)誤。教程末尾給出了完整的 Python 代碼。
最后,使用 ctrl+x 保存程序并回車。現(xiàn)在,我們必須運(yùn)行腳本才能訂閱消息。所以在終端輸入python subscribe.py并回車。
python訂閱.py
您將看到一條消息正在等待 Feed 數(shù)據(jù)。..,如下圖所示。
現(xiàn)在,確保繼電器模塊與 Raspberry Pi 的 GPIO 引腳連接,然后轉(zhuǎn)到 Adafruit IO 儀表板并更改光饋。收到“ 1”時(shí)燈泡應(yīng)打開(kāi),收到“0”時(shí)應(yīng)關(guān)閉,如下圖所示。
通過(guò)這種方式,我們可以使用 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 斷開(kāi)連接(客戶端):
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)建一個(gè) MQTT 客戶端實(shí)例。
client = MQTTClient(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY)
# 設(shè)置上面定義的回調(diào)函數(shù)。
client.on_connect = 已連接
client.on_disconnect = 已斷開(kāi)
client.on_message = 消息
# 連接到 Adafruit IO 服務(wù)器。
client.connect()
client.loop_blocking()
這里還沒(méi)有內(nèi)容,您有什么問(wèn)題嗎?
電子電路資源推薦
- 電子門鈴PCB圖
來(lái)源:下載中心
- 數(shù)字電子技術(shù)基礎(chǔ) 第6版
來(lái)源:下載中心
- 電路理論基礎(chǔ)
來(lái)源:大學(xué)堂
- 電阻和電阻定律以及0歐電阻和上、下拉電阻的作用
來(lái)源:電路圖
- PFC電感計(jì)算
來(lái)源:大學(xué)堂
- 疊加原理:概念及其求解過(guò)程
來(lái)源:電路圖
推薦帖子 最新更新時(shí)間:2025-04-10 15:18
- EE TALK——你的第一個(gè)藍(lán)牙設(shè)備是什么?
- 與WiFi無(wú)線網(wǎng)絡(luò)技術(shù)相比, 藍(lán)牙 的優(yōu)勢(shì)是小巧、省電,非常適合體積較小、運(yùn)行功率很低、通信距離不長(zhǎng)的設(shè)備。之前藍(lán)牙標(biāo)準(zhǔn)的版本最高到4.1,而較為普及的是4.0。近日,藍(lán)牙技術(shù)聯(lián)盟(Bluetooth SIG)公布藍(lán)牙4.2核心技術(shù)標(biāo)準(zhǔn),據(jù)悉,新技術(shù)可以增強(qiáng)隱私保護(hù)
eric_wang
消費(fèi)電子
- 【LPC54100】+ 刷仿真器固件
- 昨天為了刷套件上的仿真器的固件,我重裝了系統(tǒng) ,原因是一直安裝不上的 net framework 4.5.1, 。如下圖的提示: 我嘗試了各種方法也不行,最總還是痛下心來(lái)重裝了系統(tǒng),最后成功安裝了軟件并升級(jí)的板子上自帶的仿真器的固件。這次的用到刷固件的軟件是 LPC-
強(qiáng)仔00001
NXP MCU
- dsp寫外部的sram
- dsp寫外部的sram,通過(guò)ccs中的memory來(lái)觀察寫進(jìn)去的結(jié)果。 但是現(xiàn)在的問(wèn)題是: 對(duì)一個(gè)地址寫操作,但是所有的地址內(nèi)容都變化。 例如:給地址0寫數(shù)據(jù)0x20,memory中顯示的是所有地址內(nèi)容都變成20。 可能是什么原因啊 希望大家提點(diǎn)意見(jiàn) dsp寫外部的sram 感
lilove751
嵌入式系統(tǒng)
- TI的NFC參考設(shè)計(jì)電路圖
- TI的NFC參考設(shè)計(jì)電路圖
dontium
無(wú)線連接
- 請(qǐng)幫忙推薦一個(gè)PIC單片機(jī)
- 之前用過(guò)PIC16系列16PIN的單片機(jī), 現(xiàn)在做一個(gè)新項(xiàng)目,要用到28PIN的單片機(jī),請(qǐng)高手指點(diǎn), 要求: 1.PIC16系列,28PIN, 2.10位AD,最多用3個(gè), 3.EEPROM不用, 4.價(jià)格在5RMB以下,方便采購(gòu) 請(qǐng)幫忙推薦一個(gè)PIC單片機(jī) 既然用過(guò),直接找代理
opal11
Microchip MCU
- 【學(xué)習(xí)Sitara™ AM335x】- booting linux
- 【學(xué)習(xí)Sitara™ AM335x】- booting linux 這個(gè)PPT是從哪下載的 我想要一份 請(qǐng)版主成全
chenzhufly
DSP 與 ARM 處理器
- STM8L測(cè)量脈寬
- orcad使用技巧
- STM32硬件設(shè)計(jì)指南
- 求教led數(shù)碼管顯示倒計(jì)時(shí)問(wèn)題
- TI新年活動(dòng),大家參加了嗎?
- “微信硬件創(chuàng)新大賽”武漢宣講會(huì)
- 【Altera SoC體驗(yàn)之旅】+ Lark上ARM開(kāi)發(fā)之編譯u-boot和內(nèi)核
- 5509A 的DMA中的DMACSR寄存器偶爾出現(xiàn)清除不了的現(xiàn)象
- DLP優(yōu)惠了!
- Z-Stack Mesh 1.0.0協(xié)議棧中的CC2530DB編譯出錯(cuò)的問(wèn)題
- 【Atmel SAM R21】無(wú)線點(diǎn)亮LED(視頻)
- TI SPI 總線
- 設(shè)置FIR濾波器的輸入數(shù)據(jù)位寬,系數(shù)位寬,長(zhǎng)度之間的關(guān)系
- Verilog 和 VHDL 的區(qū)別
- ARM異常中斷返回的幾種情況
- 誰(shuí)有msp430f5529驅(qū)動(dòng)TFT28的程序呀
- 照明產(chǎn)品雷擊浪涌抗擾度
- 關(guān)于乳白色/銀色貼片電容
- 430遠(yuǎn)程更新固件的問(wèn)題請(qǐng)教,急啊
- 三極管之靜態(tài)工作點(diǎn)三極管之靜態(tài)工作點(diǎn) 加精!!!!!
-
收藏 ×
已收藏到:個(gè)人中心—電路圖—收藏
- 分享
- 評(píng)論
- 提問(wèn)/討論
- LTC1275、12 位、300 ksps 采樣 A/D 轉(zhuǎn)換器和基準(zhǔn)電壓源的典型應(yīng)用
- MAP9003 演示板,使用 MAP9003 高壓交流 LED 驅(qū)動(dòng)器的演示板
- LTC3632IDD 小尺寸、有限峰值電流、4mA 穩(wěn)壓器的典型應(yīng)用電路
- LT6004 的典型應(yīng)用 - 雙路 1.6V、1 uA 精密軌至軌輸入和輸出運(yùn)算放大器
- KIT40XS6500EKEVB: 評(píng)估套件 - MC40XS6500EK,五通道高邊開(kāi)關(guān)
- LT4276AIUFD 25.5W(類型 2)PoE+ 電源在反激模式下的典型應(yīng)用電路,具有 3.3V、6.8A 輸出
- LTC4075HVX 的典型應(yīng)用 - 高壓雙輸入鋰離子/聚合物電池充電器
- AM1D-0512S-RZ 12V 1 瓦 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- 使用 Analog Devices 的 LTC1595ACS8 的參考設(shè)計(jì)
- 使用 NXP Semiconductors 的 TDA8920TH 的參考設(shè)計(jì)
- 微波電子線路
- 學(xué)習(xí)一段時(shí)間的網(wǎng)絡(luò)編程
- TPS2216,PDF(Dual-Slot PC Card Power-Interface Switch)
- 北方冬季室內(nèi)溫度控制系統(tǒng)的設(shè)計(jì)
- ISUP學(xué)習(xí)資料,中興通訊內(nèi)部
- 基于CAN總線的綜自通訊規(guī)約設(shè)計(jì)
- 好就好·模具網(wǎng)-Pro-E Wildfir(野火) 3_0使用小秘訣(4)-模具文章
- ICM7216 10MHz通用計(jì)數(shù)器 集成美電子元器件商行供應(yīng)
- CDN驗(yàn)證系統(tǒng)在P2P網(wǎng)絡(luò)中的應(yīng)用
- 汽車電子的嵌入式軟件編程接口庫(kù)設(shè)計(jì)
- 全球最低功耗WiFi RKi6000智能產(chǎn)品MWC亮相
- 芯課程 | 解析ICV LVS Explorer如何成為加速全芯片LVS收斂的利器
- 高電壓、高效率正至負(fù)轉(zhuǎn)換器,你需要嗎?
- 技術(shù)干貨 | 3D 霍爾效應(yīng)傳感器如何在自治系統(tǒng)中實(shí)現(xiàn)精準(zhǔn)的實(shí)時(shí)位置控制
- 低調(diào)的LoRa又有“大動(dòng)作”!
- 干貨|一文讀懂PCB中的模擬信號(hào)
- 了解 PI 全新 PowiGaN 開(kāi)關(guān)電源 IC ,答題贏好禮!
- 索尼最新的傳感器及其背后的技術(shù)
- 這些電影雖不能獲奧斯卡,但卻能讓你玩到爽!