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

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

3天内不再提示

怎样从中传输MQTT消息ESP8266/NodeMCU到运行MQTT代理的树莓派

454398 来源:工程师吴畏 2019-07-30 09:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

电路图

怎样从中传输MQTT消息ESP8266/NodeMCU到运行MQTT代理的树莓派

图1. 教程电路

什么是MQTT?

消息队列遥测传输(MQTT)是一种消息传递协议,可在任何具有Internet连接的设备上运行,使其成为物联网中最常用的协议之一项目。它被设计用于具有低带宽限制的系统,因此非常适用于家庭自动化或任何物联网(IoT)应用。

MQTT的优势包括其低带宽,简单的实现,它适用于不可靠的连接。

图2. 基于MQTT的系统

MQTT需要使用“代理” - 一个接收和发送MQTT消息的应用程序。在本教程中,我们的代理是Mosquitto,它将安装在Raspberry Pi上。 MQTT系统的第二个组件是“客户端”,它连接到中央代理并可以发布或订阅MQTT消息。

MQTT消息由主题标识,该主题是消息的一部分。在本教程中,我们将发布和订阅“makerpro/mqtt_tutorial/light”主题。

在Raspberry Pi上安装Mosquitto Broker

我建议的第一步是更新Raspberry Pi上的软件。打开终端并输入以下命令:

sudo apt-get update

sudo apt-get upgrade

sudo reboot

一旦你的Pi重新启动,你可以再次在终端类型中安装我们的MQTT代理Mosquitto:

sudo apt install -y mosquitto mosquitto-clients

通过创建终端的两个新实例来测试Mosquitto。在一个终端输入以下内容:

mosquitto_sub -v -t makerpro/mqtt_tutorial/light

在另一个新终端输入:

mosquitto_pub -t makerpro/mqtt_tutorial/light -m ‘helloWorld’

在第二个终端上按Enter键后,您会看到消息“makerpro/mqtt_tutorial/light helloWorld“在第一个终端上,如图3所示。

图3. Raspberry Pi Mosquitto测试

在您的Raspberry Pi上成功测试了Mosquitto,您需要通过输入命令 hostname -I 找到其IP地址。

hostname -I

这将返回一个像192.168.0.47这样的数字,如图4所示。你的Pi可能会给你一个稍微不同的数字。

重要你把这个数字写在安全的地方。 NodeMCU需要它才能连接到我们的Mosquitto服务器。

图4. Raspberry Pi IP地址

构建电路

本教程的电路(如图5所示)包含LDR,10K电阻和我们的电路NodeMCU开发板。

图5. 面包板电路

LDR和电阻形成一个分压器,NodeMCU的模拟输入读取他们之间的电压。当LDR的电阻随照度变化时,LDR和电阻之间的电压电平发生变化,如表1所示。

表1 。照明/电压/ADC电平

安装Arduino IDE和PubSubClient您计算机上的库

您将使用Arduino IDE对NodeMCU开发板进行编程和闪存。在我们进入编程之前,需要安装各种步骤。

下载并安装IDE

运行Arduino并从“文件”菜单中显示“首选项”对话框

在“其他板管理器URL”文本框中粘贴以下内容文本:http://arduino.esp8266.com/stable/package_esp8266com_index.json

单击确定

从工具/板菜单中选择“Board Manager”

在搜索框中键入“esp8266”,然后安装“esp8266 by ESP8266 Community”,

从工具/主板中选择“通用ESP8266模块”

通过工具/打开库管理器管理图书馆。..

搜索“PubSubClient”,然后安装Nick O‘Leary的PubSubClient

图6。 PubSubClient

调整并将软件上传到NodeMCU

首先,下载副本来自Github的NodeMCU软件。

在将代码上传到你的主板之前,你需要做一些更改文件顶部的Wi-Fi和代理地址。

const char *WIFI_NETWORK_NAME = “********”;

const char *WIFI_PASSWORD = “*********”;

