前言

  树莓派(Raspberry Pi,RPi)是专门为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,可以运行Linux或者Windows 10 IoT Core操作系统。本文将利用树莓派和UWP(Universal Windows Platform)开发技术搭建一个可以实时监控的气象站系统。

硬件和涉及技术

  

硬件部分:

  • 树莓派2或3一块,8G以上内存卡一张,读卡器(或带sd卡接口的电脑)一个;
  • Dht11温湿度传感器一个,GY-68 BMP180气压计一个;
  • LY-69 土壤湿度计一个,MQ-2 烟雾气敏传感器一个,雨滴传感器一个;
  • 公母杜邦线若干,面包板一个,micro USB线一根,电源一个;
  • HDMI接口显示器一台(或HDMI转其它接口)。

开发部分:

  • 集成开发环境: Visual Studio 2017(建议使用社区版);
  • 开发语言:C#;
  • 开发平台:UWP;
  • 通信协议:MQTT;
  • 树莓派操作系统:WIndows 10 IoT Core;
  • 数据库:Sqlite

操作系统的下载与安装:

  • 安装Windows 10 IoT Core Dashboard 应用, 访问微软开发者中心https://developer.microsoft.com/en-us/windows/iot/GetStarted. 依次选择Raspberry Pi 3,Install onto my blank microSD card,Windows10 IoT core,点击Next按钮来到新页面,点击Download Dashboard按钮下载,然后安装。
  • 烧录操作系统到MicroSD卡,安装完成后选择设置新设备项进入烧录页面。设备类型选择Raspberry Pi 2&3;OS内部版本选择Windows 10 IoT Core(15063);驱动器选择插入的MicroSD卡;输入设备名称、密码、确认密码;勾选WLAN网络连接(勾选此项后可以将当前电脑连接的WLAN信息复制给树莓派开发板的操作系统,省去再次配置的麻烦);至此,树莓派安装Windows 10 IoT操作系统完成。

如下图:

  Windows Device Portal:

  在同一网络环境下的浏览器输入树莓派的IP地址,端口为8080,回车后会提示输入用户名和密码。默认用户名为Administrator,密码为烧录操作系统时设置的密码,如果忘记密码则只能重新安装。登陆成功后会看到树莓派开发板的当前操作系统下的详细信息,应用程序管理界面,设置默认程序以及开机自启动等。

实现

MQTT通信:

  MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议。经过多年的发展,MQTT在各个领域的应用均有凸显,它可以作为手机客户端的消息推送工具,并且在安卓应用中有比较大的占比。作为一款专为物联网设计的通信协议,MQTT具有在低带宽、不稳定的网络环境下正常工作的特性。它的消息传递有三种模式:

  1. 至多一次,会发生消息丢失或重复,这种模式适合传感器类的数据传输,即使消息丢失,很快会再次发送。
  2. 只有一次,确保消息到达且不发生重复数据,适合需要精确数据的系统,例如计费系统。
  3. 至少一次,确保消息可以到达,但可能发生重复。

关于MQTT服务器的搭建可以参考:http://blog.csdn.net/yannanxiu/article/details/52703946

MQTT在UWP下的使用可以参考:http://www.cnblogs.com/Yixin-ran/archive/2016/10/21/mqtt.html

要在UWP下使用MQTT需要安装nuget包m2mqtt

在这里我还是贴一下MQTT的连接代码:

 public class Mqtt : MqttClient
{ public Mqtt(string host) : base(host, , false, MqttSslProtocols.None)
{
Connect(Guid.NewGuid().ToString(), "admin", "password");
Subscribe(new string[] { "atmo" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
// PostData("Hello World!");
}
public void RequestData(string msg)
{
Publish("atmo", Encoding.UTF8.GetBytes(msg));
}
public void PostData(string msg)
{
Publish("atmo", Encoding.UTF8.GetBytes(msg));
}
}

Sqlite实现:

要在UWP下使用Sqlite需要先安装VS扩展Sqlite for Universal Windows Platform和Nuget包SQLite.Net-PCL。关于sqlite的详细使用方法参照:http://www.cnblogs.com/yanxiaodi/p/4941312.html

下面是本系统中Database类:

  public class DataBase : SQLiteConnection
{ public static string path = Path.Combine(ApplicationData.Current.LocalFolder.Path, "atmo.db");public DataBase() : base(new SQLitePlatformWinRT(), path)
{
CreateTable<DataModel>();
}
}

INotifyPropertyChanged接口实现

 public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName]string name = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}

树莓派GPIO图

硬件连接图:

传感器引脚图:

项目地址:https://github.com/yixinin/Yixin.Atom

该项目还不完善,欢迎大家补充和指正!

有任何问题可以联系我的Email:xingran1994@live.com

