在前两篇《Windows on Device 项目实践 1 - PWM调光灯制作》和《Windows on Device 项目实践 2 - 感光灯制作》中,我们学习了如何利用Intel Galileo开发板和Windows on Device来设计并完成PWM调光灯和感光灯的制作。在这个项目中,我们会使用火焰传感器和蜂鸣器,完成一个简单的火焰报警器的制作。

1.火焰传感器

火焰传感器外形和LED很像,(即红外接收三极管)是机器人专门用来搜寻火源的传感器,本传感器对火焰特别灵敏。火焰传感器利用红外线对火焰非常敏感的特点,使用特制的红外线接收管来检测火焰,然后把火焰的亮度转化为高低变化的电平信号,输入到中央处理器,中央处理器根据信号的变化做出相应的程序处理。

红外接收三极管的短引线端为负极,长引线端为正极。按照下图将负极接到5V接口中,然后将正极和10K电阻相连,电阻的另一端接到GND接口中,最后从火焰传感器的正极端所在列接入一根跳线,跳线的另一端接在模拟口中。如图1所示。

图1:火焰传感器的连接

2. 元器件和硬件连接

这次实践项目需要使用的元器件有:

  • 火焰传感器:1个
  • 蜂鸣器:1个
  • 10K电阻:1个
  • 面包板实验跳线:若干

1)蜂鸣器的连接

蜂鸣器有两个引脚,标记为“正”极性的引脚接Galileo的数字接口输出,“负”极性的引脚接Galileo的地。在程序控制上,Galileo数字接口输出高低电平就可以控制蜂鸣器的鸣响。

2)火焰传感器的连接

火焰传感器按照上图1所讲述的火焰传感器的接线方法,将火焰传感器接到Galileo的模拟5接口。完成整个实验的连线。

3.实验原理

在有火焰靠近和没有火焰靠近两种情况下,模拟口读到的电压值是有变化的。实际用万用表测量可知,在没有火焰靠近时,模拟口读到的电压值为0.3V左右;当有火焰靠近时,模拟口读到的电压值为1.0V左右,火焰靠近距离越近电压值越大。

所以在程序一开始,我们可以先存储一个没有火焰时模拟口的电压值i。接着不断的循环读取模拟口电压值j、同存储的值做差值k=j-i、差值k与0.6V做比较。差值k如果大于0.6V,则判断有火焰靠近让蜂鸣器发出声音以作报警;如果差值小于0.6V,则蜂鸣器不响。

4.源代码解析

// Main.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "arduino.h"

int _tmain(int argc, _TCHAR* argv[])
{
    return RunArduinoSketch();
}

int flame = 0;//定义火焰接口为模拟0 接口
int Buzzer = 8;//定义蜂鸣器接口为数字8 接口
int val = 0;//定义数字变量

void setup()
{
    pinMode(Buzzer, OUTPUT);//定义蜂鸣器为输出接口
    pinMode(flame, INPUT);//定义火焰传感器为输入接口   
}
void loop()
{
    unsigned char i, j;//定义变量
    val = analogRead(flame);//读取火焰传感器的模拟值    
    Log(L"val: %d\r\n", val);//输出模拟值,并将其打印出来
    if (val >= 600)//当模拟值大于600 时蜂鸣器鸣响
    {
        for (i = 0; i<80; i++)//发出一个频率的声音
        {
            digitalWrite(Buzzer, HIGH);//发声音
            delay(1);//延时1ms
            digitalWrite(Buzzer, LOW);//不发声音
            delay(1);//延时ms
        }
        for (i = 0; i<100; i++)//发出另一个频率的声音
        {
            digitalWrite(Buzzer, HIGH);//发声音
            delay(2);//延时2ms
            digitalWrite(Buzzer, LOW);//不发声音
            delay(2);//延时2ms
        }
    }
    else
    {
        digitalWrite(Buzzer, LOW);
    }
}

4. 调试结果

