# KidsBlock_教程

## 开发环境配置

<span style="color: rgb(255, 76, 65);">**这一部分很重要，一定要先读取并且操作这一部分内容再到项目课程。**</span>

<br>

### 1. KidsBlock 软件的下载、安装和使用方法

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

<span style="color: rgb(255, 76, 65);">注意：</span><span style="background:#ff0;color:#000">本教程选用的是“**Keyes Plus development board**”主控板，打开KidsBlock软件，点击![Img](./media/img-20240920112642.png)进入**设备**选择页面，找到并点击选中““**Keyes Plus development board**”主控板，这样就可以进入对应的编程界面。</span>

![Img](./media/img-20240920112753.png)

![Img](./media/img-20240920112909.png)

![Img](./media/img-20240920113017.png)

将主板用USB线连接接到电脑上，然后点击![Img](./media/img-20240920113043.png)来连接对应的串口端口。

![Img](./media/img-20240920113119.png)

![Img](./media/img-20240920113225.png)

![Img](./media/img-20240920113304.png)

![Img](./media/img-20240920113342.png)

点击![Img](./media/img-20240920113441.png)切换成![Img](./media/img-20240920113546.png)。

![Img](./media/img-20240920113527.png)

![Img](./media/img-20240920113629.png)

### 2. 添加 KidsBlock 库文件

在前面(即第1步)操作完后，在编程界面左下角点击![Img](./media/img-20240920113820.png)进入库文件添加界面。

![Img](./media/img-20240920113933.png)

![Img](./media/img-20240920114001.png)

点击“**传感器**”，寻找到“**DHT sensor**”并且点击选中。

![Img](./media/img-20240920114211.png)

点击“**显示器**”，寻找到“**DHT sensor**”并且点击选中。

![Img](./media/img-20240920114337.png)

上述所有的库文件添加完后，点击KidsBlock软件左上角的![Img](./media/img-20240920114414.png)返回编程界面。这样，就可以在编程界面的左侧看到所添加的所有库文件。

![Img](./media/img-20240920114655.png)

![Img](./media/img-20240920114749.png)

## 项目课程

### 第1课 蜂鸣器模块

![](media/51deebe17e93ab0bfaa42693745ccf08.png)

**1. 项目介绍：**

有源蜂鸣器模块上的有源蜂鸣器元件可以发出声音，有源蜂鸣器元件内部自带震荡电路，使用时，我们只需要给蜂鸣器元件足够的电压，蜂鸣器就会自动响起。

**2. 规格参数：**

工作电压：DC 3.3 ~ 5V 

工作电流：22.5mA

最大功率：0.12W

频率：2300HZ

控制信号：数字信号

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

尺寸：32mm x 23.8mm x 12.3mm

接口：2.54mm间距，3pin防反接口

**3. 原理图：**

![](media/e17b6a3d0b96742f328e9045ce801eb9.png)

从原理图我们可以得知，蜂鸣器的1脚通过串联一个电阻R2连接到电压正极；蜂鸣器的2脚连接到NPN三极管Q1的C极，集电极；Q1的B极，也就是基极通过串联一个电阻R1连接到S信号端；发射集接到GND。

当三极管Q1导通时，蜂鸣器的2脚连通GND，有源蜂鸣器便会工作。那么如何让三极管Q1导通呢？NPN三极管的导通条件是基极（B）电压比发射极（E）电压高 0.7V 以上，只需要基极（B）被上拉至高电平即可。虽然三极管Q1的基极（B）有一个下拉电阻R3导致其不导通，但是R3电阻的阻值大，使其为弱下拉电阻。三极管Q1的基极（B）还连接了一个阻值小的强上拉电阻R1，只要我们用单片机IO口给S信号端输入高电平，强上拉电阻R1会将三极管Q1的基极（B）强上拉为高电平，三极管Q1就会导通，有源蜂鸣器就会工作。

**4. 连接图：**

![](media/e107de92cef0a731a5227ca55229ec0f.png)

**5. 实验代码：**

① 在事件栏拖出Arduino启动模块。

![](media/37ab24184ac16c0e149a6b4b7ad65f75.png)

② 在引脚栏拖出设置引脚模块，并设置引脚为A0模式为输出。

![](media/324969692306fa7e6f95665309a4b5c8.png)

③ 在控制栏拖出重复执行模块。

![](media/88d4ea9bb79d47f65fe169c59f850d07.png)

④ 在引脚栏拖出设置引脚输出模块，设置引脚A0，输出高电平。

![](media/ef7d87c4ba4a4d746a6aa3ccdc3f050b.png)

⑤ 在控制栏拖出延时模块，设置延时2秒。

![](media/668663583a74659d1652884d57453a5c.png)

⑤ 在引脚栏拖出设置引脚输出模块，设置引脚A0，输出低电平。

![](media/78a2f6e518c42ee7ddeee20a13dca1cc.png)

⑥ 在控制栏拖出延时模块，设置延时2秒。

![](media/668663583a74659d1652884d57453a5c.png)

完整代码：

![](media/bacb4f03b0cf34ef0f1b40563129e572.png)

