树莓派 + Windows IoT Core 搭建环境监控系统

前言:Windows IoT 是微软为嵌入式开发板设计的一种物联网操作系统,运行Windows UWP(C# 开发),可以设计出丰富的交互界面,驱动GPIO,连接一些传感器做有意思的事,本文详细介绍如何使用它搭建一个环境监控系统,并将数据上传到Microsoft Flow云服务器。

工具:一台Windows 10电脑,树莓派3B/3B+,(8GB(以上)容量SD卡,读卡器。

传感器:DHT11温湿度传感器、BMP180气压计、BH1750FVI光强传感器、MQ-2烟雾传感器、蜂鸣器、若干杜邦线。

系统框架:

640?wx_fmt=png

实现室内温湿度,光线强度,气压高度的采集,火灾情况的报警,数据的上传到云端。

(全是微软的一套,PowerBi部分没做)

PS:

1. 本系统传感器驱动代码来自 https://github.com/ZhangGaoxing/windows-iot-demo

搬运至码云,加速Clone:https://gitee.com/xKryo/windows-iot-demo

2. DHT11项目代码有一些问题,修改版本网盘下载:https://pan.baidu.com/s/11-EofiscGOnMuSyPgvFO1w 提取码:a2p1

3. 本系统的完整代码:https://pan.baidu.com/s/1gTaC3vrEigzjzqDfF_uA1Q 提取码:quau

4.  Microsoft Flow服务器现在HTTP请求触发需要注册高级账户


正文:

一、开发平台的搭建

1.树莓派安装Windows IoT

下载Windows 10 IoT Core Dashboard 和最新的固件:https://docs.microsoft.com/en-us/windows/iot-core/downloads,下载完成后解压出FFu固件,打开Dashboard并选择固件,设置密码,写入SD卡。

640?wx_fmt=png

将SD卡插入树莓派,漫长的等待数次重启,中间需要通过鼠标对树莓派进行设置,最后进入系统:

640?wx_fmt=png

通过仪表盘(Dashboard)的“我的设备”可以扫描到局域网的树莓派,浏览器输入IP:8080,输入用户名Administrator和刚刚设置的密码,进入Windows IoT的管理页面。

 640?wx_fmt=png

640?wx_fmt=png

2.Visual Studio 2017安装,可以通过下载Visual Studio Installer安装:

 640?wx_fmt=png

二、第一个传感器驱动(DHT11 Demo)

以驱动DHT11为例,讲解将传感器连接树莓派,并编译打包程序并部署到树莓派。

1.DHT11连接树莓派,DHT11和树莓派的引脚定义如图,将DHT11的数据输出引脚连接GPIO4(07号引脚),电源(VCC)和地(GND)就近接入但不要接反。

 640?wx_fmt=png640?wx_fmt=png

2.VS 2017打开DHT11 Demo 项目(IDE可能会要求安装一些依赖的组件)

生成解决方案时,可能会出现证书过期:

 640?wx_fmt=png

双击打开项目Package.appxmanifest文件:

在新的窗口中选择打包一栏,弹出的窗口选择配置证书—创建测试证书(任意名称)

640?wx_fmt=png

重新生成解决方案:

 640?wx_fmt=png

我的VS 2017出现了问题,不能远程调试,如果调试设置出现以下信息,则可以直接远程调试安装应用不用打包部署:

640?wx_fmt=png

3.打包项目的安装程序包:

右键项目 – 应用商店 – 创建应用程序包 – 创建旁加载包:

640?wx_fmt=png

选择生成包的路径,勾选合适的体系结构,点击创建,漫长等待生成完成:

640?wx_fmt=png

进入浏览器后台管理页的Apps Manager选择打包好的应用,点击Install安装:

640?wx_fmt=png

安装成功:

 640?wx_fmt=png

运行效果:

640?wx_fmt=png

三、接入所有传感器

下载系统完整代码,用VS2017打开,里面有详细的注释,代码模块较为清晰,这里就不再分析代码功能了。

通过重新设计交互界面,接入BMP180气压计、BH1750FVI光强传感器、MQ-2烟雾传感器。

图中可看到传感器功能都已经实现,关于数据上传部分在后面会讲解。

 640?wx_fmt=png

系统设计的电路图:

640?wx_fmt=png

对应树莓派引脚的连接图:

 640?wx_fmt=png

实物图如下,先在面包板上调试,再把所有传感器模块焊接在实验板上。

640?wx_fmt=png

四、Microsoft Flow云服务

系统通过HTTP POST的方式,将数据打包成的JSON文件POST到流,服务器解析后执行流。

推荐先观看此视频:https://b23.tv/av21526828使用Microsoft Flow 快速采集IoT设备数据。

注意:微软Flow的服务器升级后,HTTP请求的触发器已不再支持免费的账户,如果不想注册,则跳过该部分,通过其他的方式上传到所需要的其他服务器。

尽管如此,还是记录一下之前连接Flow的过程。

以视频中的例子为基础,代码中数据封装及HTTP POST部分:

服务器HTTP端触发JSON配置:

1. 进入Microsoft Flow官网,注册免费账户

640?wx_fmt=png

2. 在“我的流”中新建,选择触发条件,通过搜索框搜索HTTP添加触发条件,填入JSON配置,现在免费账户搜索不到。

添加条件分支,如果发生燃气泄漏情况,推送报警和Outlook发送邮件,最终会将数据插入到Excel(OneDrive)。

640?wx_fmt=png

具体邮件内容的设置:

 640?wx_fmt=png

 3. 制作好带表头的Excel文件,上传到OneDrive,Flow连接OneDrive,可以找到文件,然后关联JSON代码内容:

640?wx_fmt=png

上传多次数据,可以看到表格中的内容如下:

 640?wx_fmt=png

如图发生r燃气泄漏,Flow会推送邮箱内容:

 640?wx_fmt=png

Microsoft Flow APP在Googe Paly 中下载,通过Flow APP 和OneDrive APP 在移动端查收:

640?wx_fmt=png

五、总结

树莓派搭载Windows IoT接入传感器,基本的环境数据采集、数据展示、数据上传都已完成。使用微软的一套东西进行开发着实令人崩溃,所以不再深入了,1年前开发的,有些具体的步骤还不够清晰,现在总结起来感觉有点low。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CF1547F Array Stabilization (GCD version) st表 + 尺取/二分

传送门 题意: 思路: 容易发现,我们将所有aaa都除上所有aaa的gcdgcdgcd,实际上就是让你求一个最小的lenlenlen,对于所有iii,gcd(ai,ai1,...,ailen−1)1gcd(a_i,a_{i1},...,a_{ilen-1})1gcd(ai​,ai1​,...…

Gauss高斯消元——模板

就是线性代数的初等行变化&#xff1a; 倍加。倍乘。交换行。 #include <bits/stdc.h> #define mp make_pair #define pb push_backusing namespace std;typedef long long ll; typedef pair<int, int> pii; typedef unsigned long long ull;const double pi ac…

.net持续集成测试篇之Nunit文件断言、字符串断言及集合断言

使用前面讲过的方法基本上能够完成工作中的大部分任务了,然而有些功能实现起来还是比较麻烦的,比如说字符串相等性比较不区分大小写,字符串是否匹配某一正则规则,集合中的每一个(某一个)元素是否符合特定规则等,Nunit提供了一些特定的方法用来实现一些用普通断言比较难以实现的…

Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况&#xff1a; ac/ba c / bac/b这个时候两个的单价是相同的&#xff0c;如果b1b 1b1&#xff0c;也就是aca cac&#xff0c;无论买多少数量的东西&#xff0c;这两个的价格都是一样的&…

Technocup 2020 - Elimination Round 2 E. Rock Is Push dp

传送门 文章目录题意&#xff1a;思路题意&#xff1a; 给你一个nmnmnm的方格&#xff0c;你初始在(1,1)(1,1)(1,1)点&#xff0c;有些位置有箱子&#xff0c;你可以走到某个位置向你的方向推动这个箱子&#xff0c;箱子不能出界&#xff0c;问你走到(n,m)(n,m)(n,m)有多少种方…

HttpClientFactory 使用说明 及 对 HttpClient 的回顾和对比

在 C# 中&#xff0c;平时我们在使用 HttpClient 的时候&#xff0c;会将 HttpClient 包裹在 using 内部进行声明和初始化&#xff0c;如&#xff1a;using(var httpClient new HttpClient()){ }至于为什么&#xff1f;无外乎是&#xff1a;项目代码中就是这样写的&#xf…

Codeforces Round #653 (Div. 3)(A, B, C, D, E1详解)

Codeforces Round #653 (Div. 3) Required Remainder Thinking(binary search) 既然是找最大值问题&#xff0c;我又懒得去推式子&#xff0c;于是我直接就上了一个二分&#xff0c;二分写法比结论稍微繁琐了一点吧&#xff0c;但是还是挺好想的。 根据题意&#xff0c;我们…

记录用友T+接口对接的心酸历程

前言&#xff1a;公司的业务主要是对接财务系统做单据传输或者凭证处理的&#xff0c;难免少不了和各大财务软件做数据对接&#xff0c;其中当然是必须通过接口来传递数据了。于是乎&#xff0c;用友T的版本来了&#xff0c;对接的工作自然是我来做&#xff0c;可没想到就是这样…

P6327 区间加区间sin和 线段树 + 数学

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个长度为nnn的序列aaa&#xff0c;有mmm次操作&#xff0c;每次操作分两种类型&#xff1a; (1)l,r,v(1)l,r,v(1)l,r,v&#xff0c;将al,al1,...,ara_l,a_{l1},...,a_ral​,al1​,...,ar​分别加上vvv…

集群故障处理之处理思路以及听诊三板斧(三十四)

前言 本篇主要分享一些处理故障和问题绝招&#xff0c;比如听诊三板斧&#xff1a;1&#xff09;查看日志2&#xff09;查看资源详情和事件3&#xff09;查看资源配置&#xff08;YAML&#xff09;如果还是不太好分析&#xff0c;那就祭出神器——kubectl-debug。最后&…

AC Automaton

简单复习一下字符串&#xff0c;顺便存个板子。 // Problem: P3808 【模板】AC自动机&#xff08;简单版&#xff09; // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P3808 // Memory Limit: 512 MB // Time Limit: 1000 ms // // Powered by CP Editor (http…

selenium搜狗搜图简单操作(爬取任意关键字的图片)

Picture preview Steps 这里以搜狗搜图作为一个简单的例子&#xff1a; 第一步就是获取我们的需求了&#xff0c;输入需要下载的图片名字以及需要下载的图片数量。 接下来我们需要在搜狗搜图中输入用户的需求&#xff0c;透过xpathxpathxpath锁定搜索框&#xff0c;然后输入…

Microsoft REST API指南

经过3个月的碎片时间的翻译和校验&#xff0c;由长沙.NET技术社区翻译的英文原文文档《Microsoft REST API指南 》已经翻译完成&#xff0c;现刊载前十一章如下&#xff0c;欢迎大家点击“查看原文”按钮&#xff0c;查看指南的完整内容。PS&#xff1a;内容很长&#xff0c;全…

D. Salary Changing(二分,前缀和,贪心,瞎搞)

Salary Changing Thinking 这道题第一思路就是二分&#xff0c;模拟了一下样例&#xff0c;感觉好像行于是就开始写。 对于二分&#xff0c;我们一定是二分中位数是什么&#xff0c;二分的边界对我们来说是非常重要的&#xff0c;所以我们在二分前有必要确认我们的二分边界&…

如何优雅地替换一个实现

前两天&#xff0c;我所在的项目有一个小的技术改动&#xff0c;打算把访问Redis的密码从数据库挪到配置文件里。以前的代码类似下面这样&#xff1a;用户第一次调用GetDatabase时&#xff0c;根据传入的数据库连接字符串访问数据库&#xff0c;从某个表里取出带密码的Redis连接…

莫队——三种题型

普通莫队 P3901 数列找不同 Thinking 一定是用可以用莫队来写题&#xff0c;这点是不用质疑的&#xff0c;所以那就简单了&#xff0c;只需要判断每次询问的区间是否满足r−l1numr - l 1 numr−l1num就行了。 Coding1Coding_1Coding1​ 莫队写法 #include <bits/stdc…

P5357 【模板】AC自动机(二次加强版) fail树

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 这个只能搞failfailfail树了&#xff0c;让后跑一遍即可。 重复的字符串记一个&#xff0c;让后其他的都跟他一个答案即可。 // Problem: P3796 【模板】AC自动机&#xff08;加强版&…

10分钟了解一致性hash算法

应用场景当我们的数据表超过500万条或更多时&#xff0c;我们就会考虑到采用分库分表&#xff1b;当我们的系统使用了一台缓存服务器还是不能满足的时候&#xff0c;我们会使用多台缓存服务器&#xff0c;那我们如何去访问背后的库表或缓存服务器呢&#xff0c;我们肯定不会使用…

Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 你有nnn个装备槽&#xff0c;每个槽里面有cic_ici​个力量加成&#xff0c;对于每个槽只能选一个力量加成&#xff0c;现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2,...,b_n][b1​,b2​,...,bn​]代表这个力…

[SCOI2008]着色方案(DP)

题目链接 思想 显然我们后面的决策是跟前一步相关的&#xff0c;因此我们可以考虑DP&#xff0c;可以用一个15维的数组来进行转移&#xff0c;但是这样显然回mle&#xff0c;所以我们考虑如何压缩状态&#xff0c;由于1<Ci<51 < C_i < 51<Ci​<5&#xff0…