当前位置: 首页 > news >正文

【物联网】基于树莓派的物联网开发【21】——MQTT获取树莓派传感器数据广播实战

场景介绍

今天程序猫带领大家如何获取树莓派传感器温湿度数据,并用MQTT进行广播。

实现过程

启动MQTT服务

1、终端启动Mosquitto服务
sudo systemctl start mosquitto
2、设置服务开机自动启动
sudo systemctl enable mosquitto
在这里插入图片描述

硬件连接

树莓派4b连接GPIO引脚与DHT11传感器;
硬件只涉及树莓派、DHT11传感器。
DHT11的信号引脚连接树莓派的GPIO17, DHT11的Vdd(+)和GND引脚(-)分别连接树莓派的电源正极和GND引脚。

在这里插入图片描述

在这里插入图片描述

实现思路

1、通过树莓派GPIO来连接并控制DHT11传感器,获得温度,湿度数据;
2、使用MQTT将树莓派所获取的温度与湿度数据广播;
3、订阅MQTT服务器的广播获取湿度与温度数据;

链接MQTTX客户端

配置MQTT基础信息,填写ip地址,默认端口1883
在这里插入图片描述
如果连接成功,则会弹出已连接
在这里插入图片描述

添加订阅主题

配置主题名Topic
在这里插入图片描述

读取传感器数据并发送到MQTT

编写脚本代码sensor_demo.py

1、配置MQTT :服务器地址 ,端口号,主题
2、传感器引脚配置
3、读取传感器数据
4、向MQTT发送消息

import time
import board
import adafruit_dht
from datetime import datetime
import paho.mqtt.client as mqtt
import json# MQTT配置
broker = "192.168.137.31"
port = 1883
topic = "DHT11_message"# 传感器引脚配置
SENSOR_PIN = board.D17      # 使用CircuitPython标准命名(物理引脚11)# SENSOR_PIN = board.GPIO17 # 替代:树莓派专用GPIO命名# 初始化MQTT客户端
client = mqtt.Client()
client.connect(broker, port)try:# 添加 use_pulseio=False 参数dhtDevice = adafruit_dht.DHT11(SENSOR_PIN, use_pulseio=False)print("传感器初始化成功,开始数据采集......")while True:try:# 读取温湿度数据temperature = dhtDevice.temperaturehumidity = dhtDevice.humidity# 检查有效读数if temperature is None or humidity is None:raise RuntimeError("读取到无效值")# 准备MQTT消息recDate = datetime.now().strftime('%Y-%m-%d %H:%M:%S')msg = json.dumps({'Tem': temperature,'Hum': humidity,'Date': recDate})# 发送消息result = client.publish(topic, msg)if result[0] == mqtt.MQTT_ERR_SUCCESS:print(f"✓ [{recDate}] 发送成功: {msg}")else:print(f"✗ 发送失败,错误码: {result[0]}")except RuntimeError as e:print(f"传感器读取错误: {e}")except Exception as e:print(f"意外错误: {e}")time.sleep(10.0)  # 采集间隔10sexcept KeyboardInterrupt:print("程序被用户终止")
except RuntimeError as e:print(f"初始化失败: {e}")exit(1)
finally:# 清理资源if 'dhtDevice' in locals():dhtDevice.exit()client.disconnect()print("资源已释放")

进入虚拟环境

树莓派终端输入命令:

source adafruit_env/bin/activate

在这里插入图片描述

运行脚本

控制台输入命令

python3  sensor_demo.py

控制台可以看到数据采集OK
在这里插入图片描述

订阅MQTT服务器的广播获取

打开MQTT客户端,看到接收消息成功。
在这里插入图片描述

http://www.dtcms.com/a/310849.html

相关文章:

  • Python So Easy 大虫小呓三部曲 - 高阶篇
  • html5+css3+canvas长文转长图工具支持换行
  • 国产嵌入式调试器之光? RT-Trace 初体验!
  • C++之vector类的代码及其逻辑详解 (中)
  • 电力系统分析学习笔记
  • 谷歌Chrome浏览器安装插件
  • 论文笔记:Bundle Recommendation and Generation with Graph Neural Networks
  • 设计Mock华为昇腾GPU的MindSpore和CANN的库的流程与实现
  • STM32——启动过程浅析
  • 个人电脑部署私有化大语言模型LLM
  • python+pyside6的简易画板
  • 损失函数和调度器相关类代码回顾理解 |nn.CrossEntropyLoss\CosineAnnealingLR
  • Codeforces Round 1040 (Div. 2) A - D题详细题解
  • DP-v2.1-mem-clean学习(3.6.8-3.6.8.1)
  • Java试题-选择题(3)
  • 风光储并离网切换仿真模型(下垂控制一次调频)
  • CORS模块:你的跨域快速通行证 [特殊字符]
  • 第七章 愿景13 CBS升级
  • Git 误删分支怎么恢复
  • 中国不同类型竹林分布数据
  • 一个强大的向量数据库——Milvus
  • 8.1.2 TiDB存储引擎的原理
  • 鹧鸪云:16步精控工商业光伏全流程
  • Au速成班-多轨编辑流程
  • C语言函数指针和结构体
  • 第13届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年1月22日真题
  • socket编程-UDP(2)-设计翻译系统
  • 基于线性规划的储能充放电仿真系统
  • 读取数据集及数据集划分
  • 7.苹果ios逆向-目录结构