爱板网论坛

查看: 364|回复: 1

[项目] 【转】基于树莓派的微型气象站设计与开发

[复制链接]

37

主题

1

好友

508

积分

举人

Rank: 4

  • TA的每日心情

    2015-8-5 11:09
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-8-2 17:15:39 |显示全部楼层
    前言
      树莓派(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操作系统完成。
    如下图:
    1047070-20170605211035012-1348318719.png


    实现
    MQTT通信:
      MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议。经过多年的发展,MQTT在各个领域的应用均有凸显,它可以作为手机客户端的消息推送工具,并且在安卓应用中有比较大的占比。作为一款专为物联网设计的通信协议,MQTT具有在低带宽、不稳定的网络环境下正常工作的特性。它的消息传递有三种模式:
    • 至多一次,会发生消息丢失或重复,这种模式适合传感器类的数据传输,即使消息丢失,很快会再次发送。
    • 只有一次,确保消息到达且不发生重复数据,适合需要精确数据的系统,例如计费系统。
    • 至少一次,确保消息可以到达,但可能发生重复。
    要在UWP下使用MQTT需要安装nuget包m2mqtt
    在这里我还是贴一下MQTT的连接代码:
    1. public class Mqtt : MqttClient
    2.     {

    3.         public Mqtt(string host) : base(host, 61613, false, MqttSslProtocols.None)
    4.         {
    5.             Connect(Guid.NewGuid().ToString(), "admin", "password");
    6.             Subscribe(new string[] { "atmo" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
    7.            // PostData("Hello World!");
    8.         }
    9.         public void RequestData(string msg)
    10.         {
    11.             Publish("atmo", Encoding.UTF8.GetBytes(msg));
    12.         }
    13.         public void PostData(string msg)
    14.         {
    15.             Publish("atmo", Encoding.UTF8.GetBytes(msg));
    16.         }
    17.     }
    复制代码
    Sqlite实现:
    要在UWP下使用Sqlite需要先安装VS扩展Sqlite for Universal Windows Platform和Nuget包SQLite.Net-PCL。
    下面是本系统中Database类:
    1. public class DataBase : SQLiteConnection
    2.     {
    3.         public static string path = Path.Combine(ApplicationData.Current.LocalFolder.Path, "atmo.db");
    4.         public DataBase() : base(new SQLitePlatformWinRT(), path)
    5.         {
    6.             CreateTable<DataModel>();
    7.         }
    8.     }
    复制代码
    INotifyPropertyChanged接口实现
    1. public class ViewModelBase : INotifyPropertyChanged
    2.     {
    3.         public event PropertyChangedEventHandler PropertyChanged;
    4.         protected void OnPropertyChanged([CallerMemberName]string name = "")
    5.         {
    6.             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    7.         }
    8.     }
    复制代码
    树莓派GPIO图
    TIM截图20170802171046.png


    硬件连接图:
    1047070-20170605214746137-1542121323.png


    传感器引脚图:

    1047070-20170605215132637-982220739.png

    1047070-20170605215233903-192703603.png



    回复

    使用道具 举报

    4

    主题

    0

    好友

    2154

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    昨天 08:36
  • 签到天数: 619 天

    连续签到: 4 天

    [LV.9]以坛为家II

    发表于 2017-8-10 10:34:29 |显示全部楼层
    好东东,学习学习
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2017-11-24 00:51 , Processed in 0.141735 second(s), 13 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部