基于树莓派的微型气象站设计与开发(Windows 10 IoT Core)的更多相关文章

  1. 基于Vmware player的Windows 10 IoT core + RaspberryPi2安装部署

    本文记录了基于Vmware Player安装Windows10和VS2015开发平台的过程,以及如何在RaspberryPi2.0上启动Windows10 IoT core系统,并通过一个简单的hel ...

  2. 树莓派3 Windows 10 IoT Core

    下载地址:https://developer.microsoft.com/zh-cn/windows/iot/Downloads 先下载安装 Windows 10 IoT 核心版仪表板: 安装完成后运 ...

  3. Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度

    我接到一个需求,需要调节LED灯的亮度,且是从上位机进行控制,我了解到树莓派也有PWM,就准备通过PWM来控制灯的亮度. PWM又叫脉宽调制,是用微处理器的数字输出来对模拟电路进行控制,对模拟信号电平 ...

  4. 【Windows 10 IoT - 2】LED闪烁及动画绘制(树莓派 Pi2)

    在上一篇博文<Windows 10 IoT系统安装>中,我们实现了在树莓派2平台上运行Window 10 IoT,本篇文章将介绍在该平台上的程序开发. 在最初获得的资讯中,以为Window ...

  5. Windows 10 IoT Serials 5 - 如何为树莓派应用程序添加语音识别与交互功能

    都说语音是人机交互的重要手段,虽然个人觉得在大庭广众之下,对着手机发号施令会显得有些尴尬.但是在资源受限的物联网应用场景下(无法外接鼠标键盘显示器),如果能够通过语音来控制设备,与设备进行交互,那还是 ...

  6. Windows 10 IoT Serials 7 – 如何用树莓派制作家庭流媒体播放器

    Windows 10平台引入了AllJoyn开源软件框架,它提供了一组服务可以创建动态近端网络,让设备可以相互连接实现功能交互.目前,AllJoyn开源软件框架由AllSeen联盟负责管理.AllSe ...

  7. Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建

    目前,微软针对Windows IoT计划支持的硬件包括树莓派2,Minnow Board MAX 和Galileo (Gen 1和Gen 2).其中,Galileo (Gen 1和Gen 2)运行的是 ...

  8. 用Node.js开发Windows 10物联网应用

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 未来10年内,物联网将会如移动互联网这样深入到我们生活的各方各面.所以微软现在对物联网进行了 ...

  9. Windows 10 IoT Serials 4 - 如何在树莓派上使用Cortana语音助手

    从Windows 10 IoT Core 14986版本开始,微软已经加入Cortana语音助手功能.之前,我们只能使用本地语音识别,需要编写应用程序,下载到设备中才能实现.从现在开始,微软已经从系统 ...

随机推荐

  1. oracle汉字占用字节长度

    1.        今天调查一个oracle数据库问题的时候,发如今11g中一个汉字占2个字节,在10g中占3个字节.导致将11g数据库中的数据导入到10g的时候总是出错.開始的时候还以为是11g和1 ...

  2. HTML代码简写法:Emmet和Haml(转)

    HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容.还有一种就是我今天想要介绍的方法----简写法. 常用的简写法,目前主要是Emmet和Haml ...

  3. oracle 内存结构具体解释

    Oracle 内存结构 与 Oracle 实例关联的基本内存结构包含: 系统全局区 (SGA):由全部server和后台进程共享.SGA 中存储的数据演示样例包含快速缓存的数据块和共享 SQL 区域. ...

  4. TI_DSP_SRIO - Doorbell原理

    前文介绍到SRIO有多种类型的包,当中包括了Doorbell包,Doorbell是一种高速的通知类型的短消息,包头和携带信息都非常短,用于master srio设备通知slave srio设备,可用于 ...

  5. POJ 3714 Raid(平面近期点对)

    解题思路: 分治法求平面近期点对.点分成两部分,加个标记就好了. #include <iostream> #include <cstring> #include <cst ...

  6. Android在网络上分析获取图片(支持bmp格式)

    Android学习系列 - 在网络上显示的图像(支持bmp格公式)) 参见例如,下面的代码: /**     * 至Url地址上去照片.并返回Bitmap回来     *     * @param i ...

  7. HTML_ul无序列表

    本文来源于:http://blog.csdn.net/svitter 嵌套无序列表应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra ...

  8. Servlet接口的实现类,路径配置映射,ServletConfig对象,ServletContext对象及web工程中文件的读取

    一,Servlet接口实现类:sun公司为Servlet接口定义了两个默认的实现类,分别为:GenericServlet和HttpServlet. HttpServlet:指能够处理HTTP请求的se ...

  9. webpack打包不引入vue、echarts等公共库

    如果我们打包的时候不想将vue.echarts等公共库包含在内,需要配置两处地方, 以下以基于vue-cli生成的项目为基准: 1webpack配置: // webpack.base.conf.js ...

  10. WPF中MVVM模式的 Event 处理

    WPF的有些UI元素有Command属性可以直接实现绑定,如Button 但是很多Event的触发如何绑定到ViewModel中的Command呢? 答案就是使用EventTrigger可以实现. 继 ...