发 帖  
[创意DIY] 基于Arduino MKR FOX 1200的移动物联网气象站 含代码
2018-5-10 20:59:45  803 Arduino
收藏 1 收藏 推荐 0 推荐
分享
基于Arduino MKR FOX 1200的移动物联网气象站

与Sigfox连接的Arduino MKR FOX 1200将微控制器的使用推向了物联网和云端。

基于这款微处理器,我在任何地方建立了一个用于UV,压力和温度测量的移动气象站这款小巧的设备每三分钟可以自动收集15分钟的环境信息,使用三节AA电池,几乎可以在世界任何地方使用。



该设备最终被放置在西班牙帕尔玛的海滩上所以你现在可以在下面的链接中看到紫外线辐射指数,温度和大气压力:https : //thingspeak.com/channels/365024

这个项目将通过移动设备实时收集您的手机上基本的天气信息,您可以在世界的大部分地区“放弃”移动设备。

物联网概念

物联网是一种通过互联网进行通信的互联设备网络,它们可以自动进行机器对机器的操作,而无需人工干预。

第一次参考物联网是在1982年,当时卡内基梅隆大学的研究人员开发出了世界上第一台支持物联网的焦炭机器。Mark Weiser在90年代初进一步发展了这个概念; 凯文阿什顿在1999年左右创造了“物联网”这个术语。

所有物联网架构都由5个组件构建而成。我将列出这些组件,说明我为构建此设备所做的实现。

传感器

世界可以用大量的传感器来选择。今天,它们无形且节能,同时保持较高的测量精度。我用这些:

  • ML8511 紫外线传感器
  • BMP180 温度和压力传感器


连接

一旦我们有了感觉,我们需要将其可靠地连接到互联网。但是现在,无线连接对物联网的成功至关重要。这里Sigfox为连接其他技术(如3 / 4G,GSM或Wifi)的无法访问区域打开了大门。它使用的免费频段在欧洲为868 MHz,在美国为915 MHz。这是一种窄带连接,可实现非常低的能耗。传输限制是每天140条消息,不超过24个字节。如果我们每天24小时之间划分140条消息,我们必须每隔10.2分钟发送一条消息。这是一个发送帧的例子:

Frame:                          4b594e40|0e|00fa|314204740Decoded values:  3.2242|14|1018|3.111333  Battery|Temperature|Presure|UV

此外,它还提供基于设备最可能位置的专有概率计算的本地化服务。这种方法允许首次发布的服务具有以km为单位的准确度(80%的设备在1km到10km之间),具体取决于设备所在的基站密度。由于机器学习的进一步发布,这种精度将得到提高。

这是sigfox网络的全球覆盖:



在我的圣诞假期中,我有机会尝试了我访问过的不同城市的设备:马德里,萨拉曼卡,华沙和克拉科夫。此外,这是在Sierra de Tramuntana(马略卡岛)1000米以上的几天。收集的所有信息可在以下网址找到:(https://github.com/McOrts/MKRFOX1200_mobile-weather-station/tree/master/MKRFOX1200_mobile-weather-station_report-data)



平台

第三,收集的数据需要存储和处理。被称为物联网平台,这些平台通常是基于云的基础设施,其中:

  • 通过称为API的标准化接口接收和发送数据;
  • 存储数据;
  • 处理数据。

对于这个项目我选择了ThingSpeak。平台。一个免费帐户允许您存储多达8个字段,只要不超过3000个字节的限制,每年最多300万条消息。

Analytics(分析)

一些数据分析需要应用于数据,因为该值不在原始位和字节中,而是在从他们收集的洞察中。



ThingSpeak 不仅可以显示您的数据图表。也可以使用MATLAB编程来分析您的数据。例如,根据温度和湿度计算露点。

  1. % Humidity and temperature are read from a ThingSpeak channel to calculate% dew point.% Channel ID to read data fromreadChannelID = 365024;% Humidity Field IDHumidityFieldID = 2;% Temperature Field IDTemperatureFieldID = 3;% Channel Read API Key readAPIKey = 'UTVU9A464TKW6UQ5';% TODO - Replace the [] with channel ID to write data to:writeChannelID = 365024;% TODO - Enter the Write API Key between the '' below:writeAPIKey = '****************';tempF = thingSpeakRead(readChannelID, 'Fields', TemperatureFieldID, 'ReadKey', readAPIKey);% Get latest humidity data from the MathWorks Weather Station channelhumidity = thingSpeakRead(readChannelID, 'Fields', HumidityFieldID, 'ReadKey', readAPIKey);% Convert temperature from Fahrenheit to CelsiustempC = (5/9)*(tempF-32);% Calculate dew point% Specify the constants for water vapor (b) and barometric (c) pressure.b = 17.62;c = 243.5;% Calculate the intermediate value 'gamma'gamma = log(humidity/100) + b*tempC ./ (c+tempC);% Calculate dew point in CelsiusdewPoint = c*gamma ./ (b-gamma);% Convert to dew point in FahrenheitdewPointF = (dewPoint*1.8) + 32;display(dewPointF, 'Dew point')% Write the dew point value to another channel specified by the% 'writeChannelID' variablethingSpeakWrite(writeChannelID, dewPointF, 'Writekey', writeAPIKey);
复制代码

另外,ThingSpeak允许你通过触发twitter消息等事件来处理数据。

用户界面

一个重要的组成部分是数据如何呈现给最终用户。有吸引力的用户界面,基于网络以及基于智能手机或平板电脑。

我选择了一个在iOS中提供小部件的应用程序:








原理图和连接

我将原型的所有部件组装在MKR Proto大型盾牌上。这是面包板:




建筑

该设备收集环境数据并每隔15分钟以离散无线数据包的形式发送信息。无线电网络通过rest-api调用摄取互联网上的数据。最后,网站和移动应用程序可以处理和显示信息。



原理图
MKRFOX1200_mobile天气站基于Arduino MKRFOX1200的移动气象站通过Sigfox网络连接,用于任何地方的UV,压力和温度测量






2018-5-10 20:59:45   评论
高级模式
您需要登录后才可以回帖 登录 | 注册

发表新帖
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表