×

使用Arduino大数据工具进行温度流式传输

消耗积分:0 | 格式:zip | 大小:0.49 MB | 2022-11-11

陈飞

分享资料个

描述

客观的

该项目涵盖了使用大数据生态系统的开源技术部分在 Arduino 上部署一个简单架构以实时和批处理温度传感器数据的过程。该解决方案的目的是举例说明通过不同工具的数据流,从捕获到转换和洞察生成。

在所呈现的架构中,数据的发布、传输和存储服务与 Arduino 板发送数据的格式无关。这推动了构建集中式服务的想法,用于将消息从不同的发送设备分发到能够使用这些数据的许多客户端或服务。

在此前提下,该架构的适用可能性与信息发射设备的实现创意成正比。

版本

  • Arduino IDE 1.8.5
  • 蜂巢 1.2.1
  • 卡夫卡 0.10.0
  • 火花 1.6.2
  • 齐柏林笔记本 0.6.0
  • NiFi 1.2.0

数据流

 
poYBAGNtm-iAMq-IAADiWHwfFHY621.png
 

1.- 从湿度/温度传感器生成数据

  • 加载在 Arduino 平台中的代码每 3 秒通过 DHT 传感器读取一次,捕获:
  • 环境中的湿度百分比。
  • 摄氏温度 (°C)
  • 华氏温度 (°C)
  • 计算热量指数。这个度量决定了人们如何根据环境的湿度来感知温度。
  • 向外部 Web 服务发出请求,以根据预定义的时区确定阅读时间。

2.- 数据发布到 MQTT 服务器

  • 构建将发送到 MQTT 服务器的消息或有效负载:
  • 有效负载为 JSON 格式。
  • 它包含传感器捕获的数据、计算的信息、读数的日期/时间、自 Arduino 平台启动以来经过的毫秒数以及发射器设备的唯一标识符。
  • 验证 Internet 和 MQTT 代理连接。
  • 有效负载在预定义的用户名和密码下发布到特定主题的 MQTT 代理。
  • MQTT 代理有一个权限列表,定义了哪些用户可以发布现有主题的信息。

3, 4 & 5.- 实时数据采集

  • Apache NiFi 服务有一组有组织的指令,可在捕获数据时编排数据流:
  • NiFi 连接或订阅 Mosquitto 主题并实时捕获消息。
  • NiFi 通过在消息之外定义与消息和 MQTT 代理的技术方面相关的新字段来补充接收到的消息(JSON 字符串)。
  • NiFi 将消息和新字段插入 Hive 数据存储。
  • NiFi 在 Kafka 中发布原始消息。
  • Hive 和 Kafka 存储数据:
  • Hive 允许对历史数据进行批处理。
  • Kafka 允许实时处理 Arduino 平台发送的数据。

6 & 7.- 数据处理

  • Zeppelin 运行代码块(Scala 和 SQL):
  • 可以查询存储在数据仓库中的数据。
  • 可以实时订阅Kafka主题,处理不同时间窗口下的消息。
  • 代码在 Spark 上执行。
  • 在每个时间窗口中获得的数据被转换并存储在 Hive 表中。
  • 在每个窗口上计算捕获的温度平均值。

图书馆

  • Adafruit 统一传感器 1.0.2
  • DHT 传感器库 1.3.0
  • 发布订阅客户端 2.6.0
  • 时间 1.5.0
  • NTP客户端 3.1.0

ARDUINO IDE 配置

通用设置:

  • 板:“ESP8266 通用模块”
  • 闪光模式:“DIO”
  • 闪存大小:“512K(64 SPIFFS)”
  • 调试端口:“已禁用”
  • 调试级别:“无”
  • 重置方法:“ck”
  • 晶体频率:“26 MHz”
  • 闪光频率:“40 MHz”
  • CPU频率:“80兆赫”
  • 上传速度:“115200”
  • 程序员:“AVRISP mkII”

串口监视器

  • 自动滚屏
  • 安博斯 NL & CR
  • 115200 波特

观察

在这个项目中,指令没有加载到 Arduino 板,而是加载到 ESP8266 模块,因为正是这个模块将操作、转换和发送数据。

要将指令加载到 WiFi 模块,必须在启动时进入 Flash 模式,这是通过Pinout 图(Flash 模式)中显示的引脚配置来实现的

建议 Arduino 板在对 ESP8266 模块进行代码加载时没有加载指令。

执行

在串口监视器中,我们可以观察到连接、捕获和发布消息的过程。

 
pYYBAGNtm-uADlD8AAEn9NnZCa8747.png
 

如果我们订阅 Mosquitto 主题,我们可以看到消息是如何由 Arduino 板实时发布的。

NiFi 在 Kafka 和 Hive 上发布捕获的消息。在后者中,与 MQTT 服务器相关的附加字段记录在表中。

一旦 NiFi 模板启动,如果我们订阅将消息重定向到的 Kafka 主题,我们将能够观察消息是如何在 Mosquitto 收到时立即发布的。在下图中,我们可以看到 Mosquitto 主题(左)和 Kafka 主题(右)中的消息接收情况。

 
 

另一方面,如果我们定期查阅 Hive 表,我们会注意到寄存器的数量根据 NiFi 捕获的消息而增加。

 
poYBAGNtm-6AWmNBAAHdg2bGkvc658.png
 

Scala开发的notebook是JSON格式,可以导入Zeppelin,分为7段:

1.- 设置。

2.- 数据采集。

3.- 按窗口计算温度平均值。

4.- Kmeans 模型创建和训练。

5.- 数据分类(窗口)

6.- 数据分类(随机数据)

7.- 数据检查。

 
poYBAGNtm_GAdvvhAAFkyu3xBUo665.png
使用 Zeppelin 和 Spark 从 Kafka 主题中实时捕获数据。
 

 

 
poYBAGNtm_SAcaLhAAEU9escjdc370.png
使用 Kmeans 训练模型进行湿度和温度数据分类。
 

 

 
pYYBAGNtm_aASuthAAE85yBBPJA242.png
湿度和温度 (°C & °F) 值变化的时间线。
 

下一步改进

该项目缺乏以下可以增加这些技术可能应用价值的特征:

  • Arduino 板与不同类型的传感器集成。
  • 多路复用发送到 WiFi 模块的信号。
  • 开发状态和控制指示器(LED、警报、警报)。
  • 闪光模式激活/停用按钮。

资源

复制此项目的详细说明可在此Github 存储库中找到,以及使用的草图、模板、笔记本和测试数据。

目前它是西班牙语,所以当它被翻译成英语时,你可以用这种语言练习你的技能;)。


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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !