# UNO主板_KidsBlock_教程

## 1. Keyes Plus主板：

---

### 1. 简介：

在我们开始学习keyes 人体感应套件之前，首先介绍Keyes Plus主板，它是所有项目的核心。

Keyes Plus主板完全兼容Arduino IDE开发环境的控制板，包含Arduino UNO R3的所有功能，并且在UNO R3主板的基础上，我们做了一些改进，使它的功能更加强大。它是学习如何构建电路和设计自己的代码的最好的选择，让我们得到更详细的相关信息：

![Img](./media/0-0.png)

---

### 2. 规格参数：

微控制器：ATMEGA328P-AU

USB转串口芯片：CP2102

工作电压：DC 5V

外接电源: DC 6-15V（建议9V）

数字I/O引脚: 14个 (D0-D13)

PWM通道：6个 (D3，D5，D6，D9，D10，D11)

模拟输入通道（ADC）: 8个 (A0-A7)

每个I/O直流输出能力:	20 mA

3.3V端口输出能力:	50 mA

Flash Memory: 32 KB（其中引导程序使用0.5 KB）

SRAM: 2 KB (ATMEGA328P-AU)

EEPROM:	1 KB (ATMEGA328P-AU)

时钟速度: 16MHz

板载LED引脚: D13


**各个接口和主要元件说明：**

![Img](./media/0-1.png)

**特殊功能接口说明：**

串口通信接口：D0为RX、D1为TX

PWM接口（脉宽调制）：D3，D5，D6，D9，D10，D11

外部中断接口：D2(中断0)和D3(中断1)

SPI通信接口：D10为SS，D11为MOSI，D12为MISO，D13为SCK

IIC通信端口：A4为SDA，A5为SCL

---

## 2. KidsBlock IDE 的下载、安装和使用方法：

参考链接：[https://www.keyesrobot.cn/projects/KidsBlock/zh-cn/latest/](https://www.keyesrobot.cn/projects/KidsBlock/zh-cn/latest/)

---

## 3. 课程

---

### 项目01 Hello World

#### 1. 项目介绍：

对于Arduino初学者，我们将从一些简单的东西开始。在这个项目中，您只需要一个Plus主板和MicroUSB线和计算机来完成“Hello World!”项目。它不仅是Plus主板(兼容Arduino Uno)和计算机的通信测试，也是Arduino世界的初级项目。

#### 2. 项目元件：

| ![Img](./media/1.png)| ![Img](./media/2.png) |
| :--: | :--: |
|Plus主板*1 | MicroUSB线*1 |

#### 3. 项目接线：

![Img](./media/3.png)

#### 4. 项目代码：

![Img](./media/40.png)

#### 5. 项目现象：

按照接线图正确接好各元器件，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。上传成功后，利用MicroUSB线连接到计算机上电，单击![Img](./media/4.png)图标进入串行监视器，设置波特率为 **9600** ，这样串口监视器不断地打印“Hello World!”。

![Img](./media/5.png)

#### 6. 代码说明

![Img](./media/41.png)

设置串口波特率，一般是设置为9600。

![Img](./media/42.png)

换行输出数据。从串行端口输出数据，跟随一个回车和一个换行符。

![Img](./media/43.png)

将程序的执行暂停一段时间,也就是延时。单位是秒。 

![Img](./media/48.png)

当启动主板时，将运行代码。

![Img](./media/47.png)

循环语句，顾名思义就是重复做一件事。

---

### 项目02 点亮LED

#### 1. 项目介绍：

在这个项目中，我们将向你展示点亮LED。我们是使用Plus主板的数字引脚来打开LED，使LED被点亮。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/6.png)|![Img](./media/7.png)|
| :--: | :--: | :--: |
|Plus主板*1|面包板*1|红色LED*1|
|![Img](./media/8.png)| ![Img](./media/9.png)|![Img](./media/2.png)|
|220Ω电阻*1|面包板连接线*2|MicroUSB线*1|

