树莓派 + Windows IoT Core 搭建环境监控系统
树莓派 + Windows IoT Core 搭建环境监控系统
前言:Windows IoT 是微软为嵌入式开发板设计的一种物联网操作系统,运行Windows UWP(C# 开发),可以设计出丰富的交互界面,驱动GPIO,连接一些传感器做有意思的事,本文详细介绍如何使用它搭建一个环境监控系统,并将数据上传到Microsoft Flow云服务器。
工具:一台Windows 10电脑,树莓派3B/3B+,(8GB(以上)容量SD卡,读卡器。
传感器:DHT11温湿度传感器、BMP180气压计、BH1750FVI光强传感器、MQ-2烟雾传感器、蜂鸣器、若干杜邦线。
系统框架:
实现室内温湿度,光线强度,气压高度的采集,火灾情况的报警,数据的上传到云端。
(全是微软的一套,PowerBi部分没做)
PS:
- 本系统传感器驱动代码来自 https://github.com/ZhangGaoxing/windows-iot-demo
搬运至码云,加速Clone:https://gitee.com/xKryo/windows-iot-demo
- DHT11项目代码有一些问题,修改版本网盘下载:https://pan.baidu.com/s/11-EofiscGOnMuSyPgvFO1w 提取码:a2p1
- 本系统的完整代码:https://pan.baidu.com/s/1gTaC3vrEigzjzqDfF_uA1Q 提取码:quau
- Microsoft Flow服务器现在HTTP请求触发需要注册高级账户。
正文:
一、开发平台的搭建
1.树莓派安装Windows IoT
下载Windows 10 IoT Core Dashboard 和最新的固件:https://docs.microsoft.com/en-us/windows/iot-core/downloads,下载完成后解压出FFu固件,打开Dashboard并选择固件,设置密码,写入SD卡。
将SD卡插入树莓派,漫长的等待数次重启,中间需要通过鼠标对树莓派进行设置,最后进入系统:
通过仪表盘(Dashboard)的“我的设备”可以扫描到局域网的树莓派,浏览器输入IP:8080,输入用户名Administrator和刚刚设置的密码,进入Windows IoT的管理页面。
2.Visual Studio 2017安装,可以通过下载Visual Studio Installer安装:
二、第一个传感器驱动(DHT11 Demo)
以驱动DHT11为例,讲解将传感器连接树莓派,并编译打包程序并部署到树莓派。
1.DHT11连接树莓派,DHT11和树莓派的引脚定义如图,将DHT11的数据输出引脚连接GPIO4(07号引脚),电源(VCC)和地(GND)就近接入但不要接反。
2.VS 2017打开DHT11 Demo 项目(IDE可能会要求安装一些依赖的组件)
生成解决方案时,可能会出现证书过期:
双击打开项目Package.appxmanifest文件:
在新的窗口中选择打包一栏,弹出的窗口选择配置证书—创建测试证书(任意名称)
重新生成解决方案:
我的VS 2017出现了问题,不能远程调试,如果调试设置出现以下信息,则可以直接远程调试安装应用不用打包部署:
3.打包项目的安装程序包:
右键项目 – 应用商店 – 创建应用程序包 – 创建旁加载包:
选择生成包的路径,勾选合适的体系结构,点击创建,漫长等待生成完成:
进入浏览器后台管理页的Apps Manager选择打包好的应用,点击Install安装:
安装成功:
运行效果:
三、接入所有传感器
下载系统完整代码,用VS2017打开,里面有详细的注释,代码模块较为清晰,这里就不再分析代码功能了。
通过重新设计交互界面,接入BMP180气压计、BH1750FVI光强传感器、MQ-2烟雾传感器。
图中可看到传感器功能都已经实现,关于数据上传部分在后面会讲解。
系统设计的电路图:
对应树莓派引脚的连接图:
实物图如下,先在面包板上调试,再把所有传感器模块焊接在实验板上。
四、Microsoft Flow云服务
系统通过HTTP POST的方式,将数据打包成的JSON文件POST到流,服务器解析后执行流。
推荐先观看此视频:https://b23.tv/av21526828使用Microsoft Flow 快速采集IoT设备数据。
注意:微软Flow的服务器升级后,HTTP请求的触发器已不再支持免费的账户,如果不想注册,则跳过该部分,通过其他的方式上传到所需要的其他服务器。
尽管如此,还是记录一下之前连接Flow的过程。
以视频中的例子为基础,代码中数据封装及HTTP POST部分:
复制代码
1 using System;
2 using System.Diagnostics;
3 using System.IO;
4 using System.Threading.Tasks;
5
6 namespace Windows_IoT_Core
7 {
8 class PostFlow
9 {
10 private string Url { get; set; }
11 private string Str { get; set; }
12 public PostFlow(String httpUri , String jsonStr)
13 {
14 this.Url = httpUri;
15 this.Str = jsonStr;
16 }
17 public PostFlow(ViewModel view)
18 {
19 //由MS-Flow产生的Https请求Url
20 Url = "https://XXX";
21
22 //有效负载的请求正文 JSON架构
23 Str = "{nt"Temp" : " "+view.Temp+"" ,nt"Hum" : ""+view.Hum+"" ,nt"Bright" : ""+view.Ill+"" ,nt"Alt" : ""+view.Alt+"" ,nt"Press" : ""+view.Press+"" ,nt"Fire" : ""+view.Fire+"" ,nt"Time" : ""+view.Time+""n}";
24 }
25 public async Task DoPostAsync()
26 {
27 var request = System.Net.WebRequest.Create(new Uri(Url));
28 request.ContentType = "application/json";
29 request.Method = "POST";
30
31 using (var requestStrem = await request.GetRequestStreamAsync())
32 {
33 var writer = new StreamWriter(requestStrem);
34 writer.Write(Str);
35 writer.Flush();//清空缓存并发送
36 }
37
38 using (var resp = await request.GetResponseAsync())
39 {
40 using (var responseStream = resp.GetResponseStream())
41 {
42 var reader = new StreamReader(responseStream);
43 var result = reader.ReadToEnd();
44 Debug.WriteLine(result.ToString());
45 }
46 }
47 }
48 }
49 }
复制代码
服务器HTTP端触发JSON配置:
View Code
- 进入Microsoft Flow官网,注册免费账户
- 在“我的流”中新建,选择触发条件,通过搜索框搜索HTTP添加触发条件,填入JSON配置,现在免费账户搜索不到。
添加条件分支,如果发生燃气泄漏情况,推送报警和Outlook发送邮件,最终会将数据插入到Excel(OneDrive)。
具体邮件内容的设置:
- 制作好带表头的Excel文件,上传到OneDrive,Flow连接OneDrive,可以找到文件,然后关联JSON代码内容:
上传多次数据,可以看到表格中的内容如下:
如图发生r燃气泄漏,Flow会推送邮箱内容:
Microsoft Flow APP在Googe Paly 中下载,通过Flow APP 和OneDrive APP 在移动端查收:
五、总结
树莓派搭载Windows IoT接入传感器,基本的环境数据采集、数据展示、数据上传都已完成。使用微软的一套东西进行开发着实令人崩溃,所以不再深入了,1年前开发的,有些具体的步骤还不够清晰,现在总结起来感觉有点low。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云最新优惠活动汇总------适合企业的选择
最近阿里云又出了活动,很多朋友都给我说这么多活动都不知道哪个活动有哪些优惠了,今天就给大家整理下阿里云最新的优惠活动,需要的朋友还请收藏关注下,该活动汇总会实时跟进的,让大家优惠上云。 阿里云2000元代金券条件:仅限新用户领取 云上爆款 条件:新老用户均可参与,新用户更优惠时间:2019年7月1日至2020年3月31日3年最优惠 Hi拼团条件:新老用户均可开团,爆款产品低至2折,每人限购1台,手慢无!时间:2019年5月14日至2020年3月31日TIM_20190802110909 企业级云服务器5折特惠条件:限首次购买ECS用户参与,限购1单,限购3台时间:长期图片价格为3年的价格 全民云计算条件:实名认证 后新老用户首次购买ECS,均可享受1-3年价格优惠,每人限购1单,限量3台时间:长期2年与3年时间价格相同 88物联网狂欢节热门物联网软硬一体应用,下单返现2019年8月8日至2019年8月18日
- 下一篇
区块链跟物联网结合的意义在哪里?
我们对自动化、人工智能(AI)和物联网(IoT)等技术感到兴奋,但现实是,数十亿笔交易发生在仍然没有很好集成的系统之间。 如果您的组织在使用人工智能,那么您可能只是在使用它优化客户服务。或者你只是将物联网应用于你的运营,而不是你的营销。 我的观点是:所有这些很酷的技术创造了对更好的基础设施的需求。我们需要一个更好的结缔组织,能够将所有的交易整合到一个共享的、跨业务单位和行业的可信网络上。我们需要一个解决方案,可以连接多种技术,以改善企业运营,降低成本,并提高我们的最终盈利——开始着手区块链技术。 区块链与物联网有什么关系?物联网的主要目的是将物理世界与数字世界连接起来。令人兴奋的是:它不仅将设备连接起来,还将设备与人连接起来。物联网将创建一个人类将从中受益的人与机器的连接。例如,想象一下你的冰箱可以知道什么时候冰箱灯坏了,然后订购一个新的——物联网技术使这种场景成为可能。 现在让我们讨论一下物联网在区块链解决方案中的价值。验证成本和联网成本是区块链技术的核心优势。验证成本与区块链网络的能力有关,由于采用了分散式验证共识方法,区块链网络能够以符合成本效益的方式验证交易。网络成本与创建、管...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7安装Docker,走上虚拟化容器引擎之路