亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

MKR FOX 1200 天气监视器

组件和用品

Arduino MKR Fox 1200
× 1
SparkFun 大气传感器突破 - BME280
× 1
TSL2561 数字亮度光传感器
× 1
HTU 1D
× 1

应用和在线服务

Arduino 网页编辑器
ThingSpeak API
Sigfox

关于这个项目

注意:本教程可能已过时,请转到 这里 获取最新版本。

这个项目展示了如何转动 MKR FOX 1200 和一堆 I2C 传感器组成一个简单的、电池供电的气象站。

我们将使用:

  • 板载温度传感器(低精度,± 1 °C)
  • HTU21D I2C 传感器获取湿度水平
  • Bosch BMP280 可获取大气压力和精确温度
  • TSL2561 光传感器获得亮度

硬件设置

该项目的硬件连接非常简单:所有传感器都使用 I2C 接口并在 3.3V 下运行。

它们需要来自 MKR FOX 1200 的四根电线:GND、3.3V、SDA 在引脚 11 上和 SCL 在引脚 12 上。相同的四个连接可以与三个传感器并行共享,因为它们每个都有一个特定的 I2C 地址,因此相关的库和函数将负责区分它们中的每一个。

整个项目可以由两节AA或AAA碱性电池串联产生3V电压并连接到板上的螺丝接线端子块供电。

Sigfox 消息

由于 Sigfox 网络每天最多可以发送 140 条消息,我们将优化读数并以紧凑的二进制格式发送数据。

数据打包很重要,因为您可以发送的消息的最大大小为 12 字节。浮点数占用 4 个字节,因此我们需要将读数打包成一些更小的表示。

浮点格式非常宽(您可以表示大到 3.402823e+38 (!) 的数字),而且我们不需要整个数据空间;然后我们可以决定安全限制(基于我们要部署站点的位置)并在后端恢复原始表示。

云服务配置

我们将使用两个云服务:

  • Sigfox 后端
  • 事情说

使用 FirstConfiguration 示例提供的 PAC 和 ID 在 Sigfox 后端注册您的开发板(如果您已经为之前的项目这样做了,可以跳过)。

两者都需要配置为相互交谈并以正确的格式解释数据。注册两者并创建几个频道 在物语上。配置如下图所示。

我们配置的第一个通道将是接收原始数据的通道 (readChannelID ),而第二个将收集重新缩放的数据 (writeChannelID ).

是时候使用 Arduino Create Editor 上传草图了。默认草图允许您在现场部署之前广泛测试所有基础设施。

记得声明:

oneshot =false 

当您确信所有后端基础设施设置正确时。草图等待串行端口,所以我们现在不会启动它。相反,打开 SigFox 后端并配置回调:

点击设备类型 -> 列表 -> 右键单击​​您的图板,然后单击编辑。

点击回调 在左侧菜单上:

你会看到这样的窗口:

点击新建 窗口右上角的按钮:

选择自定义回调:

相关配置报告如下。确保回调设置为:

  • 类型:数据/上行
  • 频道:网址
  • Http 方法:GET

作为自定义负载,设置:

status::uint:8 temp1::int:16:little-endian temp2::int:16:little-endian press::uint:16:little-endian hum::uint:16:little -endian light::uint:16:little-endian lastMsg::uint:8  

这代表了我们在草图中打包的结构。我们为每个字段分配了一个变量,因此我们可以在 HTTP 回调中引用它们。

作为 URL 模式,设置:

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXX&field1={customData#temp1}&field2={customData#press}&field3={customData#temp2}&field4={customData#hum}&field5={customData#light}&field6={customData#status}&field7={customData#lastMsg}  

配置完成后,您的窗口应该是这样的:

记得更改 API 密钥 api_key 使用 Thingspeak 作为 Write API Key 提供的那个 Channel1 .

保存并退出。我们现在可以打开串行端口并观察发送的第一条消息。万岁!

从原始到图形

我们配置的设置会将我们的数据路由到 Thingspeak 后端,但它们仍然是原始格式;要重新转换它们,让我们使用带有此代码段的 Thingspeak 分析工具

% TODO - 将 [] 替换为通道 ID 以从中读取数据:readChannelID =[]; % TODO - 在下面的 '' 之间输入读取 API 密钥: readAPIKey ='T6UK7XO6A4H2AGT7'; % TODO - 将 [] 替换为通道 ID 以将数据写入:writeChannelID =[]; % TODO - 在下面的 '' 之间输入写入 API 密钥:writeAPIKey ='XU4TGY261P6B5USN'; %% 读取数据 %% 数据 =thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table');分析数据 =数据; %% 分析数据 %% INT16_t_MAX =32767; UINT16_t_MAX =65536;分析数据.('温度1') =数据.('温度1') / INT16_t_MAX * 120;分析数据.('温度2') =数据.('温度2') / INT16_t_MAX * 120;分析数据.('压力') =数据.('压力') / UINT16_t_MAX * 200000;分析数据.('光') =数据.('光') / UINT16_t_MAX * 100000;分析数据.('湿度') =数据.('湿度') / UINT16_t_MAX * 110; %% 写入数据 %% thingSpeakWrite(writeChannelID,analyzedData, 'WriteKey', writeAPIKey); %% 计划动作:反应 -> 每 10 分钟 

通过替换频道 ID 使用我们自己的,我们最终可以将原始数据转换回实际值。请记住使用 React 每 10 分钟安排一次分析操作 否则永远不会被执行!

我们终于有了精彩的图表。

代码

天气监测

制造工艺

  1. Raspberry Pi 气象站
  2. Weather Monitor
  3. 使用 Arduino 制作流光溢彩监视器
  4. 使用 K30 传感器监测二氧化碳
  5. 使用物联网的心率监测器
  6. Arduino + ESP 气象箱
  7. 你有多高?
  8. 带有 Arduino 或 ESP8266 的电容式指纹传感器
  9. Arduino Cloud Sensor Tower
  10. 带夏普 GP2Y1010AU0F 传感器的 DIY 空气质量监测仪
  11. 当地气象站
  12. 带有 DSM501A 传感器的 Arduino 空气质量监测器