#### 3. 元件知识：

**（1）LED**

![Img](./media/7.png)

LED是一种被称为“发光二极管”的半导体，是一种由半导体材料(硅、硒、锗等)制成的电子器件。它有正极和负极。短腿为负极，接GND，长腿为正极，接3.3V或5V。

![Img](./media/10.png)

**（2）五色环电阻**

电阻是电路中限制或调节电流流动的电子元件。左边是电阻器的外观，右边是电阻在电路中表示的符号。电阻(R)的单位为欧姆(Ω)，1 mΩ= 1000 kΩ，1kΩ= 1000Ω。

![Img](./media/abcdefg.png)

我们可以使用电阻来保护敏感组件，如LED。电阻的强度（以Ω为单位）用小色环标记在电阻器的主体上。每种颜色代表一个数字，你可以用电阻对照卡查找。

![Img](./media/11.png)

在这个套件中，我们提供了2个具有不同电阻值的五色环电阻。这里以2个五色环电阻为例：

220Ω电阻×10

![Img](./media/12.png)

1KΩ电阻×10

![Img](./media/13.png)

在相同的电压下，会有更小的电流和更大的电阻。电流、电压、电阻之间的联系可以用公式表示：I=U/R。在下图中，目前通过R1的电流: I = U / R = 3 V / 10 KΩ= 0.0003A= 0.3mA。

![Img](./media/14.png)

不要把电阻值很低的电阻直接连接在电源两极，这样会使电流过高而损坏电子元件。电阻是没有正负极之分。

**（3）面包板**

面包板是实验室中用于搭接电路的重要工具。面包板上有许多孔，可以插入集成电路和电阻等电路元件。熟练掌握面包板的使用方法是提高实验效率，减少实验故障出现几率的重要基础之一。下面就面包板的结构和使用方法做简单介绍。一个典型的面包板如下所示：

![Img](./media/15.png)

面包板的外观和内部结构如上图所示，常见的最小单元面包板分上、中、下三部分，上面和下面部分一般是由一行或两行的插孔构成的窄条，中间部分是由中间一条隔离凹槽和上下各5 行的插孔构成的条。

![Img](./media/15.png)

在面包板的两个窄条分别有两行插孔，两行之间是不连通的，一般是作为电源引入的通路。上方第一行标有“+”的一行有10组插孔（内部都是连通），均为正极；上方第二行标有“-”的一行有10组插孔，（内部都是连通），均为接地。面包板下方的第一行与第二行结构同上。如需用到整个面包板，通常将“+”与“+”用导线连接起来，“-”与“-”用导线连接起来。

中间部分宽条是由中间一条隔离凹槽和上下各5 行的插孔构成。在同一列中的5 个插孔是互相连通的，列和列之间以及凹槽上下部分则是不连通的。外观及结构如下图：

![Img](./media/17.png)

中间部分宽条的连接孔分为上下两部分，是面包板的主工作区，用来插接原件和面包板连接线。在同一列中的5个插孔（即a-b-c-d-e，f-g-h-i-j）是互相连通的；列和列之间以及凹槽上下部分是不连通的。在做实验的时候，通常是使用两窄一宽组成的小单元，在宽条部分搭接电路的主体部分，上面的窄条取一行做电源，下面的窄条取一行做接地。中间宽条用于连接电路，由于凹槽上下是不连通的，所以集成块一般跨插在凹槽上。

**(4)电源**

Plus主板需要3.3V-5V电源，在本项目中，我们通过用MicroUSB线将Plus主板和电脑连起来。

![Img](./media/3.png)

#### 4. 项目接线图：

![Img](./media/75.png)

#### 5. 项目代码：

![Img](./media/44.png)

#### 6. 项目现象：

按照接线图正确接好各元器件，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：LED被点亮。

![Img](./media/19.png)

