首页 > 微机单片机 >单片机制作 > 使用Adafruit IO作为MQTT控制Raspberry Pi GPIO的AC设备

使用Adafruit IO作为MQTT控制Raspberry Pi GPIO的AC设备

来源:互联网发布者:司马缸砸光 关键词: GPIO MQTT 更新时间: 2024/05/17

在本教程中,我们将使用 Adafruit IO 作为 MQTT 代理来控制连接到 Raspberry Pi GPIO 的 AC 设备。

所需组件

安装了 Raspbian Stretch 的 Raspberry Pi。

继电器模块

电灯泡

跳线

在这里,我们将使用 SSH 访问笔记本电脑上的 Raspberry Pi。您可以在笔记本电脑上使用 VNC 或远程桌面连接,或者可以将您的 Raspberry pi 连接到显示器。

电路原理图

这个带有 MQTT 云和树莓派的物联网控制家电的电路图很简单,只需在树莓派的 GPIO 引脚 35 上连接一个带有继电器模块的灯泡。

poYBAGMQbOiARbUtAAEGtMapGzc982.png

pYYBAGMQbOSACJgVAAOv-ZWko8o183.png

在树莓派上安装 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 仪表板中找到。如下所示

poYBAGMQbOCAQUxJAAEBbrfIwWY757.png

切换 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”时应关闭,如下图所示。

pYYBAGMQbNmAHuEqAAGeFeUC9uw276.png

通过这种方式,我们可以使用 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()

提问/讨论

这里还没有内容,您有什么问题吗?

我要提问/讨论

推荐帖子 最新更新时间: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技术
开源自己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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved