在本教程中,我们将使用 Adafruit IO 作为 MQTT 代理来控制连接到 Raspberry Pi GPIO 的 AC 设备。
所需组件
安装了 Raspbian Stretch 的 Raspberry Pi。
继电器模块
电灯泡
跳线
在这里,我们将使用 SSH 访问笔记本电脑上的 Raspberry Pi。您可以在笔记本电脑上使用 VNC 或远程桌面连接,或者可以将您的 Raspberry pi 连接到显示器。
电路原理图
这个带有 MQTT 云和树莓派的物联网控制家电的电路图很简单,只需在树莓派的 GPIO 引脚 35 上连接一个带有继电器模块的灯泡。
在树莓派上安装 MQTT 云库
这里Adafruit IO 平台与 Raspberry Pi 一起用作 MQTT 代理。正如我们在之前的教程中多次使用Adafruit IO平台一样,我们可以在 Raspberry Pi 中使用它。
制作仪表板后,在 Raspberry Pi 中安装一些库以开始使用 MQTT。
1.首先,通过发出以下命令更新您的 Pi 和 Python
sudo apt-get update
sudo apt-get upgrade
sudo pip3 install --upgrade setuptools
2. 现在,使用以下命令安装 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. 然后,通过在终端中输入以下命令导航到示例文件夹:
cd Adafruit_IO_Python/examples/basics
如果你不确定你在哪个目录,你可以通过运行 pwd来检查。
6. 对于此文件夹中的所有示例,您需要设置 ADAFRUIT_IO_KEY 和 ADAFRUIT_IO_USERNAME,这可以从 Adafruit 仪表板中找到。如下所示
切换 Adafruit IO 仪表板上的按钮,您应该在 Pi 的终端中看到以下内容。
7. 现在,使用nano编辑器打开subscribe.py文件。输入以下命令打开它
须藤纳米订阅.py
我们必须修改这个程序来控制仪表板上的任何 GPIO。
MQTT控制树莓派GPIO的编码说明
首先,导入所有必需的库以使用 GPIO 引脚和 Adafruit MQTT 客户端。
将 RPi.GPIO 导入为 GPIO 从 Adafruit_IO 导入sys导入 MQTTClient
现在,设置 GPIO 模式并定义 LED 引脚号并设置为输出。
GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) ledPin = 12 GPIO.setup(ledPin, GPIO.OUT)
接下来,我们必须设置在创建仪表板时找到的 AIO 密钥和用户名。
ADAFRUIT_IO_KEY = ’YOUR_AIO_KEY’ ADAFRUIT_IO_USERNAME = ’YOUR_AIO_USERNAME’
输入您为打开和关闭灯而提供的提要名称。在这里,它是“光”。
FEED_ID = ’光’
现在,定义一个在有事件发生时将被调用的函数。因此,我们将使用client.subscribe(FEED_ID)订阅 Feed
def connec
订阅提要后,我们必须检查新值并将其存储到有效负载变量中。为此消息函数被调用。因此,每当有效载荷变量中有“1”时,将 LED 引脚设为高电平,“0”将其设为低电平。
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)
现在,创建一个 MQTT 客户端来连接 Adafruit IO 平台并来回发送消息。
client = MQTTClient(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = 已连接 client.on_disconnect = 已断开
另外,请注意代码中的正确缩进,否则会显示错误。教程末尾给出了完整的 Python 代码。
最后,使用 ctrl+x 保存程序并回车。现在,我们必须运行脚本才能订阅消息。所以在终端输入python subscribe.py并回车。
python订阅.py
您将看到一条消息正在等待 Feed 数据。..,如下图所示。
现在,确保继电器模块与 Raspberry Pi 的 GPIO 引脚连接,然后转到 Adafruit IO 仪表板并更改光馈。收到“ 1”时灯泡应打开,收到“0”时应关闭,如下图所示。
通过这种方式,我们可以使用 Raspberry Pi 和 MQTT 云从世界任何地方控制任何设备
将 RPi.GPIO 作为 GPIO
导入 sys
从 Adafruit_IO 导入 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 数据...’)
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)
# 创建一个 MQTT 客户端实例。
client = MQTTClient(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY)
# 设置上面定义的回调函数。
client.on_connect = 已连接
client.on_disconnect = 已断开
client.on_message = 消息
# 连接到 Adafruit IO 服务器。
client.connect()
client.loop_blocking()
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- 西门子工业网络通信技术详解
来源:下载中心
- 模拟cmos集成电路设计拉扎维课后习题答案
来源:下载中心
- 电路的基本物理量:电流,电压,电位,电动势,电功率
来源:电路图
- 戴维宁定理:概念介绍及其求解过程
来源:电路图
- 是德两分钟导师系列课程第二季
来源:大学堂
- 电源基础知识讲座
来源:大学堂
推荐帖子 最新更新时间:2024-11-13 08:54
- 【MSP430共享】.MSP430程序综合
- 这里面是一些小程序 ,有对flash ,1602(用1602显示AD值),串口,定时器的一些综合应用 希望msp430初学者能喜欢 【MSP430共享】.MSP430程序综合 感谢楼主了
- hangsky微控制器 MCU
- arm7TDMI 44b0 Bootloader分析
- 很适合初学者看看,多了解了解 arm7TDMI 44b0 Bootloader分析 看看还可以,虽然很小。顶了 回帖是美德,给虚拟世界一点真实!!!! 好资料,有用 看看~ 还要花钱买啊,为了看好的资料,看来得想法挣钱了 挣钱 CAO NI y DE hai yao qian
- hdujinhuihuiARM技术
- EEWORLD大学堂----一天攻破K60
- 桂花蒸单片机
- 开源自己DIY的CC2531_USB_Dongle
- 自己在做zigbee项目,由于没有什么工具,需要自己DIY一个CC2531_USB_Dongle工具,用于抓包,所以特别做了一个。 原理图 PCB 下面附资料: 1. TI的原理图 2. TI的抓包软件: 抓工具安装后会自动安装驱动 。 3. 我
- zhaojun_xf无线连接
- 开发一个Miniport driver如何注册一个NDIS_MINIPORT_CHARACTERISTICS结构
- 在WINCE 5.0环境下,开发NDIS网络程序,请问如何初始化Miniport driver,如何注册NDIS_MINIPORT_CHARACTERISTICS结构(具体如何操作)。 开发一个Miniport driver如何注册一个NDIS_MINIPORT_CHARACTE
- tddwp嵌入式系统
- DDS产生原理
- 我用DDS产生三种波形,频率在100Hz-1MHz之间,通过高速DAC900进行输出波形,可是输出的波形不好,尤其是在上到几百KHz的时候,正弦波就出现很多阶梯,方波就会出现过冲,三角波也不好看,,在低频的时候,也就是100Hz时,方波就会变斜了,这是为什么呢?要怎么解决上面的这
- 2801345525Altera SoC
- FPGA设计技巧与案例开发详解(第2版)
- 急需SCR型号
- 键盘接口与编程
- 寻找SAMSUNG S3C2440开发板
- 又一种高共模电流采样架构
- 【好书共读——《电子硬件工程师入职图解手册》】——④RS485通信故障案例分享<一>
- NUCLEO-L476RG适合做什么?
- CONNECT FAIL的问题
- 瑞萨开篇----秒表
- 关于单片机测量交流电频率的外围电路
- 帮忙算算模拟电路之间的运算
- 端口的操作会影响另一个端口的输出现
- 伺服电机转子反馈的检测相位与转子磁极相位的对齐方式
- 毕业设计求教
- EEWORLD下载中心精品资源推荐--学习UCOS必看的三本书
- 简述变频供水系统的一种设计方法
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) - 整理
- 求资料
- 2006年第一季度十大热门电源转换与电源管理芯片
- quartus 2中FPGA系统层次设计问题
- 使用 Analog Devices 的 LTC3130IUDC 的参考设计
- LT1236AILS8-5 高精度、高稳定性、差分测量系统电压基准的典型应用电路
- STM32F070F6开发板
- 哆啦A梦PCB板
- LT4275CHDD IEEE 802.3af (Type 1) 13W 受电器件的典型应用电路
- 使用 Analog Devices 的 LT1173CS8 的参考设计
- DER-357 - 12W非隔离式、功率因素校正(>0.95)LED驱动器,用于PAR20灯
- 使用 Analog Devices 的 LT1173CN8 的参考设计
- 使用 Micro Commercial Components 的 MC78M12CDT 的参考设计
- 四层核心