#### 7. 代码说明:

![Img](./media/45.png)

向指定引脚设置“输入”或“输出”，选择“输入”代表给该引脚设置输入模式；选择“输出”代表给引脚设置输出模式；选择“输入上拉”代表给该引脚设置输入模式并且使该引脚变成高电平。

![Img](./media/46.png)

向指定引脚设置“高”或“低”，选择“高”代表给该引脚设置高电平，有电压，有电流，则LED点亮；选择“低”代表给引脚设置低电平，没电压，没有电流，则LED不亮。 

---

### 项目03 LED闪烁

#### 1. 项目介绍：

在这个项目中，我们将向你展示LED闪烁效果。我们是使用Plus主板的数字引脚来打开LED，让它闪烁。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/6.png)|![Img](./media/7.png)|
| :--: | :--: | :--: |
|Plus主板*1|面包板*1|红色LED*1|
|![Img](./media/8.png)| ![Img](./media/9.png)|![Img](./media/2.png)|
|220Ω电阻*1|面包板连接线*2|MicroUSB线*1|

#### 3. 项目接线图：

![Img](./media/75.png)

#### 4. 项目代码：

![Img](./media/49.png)

#### 5. 项目现象：

按照接线图正确接好各元器件，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：电路中的LED会反复闪烁。

![Img](./media/21.png)

#### 6. 代码说明:

![Img](./media/45.png)

向指定引脚设置“输入”或“输出”，选择“输入”代表给该引脚设置输入模式；选择“输出”代表给引脚设置输出模式；选择“输入上拉”代表给该引脚设置输入模式并且使该引脚变成高电平。

![Img](./media/46.png)

向指定引脚设置“高”或“低”，选择“高”代表给该引脚设置高电平，有电压，有电流，则LED点亮；选择“低”代表给引脚设置低电平，没电压，没有电流，则LED不亮。 

![Img](./media/43.png)

将程序的执行暂停一段时间,也就是延时。单位是秒。 

---

### 项目04 交通灯

#### 1. 项目介绍：

交通灯在我们的日常生活中很普遍。根据一定的时间规律，交通灯是由红、黄、绿三种颜色组成的。每个人都应该遵守交通规则，这可以避免许多交通事故。在这个项目中，我们将使用Plus主板和一些led(红，黄，绿)来模拟交通灯。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/6.png)|![Img](./media/7.png)|![Img](./media/22.png)|
| :--: | :--: | :--: |:--: |
|Plus主板*1|面包板*1|红色LED*1|黄色LED*1|
|![Img](./media/23.png)|![Img](./media/8.png)| ![Img](./media/9.png)|![Img](./media/2.png)|
|绿色LED*1|220Ω电阻*3|面包板连接线若干|MicroUSB线*1|

#### 3. 项目接线图： 

![Img](./media/76.png)

#### 4. 项目代码：

![Img](./media/50.png)

#### 5. 项目现象：

按照接线图正确接好各元器件，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用MicroUSB线连接到计算机上电，你会看到的现象是：1.首先，绿灯会亮5秒，然后熄灭；2.其次，黄灯会闪烁3次，然后熄灭；3.然后，红灯会亮5秒，然后熄灭；4.继续运行上述1-3个步骤。

![Img](./media/AB7.jpg)

#### 6. 代码说明:

![Img](./media/45.png)

向指定引脚设置“输入”或“输出”，选择“输入”代表给该引脚设置输入模式；选择“输出”代表给引脚设置输出模式；选择“输入上拉”代表给该引脚设置输入模式并且使该引脚变成高电平。

![Img](./media/46.png)

向指定引脚设置“高”或“低”，选择“高”代表给该引脚设置高电平，有电压，有电流，则LED点亮；选择“低”代表给引脚设置低电平，没电压，没有电流，则LED不亮。 

![Img](./media/43.png)

将程序的执行暂停一段时间,也就是延时。单位是秒。 

