智能家居基础教程4-数字传感器-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 792|回复: 0

智能家居基础教程4-数字传感器

[复制链接]
发表于 2022-1-20 17:24 | 显示全部楼层 |阅读模式
本帖最后由 OpenJumper 于 2022-1-20 17:41 编辑

[md]## 简介

传感器传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。如果我们将主控板(这里是wifiduino)比作是人的大脑,那么传感器就相当于人的眼睛、耳朵、鼻子等能感知外界环境的器官。

市面上传感器的种类也是不胜枚举,我们这里主要将传感器分为两类,数字传感器和模拟传感器。这些传感器的使用都大同小异,只需要知道它是输出数字值还是模拟值,然后对应使用digitalRead()或者analogRead()函数读取即可。

本节我们主要介绍数字传感器,下面列举几个常见的数字传感器:

## 1、按键模块

OpenJumper按键开关模块是一种集成的控制类元器件模块,同时也是一个数字输入模块。模块采用贴片插接座,拥有防反接功能。OpenJumper按键开关是一个数字输入的开关信号,使用digital read (Pin)来读取对应引脚上的数字量0或者1,然后用来做判断或者存入某个变量中。
01.jpg

## 2、红外避障传感器

红外避障传感器经常被用于公共卫生间便池自动冲水系统中,红外避障传感器主要由一个红外发射器和红外接收器组成。为了避免自然界其他红外光的干扰,传感器中的红外发射器发出经过处理过的周期为38K hz的红外波,模块中的接收器也只能接受38k的红外波。给红外避障传感器通电后,发射器发射的红外光波经过障碍物发射回来,被接收器接收到后,模块便会输出一个0V的低电平(数字0),在默认没有触发的状态下输出3.3V高电平(数字1)。这样便可以将传感器感测到有障碍物这事情告知给主控器(wifiduino)。
02.jpg

以上的数字传感器有一个特点,他们的输出电压值要么是0V,要么是3.3V。0V的电压会被识别成数字0,3.3V的电压会被识别成数字1。不会发生输出电压值在0到3.3V不断跳变的情况。

下面我们来做一个实验,连接避障传感器,将其检测到的值输出在串口打印出来。

## 示例程序[/md]

  1. int IR_pin = D12; //设置红外避障模块连接引脚
  2. void setup()
  3. {
  4. Serial.begin(9600); //初始化串口,通信波特率设为9600
  5. pinMode(IR_pin, INPUT); //将引脚设置为输入状态
  6. }
  7. void loop() {
  8. // 读取引脚上的输入值
  9. int buttonState = digitalRead(IR_pin);
  10. // 串口打印读出的状态值
  11. Serial.println(buttonState);
  12. delay(1); // 为了稳定读取,几次读取之间给小段延时
  13. }
复制代码

[md]
程序中可以看到,我们要使用数字输入传感器和串口,所以在setup中,初始化了串口并将其通信波特率设置为9600。同时将D12这个引脚设置成了输入状态。

随后在loop()循环中不断读取D12引脚上传来的数值,将这个数值通过串口打印出来。

将程序上传到wifiduino主板中,具体上传办法请参考:[初始wifiduino](http://openjumper.cn/kit04001/)


## 连接硬件

将红外避障传感器通过连接线连接在D12接口上,如果想要只通过USB供电,需要(通过杜邦线)将数字接口中的5V,连接在模拟接口的5V引脚中。如图蓝色线所示:
03.jpg

## 观察现象

打开IDE的串口助手。观察红外避障传感器检测带来的数据变化。

04.jpg

图形化程序

05.jpg
[/md]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 14:40 , Processed in 0.076614 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表