**6. 测试结果：**

有源蜂鸣器只需要有个高电平电压蜂鸣器就响起。烧录好代码，连接好线，上电后，有源蜂鸣器响2S，静音2S，循环交替。

### 第2课 按键模块

![](media/1a90cb6e20f8bdab71de591c68c14a26.png)

**1. 项目介绍：**

本传感器兼容各种单片机控制板，如arduino系列单片机。它的连接端口兼容arduino传感器扩展板。传感器输入一个按键信号，可以输出一个数字电压信号。当我们按下按键时传感器信号端输出低电平信号，释放按键时传感器信号端保持高电平。传感器自带2个4.8mm的定位孔，方便你将传感器固定在其他设备。

**2. 规格参数：**

工作电压：3.3-5V（DC）

工作电流：10MA

输出信号：数字信号

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

尺寸：32mm x 23.8mm x 12.3mm

接口：2.54mm间距，3pin防反接口

**3. 电路图：**

![](media/74495c5a3c13b0f91e026320e26436c4.png)

按键模块上的按键没有按下时，VCC经过R1给到S端的电压是高电平，当按键按下后，S端与GND导通电压被拉低了，所以是低电平，R1的作用是避免VCC和GND直接短路。

**4. 连接图：**

![](media/aefc3b1e926f0e8d94840d202771abdc.png)

**5. 实验代码：**

① 在事件栏拖出Arduino启动模块。

![](media/2ce137f57a3abbd20ebf6b6e0156205f.png)

② 在串口栏拖出设置串口波特率模块设置波特率为“9600”；在引脚栏拖出设置引脚模式模块，设置为引脚A0为输入。

![](media/31474f13aa28bd22c7a421ae2f26f86b.png)

③ 在控制栏拖出重复执行模块。

![](media/d7880a2c476c43c7252a792e2bb70b6b.png)

④ 在控制栏拖出判断模块，然后再判断模块里添加运算的等于模块，等于模块的左边添加读取数字引脚A0模块，右边为0；满足条件串口打印“Key Down!”，不满足串口打印“Wait for the key to be pressed!”。

![](media/23f4d2cf61ff99ac1d619d1ba8d59c0d.png)

完整代码：

![](media/f86c192da1ecd8c8404435f4872d5a18.png)

**6. 实验结果：**

按照上图接好线，烧录好代码； 打开arduino IDE的串口监视器，并点击![](media/8cbd66fdea5bcf401ea34db56d476248.png)设置波特率为9600，没有按下按键时串口打印“Wait for the key to be pressed!” ；按下按键后打印“Key Down!”如下图：

![](media/fbdb11968a52c6698e06d04f25d7126c.png)

### 第3课 人体红外热释传感器

![](media/e33ebccbc7750ff556d99b6c378e12fc.png)

**1. 项目介绍：**

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

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

**2. 规格参数：**

工作电压: DC 3.3V~5V 

工作电流: 3.6mA

最大功率: 0.018W

静态电流: <50 uA

输出信号: 数字信号

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

最大检测距离: ≤5米

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

尺寸：32mm x 23.8mm x 7.4mm

接口：2.54mm间距为，3pin防反接口

**3. 电路图：**

![Img](./media/img-20240923100448.png)

这个模块的原理图可能较前面的模块稍复杂，我们一部分一部分来看。先看电压转换部分，作用是将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. 接线图：**

![](media/4a8b1ee8ed23f50768b7e0ff99a14946.png)

**5. 实验代码：**

① 在事件栏拖出Arduino启动模块。

![](media/2ce137f57a3abbd20ebf6b6e0156205f.png)

② 在串口栏拖出设置串口波特率模块设置波特率为“9600”；在引脚栏拖出设置引脚模式模块，设置为引脚A0为输入。

![](media/624beeaf4407246db4bf901d1d61058e.png)

③ 在控制栏拖出重复执行模块。

![](media/d7880a2c476c43c7252a792e2bb70b6b.png)

④ 在控制栏拖出判断模块，然后再判断模块里添加运算的等于模块，等于模块的左边添加读取数字引脚10模块，右边为0；满足条件串口栏拖出串口打印模块设置文字为"Somebody is in this area!"；当不满足条件，串口栏拖出串口打印模块设置文字为"No one!" ；在判断语句外面添加一个0.5秒的延时，作用是放慢串口的打印速度。

![](media/8166ad38d808a0f30c6b6630140100f1.png)

完整代码：

![](media/6faf6cd489b483c23baaf033b870d396.png)

**6. 实验结果：**

按照接线图连接好线，上传代码，打开串口监视器，点击![](media/c1251fbfd337a0ee4d2e2783485145ba.png)设置波特率为9600。检测到人体运动时串口监视器中显示"Somebody is in this area!"；没有检测到人体运动时串口监视器中显示"No one!"。

![](media/422e53e53da19c93918744bd0cad1588.png)

### 第4课 倾斜开关模块

![](media/47304ef0be69753ce7edd2b3b3377b49.png)

**1. 项目介绍：**

Keyes 倾斜传感器，主要由一个倾斜开关组成，其内部带有一颗滚珠，用来监测倾斜情况。倾斜开关可以依据模块是否倾斜而输出不同的电平信号。当开关高于水平位置倾斜时开关导通，低于水平位置时开关断开。倾斜模块可用于倾斜检测、报警器制作或者其他检测。

**2. 规格参数：**

工作电压: DC 3.3V~5V 

工作电流: 4.2mA

最大功率: 0.03WW

输出信号: 数字信号

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

尺寸：32mm x 23.8mm x 8mm

接口：2.54mm间距，3pin防反接口

**3. 原理图：**

![](media/0261aa6e00c1752e439461c9f0e8c210.png)

Keyes 倾斜开关模块的原理非常简单，主要是利用滚珠在开关内随不同倾斜角度的变化使滚珠开关P1的引脚1和2导通或者不导通，当滚珠开关P1的引脚1和2导通时，由于1脚接GND，所以信号端S被拉低为低电平，此时红色LED和R2组成的电路形成回路，电流经过红色LED，点亮红色LED；当滚珠开关P1的引脚1和2不导通时，滚珠开关P1的引脚2被4.7K的上拉电阻R1拉高使得信号端S为高电平，电流不经过红色LED，红色LED熄灭。
**4. 接线图：**

![](media/cd897a9d6bbad8020133fe32af45946f.png)

**5. 实验代码：**

① 在事件栏拖出Arduino启动模块，在串口栏拖出设置波特率模块并设置波特率为9600。

![](media/8a06a649f157f8bff18a60249bf739bb.png)

② 在引脚栏拖出设置引脚模式模块，一个设置为引脚A0输入。

![](media/be4d75d325b96844f9a0189907a92580.png)

③ 在控制栏拖出重复执行模块。

![](media/199821f88979a57d6592c7b6f6176ed2.png)

④ 在控制栏拖出判断模块，然后再判断模块里添加运算的等于模块，等于模块的左边添加读取数字引脚A0模块，右边为0。

![](media/b0879fb77b76b81e1ee42049ec0002ba.png)

⑤ 在串口栏拖出串口打印并换行代码块，满足条件时串口打印“Normal！”，不满足时串口打印“Tilt warning！”；然后在判断语句外面放一个延时函数延时0.5秒。

![](media/c13083d6f37d8d117c65aa3fcebacda3.png)

完整代码：

![](media/c8fee6c674a67fb767a61126116941d5.png)

**6. 实验结果：**

按照接线图接好线，上传代码，打开串口监视器，点击![](media/8c84712245595d53b8e60c71c6173d4f.png)设置波特率为9600，倾斜开关模块倾斜到一边时，模块上LED灯亮，串口打印“Normal！”；模块倾斜到另一边时，模块上LED灯灭，串口打印“Tilt warning！”。

![](media/03d71fe1140cc7b0d46f0b7e90a716d3.png)

### 第5课 光敏传感器

![](media/43852f78b7743c2c0365c7141b1cacee.png)

**1. 项目介绍：**

Keyes 光敏电阻传感器，这是一个常用的光敏电阻传感器，它主要由一个光敏电阻元件组成。光敏电阻元件的阻值随着光照强度的变化而变化，此传感器就是利用光敏电阻元件这一特性，设计电路将阻值变化转换为电压变化。光敏电阻传感器可以模拟人对环境光线的强度的判断，方便做出与人友好互动的应用。

**2. 规格参数：**

工作电压: DC 3.3V~5V 

工作电流: 0.2mA

最大功率: 0.001W

输出信号: 模拟信号

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

尺寸：32 x 23.8 x 7.4 mm

接口：2.54 mm间距，3pin防反接口

**3. 原理图：**

![](media/baae5294d38c9b71f3061f09301a7da3.png)

当没有光照射时，电阻大小为0.2 MΩ，光敏电阻的信号端（2脚）检测的电压接近0。随着光照强度增大，光线传感器的电阻值越来越小，所以信号端能检测到的电压越来越大。

**4. 连接图：**

![](media/4a64e6465912093873c37ff65b1d6fba.png)

**5. 实验代码：**

① 在事件栏里拖出Arduino启动模块。

![](media/c33acdc4d6207d70d4c2212503c097be.png)

② 在串口栏拖出设置串口波特率模块并设置波特率为9600。

![](media/22310cee42636efa8f9065b4afc8d88f.png)

③ 在控制栏拖出重复执行模块。

![](media/004227c0ee34427be4878c84ca582a82.png)

④ 在串口栏拖出串口打印模块，并添加引脚栏里的读取模拟引脚A0的模块在里面；最后添加一个延时为0.5s的延时模块。

![](media/9e94a15eab0b07705eb7906b44cf4092.png)

完整代码：

![](media/556da2aa86aa3a064cf04b5cefcd589c.png)

**6. 实验结果：**

按照接线图接好线，上传代码，打开串口监视器，点击![](media/2dacd857a85e33270948b69853afcd65.png)设置波特率为9600，便可以看到代表当前光线强弱的模拟值，如下图。

![](media/e5188a4325f10767ccdd1e364b65468f.png)

### 第6课 声音传感器

