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

打造电池供电的 MKR FOX 1200 气象站

组件与物料

组件数量
Arduino MKR Fox 12001
SparkFun 大气传感器模块 - BME2801
TSL2561 数字光照度传感器1
HTU21D 温湿度传感器1

应用与在线服务

项目简介

注意:本教程可能已过时,请参考最新版本。

本项目演示如何将 MKR FOX 1200 与多个 I2C 传感器结合,打造一个简易的电池供电气象站。

使用的传感器

硬件连接

硬件连接非常简单:所有传感器均使用 I2C 接口,工作电压 3.3V。只需从 MKR FOX 1200 引出四根线:GND、3.3V、SDA(引脚 11)和 SCL(引脚 12)。由于每个传感器拥有唯一的 I2C 地址,三个传感器可并联共享这四根线,由库函数自动区分。

整个系统可由两节串联的 AA 或 AAA 碱性电池(3V)通过板载螺丝端子供电。

Sigfox 数据封装

Sigfox 网络每天最多发送 140 条消息,单条消息最大 12 字节。为充分利用带宽,我们将读数压缩为紧凑的二进制格式。float 类型占 4 字节,超出限制,因此需根据部署环境设定安全量程,在后端还原真实数值。

云服务配置

使用两个云服务:

使用 FirstConfiguration 示例提供的 PAC 和 ID 在 Sigfox 后台注册开发板(若已注册可跳过)。两者需相互配置以正确解析数据。在 ThingSpeak 创建两个通道:readChannelID 接收原始数据,writeChannelID 存储还原后的数据。

Sigfox 回调配置

  1. 进入 DEVICE TYPE → LIST,右键开发板选择 Edit
  2. 左侧菜单点击 CALLBACKS → New → 选择 Custom callback
  3. 设置关键参数:
    • TYPE: DATA/UPLINK
    • Channel: URL
    • Http method: GET
  4. Custom Payload 设为:
    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
  5. URL Pattern 设为:
    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_key 替换为 ThingSpeak Channel1 的 Write API Key。

保存后打开串口,即可观测首条消息发送成功。

从原始数据到图表展示

配置完成后数据已路由至 ThingSpeak,但仍为原始格式。利用 ThingSpeak 分析工具(MATLAB 代码)将数据还原:

% 替换为你的通道 ID 和 API Key
readChannelID = []; readAPIKey = 'T6UK7XO6A4H2AGT7';
writeChannelID = []; writeAPIKey = 'XU4TGY261P6B5USN';

%% 读取数据
data = thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table');
analyzedData = data;

%% 数据还原
INT16_MAX = 32767; UINT16_MAX = 65536;
analyzedData.('Temperature1') = data.('Temperature1') / INT16_MAX * 120;
analyzedData.('Temperature2') = data.('Temperature2') / INT16_MAX * 120;
analyzedData.('Pressure') = data.('Pressure') / UINT16_MAX * 200000;
analyzedData.('Light') = data.('Light') / UINT16_MAX * 100000;
analyzedData.('Humidity') = data.('Humidity') / UINT16_MAX * 110;

%% 写入还原后的数据
thingSpeakWrite(writeChannelID, analyzedData, 'WriteKey', writeAPIKey);
%% 设置 React 每 10 分钟执行一次

替换通道 ID 后,在 React 中设置每 10 分钟触发一次分析,即可获得温度、气压、湿度、光照的实时图表。

代码

完整代码请参考项目仓库:WeatherMonitor

制造工艺

  1. 树莓派自制气象站:每日邮件推送温湿雨数据
  2. 树莓派气象站:Sense HAT 环境数据采集与 Dropbox 自动上传
  3. 用 Arduino 打造绚丽显示器 Ambilight 系统
  4. K30 CO₂ 传感器:室内空气质量实时监测
  5. 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
  6. 紧凑型气象站:Arduino Nano + ESP8266 双核方案 (BMP280 + OLED/Nokia 双屏)
  7. DIY 数字身高仪:Arduino Nano + VL53L0X 激光测距 + OLED 显示
  8. DFRobot 电容指纹传感器 (ID809) 接入 Arduino/ESP8266 完整教程
  9. Arduino Cloud 传感器塔:温度、动作与气体监测
  10. 高精度空气质量监测仪:Sharp GP2Y1010AU0F 粉尘传感器 + Arduino Nano
  11. Arduino Nano 多传感器气象站:BMP280 + DHT11 + GUVA-S12SD + DS3231 + OLED
  12. 基于 Arduino 与 DSM501A 传感器的空气质量监测仪