const char *MQTT_BROKER = “192.168.0.47”;

将WIFI_NETWORK_NAME和WIFI_PASSWORD更改为您的家庭网络登录详细信息。例如,如果您的Wi-Fi网络名为myWifi,则顶行如下所示:

const char *WIFI_NETWORK_NAME = “myWifi”;

将变量MQTT_BROKER更新为Raspberry Pi的IP地址(您创建了一个早期的说明)。

实施

将NodeMCU和Raspberry Pi连接到同一网络非常重要。请注意,如果重新启动Raspberry Pi,它可能会更改其IP地址,这也意味着更改NodeMSC的代码。

一旦启动,NodeMCU上的软件将定期读取其ADC,然后发送MQTT消息到存储在Raspberry Pi上的代理。然后,代理将消息重新分发给订阅该主题的任何客户端。

NodeMCU代码利用串行端口输出调试消息。如果连接Arduino IDE的串行监视器,您应该看到类似于图7中的消息的输出。

图7. NodeMCU的串行输出

您应该开始在您的经纪人处接收MQTT消息,您可以通过打开Pi上的终端窗口并输入以下内容来确认:

mosquitto_sub -v -t makerpro/mqtt_tutorial/light

这将允许您在控制台中接收常规消息,如图8所示。

图8. 订阅makerpro/mqtt_tutorial/light主题。

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

    关注

    122

    文章

    2069

    浏览量

    109709
  • ESP8266
    +关注

    关注

    51

    文章

    966

    浏览量

    49012
  • NODEMCU
    +关注

    关注

    13

    文章

    289

    浏览量

    23198
  • MQTT
    +关注

    关注

    5

    文章

    720

    浏览量

    24786
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) ESP8285/ESP8266芯片案例

    【应用】国产26MHz频率晶振应用于物联网WIFI物联网模块(串口转WiFi模块),Espressif(乐鑫)ESP8285/ESP8266芯片匹配测试OKESP8285其实是ESP8266的升级版
    的头像 发表于 11-21 15:37 4053次阅读
    晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) <b class='flag-5'>ESP</b>8285/<b class='flag-5'>ESP8266</b>芯片案例

    ESP8266ESP32开发板常见的2种下载方式

    ESP32和ESP8266是性价比很高而且使用较为广泛的的Wi-Fi模块,在物联网(IoT)领域的DIY项目中可以首先考虑这2款产品。 两款芯片都属于32位处理器。ESP32是低功耗双核80MHz
    的头像 发表于 11-10 20:30 335次阅读
    <b class='flag-5'>ESP8266</b>和<b class='flag-5'>ESP</b>32开发板常见的2种下载方式

    ESP32-C3 mqtt操作实践

    mqtt服务器基本成功。 3.esp32-c3 mqtt源代码编译与配置 前文已经搭建好开发环境,这里只说明操作步骤。 首先将ESP-IDF中的protocols的例程拷贝
    发表于 10-31 06:52

    【RA4M2-SENSOR】—— 16.完结篇《使用AT指令通过MQTT远程控制RA4M2-SENSOR》

    上节我讲解了如何通过ESP8266的AT指令,使用MQTT协议连接远程物联网云,并将数据上传到手机端,这次我反其道而行之,使用手机或者MQTT.fx上面发送的指令,远程控制RA4M2-SENSOR
    发表于 09-01 14:31

    【RA4M2-SENSOR】—— 15. 使用AT指令连接到MQTT云服务器上传数据

    上一节我已经实现了使用AT指令访问ESP8266连接心知天气网站获取天气预报,是通过HTTP协议来实现的。 ESP8266除了连接HTTP协议外,还可以通过TCP IP协议连接MQTT云服务器,本次
    发表于 09-01 13:56

    物联网MQTT网关是什么

    物联网MQTT网关是一种采用MQTT物联网协议的智能设备或软件组件,其核心功能是连接不同通信协议的物联网设备与消息代理服务器,实现设备间的数据交换与集中管理,同时支持边缘计算、安全防护和协议转换
    的头像 发表于 08-29 15:24 656次阅读

    完整指南:如何搭建树莓MQTT代理服务器?

    MQTT通过TCP/IP运行,使用代理服务器管理客户端之间的消息分发,允许设备订阅特定主题,并且仅在发布相关数据时接收更新。其关键特性包括:低带宽占用:非常适合
    的头像 发表于 08-04 17:03 632次阅读
    完整指南:如何搭建<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>MQTT</b><b class='flag-5'>代理</b>服务器?

    【RA-Eco-RA6M4开发板评测】——7.使用RA6M4开发板通过MQTT实现远程IOT温度上传到手机,不限距离全世界级别

    () { } FSP_CPP_FOOTER #endif 在手机上输入这个 初始化ESP8266MQTT网络连接 #include \"esp8266.h\" static volatile bool
    发表于 07-25 21:07

    精通 MQTT:消息队列遥测传输指南!

    引言MQTT(消息队列遥测传输)是一种轻量级消息协议,专为低带宽、高延迟和不可靠的网络环境设计。它广泛应用于物联网(IoT)应用、消息系统以及实时数据通信领域。本指南深入探讨了MQTT的工作原理
    的头像 发表于 06-16 16:56 829次阅读
    精通 <b class='flag-5'>MQTT</b>:消息队列遥测<b class='flag-5'>传输</b>指南!

    【RA4L1-SENSOR】+ 一直被模仿从未被超越 + 使用MQTT上传RA4L1开发板温度云端,并通过云控制RA4L1反向点灯

    烂,所以我就写一篇比较有深度的创意的帖子吧!!!!! 手头上刚好有个ESP8266模块,于是就像使用ESP8266连接RA4L1开发板,通过MQTT协议可以将RA4L1板上的温度数据上传到云端,实现
    发表于 06-15 17:07

    【RA-Eco-RA4M2开发板评测】使用RA4M2和ESP8266实现MQTT协议上传传感器数据云服务器并反向点灯控制

    刑事勘察,非常的智能化! 基于这样一个便捷的生活目的,我特地使用瑞萨的RA4M2开发板来做一个基于ESP8266 MQTT协议的IOT远程控制设备,它可以配合板子上搭载的传感器,比如温度,湿度
    发表于 05-29 15:29

    ESP8266烧录与机智云一键配网教程

    ESP8266模块因其低成本和高性能,广泛应用于智能家居和工业自动化等领域。机智云平台提供了一键配网功能,简化了设备的联网过程。本教程将详细介绍如何使用ESP8266进行烧录,并通过机智云实现一键配
    的头像 发表于 05-24 11:04 1561次阅读
    <b class='flag-5'>ESP8266</b>烧录与机智云一键配网教程

    如何在MQTT中发布和订阅实体

    消息发送到MQTT代理(Broker)上的特定主题(Topic)。发布者无需知道有哪些客户端订阅了该主题,只需将消息发送到代理即可。 订阅(Subscribe):客户端向MQTT
    的头像 发表于 05-20 17:21 1016次阅读

    《DNESP32S3使用指南-IDF版_V1.6》第五十五章 基于MQTT协议连接阿里云服务器

    的逻辑了。但这时主题消息还没有发给订阅了这个主题的客户端,代理要根据质量级别(QoS)来决定怎样处理这个主题。所以这里充分体现了是MQTT协议是异步通信模式,不是立即端端反应的,如下
    发表于 03-18 09:22

    MQTT物联网平台有哪些?有哪些功能?

    MQTT(Message Queuing Telemetry Transport)是一种基于客户端-服务器架构的发布/订阅模式的消息传输协议,它广泛应用于机器与机器的通信(M2M)以及物联网环境
    的头像 发表于 03-15 14:23 1222次阅读
    <b class='flag-5'>MQTT</b>物联网平台有哪些?有哪些功能?