Windows on Device 项目实践 4 - 智能风扇制作
在前面的文章中,我们已经学习并且利用Intel Galileo开发板和Windows on Device制作了火焰报警器、感光灯和PWM调光灯。在这个项目中,我们来利用温度传感器和直流电机,完成一个简单的智能风扇的制作。
1. 温度传感器
LM35 是很常用且易用的温度传感器元件,在传统的Arduino项目中,只需要一个LM35元件和一个模拟接口就可以实现,难点在于算法上的将读取的模拟值转换为实际的温度。但是针对Galileo就不行,因为Galileo对噪声和波动更加敏感,需要额外添加电阻和滤波电容。详细请参考下面的硬件连接一节。
2. 直流电机
这里使用普通的5V供电的直流电机就可以,关键在于,Galileo的驱动能力有限,需要使用一个三极管来驱动直流电机。详细可以参考下面的硬件连接一节。
3. 元器件和硬件连接
这次实践项目需要使用的元器件有:
•温度传感器:LM35 一个
•5V直流电机:一个
•电阻:220欧姆、330欧姆各一个
•二极管:一个
•三极管:9013 一个
•连接线:若干
•面包板:一块
1)温度传感器的连接
LM35有三个引脚,分别是GND、Vout和Vs,连接地、Galileo的A0和5V引脚。这里需要在Vout输入和地之间加入一个220欧姆的电阻,同时需要在LM35电源输入的引脚附近加一个0.1uF的瓷片电容,用于滤除电源的干扰。
2)直流电机的连接
三极管9013的集电极上接直流电机,用Galileo的数字引脚11来控制三极管的基极,射级直接接地。需要注意的是,在直流电机两端放一个二极管,用于在断电后,剩余能量的释放。
最终,其硬件连接如下图所示。


4. 实验原理
Galileo的A0口不断采集温度,对返回值进行判断,如果超过一定范围,就开启直流电机。如果温度没有超过设定值,就关闭直流电机。其流程如下。

5. 源代码解析
#include "stdafx.h"
#include "arduino.h"
int _tmain(int argc, _TCHAR* argv[])
{
return RunArduinoSketch();
}
int MOTOR_PIN = 11; //定义数字接口11 控制直流电机
int TEMP_PIN = A0; //定义模拟接口0 连接LM35 温度传感器
void init_motor()
{
pinMode(MOTOR_PIN, OUTPUT);
analogWrite(MOTOR_PIN, 0);
}
void setup()
{
// TODO: Add your code here
init_motor(); // 初始化直流电机控制引脚
}
// the loop routine runs over and over again forever:
void loop()
{
// TODO: Add your code here
int val;//定义变量
int dat;//定义变量
val = analogRead(TEMP_PIN);// 读取传感器的模拟值并赋值给val
dat = (125 * val) >> 8;//温度计算公式
Log(L"Tep:");
Log(L"%d", dat);//显示dat 变量数值
Log(L"C\r\n");
if (dat > 21) //温度判断,根据实际情况设定
{
Log(L"Start DC Motor\r\n");
analogWrite(MOTOR_PIN, 100);
delay(3000);
}
else
{
Log(L"Stop DC Motor\r\n");
analogWrite(MOTOR_PIN, 0);
delay(3000);
}
}
6. 调试结果
启动Galileo,利用TelNet建立连接,然后点击调试。程序就会通过网口下载到Galileo上。在温度没有达到设定的阈值之前,风扇不转,温度超标以后,风扇工作。调试图片如下。

Windows on Device 项目实践 4 - 智能风扇制作的更多相关文章
- Windows on Device 项目实践 2 - 感光灯制作
在上一篇<Windows on Device 项目实践 1 - PWM调光灯制作>中,我们学习了如何利用Intel Galileo开发板和Windows on Device来设计并完成一个 ...
- Windows on Device 项目实践 3 - 火焰报警器制作
在前两篇<Windows on Device 项目实践 1 - PWM调光灯制作>和<Windows on Device 项目实践 2 - 感光灯制作>中,我们学习了如何利用I ...
- Windows on Device 项目实践 5 - 姿态控制灯制作
在前面几篇文章中,我们学习了如何利用Intel Galileo开发板和Windows on Device来设计并完成PWM调光灯.感光灯.火焰报警器和智能风扇的制作,涉及到了火焰传感器.DC直流电机. ...
- Windows on Device 项目实践 1 - PWM调光灯制作
在前一篇文章<Wintel物联网平台-Windows IoT新手入门指南>中,我们讲解了Windows on Device硬件准备和软件开发环境的搭建,以及Hello Blinky项目的演 ...
- Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)
转载:http://www.cnblogs.com/EasonJim/p/6295372.html Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践) 前提: 这一篇是继上一 ...
- 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理
[微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...
- Hangfire项目实践分享
Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...
- Windows平台分布式架构实践 - 负载均衡(下)
概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...
- Hangfire项目实践
Hangfire项目实践分享 Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget ...
随机推荐
- geotrellis使用(十五)使用Bokeh进行栅格数据可视化统计
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 实现方案 总结 一.前言 之前有篇文章 ...
- iOS 7 tabbar 透明的问题
在某种特定情景中,ios的tabbar会出现完全透明的情况,出现这种情况的原因是ios7 默认的view因为IOS7默认是全延伸,也就是说controller是延伸到tabbar下面,并且在windo ...
- objective-c 语法快速过(5)
oc 的分类-Category 通过分类(category)可以以模块的方式向现有的类添加方法. 它提供了一种简单的方式, 用它可以将类的定义模块化到相关方法的组或分类中.它还提供了扩展现有类定义的简 ...
- 一次发现underscore源码bug的经历以及对学术界『拿来主义』的思考
事情是如何发生的 最近干了件事情,发现了 underscore 源码的一个 bug.这件事本身并没有什么可说的,但是过程值得我们深思,记录如下,各位看官仁者见仁智者见智. 平时有浏览园区首页文章的习惯 ...
- 1Z0-053 争议题目解析690
1Z0-053 争议题目解析690 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 690.The database users regularly complain about t ...
- iOS-掌握了时间就掌握了一切!
Demo下载地址 一. NSDate相关知识 1.获取当前时间 [NSDate date]; 注意: 获取的当前时间是世界时间:比我们用的时间慢8个小时. 2.世界时间转化为本地时间 - (void) ...
- 从 github 上 fork repositories 后,如何和原仓库同步?
1. 首先要先确定一下是否建立了主repo的远程源: git remote -v 2. 如果里面只能看到你自己的两个源(fetch 和 push),那就需要添加主repo的源: git remote ...
- ++a和a++的区别。
先来看2段js代码 var a=0; var b=0; while(a<10) { document.write(a++); } document .write("<br> ...
- 【PHP面向对象(OOP)编程入门教程】23.自动加载类 __autoload()函数
很多开发者写面向对象的应用程序时,对每个类的定义建立一个 PHP 源文件.一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表. 在软件开发的系统中,不可能把所有的类都写在 ...
- PHP之验证码的实现
简单的用PHP实现验证码: ?php /** *制作验证码 *1.启动session *2.设定标头 *3.创建画布 *4.创建颜色 *5.创建随机数并放到画布上 *6.将得到的若干随机数放入sess ...