![Img](./media/51.png)

有条件的循环控制语句，当满足循环次数时就退出循环，比如：3表示循环执行3次，数字3是可以改成其他数字的。


---

### 项目05 呼吸灯

#### 1. 项目介绍：

在之前的研究中，我们知道LED有亮/灭状态，那么如何进入中间状态呢?如何输出一个中间状态让LED“半亮”? 这就是我们将要学习的。呼吸灯，即LED由灭到亮，再由亮到灭，就像“呼吸”一样。那么，如何控制LED的亮度呢? 我们将使用Plus主板的PWM来实现这个目标。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/6.png)|![Img](./media/7.png)|
| :--: | :--: | :--: |
|Plus主板*1|面包板*1|红色LED*1|
|![Img](./media/8.png)| ![Img](./media/9.png)|![Img](./media/2.png)|
|220Ω电阻*1|面包板连接线*2|MicroUSB线*1|

#### 3. 元件知识：

![Img](./media/24.png)

**模拟信号 & 数字信号** 

模拟信号在时间和数值上都是连续的信号。相反，数字信号或离散时间信号是由一系列数字组成的时间序列。生活中的大多数信号都是模拟信号，一个熟悉的模拟信号的例子是：全天的温度是连续不断变化的，而不是突然从0到10的瞬间变化。然而，数字信号的值可以瞬间改变。这个变化用数字表示为1和0(二进制代码的基础)。如下图所示，我们可以更容易地看出它们的差异。

![Img](./media/25.png)

在实际应用中，我们经常使用二进制作为数字信号，即一系列的0和1。由于二进制信号只有两个值(0或1)，因此具有很大的稳定性和可靠性。最后，可以将模拟信号和数字信号相互转换。

**PWM：**

脉宽调制(PWM)是一种利用数字信号控制模拟电路的有效方法。普通处理器不能直接输出模拟信号。PWM技术使这种转换(将数字信号转换为模拟信号)非常方便。PWM技术利用数字引脚发送一定频率的方波，即高电平和低电平的输出，交替持续一段时间。每一组高电平和低电平的总时间一般是固定的，称为周期(注:周期的倒数是频率)。高电平输出的时间通常称为脉宽，占空比是脉宽(PW)与波形总周期(T)之比的百分比。高电平输出持续时间越长，占空比越长，模拟信号中相应的电压也就越高。下图显示了对应于脉冲宽度0%-100%的模拟信号电压在0V-3.3V(高电平为3.3V)之间的变化情况.

![Img](./media/26.png)

PWM占空比越长，输出功率越高。既然我们了解了这种关系，我们就可以用PWM来控制LED的亮度或直流电机的速度等等。从上面可以看出，PWM并不是真实的模拟信号，电压的有效值等于相应的模拟信号。因此，我们可以控制LED和其他输出模块的输出功率，以达到不同的效果。

#### 4. 项目接线图： 

![Img](./media/75.png)

#### 5. 项目代码：

![Img](./media/52.png)

#### 6. 项目现象：

按照接线图正确接好各元器件，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用Micro USB线连接到计算机上电，可以看到的现象是：电路中的LED从暗逐渐变亮，再从亮逐渐变暗，就像呼吸一样。

![Img](./media/28.png)

#### 7. 代码说明:

![Img](./media/53.png)

这是创建“<span style="color: rgb(255, 76, 65);">变量</span>”的指令方块，可以声明“全局”或“局部”，还可以设置变量的类型、名称和赋值，item是变量名称。

![Img](./media/54.png) 

获取变量item。

![Img](./media/55.png)

设置变量item模式为每执行一次循环让item加1或每执行一次循环让item减1。 

![Img](./media/51.png)

有条件的循环控制语句，当满足循环次数时就退出循环，比如：3表示循环执行3次，数字3是可以改成其他数字的。


---

### 项目06 流水灯

#### 1. 项目介绍：

