用户
 找回密码
 立即注册

QQ登录

只需要一步,快速开始

搜索

85

主题

155

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
42477
2016-4-10 10:42:38 geeiot 管理员 楼主 42757
本帖的目的是记录我们的智能家居开发之路,也希望大家一起讨论交流,在开发中我们列出关键源码,提供大家参考。
我们都是一群大学狗,整天闲的蛋疼,所以闲暇之余,组了一个团队,大家一起开发一个智能家居项目。
de553de89fc687809ef059c63978c834.jpg

目录
1、为什么要基于Windows10 Iot开发智能家居··············2楼
2、DHT11温度计的使用·········································5楼
3、待更新···

PI挂了,暂时跟新不了了【/大哭】

使用道具 举报 回复
首先说我们为什么要基于Windows10 Iot开发智能家居~
Raspbian系统的有点:
1、会简化很多的的开发步骤,比如说WIFI发射(路由器),NAS储存(当然,用树莓派做NAS事不明智的选择,因为树莓派的网卡带宽很小,不足以提供一个家庭影音的数据传输能力)。
2、Linux系统在GPIO的控制方面要优于Windows Iot,比如DHT11温度传感器的使用
Windows Iot的优点:
1、通过xaml和C#能很快速的设计出漂亮的UI以及各个功能的编写。
2、我们项目组对Linux不是很熟悉


所以,是选择用Linux还是Windows,取决于个人对编程的掌控以及对系统的理解。本帖仅限于讨论基于Windows10 IOT平台的智能家居开发
使用道具 举报 回复 支持 反对
没有了?
我也在做这个智能家居  能否讨论一下?
使用道具 举报 回复 支持 反对
mote 发表于 2016-4-29 23:05
没有了?
我也在做这个智能家居  能否讨论一下?

遇到一些问题,还没解决
使用道具 举报 回复 支持 反对
2016-5-2 21:00:12 geeiot 管理员
5#
最基本,也是最简单的模块----温度监控   智能家居很多地方要用到温度监控这一方面,比如室内温度控制等。
废话不多说,这个模块,开干!
材料:
1、树莓派2/3代(这就不用说了吧)
2、DHT11/22模块一个
3、4.7千欧电阻一个
4、杜邦线若干
接线:
DHT11模块vcc接3v,data接树莓派GPIO4,gnd
其中Windows IOT的GPIO映射看下图:
QQ截图20160502203810.jpg
完整映射表请看:http://www.geeiot.net/thread-181-1-1.html
编译环境:
VS2015、C#、C++
这儿直接使用了微软社区一高人写的DHT11/22读取的代码,详情可以查看传送门:
https://microsoft.hackster.io/en ... =dht22&offset=0

好了,直接上完整代码:
MainPage.xaml
  1. <Page
  2.     x:Class="DHT11_FOR_IOT.MainPage"
  3.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5.     xmlns:local="using:DHT11_FOR_IOT"
  6.     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  7.     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8.     mc:Ignorable="d">

  9.     <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
  10.         
  11.         <TextBlock x:Name="textBox_tem" HorizontalAlignment="Left" Margin="420,239,0,0" TextWrapping="Wrap" Text="室内温度:" VerticalAlignment="Top"  FontSize="16"/>
  12.         <TextBlock x:Name="textBox_hum" HorizontalAlignment="Left" Margin="420,260,0,0" TextWrapping="Wrap" Text="室内湿度:" VerticalAlignment="Top"  FontSize="16"/>
  13.         <TextBlock x:Name="Tem" HorizontalAlignment="Left" Margin="504,239,0,0" TextWrapping="Wrap" Text="初始化..." VerticalAlignment="Top"  FontSize="16"/>
  14.         <TextBlock x:Name="Hum" HorizontalAlignment="Left" Margin="505,260,0,0" TextWrapping="Wrap" Text="初始化..." VerticalAlignment="Top"  FontSize="16"/>
  15.         <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="336,148,0,0" TextWrapping="Wrap" Text="树莓派Windows IOT DHT11/22温度计 geeiot.net" VerticalAlignment="Top"/>
  16.     </Grid>
  17. </Page>
复制代码
MainPage.xaml
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Runtime.InteropServices.WindowsRuntime;
  6. using Windows.Foundation;
  7. using Windows.Foundation.Collections;
  8. using Windows.UI.Xaml;
  9. using Windows.UI.Xaml.Controls;
  10. using Windows.UI.Xaml.Navigation;
  11. using System.Threading;
  12. using Windows.Devices.Gpio;
  13. using Sensors.Dht;

  14. //“空白页”项模板在 http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 上有介绍

  15. namespace DHT11_FOR_IOT
  16. {
  17.     /// <summary>
  18.     /// 可用于自身或导航至 Frame 内部的空白页。
  19.     /// </summary>
  20.     public sealed partial class MainPage : Page
  21.     {
  22.         #region 温度显示
  23.         private DispatcherTimer _timer = new DispatcherTimer();
  24.         GpioPin _pin = null;
  25.         private IDht _dht = null;
  26.         private List<int> _retryCount = new List<int>();
  27.         private DateTimeOffset _startedAt = DateTimeOffset.MinValue;
  28.         #endregion
  29.         public MainPage()
  30.         {
  31.             this.InitializeComponent();
  32.             #region 温湿度显示
  33.             //this.InitializeComponent();
  34.             _timer.Interval = TimeSpan.FromSeconds(0); //修改
  35.             _timer.Tick += _timer_Tick;
  36.             #endregion
  37.         }
  38.         #region 温湿度读取与显示
  39.         protected override void OnNavigatedTo(NavigationEventArgs e)
  40.         {
  41.             base.OnNavigatedTo(e);
  42.             _pin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);
  43.             _dht = new Dht11(_pin, GpioPinDriveMode.Input);
  44.             _timer.Start();
  45.             _startedAt = DateTimeOffset.Now;
  46.         }
  47.         protected override void OnNavigatedFrom(NavigationEventArgs e)
  48.         {
  49.             _timer.Stop();
  50.             _pin.Dispose();
  51.             _pin = null;
  52.             _dht = null;
  53.             base.OnNavigatedFrom(e);
  54.         }
  55.         private async void _timer_Tick(object sender, object e)
  56.         {
  57.             float Temperature, Humidity;
  58.             DhtReading reading = new DhtReading();
  59.             reading = await _dht.GetReadingAsync().AsTask();
  60.             _retryCount.Add(reading.RetryCount);
  61.             Temperature = (float)reading.Temperature;
  62.             Humidity = (float)reading.Humidity;
  63.             if ((Temperature > 0) && (Humidity > 0) && (Temperature < 100) && (Humidity < 100))
  64.             {
  65.                 Hum.Text = string.Format("{0:0.0}% RH", Humidity);
  66.                 Tem.Text = string.Format("{0:0.0}% ℃", Temperature);
  67.             }
  68.         }
  69.         #endregion
  70.     }
  71. }
复制代码
算了,我还是直接贴出下载吧

完整代码下载:http://pan.baidu.com/s/1geJ3Ndp

运行效果:
P60502-203434.jpg





使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册