![](media/12cc26052d7cb93b9544d8fed5a015eb.png)

**1. 项目介绍：**

Keyes 声音传感器可以用于测试当前环境中的声音对应的模拟值，传感器上的S端是模拟输出，是麦克风的电压信号实时输出，可以通过电位器可调节信号增益。声音越大，模拟值越大，并在串口监视器上显示测试结果。

**2. 规格参数：**

工作电压: DC 3.3V~5V 

工作电流: 15mA

最大功率: 0.075W

输出信号: 模拟信号

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

尺寸：32mm x 23.8mm x 10.3mm

接口：2.54mm间距，3pin防反接口

**3. 原理图：**

![](media/71a2e4411640a5c34e4173acf893b2a6.png)

Keyes 声音传感器主要由一个高感度麦克风元件和LM386音频功率放大器芯片组成，高感度麦克风元件用于检测外界的声音。声波使麦克风内的驻极体薄膜振动，导致电容的变化，而产生与之对应变化的微小电压。利用LM386音频功率放大器芯片设计对高感度麦克风检测到的声音进行放大的电路，最大倍数为200倍。使用时我们可以通过旋转传感器上电位器，调节声音的放大倍数。顺时针调节电位器到尽头，放大倍数最大。

**4. 连接图：**

![](media/3b1393eefd6b328465c78b125972ce6e.png)

**5. 实验代码：**

① 在事件栏里拖出Arduino启动模块。

![](media/cb3dcdc92212e416aa1799959d4449b6.png)

② 在串口栏拖出设置串口波特率模块并设置波特率为9600。

![](media/4a7fbeccd031bc558a85eabd7c59aa62.png)

③ 在控制栏拖出重复执行模块。

![](media/81175b359ef55c8bf15a92e50783865b.png)

④ 在串口栏拖出串口打印模块，并添加引脚栏里的读取模拟引脚A0的模块在里面；最后添加一个延时为0.2s的延时模块。

![](media/519d5a0f6155e58b9c4665936013877a.png)

完整代码：

![](media/1c7ae3ca89b6da0e435cc6debc8aee63.png)

**6. 实验结果：**

按照连接图接好线，上传代码，打开串口监视器，点击![](media/70413c268eec92e1ca0d9947e37fb0e9.png)设置波特率为9600，便可以看到声音的模拟值了，声音越大模拟值越大。如下图：

![](media/44073c4a50d27b05b4891a49d157f35d.png)

### 第7课 旋转电位器模块

![](media/64deff371131b942371d6916d56ff09c.png)

**1. 项目介绍：**

Keyes 旋转电位器，它一个模拟传感器。模块上电后，我们只需选择模块上电位器就可以调节模拟输出数值。

**2. 规格参数：**

工作电压: DC 3.3V~5V 

工作电流: 0.55mA

工作功率: 0.00275W

输出信号: 模拟信号

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

尺寸：32mm x 23.8mm x 28.4mm

接口：2.54mm间距，3pin防反接口

**3. 原理图：**

![](media/9f9e301d7d315c442a43958db97aaa9a.png)

旋转电位器其实就是一个可以改变电阻值的电阻元件，我们这个电位器是10K的，也就是说我们可以通过旋转便可以得到0-10K的任意阻值，根据欧姆定律U=I\*R，所以我们通过改变R的阻值进行控制电压的大小。而我们的Arduino主控板会将读取到的0-5V的电压分成1024份，所以就得到了模拟值。

**4. 连接图：**

![](media/6404fda2df365fcc0506f380af9a47a6.png)

**5. 实验代码：**

① 在事件栏里拖出Arduino启动模块。

![](media/c33acdc4d6207d70d4c2212503c097be.png)

② 在串口栏拖出设置串口波特率模块并设置波特率为9600。

![](media/22310cee42636efa8f9065b4afc8d88f.png)

③ 在控制栏拖出重复执行模块。

![](media/004227c0ee34427be4878c84ca582a82.png)

④ 在串口栏拖出串口打印模块，并添加引脚栏里的读取模拟引脚A0的模块在里面；最后添加一个延时为0.1s的延时模块。

![](media/65bd2e12c58493b7bdce75193c86e57c.png)

完整代码：

![](media/e14f5cce9f1afaea54bf6ba06009da08.png)

**6. 实验结果：**

按照连接图连接好线，上传代码，打开串口监视器，点击![](media/8e197b7fdbf089f423a5825c67c4c050.png)设置波特率为9600，我们便能看见旋转电位器的模拟值了，扭动旋转电位器值发生变化。如下图：

![](media/9f8cbdf8ac23f3bd2640d042e875bc5b.png)

### 第8课 温湿度传感器

![](media/f11d9320a04fd1ff003c34ffc975b1fe.png)

**1. 项目介绍：**

Keyes XHT11温湿度传感器。XHT11作为一款低价的入门级温湿度传感器，它主要由一个电阻式感湿元件和一个NTC测温元件组成。XHT11为4针单排引脚封装，采用单线制串行接口，只需加适当的上拉电阻，信号传输距离可达20米以上，Keyes XHT11温湿度传感器具有超快响应、抗干扰能力强、性价比极高等优点。

**2. 规格参数：**

工作电压: DC 3.3V~5V 

工作电流: 2.1mA

最大功率: 0.015W

温度范围: -25 ~ +60°C (± 2℃)

湿度范围: 5 ~ 95%RH（25C°左右精度为±5%RH）

输出信号: 数字双向单总线

工作温度: -25°C ~ +60°C

尺寸：32mm x 23.8mm x 9.7mm

接口：2.54mm间距，3pin防反接口

**3. 原理图：**

![](media/ac2d483d7421e0871fce88f05e38c27a.png)

XHT11温湿度传感器，包括一个电阻式感湿元件和一个NTC测温元件，XHT11为4针单排引脚封装，如上图，采用单线制串行接口，只需加适当的上拉电阻，信号传输距离可达20米以上，非常适用于对精度和实时性要求不高的温湿度测量场合。

XHT11是一款含有已校准数字信号输出的温湿度复合传感器，其精度湿度±5%RH， 温度±2℃，湿度量程5 ~ 95%RH，温度量程-25 ~ +60℃。温湿度传感器应用专用的数字模块采集技术和温湿度传感技术，确保产品具有极高的可靠性和卓越的长期稳定性。

单片机与 XHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右，数据分小数部分和整数部分，具体格式在下面说明，当前小数部分用于以后扩展，现读出为零，操作流程：一次完整的数据传输为40bit，高位先出。

**XHT11温湿度传感器的单总线格式定义：**

|名称 |单总线格式定义 |
| :--: | :--: |
| 起始信号 | 微处理器把数据总线(SDA)拉低一段时间至少 18ms(最大不得超过 30ms)，通知传感器准备数据。 | 
| 响应信号| 传感器把数据总线（SDA）拉低 83µs，再接高 87µs 以响应主机的起始信号。 |
| 湿度 | 湿度高位为湿度整数部分数据，湿度低位为湿度小数部分数据 |
| 温度 | 温度高位为温度整数部分数据，温度低位为温度小数部分数据，且温度低位 Bit8 为 1 则表示负温度，否则为正温度 |
| 校验位 | 校验位＝湿度高位+湿度低位+温度高位+温度低位 |

该传感器具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。

**4. 连接图：**

![](media/a50ed24c2e65b97c87e51b06e2ec8520.png)

**5. 实验代码：**

<span style="color: rgb(255, 76, 65);">确保在前面已经添加好了DHT sensor库，“添加 KidsBlock 库文件”有详细教程。</span>

① 在“事件” 栏拖出启动 arduino 模块。

![](media/5283c9a2dede879609ad9c287c62b949.png)

② 在“串口”栏拖出设置串口波特率模块，并设置波特率为9600 ；
在“温湿度传感器”栏拖出初始化DHT引脚模块设置引脚为A0，型号为dht11。

![](media/d02778002d1206a1c04cc3421f0ccbf8.png)

③ 在“控制”栏拖出重复执行模块。

![](media/4776da9c726118053c8ab771c8d4be57.png)

④ 在“串口”栏拖出串口打印模块，设置串口打印“Temperature:”不换行；将读取温度模块放到串口打印模块中并设置不换行；设置串口打印“C ”不换行（注意C后面有两个空格）

![](media/67211204248c46ec24a6ea1010938050.png)

⑤ 在“串口”栏拖出串口打印模块，设置串口打印“Humidity:”不换行；将读取湿度模块放到串口打印模块中并设置不换行 ； 设置串口打印“%”不换行；在添加一个100ms的延时

![](media/cafa8c0587531113ee3fde31b3958584.png)

完整代码：

![](media/c78554829076d43721a5d99ef8e34f50.png)

**6. 实验结果：**

按照连接图接好线，上传代码，打开串口监视器，设置波特率为9600，便可以看到当前环境温度值和湿度值，如下图。

![](media/760c33b8f8f91b34546be47d6d0c2f47.png)

### 第9课 薄膜压力传感器

![](media/55dc59310d7c729bf5d66af7e443b2ca.png)

**1. 项目介绍：**

Keyes 薄膜压力传感器是基于新型纳米压敏材料辅以舒适杨式模量的超薄薄膜衬底一次性贴片而成，兼具防水和压敏双重功能。当传感器感知到外界压力时，传感器电阻值发生变化，我们采用电路将传感器感知压力变化的压力信号转换成相应变化强度的电信号输出。这样我们就可以通过检测电信号变化就可以得到压力变化情况。

通过采集模块上S端模拟信号，判断压力大小。模拟值越小，压力越大；并在串口监视器上显示测试结果。

**2. 规格参数：**

工作电压: DC 3.3V~5V

工作电流: 0.5mA

最大功率: 0.0025W

量程: 0~10KG

响应点: 150g

重复性: ＜±9.7%（60%负载）

一致性: ±10%

耐久性: ＞100万次

初始电阻: 大于10MΩ(无负载)

响应时间: ＜1ms

恢复时间: ＜15ms

输出信号: 模拟信号

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

尺寸：32mm x 23.8mm x 7.4mm