启动Galileo,利用TelNet建立连接,然后点击调试。程序就会通过网口下载到Galileo上。当有火焰靠近火焰传感器时,蜂鸣器发出报警。当火焰熄灭时,蜂鸣器报警停止。

调试的视频链接如下,大家可以看到火焰报警的效果:http://v.youku.com/v_show/id_XODU5MzMwNDc2.html

Windows on Device 项目实践 3 - 火焰报警器制作的更多相关文章

  1. Windows on Device 项目实践 2 - 感光灯制作

    在上一篇<Windows on Device 项目实践 1 - PWM调光灯制作>中,我们学习了如何利用Intel Galileo开发板和Windows on Device来设计并完成一个 ...

  2. Windows on Device 项目实践 5 - 姿态控制灯制作

    在前面几篇文章中,我们学习了如何利用Intel Galileo开发板和Windows on Device来设计并完成PWM调光灯.感光灯.火焰报警器和智能风扇的制作,涉及到了火焰传感器.DC直流电机. ...

  3. Windows on Device 项目实践 4 - 智能风扇制作

    在前面的文章中,我们已经学习并且利用Intel Galileo开发板和Windows on Device制作了火焰报警器.感光灯和PWM调光灯.在这个项目中,我们来利用温度传感器和直流电机,完成一个简 ...

  4. Windows on Device 项目实践 1 - PWM调光灯制作

    在前一篇文章<Wintel物联网平台-Windows IoT新手入门指南>中,我们讲解了Windows on Device硬件准备和软件开发环境的搭建,以及Hello Blinky项目的演 ...

  5. Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)

     转载:http://www.cnblogs.com/EasonJim/p/6295372.html Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践) 前提: 这一篇是继上一 ...

  6. Hangfire项目实践分享

    Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...

  7. Windows平台分布式架构实践 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  8. Hangfire项目实践

    Hangfire项目实践分享 Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget ...

  9. MVC项目实践,在三层架构下实现SportsStore-08,部署到IIS服务器

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

随机推荐

  1. 使用 Spring Boot 快速构建 Spring 框架应用--转

    原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/ Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2 ...

  2. C# 提取Word文档中的图片

    C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...

  3. Microsoft.Office.Interop.Excel的用法以及利用Microsoft.Office.Interop.Excel将web页面转成PDF

    1.常见用法           using Microsoft.Office.Interop.Excel; 1)新建一个Excel ApplicationClass ExcelApp = New A ...

  4. Linux资源控制-CPU和内存

    主要介绍Linux下, 如果对进程的CPU和内存资源的使用情况进行控制的方法. CPU资源控制 每个进程能够占用CPU多长时间, 什么时候能够占用CPU是和系统的调度密切相关的. Linux系统中有多 ...

  5. JavaScript的作用域和块级作用域概念理解

    作用域 作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期.说到这里我们需要理解两个概念:块级作用域与函数作用域. 函数作用域 这个应该好理解,函数作用域就是说定义在 ...

  6. SQL常见的系统存储过程

    1.sp_datebases 列出服务器上的所有数据库信息,包括数据库名称和数据库大小 例:exec sp_datebases 2.sp_helpdb 报告有关指定数据库或所有数据库的信息 例:exe ...

  7. [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [二] 基本使用

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 使用环境 Visual Studio 2015 or later .NET 4 ...

  8. 艾伦 Visual Studio 批量自动化代码操作工具-VS插件发布

    艾伦 Visual Studio 批量自动化代码操作工具 以下简称--艾伦工具箱. 艾伦工具箱是一个多文件批量处理插件,目的是为了广大开发者提高开发效率,减少项目代码规范化审计,缩短开发者的项目开发周 ...

  9. eclipse自动补全的设置(自动提示)

      如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的自动补全没有VS那么好是因为e ...

  10. 使用nuget打包类库并发布

    前言 NuGet 是免费.开源的包管理开发工具,专注于在 .NET 应用开发过程中,简单地合并第三方的组件库.今天的目的就是记录一下如何打包一个类库,并发布到官网.在开始之前需要在www.nuget. ...