在日常生活中，我们可以看到许多由不同颜色的led组成的广告牌。他们不断地改变灯光(像流水一样)来吸引顾客的注意。在这个项目中，我们将使用Plus主板控制5个LED灯实现流水的效果。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/6.png)|![Img](./media/7.png)|
| :--: | :--: | :--: |
|Plus主板*1|面包板*1|红色LED*5|
|![Img](./media/8.png)| ![Img](./media/9.png)|![Img](./media/2.png)|
|220Ω电阻*5|面包板连接线若干|MicroUSB线*1|

#### 3. 项目接线图:

![Img](./media/82.png)

#### 4. 项目代码：

![Img](./media/56.png)

#### 5. 项目现象：

按照接线图正确接好各元器件，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：电路中的5个LED会逐渐亮起来，然后逐渐熄灭，就像电池充电一样。

![Img](./media/AB6.jpg)

#### 6. 代码说明:

可以参照项目03的代码说明，这里就不多做介绍了。

---

### 项目07 有源蜂鸣器

#### 1. 项目介绍：

有源蜂鸣器模块上有一个发声元件----有源蜂鸣器。它被广泛用作电脑、打印机、报警器、电子玩具、电话、计时器等的发声元件。它有一个内在的振动源，需连接3.3V~5V电源，即可持续发出嗡嗡声。在这个项目中，我们将使用Plus主板控制有源蜂鸣器发出“滴滴”声。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/29.png)|![Img](./media/30.jpg)|![Img](./media/2.png)|
| :--: | :--: | :--: | :--: |
|Plus主板*1|有源蜂鸣器模块*1|公对母杜邦线若干|MicroUSB线*1|

#### 3. 元件知识：

<span style="color: rgb(255, 76, 65);">注意：本教程使用的是有源蜂鸣器。</span>

![Img](./media/29.png)

有源蜂鸣器和无源蜂鸣器的“源”不是指电源，而是指震荡源。

**有源蜂鸣器**：内部自带震荡源，所以一触发就能发声，发声频率固定。有源蜂鸣器的优点是程序控制方便，声压高。有源自激型蜂鸣器工作发声原理如下：直流电源输入经过振荡系统的放大和取样电路在谐振装置作用下产生声音信号。

**模块参数：**

工作电压: DC 3.3 ~ 5V 

工作温度：-10°C ~ +50°C

控制信号：数字信号

尺寸：32 mm x 23.8 mm x 12.3 mm

定位孔大小：直径为 4.8 mm

**无源蜂鸣器**: 内部不带震荡源，如果直接通直流电信号无源蜂鸣器是没有声音的，因为磁路恒定，振动膜片一直处在吸附状态，不能振动发音。根据不同需求，一般我们通过方波去驱动，然后通过更换方波的频率来实现不同音效。

**总结：有源蜂鸣器内部带震荡源，发声频率固定。无源内部不带震荡源，通过方波去驱动，发音频率可改变。**


#### 4. 项目接线图：

![Img](./media/77.png)

#### 5. 项目代码：

![Img](./media/57.png)

#### 6. 项目现象：

按照接线图正确接好模块，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用USB线连接到计算机上电，可以看到的现象是：有源蜂鸣器发出“滴滴”声。

![Img](./media/AB5.jpg)

#### 7. 代码说明:

可以参照项目03的代码说明，这里就不多做介绍了。

---

### 项目08 继电器控制LED

#### 1. 项目介绍：

