0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技观察员 来源:circuitdigest 作者:Rishabh Jain 2022-09-01 16:30 次阅读

在本教程中,我们将使用 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 connected(client): 
    client.subscribe(FEED_ID) 
    print('Waiting for feed data...')

订阅提要后,我们必须检查新值并将其存储到有效负载变量中。为此消息函数被调用。因此,每当有效载荷变量中有“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()

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GPIO
    +关注

    关注

    16

    文章

    1205

    浏览量

    52153
  • MQTT
    +关注

    关注

    5

    文章

    651

    浏览量

    22541
收藏 人收藏

    评论

    相关推荐

    基于Amazon Echo 和 Raspberry Pi 的自动窗帘控制

    GPIO 的水晶头网线一块 Raspberry Pi 开发板与Raspberry Pi GPIO
    发表于 08-23 16:04

    黑科技!使用Raspberry Pi和Python GUI控制伺服电机(原理图、源码、项目教程)

    教程中,我们将介绍如何使用Raspberry Pi和Python TK GUI精确控制伺服。硬件组件:Raspberry Pi 3型号B.×
    发表于 10-16 16:49

    使用raspberry pi Pico的原因

    使用raspberry pi Pico的原因在硬件产品(单片机)的开发中我们往往需要借助一些额外的仪器/设备进行产品的辅助测试, 假设我们需要一个IO+ADC类型辅助
    发表于 02-07 09:16

    Raspberry Pi上的IO引脚编号有几种方法

    一. 导入RPI.GPIOimport RPi.GPIO as GPIO二. 指定引脚编号方式RPi.GPIO中的Raspberry Pi
    发表于 02-17 06:33

    带超频冷却孔径的Raspberry Pi GPIO

    描述Raspberry Pi GPIO 帽,带超频冷却孔径这是一个 Raspberry Pi 帽子,它允许
    发表于 09-12 06:14

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

    在这里写了一篇非常基本的文章 ,但如果它对某人有用,我很乐意尝试写更多关于使用 ESP-01 板通过 MQTT 和 OpenHab 使用 Raspberry Pi 控制 LED 的正式
    发表于 05-24 07:34

    如何使用Thingsboard通过MQTT进行Raspberry Pi GPIO控制

    为简化此说明,我们在每个Thingboard安装中可用的演示数据中都包含了“ Raspberry PI GPIO演示仪表板”。当然,您可以修改此仪表板:调整,添加,删除小部件等。您可以通过以租户管理员身份登录来访问此仪表板。
    的头像 发表于 10-12 14:32 1.7w次阅读
    如何使用Thingsboard通过<b class='flag-5'>MQTT</b>进行<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帽开源分享

    电子发烧友网站提供《Raspberry Pi GPIO帽开源分享.zip》资料免费下载
    发表于 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分线板

    电子发烧友网站提供《用于40针Raspberry Pi型号的GPIO分线板.zip》资料免费下载
    发表于 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进行IoT通信

    在本教程中,我们将更多地了解 MQTT 及其相关术语。在这里,我们将使用Raspberry Pi 作为本地 MQTT 代理,并通过
    的头像 发表于 09-06 15:14 3045次阅读
    在<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>上安装和测试<b class='flag-5'>MQTT</b>进行IoT通信

    从Alexa控制Raspberry Pi(Linux设备

    电子发烧友网站提供《从Alexa控制Raspberry Pi(Linux设备).zip》资料免费下载
    发表于 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'>设备</b>)

    如何使用GPIO引脚将按钮连接到Raspberry Pi

    电子发烧友网站提供《如何使用GPIO引脚将按钮连接到Raspberry Pi.zip》资料免费下载
    发表于 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鼠标

    电子发烧友网站提供《Raspberry Pi Pico作为HID鼠标.zip》资料免费下载
    发表于 02-01 10:17 1次下载
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico<b class='flag-5'>作为</b>HID鼠标

    Raspberry Pi GPIO引脚介绍

    近年来,Raspberry Pi因其可以用作可用于媒体和复古视频游戏的廉价、兼容的Linux机器以及网络设备而备受喜爱。
    的头像 发表于 02-24 18:08 3455次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>GPIO</b>引脚介绍

    IO设备接入MQTT

    随着物联网的迅速发展,越来越多的IO设备需要与云平台进行通信,以实现远程监控和控制。本文将基于EsDA开发套件快速实现将IO设备接入
    的头像 发表于 09-28 08:26 757次阅读
    <b class='flag-5'>IO</b><b class='flag-5'>设备</b>接入<b class='flag-5'>MQTT</b>