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

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

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

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

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

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

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

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

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

安装成功:

 

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

运行效果:

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

三、接入所有传感器

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

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

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

 

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

 

系统设计的电路图:

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

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

 

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

 

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

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

 

四、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 = "{\n\t\"Temp\" : \" "+view.Temp+"\" ,\n\t\"Hum\" : \""+view.Hum+"\" ,\n\t\"Bright\" : \""+view.Ill+"\" ,\n\t\"Alt\" : \""+view.Alt+"\" ,\n\t\"Press\" : \""+view.Press+"\" ,\n\t\"Fire\" : \""+view.Fire+"\" ,\n\t\"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 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxfgx.html