在日常生活中，我们一般使用交流来驱动电气设备，有时我们会用开关来控制电器。如果将开关直接连接到交流电路上，一旦发生漏电，人就有危险。从安全的角度考虑，我们特别设计了这款具有NO(常开)端和NC(常闭)端的继电器模块。在这节课我们将学习一个比较特殊、好用的开关，就是继电器模块，使用继电器模块控制LED灯亮灭。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/6.png)|![Img](./media/32.png)|![Img](./media/7.png)|![Img](./media/A25.png)|
| :--: | :--: | :--: |:--: |:--: |
|Plus主板*1|面包板*1|继电器模块*1|红色LED*1|一字螺丝刀*1|
|![Img](./media/30.jpg)|![Img](./media/2.png)|![Img](./media/8.png)| ![Img](./media/9.png)|  |
|公对母杜邦线若干|MicroUSB线*1|220Ω电阻*1|面包板连接线若干|  |

#### 3. 元件知识：

![Img](./media/32.png)

**继电器：** 继电器能兼容多种单片机控制板，是用小电流去控制大电流运作的一种“自动开关”。它可以让单片机控制板驱动3A以下负载，如LED灯带、直流马达、微型水泵、电磁阀可插拔式接口设计，方便使用。继电器有3个接线柱用于外接电路，分别为NO、COM和NC端（背后丝印）。

![Img](./media/33.png)

**模块参数:**

工作电压: DC 5V 

工作电流: 50 mA

最大功率: 0.25 W

控制信号: 数字信号

触电电流: 小于 3 A

工作温度：-10°C ~ +50°C

尺寸：47.6mm x 23.8mm x 19 mm

定位孔大小：直径为4.8mm

**模块原理图:**

![Img](./media/34.png)

一个继电器拥有一个动触点以及两个静触点A和B。

当开关K断开时，继电器线路无电流通过，此时动触点与静触点B相接触，上半部分的电路导通。静触点B被称为常闭触点（NC）。常闭——NC（normal close）通常情况下是关合状态，即线圈未得电的情况下闭合的。

当开关K闭合时，继电器电路通过电流产生磁力，此时动触点与静触点A相接触，下半部分电路导通。静触点A被称为常开触点（NO）。常开——NO（normal open）通常情况下是断开状态，即线圈未得电的情况下断开的。

而动触点也被称为公共触点（COM）。

继电器简单来说就是一个开关，VCC表示电源正极、GND表示电源负极、IN表示信号输入脚，COM表示公共端，NC（normal close）表示常闭端，NO(normal open)表示常开端。

![Img](./media/35.png)


#### 4. 项目接线图：

<br>
<span style="color: rgb(61, 167, 66);"> **特别注意：**  接线前，需要用一字螺丝刀将继电器模块的NO端口和COM端口处的螺丝扭松，将面包板连接线的一端插入NO端口和COM端口处；接好线后，再用一字螺丝刀将NO端口和COM端口处的螺丝扭紧。</span>
<br>

![Img](./media/78.png)

#### 5. 项目代码：

![Img](./media/58.png)

#### 6. 项目现象：

按照接线图正确接好模块和各元器件，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用MicroUSB线连接到计算机上电，你会看到的现象是：继电器将循环开与关，开启1秒LED点亮1秒，关闭1秒LED熄灭1秒。同时可以听到继电器开与关的声音，还可以看到继电器上的指示灯指示状态的变化。

![Img](./media/AB4.jpg)

#### 7. 代码说明:

可以参照项目03的代码说明，这里就不多做介绍了。

---

### 项目09 人体红外热释传感器

#### 1. 项目介绍：

在本项目中，通过读取模块上S端高低电平，判断附近是否有人在运动；并且在串口监视器上显示测试结果。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/37.png)|![Img](./media/30.jpg)|![Img](./media/2.png)|
| :--: | :--: | :--: |:--: |
|Plus主板*1|人体红外热释传感器模块*1|公对母杜邦线若干|MicroUSB线*1|

#### 3. 元件知识：

![Img](./media/37.png)

**人体红外热释传感器:** 它主要由一个RE200B-P传感器元件组成。它是一款基于热释电效应的人体热释运动传感器，能检测到人体或动物身上发出的红外线，配合菲涅尔透镜能使传感器探测范围更远更广。

**模块参数:**