接口：2.54mm间距，3pin防反接口

**3. 原理图：**

![Img](./media/img-20241030085454.png)

当传感器感知到外界压力时，传感器的电阻值发生变化。Keyes 薄膜压力传感器使用LM321运算放大器芯片将传感器感知到的压力变化的压力信号转换成相应变化强度的电信号输出，这样就可以通过检测电压信号变化得知压力变化情况。

**4. 连接图：**

![](media/051b335131b196649ac9cf69ad785182.png)

**5. 实验代码：**

① 在事件栏拖出Arduino启动模块，然后在串口栏拖出串口启动波特率模块并设置为9600。

![](media/b18423e30a6878b3e9d879776846b777.png)

② 在控制栏拖出重复执行模块。

![](media/916208c12542a0ce551a274e7eb4d28f.png)

③ 在串口栏拖出串口打印换行代码块。

![](media/fd9805c052809bf63e86251b9e7dfb05.png)

④ 在引脚栏拖出读取模拟引脚代码块，设置引脚为A0，并将代码块添加到串口打印模块中。

⑤ 在事件栏拖出延时模块，设置延时时间为0.1秒。

![](media/4db5e40d0bad344ba2ac2a00bda57415.png)

完整代码：

![](media/60c0fc966944b1dc60f12a1fddcfbd45.png)

**6. 实验结果：**

按照接线图接好线，上传代码，打开串口监视器，设置波特率为9600，便能看见压力传感器的模拟值了，按压感应区便能改变模拟值，如下图：

![](media/b0acad41a3c0ad628cb06acdbd30c097.png)

**7. 特别注意：**

前面的值是属于压力的模拟值并非压力值，要想得到压力值方法如下：

1\. 该传感器模块利用1个传感器元件串联1个510KΩ电阻。传感器一端接5V电源，一端连接510KΩ电阻，电阻连接GND。测试时，传感器连接电阻的一端为信号端，接模拟口。

2\. 通过上述描述，我们得到电阻和模拟值的计算公式：

3\. R=（1023-A0）\* 510 / A0 ，单位为KΩ。

4\. 根据上述公式，我们得到传感器元件电阻值，观察以下压力-阻值关系图，我们可以大概得到压力值，我们没有详细公式计算出具体的压力数值。

![](media/9a791bcaedaa65a95cafa03ab1034f05.png)

5\. 从图片上可以观察到，压力值大于5000g时，压力值变化，电阻值几乎不变化，因此，我们建议测试时，最大压力值为5000g。

6\. 由于传感器元件感应区是凹进去的，测试时，需要将测试物体放在圆片中间的感应区域内才可以测试出结果；如果把传感器直接放在平面上，将测试物体放在传感器感应区，是测试不出结果的。因此，我们需要在传感器感应区内垫一个小物体，再将测试物体放在传感器感应区的小物体上，才能测试出结果。

### 第10课 LCD 128\*32 DOT模块

![](media/a3fc1ac20c4429413f304a0b33b679f4.png)

**1. 项目介绍：**

128\*32的液晶屏模块，它的驱动芯片为ST7567A，像素为128\*32。模块使用IIC通信方式，它不仅可以显示英文文字，还可以显示数字和图案等等。

为了方便设置，我们还提供一个测试代码，代码中，我们设置显示屏显示各种英文文字、常用符号和一个图案等。同时，代码中包含所有英文字母和常用符号的库，可以直接调用。

特别注意，模块的接口为蓝色的4pin自锁接口，接口间距为2.54mm，使用时，我们需要利用特定的接线连接。

**2. 规格参数：**

分辨率：128\*32

工作电压：5V

电流：100MA

最大功率：0.5W

工作温度：0摄氏度 到 40摄氏度

尺寸：47.6MM \*23.8MM

通信方式：IIC通信

亮度、对比度可通过程序指令控制

接口：4PIN接口，间距为2.54mm

**3. 原理图：**

![](media/87c0ce8afc5d6a8c9baea3f76e75a12f.png)

该模块使用IIC通讯原理，底层函数我们已经封装在库里面，我们直接调用库函数就可以，如果感兴趣的话也可以去了解该模块的底层驱动。

**4. 连接图：**

![](media/debeabde1e140d1884eb6244a610afa2.png)

**5. 实验代码：**

<span style="color: rgb(255, 76, 65);">确保在前面已经添加好了LCD 128\*32库，“添加 KidsBlock 库文件”有详细教程。</span>

① 在“事件”栏拖出启动 arduino 模块。

![](media/3fe17278aaecf657c99ab8398ef1c05f.png)

② 在“LCD 128\*32”栏拖出LCD 初始化模块。

![](media/ff49031f712c5b6ad1d0b85ca2b2a80b.png)

③ 在“控制”栏拖出 重复执行模块。

![](media/73d53cb59db5cbdf0f98398414bf4a4d.png)

④ 在“LCD 128\*32”栏拖出设置LCD显示位置模块，并设置显示位置为第0列第7行；然后再拖出LCD 显示字母模块 设置显示字符为“KEYES”。

![](media/0656c31386b7fbd5203d8ff4a5f1d076.png)

