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

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

3天内不再提示

怎样用MQTT连接树莓派IoT设备

454398 来源:工程师吴畏 2019-08-02 09:15 次阅读

什么是MQTT?

MQTT(消息队列遥测传输)是一种轻量级消息传递协议,非常适合物联网连接设备的通信

MQTT有三个组件:代理,发布者和订阅者。一个受欢迎的在线经纪人是Mosquitto。代理是一个中间实体,负责处理设备之间的通信。发布者是发送消息的设备。订阅者监听发布者发送的消息。

MQTT中还有一个重要的事情,那就是主题。不同设备之间的通信需要一个主题。例如,设备A想要向设备B发送消息。为此,两者之间应该存在共同点,这就是主题。可以把它想象成一个电话号码。

CloudMQTT

CloudMQTT是一种提供免费MQTT通信的代理服务对于一定数量的设备。

设置MQTT

创建帐户

转到右上角的控制面板

点击“创建”按钮

在“名称”字段中输入CMQTT

开同一页面,在管理用户中添加用户:

名称:pi

密码:pi

点击“保存”

再次在同一页面上,添加:

用户:pi

主题:pi

点击“保存”

现在,在顶部栏中,点击“WebSocket UI”

您将看到一个页面所有传感器数据将显示在哪里

将下面的代码上传到Arduino

下面的代码是一个带有虚拟字符串的示例代码传感器的位置。您可以使用来自传感器的值替换字符串。

String sensorsData=“”;

String randSensorsData=“”;

void setup() {

// put your setup code here, to run once:

Serial.begin(9600);

pinMode(A0,INPUT);//temperature sensor

pinMode(A1,INPUT);//windspeed sensor

pinMode(A2,INPUT);//wind direction sensor

pinMode(A3,INPUT);//rain fall sensor

pinMode(A4,INPUT);///barometric pressure sensor

}

void loop() {

// put your main code here, to run repeatedly:

sensorsData=String(“-”)+String(“S1=”)+String(analogRead(A0))+String(“,”)+String(“S2=”)+String(analogRead(A1))+String(“,”)+String(“S3=”)+String(analogRead(A2))+String(“,”)+String(“S4=”)+String(analogRead(A3))+String(“,”)+String(“S5=”)+String(analogRead(A4))+String(“+”);

randSensorsData=String(“-”)+String(“S1=”)+String(random(100))+String(“,”)+String(“S2=”)+String(random(200))+String(“,”)+String(“S3=”)+String(random(125))+String(“,”)+String(“S4=”)+String(random(500))+String(“,”)+String(“S5=”)+String(random(50))+String(“+”);

Serial.println(sensorsData);

Serial.println(randSensorsData);

delay(200);

}

此代码使用Arduino的模拟引脚从传感器获取值,并传递给Raspberry Pi进行处理和MQTT通信。上面的代码使用随机函数生成随机值来模拟模拟引脚。

传感器应连接到A0,A1,A2,A3,A4引脚

Serial.println(randSensorsData);

此行发送随机数据以检查服务器

您还可以检查WebSocket中显示的随机数据UI

打开python 2.7并在其中编写以下代码:

import paho.mqtt.client as mqtt

import time

data=”Hello from Raspberry Pi!”

while True:

print(data)

try:

client=mqtt.Client()

client.username_pw_set(“hgztvlwh”,“qDz_-oAWSfBR”)#replace with your user name and password

client.connect(“m13.cloudmqtt.com”,13017,60)

client.publish(“pi”,data)#pi is topic

time.sleep(1)

except KeyboardInterrupt:

print(“end”)

client.disconnect()

现在使用python 2.7运行代码

您会看到传感器数据每秒都会在CloudMQTT的WebScoket UI中显示。

在这里,您将看到从Raspberry Pi发送的数据。

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

    关注

    185

    文章

    3957

    浏览量

    192969
  • 树莓派
    +关注

    关注

    113

    文章

    1633

    浏览量

    104514
  • MQTT
    +关注

    关注

    5

    文章

    527

    浏览量

    21887
收藏 人收藏

    评论

    相关推荐

    宏集方案 | 如何用工业树莓派和MQTT平台打通OT和IT?

    如何用工业树莓派和MQTT平台打通OT和IT?
    的头像 发表于 01-05 11:01 151次阅读
    宏集方案 | 如何用工业<b class='flag-5'>树莓</b>派和<b class='flag-5'>MQTT</b>平台打通OT和IT?

    【飞腾4G版免费试用】如何在飞腾开发板上安装EMQX MQTT服务器

    EMQX 是一款大规模分布式物联网接入平台,同时作为一个高性能、可扩展的 MQTT 消息服务器,它可以为物联网(IoT)应用提供可靠的实时消息传输和设备连接解决方案。通过强大的内置规则
    发表于 12-26 11:16

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41

    树莓都有哪些功能,是什么编程的?

    怎么学习树莓树莓和传统单片机的区别是哪些,如果有了树莓该学哪些知识
    发表于 11-09 07:51

    MQTT协议是什么?工业级路由器网关中的MQTT协议

    什么是MQTTMQTT作为一种工具,可以在各种规模的部署中连接多种类型的IoT设备。它最初始于1999年,用于石油和天然气管道通过远程卫星
    的头像 发表于 11-08 13:53 641次阅读
    <b class='flag-5'>MQTT</b>协议是什么?工业级路由器网关中的<b class='flag-5'>MQTT</b>协议

    怎样用32单片机测电压?

    怎样用32单片机测电压
    发表于 10-31 07:09

    如何用树莓学习Linux内核源码?

    怎么树莓学习Linux内核源码?​
    发表于 10-20 07:09

    树莓的15个应用

    树莓15个应用
    发表于 10-07 06:42

    树莓3树莓4原理图分享

    提供了树莓3、树莓3B、树莓4版本的原理图
    发表于 09-27 07:58

    PLC中怎样用X和Y两个轴走出直线轨迹?

    PLC中怎样用X和Y两个轴走出直线轨迹呢?那么这两个轴需要配合成速度成线性比例,位置和速度应该如何云运算呢?
    发表于 09-12 09:58 280次阅读
    PLC中<b class='flag-5'>怎样用</b>X和Y两个轴走出直线轨迹?

    使用RIOT/Google IoT/MQTT的环境站

    电子发烧友网站提供《使用RIOT/Google IoT/MQTT的环境站.zip》资料免费下载
    发表于 06-30 10:12 0次下载
    使用RIOT/Google <b class='flag-5'>IoT</b>/<b class='flag-5'>MQTT</b>的环境站

    IoTDemo不再连接iot.espressif.cn是为什么?

    过去,我构建了所有 IoTDemo 设备和其他设备,它们连接到我在 iot.espressif.cn 上的帐户。现在他们都不会连接。该帐户仍
    发表于 05-15 08:30

    怎样用FPGA实现FSK调制解调呢?

    最近想做这方面的,怎样用FPGA实现FSK调制解调?但是我一点头绪都没有,哪位高手帮帮忙,讲解一下什么的
    发表于 05-08 17:34

    树莓的故障分析检测

    各位大神,我的树莓B4,经常读不出卡数据,卡换个新的,故障依旧。请指点树莓的故障检查与维修。
    发表于 04-27 11:30

    怎样用FPGA实现FSK调制解调呢?

    最近想做这方面的,怎样用FPGA实现FSK调制解调?但是我一点头绪都没有,哪位高手帮帮忙,讲解一下什么的
    发表于 04-06 14:29