工作电压: DC 3.3V ~ 5V 

工作电流: 3.6MA

最大功率: 0.018W

输出信号: 数字信号

触发方式: L 不可重复触发/H 重复触发

探测距离: ≤5m

视野角度: Y = 90°，X = 110°（视野角度为理论数值）

工作温度：-10°C ~ +50°C

尺寸：32mm x 23.8mm x 7.4mm

定位孔大小：直径为4.8mm


**模块原理图:**

![](media/38.jpg)

这个模块的原理图可能较前面的模块稍复杂，我们一部分一部分来看。先看电压转换部分，作用是将5V输入电压转换为3.3V输入电压。因为我们模块上用到的人体热释电红外传感器的工作电压是3.3V，不能直接用5V电压供电使用。有了这个电压转换部分，3.3V输入电压和5V输入电压都适用于此热释电红外传感器。

当红外热释传感器没有检测到红外信号时，红外热释传感器的1脚输出低电平，此时模块上的LED两端有电压差，有电流流过，LED被点亮，MOS管Q1导通（Q1是NPN MOS管，型号为2N7002。由于红外热释传感器的1脚输出低电平，所以Q1的源极Vs=0，而Q1的栅极Vg=3.3V，于是Q1的栅极G和Q1的源极S之间的电压 Vgs = 3.3V 大于Q1的阈值电压 2.5V，Q1导通。），信号端S检测到低电平。

当红外热释传感器检测到红外信号时，红外热释传感器的1脚输出高电平，此时模块上的LED熄灭，MOS管Q1不导通，则信号端S检测到被10K上拉电阻R5拉高的高电平。

#### 4. 项目接线图：

![Img](./media/79.png)

#### 5. 项目代码：

![Img](./media/59.png)

#### 6. 项目现象：

按照接线图正确接好模块，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用MicroUSB线连接到计算机上电，单击![Img](./media/4.png)图标进入串行监视器，设置波特率为 **9600** ，你会看到的现象是：当传感器检测到附近有人在运动时，value值为1，模块上LED熄灭，串口监视器显示“**1   Somebody is in this area!**”；没有检测到附近有人在运动时，value值为0，模块上LED点亮，串口监视器显示“**0   No one!**”。

![Img](./media/AB3.jpg)

![](./media/39.png)

#### 7. 代码说明:

![Img](./media/60.png) 

定义人体红外热释传感器模块的管脚为D3，设置为“输入”模式。通过![Img](./media/60.png)配置为“输入”必须使用上拉或下拉电阻。但是，我们的模块已经使用上拉电阻R3和R5，该电阻的目的是在开关断开时将引脚拉至已知状态。通常选择一个4.7K/10KΩ的电阻，因为它的阻值足够低，可以可靠地防止输入悬空。同时，该阻值也要足够高，以使开关闭合时不会消耗太多电流。如果使用下拉电阻，则当开关断开时，输入引脚将为低电平；当开关闭合时，输入引脚将为高电平。如果使用上拉电阻，则当开关断开时，输入引脚将为高电平；当开关闭合时，输入引脚将为低电平。 

![Img](./media/61.png)  

如果![Img](./media/74.png)里的表达式为真，则执行“那么”下面的代码。如果![Img](./media/74.png)里表达式为假 ，则执行“否则”下面的代码。 

![Img](./media/62.png)  

读取人体红外热释传感器的数字电平，高(HIGH)或者低(LOW)。如果该引脚未连接任何东西，则![Img](./media/62.png) 可以返回“高”或“低”（并且可以随机更改）。 

![Img](./media/63.png) 
初始化串口通信，并设置波特率为9600。                         

![Img](./media/64.png)  

未换行输出数据。从串行端口输出数据，跟随一个回车和一个未换行符。 

![Img](./media/65.png) 

换行输出数据。从串行端口输出数据，跟随一个回车和一个换行符。

![Img](./media/53.png) 