⑤ 在“LCD 128\*32”栏拖出设置LCD显示位置模块，并设置显示位置为第1列第0行；然后再拖出LCD 显示字母模块 设置显示字符为“ABCDEFGHIJKLMNOPQR”。

![](media/969c0379c4038980ddf7f28e883ca6dd.png)

⑥ 在“LCD 128\*32”栏拖出设置LCD显示位置模块，并设置显示位置为第2列第0行；然后再拖出LCD 显示字母模块 设置显示字符为“123456789+-\*/\<\>=$@”。

![](media/ab05dd94ed74c8ac248fbaaba0201256.png)

⑦ 在“LCD 128\*32”栏拖出设置LCD显示位置模块，并设置显示位置为第3列第0行；然后再拖出LCD 显示字母模块 设置显示字符为“%^&(){}:;'|?,.~\\\[\]”。

![](media/4d118ffa6c87288b3e3df388c60c266d.png)

完整代码：

![](media/0a846791b54a3c6f580bb901c13d38a1.png)

**6. 实验结果：**

按照连接图接好线，上传代码，便能看见LCD上显示我们设置好的字符了。如下图：128X32LCD模块显示屏第一行显示“KEYES”、第二行显示“ABCDEFGHIJKLMNOPQR”、第三行显示“123456789+-\*/\<\>=$@”、第四行显示“%^&(){}:;'|?,.~\\\[\]”，如下图所示：

![](media/d1f543358fa84e0845b84cdae3a1a69f.png)

### 第11课 门铃

**1. 项目介绍：**

扩展对传感器的使用思维，将它们结合起来做出更有意思的东西。这节课我们要做的是门铃，也就是将按键和蜂鸣器及合起来。当按下按键时，蜂鸣器便发出声音。

**2. 连接图：**

![](media/dd82a69eb41f7ae9e96d63757920b5fe.png)

**3. 实验代码：**

① 在“事件”栏拖出 启动arduino模块。

![](media/9b1c5c39344028fa0d2fce4489f9342c.png)

② 在“引脚”栏拖出设置引脚模式模块，设置引脚A0为输入，设置引脚A1为输出。

![](media/1d8f18bd65561600f645952df9385bb7.png)

③ 在“控制”栏拖出重复执行模块。

![](media/49d93ad416047d452f530c4b382b6a92.png)

④ 在“控制”栏拖出判断模块 ；在“运算”栏拖出等于模块，放到判断语句的条件框中；在“引脚”栏拖出读取数字引脚模块设置引脚为“A0”，放到等于模块框中，等于模块右边设置为数字“0”。

![](media/89c619cd1d689fa37f4bd01198cc19fb.png)

⑤ 在“引脚”栏拖出设置引脚输出模块，并设置引脚为A1，放到判断模块中，如果条件满足则A1脚输出高电平；条件不满足则A1脚输出低电平。

![](media/f61b79debfbd18061d5d195882a6cf13.png)

完整代码：

![](media/09241fa0691ce6a9f4c2029dd67d802a.png)

**4. 实验结果：**

按照接线图接好线，上传代码完成后，按下按键蜂鸣器便会响起。

**5. 扩展：**

上面我们的门铃是按下就一直响，想办法将它变成按下按键后门铃“滴~滴~滴~”的响呢?

### 第12课 闯入报警器

**1. 项目介绍：**

在生活中，相信大家已经对走到楼梯口灯就会自动亮起来已经习以为常了，这节课就是使用人体红外热释传感器与蜂鸣器做一个有人闯入就会报警的设备。

**2. 连接图：**

![](media/6364a743b4bc50ad796447e3f093620e.png)

**3. 实验代码：**

① 在“事件”栏拖出 启动arduino模块。

![](media/9b1c5c39344028fa0d2fce4489f9342c.png)

② 在“引脚”栏拖出设置引脚模式模块，设置引脚A0为输入，设置引脚A1为输出。

![](media/459c59e3b11b5576512fae2a7e5e1774.png)

③ 在“控制”栏拖出重复执行模块。

![](media/49d93ad416047d452f530c4b382b6a92.png)

④ 在“控制”栏拖出判断模块 ；在“运算”栏拖出等于模块，放到判断语句的条件框中；在“引脚”栏拖出读取数字引脚模块设置引脚为“A0”，放到等于模块框中，等于模块右边设置为数字“1”。

![](media/c92c05d31e3a6bb023c8838d4c5fa2be.png)

⑤ 在“引脚”栏拖出设置引脚输出模块，并设置引脚为A1，放到判断模块中，如果条件满足则A1脚输出高电平；条件不满足则A1脚输出低电平。

![](media/9700cbf5a4789b5c43ec760c6066471d.png)

完整代码：

![](media/e901d6b13699537802a8dcfb05775c44.png)

**4. 实验结果：**

按照连接图接好线，上传代码，当传感器前方有人移动时蜂鸣器便会响起

### 第13课 压力报警器

**1. 项目介绍：**

这一课我们学习薄膜压力传感器与蜂鸣器的搭配，当压力过了一定值时蜂鸣器便发声报警。

**2. 连接图：**

![](media/26a4e721d30db2ad39c4ef10bf0c7e4f.png)

**3. 实验代码：**

① 在“事件”栏拖出启动 arduino 模块。

![](media/b7495e7f4b21940b27bdac39b1fb9605.png)

② 在“引脚”栏拖出设置引脚模式模块，并设置引脚为A1模式为 输出
；在“变量”栏拖出设置全局变量代码块。

![](media/a332e064c28b4cd28d75c9752b8513d5.png)

③ 在“控制”栏拖出重复执行模块。

![](media/c12ad822bd06326fd5c1f3de586db1e1.png)

④ 在“变量”栏拖出设置变量模块；在“数据”栏拖出映射模块，添加到设置设置变量模块中；在“引脚”栏拖出读取模拟引脚模块，设置引脚为A0，然后添加到映射模块的第一格里，然后设置映射模块的数据为“从（1023,0）到（0,1023）”。

![](media/51869379cdf9eca7ae707cb45375f832.png)

⑤ 在“控制”栏拖出判断模块；在“运算”栏拖出大于模块并在大于模块的左边边格子添加“item”变量，右边边设置数字600。

![](media/26637ebdb4983f035e102e1e0ad0fa03.png)

⑥ 在“引脚”栏拖出设置引脚输出模块，如果满足条件则A1脚输出高电平，不满足则输出低电平。

![](media/86265c6e80572b4580326fa4f7c1687e.png)

完整代码：

![](media/4fe80713a02b1898ce6cc0760e6f34a8.png)

**4. 实验结果：**

按照连接图接好线，上传代码，当按压薄膜压力传感器的感应区的力度大于模拟值的600时蜂鸣器便会发声报警。

### 第14课 LCD仪表盘

**1. 项目介绍：**

我们有很多个传感器需要看数值，而又不能一直拿着电脑看，这时候LCD模块就起作用了，可以利用它来显示各种数据。

**2. 连接图：**

![](media/79759ed26473b38d5063f75363334710.png)

**3. 实验代码：**

<span style="color: rgb(255, 76, 65);">事先添加dxt11传感器和LCD 128\*32模块的代码块，“添加 KidsBlock 库文件”有详细教程。</span>

① 在“事件”栏拖出 启动arduino 模块。

![](media/2d115e8a4fc1322f4c85e3b79699c693.png)

② 添加dht11初始化模块，并设置引脚为10，型号为dht11； 然后添加LCD 128\*32的初始化模块。

![](media/a833bbc7be073cdcd730bbcbd9a3e928.png)

③ 在“控制”栏拖出 重复执行模块。

![](media/38b74b44aea23402f13c31480385da70.png)

④ 添加一个设置LCD 显示位置模块设置显示位置为第0行，第0列（这样显示的字符或数字将会在第0行的第0列开始显示）；在添加一个LCD显示字符模块设置显示字符为“humidity:” ；添加设置显示位置模块设置为 第0行，第10列 ；添加LCD显示数字模块，然后将dht11的读取湿度模块添加到显示数字模块中。最后的延时模块只是用于区分开每一行的显示代码块，这样方便寻找些。

![](media/045d99ed8ea2092e7cb96b43904872ab.png)

⑤ 添加一个设置LCD 显示位置模块设置显示位置为 第1行，第0列；在添加一个LCD显示字符模块设置显示字符为“temperature:” ；添加设置显示位置模块设置为 第1行，第13列 ；添加LCD显示数字模块，然后将dht11的读取温度模块添加到显示数字模块中。最后的延时模块只是用于区分开每一行的显示代码块，这样方便寻找些。

![](media/9c8322c6035489268f75ce1688d32262.png)

⑥ 添加一个设置LCD 显示位置模块设置显示位置为 第2行，第0列；在添加一个LCD显示字符模块设置显示字符为“Luminance:” ；添加设置显示位置模块设置为 第2行，第11列 ； 添加LCD显示数字模块，然后将读取模拟引脚A2模块添加到显示数字模块中。最后的延时模块只是用于区分开每一行的显示代码块，这样方便寻找些。

![](media/8254d79ca9bf61f7ad27bcda8420bb91.png)

⑦ 添加一个设置LCD 显示位置模块设置显示位置为 第3行，第0列；在添加一个LCD显示字符模块设置显示字符为“Analog:” ；添加设置显示位置模块设置为 第3行，第8列 ； 添加LCD显示数字模块，然后将读取模拟引脚A1模块添加到显示数字模块中。最后的延时模块只是用于区分开每一行的显示代码块，这样方便寻找些。

![](media/edd857b1c9e39fde7baba4cbb6887fd1.png)

完整代码：

![](media/e09586c7a0f36078a84b33f6ea296129.png)

**4. 实验结果：**

按照连接图接好线，上传代码，便能看见LCD上显示我们需要的传感器值了。如下图：128X32LCD模块显示屏第一行显示湿度、第二行显示温度、第三行显示光亮度、第四行显示电位器的模拟值，如下图所示：

![](media/689318e48d9c7635338e4f1f042ae5de.png)