这是创建“<span style="color: rgb(255, 76, 65);">变量</span>”的指令方块，可以声明“全局”或“局部”，还可以设置变量的类型、名称和赋值，val是变量名称。

![Img](./media/54.png) 

获取变量val。

![Img](./media/66.png)

设置变量val的值。

![Img](./media/67.png)

人体红外热释传感器读取数字电平信号输出，并串口不换行打印。

![Img](./media/68.png) 

运动检测，检测到有人经过。

---

### 项目10 人体红外热释传感器控制LED

#### 1. 项目介绍：

上一项目中我们已经学习了人体红外热释传感器的工作原理，这一项目中我们将人体红外热释传感器和LED灯组合实验，实现人体红外热释传感器检测到附近有人经过时LED快速闪烁的效果。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/6.png)|![Img](./media/37.png)|![Img](./media/7.png)|
| :--: | :--: | :--: |:--: |
|Plus主板*1|面包板*1|人体红外热释传感器模块*1|红色LED*1|
|![Img](./media/30.jpg)|![Img](./media/2.png)|![Img](./media/8.png)| ![Img](./media/9.png)|
|公对母杜邦线若干|MicroUSB线*1|220Ω电阻*1|面包板连接线若干|

#### 3. 项目接线图：

![Img](./media/80.png)

#### 4. 项目代码：

![Img](./media/69.png)

#### 5. 项目现象：

按照接线图正确接好模块和各元器件，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用MicroUSB线连接到计算机上电，你会看到的现象是：当人体红外热释传感器检测到附近有人经过时，人体红外热释传感器模块上的红灯灭，LED灯快速闪烁。

![Img](./media/AB2.jpg)

#### 6. 代码说明:

![Img](./media/71.png)

串口打印人体红外热释传感器读取的数字电平信号。

![Img](./media/68.png) 

运动检测，检测到有人经过。

![Img](./media/72.png) 

设置引脚的模式。“输出”为输出模式；“输入”为输入模式。  

![Img](./media/73.png) 

设置引脚的输出电压为高\低电平。“高”为高电平，“低”为低电平。

![Img](./media/43.png)

将程序的执行暂停一段时间,也就是延时。单位是秒。 

---

### 项目11 人体感应报警系统

#### 1. 项目介绍：

前面的项目中我们已经学习了人体红外热释传感器的工作原理和人体红外热释传感器LED灯快速闪烁的效果。那么，在本项目中，我们将结合人体红外热释传感器、有源蜂鸣器和LED灯来模拟人体感应报警系统。

#### 2. 项目元件：

|![Img](./media/1.png)|![Img](./media/6.png)|![Img](./media/37.png)|![Img](./media/29.png)|![Img](./media/7.png)|
| :--: | :--: | :--: |:--: |:--: |
|Plus主板*1|面包板*1|人体红外热释传感器模块*1|有源蜂鸣器模块*1|红色LED*1|
|![Img](./media/30.jpg)|![Img](./media/2.png)|![Img](./media/8.png)| ![Img](./media/9.png)| |
|公对母杜邦线若干|MicroUSB线*1|220Ω电阻*1|面包板连接线若干| |

#### 3. 项目接线图：

![Img](./media/81.png)

#### 4. 项目代码：

![Img](./media/70.png)

#### 5. 项目现象：

按照接线图正确接好模块和各元器件，选择正确的主板类型Keyes Plus development board和COM端口，点击KidsBlock IDE上的上传按钮![Img](./media/0.png)上传代码。项目代码上传成功后，利用MicroUSB线连接到计算机上电，你会看到的现象是：当人体红外热释传感器检测到附近有人经过时，人体红外热释传感器模块上的红灯灭，有源蜂鸣器发出警报，LED灯快速闪烁。

![Img](./media/AB1.jpg)

#### 6. 代码说明:

可以参照项目10的代码说明，这里就不多做介绍了。

---







