
# Mixly_教程

---

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

Mixly软件下载、安装的参考链接：[https://mixly.org/bnu-maker/mixl2.0rc](https://mixly.org/bnu-maker/mixl2.0rc)


Mixly软件使用方法的参考链接：[https://mixly.readthedocs.io/zh-cn/latest/](https://mixly.readthedocs.io/zh-cn/latest/)

<span style="color: rgb(255, 76, 65);">注意：</span><span style="background:#ff0;color:#000">编写Mixly_教程中所有课程的代码需要选用Arduino AVR 进入代码编辑器。</span>

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

---

## 2. 添加 Mixly 库文件

<span style="font-size: 24px; color: rgb(255, 76, 65);">**注意：Mixly 库文件必须添加好，否则后面的示例代码打不开**。</span>

<br>

Mixly 软件下载安装后，点击Arduino AVR 进入代码编辑器，先点击右上角“**设置**”，再点击“**管理库**”进入添加库文件界面。

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

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

先点击“**导入库**”，再点击![Img](./media/img-20240607113753.png)进入库文件所放的位置，找到库文件并选中它，然后单击“确定”。之后，就可以看到库文件在导入中。

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

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

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

点击“**管理库**”，可以看到添加成功的库文件。

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

关闭添加库文件的窗口界面，在代码编辑器左侧看到所添加的库文件。

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

---

## 3. 单个传感器/模块项目课程

上面操作完后，打开套件工具包，我们可以看到套件中有很多传感器/模块，有主板和连接线等。这里，我们将多种传感器/模块利用自带连接线单独连接在主板。然后上传对应的实验代码，单独测试各个传感器/模块的功能。我们下面的课程是先从简单到复杂学习单个模块/传感器的原理，后面再学习一些模块/传感器的扩展应用以巩固加深我们对该套件的理解。

**<span style="color: rgb(255, 76, 65);">特别注意：</span>** 实验时，模块/传感器连接线材时，必须按照教程里的接线方法及位置，电源与信号脚不能错接，否则会损坏模块/传感器。

---

### 第01课 Hello World

**1. 项目介绍**

对于Arduino的初学者，先从一些简单的开始学习吧！在这个项目中，你只需要一个主板，USB线和计算机就可以完成“Hello World!”项目。它不仅是主板和计算机的通信测试，也是Arduino的初级项目。这也是一个入门实验，让你进入计算机的编程世界。

---

**2. 实验组件**

| ![img](media/KS5016.png) | ![img](media/USB.jpg) |
| :----------------------: | :-------------------: |
|主板 x1|       USB线 x1        |

---

**3. 模块接线图**

![img](media/011301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''<u>**01_HelloWorld**</u>"。

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

将主控板通过USB线连接到计算机后，开始导入我们提供的示例代码。先单击![Img](./media/img-20240607130013.png)，然后点击![Img](./media/img-20240607130045.png)，进入Mixly_代码文件夹中选中文件“**01_HelloWorld**”后单击“**打开**”。这样，文件“01_HelloWorld”导入成功。

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

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

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


为了避免将代码上传至主板时出现错误，必须点击![Img](./media/img-20240607132247.png)选择正确的主控板型号“Arduino Uno”，然后点击![Img](./media/img-20240607131808.png)连接好串口端口，这样主控板型号和串口端口都选择好。

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

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

主控板型号和串口端口选择正确后，单击![Img](./media/img-20240607132609.png)将示例代码上传到主控板上。

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

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

代码上传成功。

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

---

**5. 实验结果**

代码上传成功后，利用MicroUSB线连接到计算机上电，点击![Img](./media/img-20240607132923.png)打开串口监视器窗口，可以看到选好的串口端口。设置波特率为 **9600** ，这样串口监视器窗口不断地打印“**<u>Hello World!</u>**”。

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

---

**6. 代码说明**

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

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

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

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

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

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


--- 

### 第02课 交通灯

**1. 项目介绍**

交通灯，也就是马路上十字路口的红绿灯，在我们的日常生活中很常见。交通灯是由红、黄、绿三种颜色组成的，根据一定的时间规律循环交替亮起或熄灭。每个人都应该遵守交通规则，这可以避免许多交通事故。

想学习交通灯的原理吗？我们可以用红、黄、绿3个LED外接电路来模拟马路上的交通灯。因此我们特别设计了这款交通灯模块，模块上的红、黄、绿3个LED灯模拟交通灯。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流：40mA

最大功率：0.2W

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

控制信号：数字信号

尺寸：47.6mm x 23.8mm x 18mm

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

---

**3. 模块原理图**

![031301](media/031301.png)

由原理图可以得知，控制这个模块就好比分别控制3个独立的LED灯(我们这个灯可直接由单片机IO口驱动)，给对应颜色LED灯高电平就亮起对应的颜色。比如，我们给信号“R”输出高电平，也就是5V，则红色LED点亮。

---

**4. 实验组件**

| ![img](media/KS5016.png) | ![img](media/KE4008.png) | ![img](media/5pin.png)       | ![img](media/USB.jpg) |
| ------------------------ | ------------------------ | ---------------------------- | ---------------------------- | 
| 主板 x1      | 交通灯模块 x1     | 5P线(反向) x1 | USB线 x1             |

---

**5. 模块接线图**

![img](media/031501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**02_Traffic_Light**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，你会看到模块上绿色LED亮5秒然后熄灭，黄色LED闪烁3秒然后熄灭，红色LED亮5秒然后熄灭。模块按此顺序循环亮灭。

![img](media/IMG_145218.png)

![img](media/IMG_145240.png)

![img](media/IMG_145248.png)

---

**8. 代码说明**

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

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

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

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

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

代表设置一个变量i，i从1逐渐增加到3，每一次都加1，总共加了3次。

---

### 第03课 发出激光

**1. 项目介绍**

激光模块上的激光头发出的激光与常见的光不同。一方面，激光的单色性好。另一方面，激光发射器内部特定的结构，使得激光能够被聚集成单束光，朝着同一方向射出，亮度高，方向性好。

正是由于这些特性，激光被广泛用于对特定材料进行切割、焊接、表面处理等等。激光的能量非常高，玩具激光笔照射人眼可能导致眩光，长时间可能导致视网膜损害，我国也禁止用激光照射航行的飞机。因此，**请注意不要用激光发射器对准人眼。**

---

**2. 模块参数**

工作电压：DC 3.3V~5V

工作电流：21mA

最大功率：0.105W

控制信号：数字信号

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

尺寸：32mm x 23.8mm x 10mm

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

---

**3. 模块原理图**

![](media/041301.png)

激光模块主要由激光头组成，激光头由发光管芯、聚光透镜、铜可调套筒三部分组成。

从激光模块的电路原理图我们可以知道，它是用三极管驱动的。激光头的 1 脚始终上拉到VCC，在信号端 S 处输入一个高电平数字信号，NPN三极管Q1导通，激光头的 2 脚被下拉到GND，此时传感器开始工作。在信号端 S 处输入低电平时NPN三极管Q1不导通，传感器停止工作。

---

**4. 实验组件**

| ![img](media/KS5016.png) |![img](media/KE4043.png) |![img](media/3pin.png)       | ![img](media/USB.jpg) | 
| ------------------------ | ------------------------ | ---------------------------- | ---------------------------- | 
|主板 x1 | 激光模块 x1    | 3P线(反向) x1 | USB线 x1   |
 

---

**5. 模块接线图**

![](media/041501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**03_Laser_Sensor**"。

**注意：为了避免上传代码不成功，请不要在上传代码前连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，能看到模块上激光管发射红色激光信号2秒，然后关闭发射2秒，循环交替。

![img](media/IMG_150024.png)

---

**8. 代码说明**

可以参照第02课的代码说明，这里就不多做介绍了。

---

### 第04课 自锁按键

**1. 项目介绍**

自锁按键模块主要是由一个自锁按键组成，上电后，按下白色按键，模块信号端输出低电平，将白色按键按起，模块信号端输出高电平。第02课我们学习了怎么让单片机的引脚输出一个高电平或者低电平，这节课程我们就来学习怎么读取引脚的电平。

自锁按键模块的白色按键按下，单片机读取到低电平，将白色按键按起读取到高电平。通过读取传感器上S端的高低电平，判断自锁按键是按下还是按起，并且在串口监视器上显示测试结果。

---

**2. 模块参数**

工作电压：DC 3.3V~5V 

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

控制信号：数字信号

尺寸：32mm x 23.8mm x 15.6mm

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

---

**3. 模块原理图**

![img](media/071301.png)

按键有四个引脚，其中1和3是相连的，2和4是相连的，在我们未按下按键时，1、3与2、4是断开的，信号端S读取的是被1KΩ的上拉电阻R1所拉高的高电平，而当我们按下按键时，1、3和2、4连通。信号端S连接到了GND，此时读取到的电平为低电平，即按下按键，传感器信号端为低电平，模块上的LED灯亮起；按键按起时，信号端为高电平，模块上的LED灯灭。

---

**4. 实验组件**

| ![img](media/KS5016.png) | ![img](media/KE4045.png) |![img](media/3pin.png)       | ![img](media/USB.jpg) | 
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |
| 主板 x1  | 自锁按键模块 x1  | 3P线(反向) x1 | USB线 x1 |


---

**5. 模块接线图**

![img](media/071501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**04_Self-locking_Button**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为  **<u>9600</u>**。

当按下模块上的白色按键时，按键值value为0，串口监视器打印出“**0     Press the button**”；再次按下白色按键（即白色按键被按起）时，按键值value为1，串口监视器打印出“**1   Press the botton again**”字符。

![img](media/IMG_151225.png)

![img](media/IMG_151244.png)

![img](media/071701.png)

---

**8. 代码说明**

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

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

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

设置变量item初始值。
![Img](./media/img-20240607141718.png)

获取变量item。

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

“如果” 后面的表达式为真，则运行 “执行” 后面的代码。“如果” 后面的表达式为假 ，则运行 “否则” 后面的代码。

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

读取按键的数字电平，高HIGH或者低LOW。如果该引脚未连接任何东西，则可以返回HIGH或LOW（并且可以随机更改）。主板上的输入引脚A0、A1、A2、A3、A4、A5可以用作数字引脚，分别对应数字引脚D14、D15、D16、D17、D18、D19。

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

初始化串口通信，并设置波特率为9600。

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

设置串口打印方式的指令方块，“**换行**”表示换行打印，“**不换行**”表示不换行打印。

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

自锁按键看读取数字电平信号并赋给变量item，并串口不换行打印。

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

检测到按下自锁按键。

---

### 第05课 电容触摸传感器

**1. 项目介绍**

电容触摸模块主要由1个触摸检测芯片 TTP223-BA6 构成。模块上提供一个触摸按键，功能是用可变面积的按键取代传统按键。当我们上电之后，传感器需要约0.5秒的稳定时间，此时间段内不要触摸按键，此时所有功能都被禁止，始终进行自校准，校准周期约为4秒。

---

**2. 模块参数**

工作电压：DC 3.3V~5V

工作电流：3mA

最大功率：0.015W

输出信号：数字信号

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

尺寸：32mm x 23.8mm x 9mm

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

---

**3. 模块原理图**

![](media/081301.png)

TTP223N-BA6 的输出通过 AHLB（4）引脚选择高电平或低电平有效。通过 TOG（6）引脚选择直接模式或触发模式。

| TOG  | AHLB | 引脚Q的功能           |
| ---- | ---- | --------------------- |
| 0    | 0    | 直接模式，高电平有效  |
| 0    | 1    | 直接模式，低电平有效  |
| 1    | 0    | 触发模式，上电状态为0 |
| 1    | 1    | 触发模式，上电状态为1 |

从原理图我们可以知道 TOG 脚和 AHLB 脚是悬空的，此时输出为直接模式，高电平有效。

当我们用手指触摸模块上的感应区时，信号端 S 输出高电平（上一课学习的自锁按键模块与之相反，当自锁按键感应到按下输出低电平），板载红色LED点亮，我们通过读取模块上 S 端的高低电平，判断电容触摸模块上的感应区是否感应到触摸。

<span style="color: rgb(255, 76, 65);">注意：</span>我们上电之后，传感器需要约0.5sec的稳定时间，此时间段内不要对键进行触摸，此时所有功能都被禁止，始终进行自校准，当键没被触摸时，重校准周期约为4.0sec。

---

**4. 实验组件**

| ![img](media/KS5016.png) |![img](media/KE4013.png) |![img](media/3pin.png) | ![img](media/USB.jpg) |
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |
|主板 x1|  电容触摸传感器 x1 | 3P线(反向) x1 | USB线 x1 |
 

---

**5. 模块接线图**

![](media/081501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**05_Touch_Sensor**"。

**注意：为了避免上传代码不成功，请不要在上传代码前连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

![](media/135790.png)

当电容触摸传感器模块上的感应区感应到触摸时，板载红色LED点亮，value 值为 1，串口监视器打印出“**1  Touch the button**”；当没有感应到触摸时，板载红色LED熄灭，value 值为 0，串口监视器打印出“**0 Loosen the button**”。

![](media/IMG_151728.png)

![](media/IMG_151742.png)

![](media/081703.png)

---

**8. 代码说明**

可以参照第04课的代码说明，这里就不多做介绍了。

---

### 第06课 检测障碍物

**1. 项目介绍**

避障传感器主要由一对红外线发射与接收管元件组成。实验中，我们通过读取传感器上S端高低电平，判断是否存在障碍物。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 6.8mA

最大功率: 0.034W

输出信号: 数字信号

最大感应距离: 17.3cm

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

尺寸：32mm x 23.8mm x 11mm

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

---

**3. 模块原理图**

![img](media/091301.jpg)

NE555时基电路提供给发射管TX发射出一定频率的红外信号，红外信号会随着传送距离的加大逐渐衰减，如果遇到障碍物，就会形成红外反射。当检测方向RX遇到反射回来的信号比较弱时，接收检测引脚输出高电平，说明障碍物比较远；当反射回来的信号比较强，接收检测引脚输出低电平，说明障碍物比较近，此时指示灯亮起。传感器上有两个电位器，一个用于调节发送功率，一个用于调节接收频率，通过调节两个电位器，我们可以调节它的有效距离。

---

**4. 实验组件**

| ![img](media/KS5016.png) |![img](media/KE4019.png) | ![img](media/3pin.png) | 
| ------------------------ | ------------------------ | ---------------------------- |
|主板 x1|  避障传感器 x1 | 3P线(反向) x1 |
|![img](media/USB.jpg) | ![img](media/ABC13.png)|     |
| USB线 x1| 一字螺丝刀 x1 |    |

---

**5. 模块接线图**

![img](media/091501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件"**06_Obstacle_Avoidance_Sensor**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，接着开始调节传感器模块上的两个电位器感应距离。避障传感器上有两个电位器，分别是接收频率调节电位器和发射功率调节电位器，如下图所示。

![img](media/091701.jpg)

先调节发射功率调节电位器，先用一字螺丝刀将电位器顺时针拧到尽头，然后逆时针慢慢往回调，当调节到SLED灯亮起时，微调使传感器上SLED灯介于亮与不亮之间的**不亮**状态。

接着设置接收频率调节电位器，同样用一字螺丝刀将电位器顺时针拧到尽头，然后逆时针慢慢往回调，当SLED灯亮起时，微调使传感器上SLED灯介于亮与不亮之间的**不亮**状态，此时能检测障碍物的距离最长。

打开串口监视器，设置波特率为 **<u>9600</u>**。当传感器检测到障碍物时，value 值为 **0**，SLED 灯亮，串口监视器打印出 “**0   There are obstacles**” ；没有检测到障碍物时，value 值为 **1**，SLED 灯灭，串口监视器打印出 “**1   All going well**” 。

![img](media/IMG_151916.png)

![img](media/IMG_151943.png)

![img](media/091702.png)

---

**8. 代码说明**

可以参照第04课的代码说明，这里就不多做介绍了。

---

### 第07课 光折断计数

**1. 项目介绍**

光折断模块主要由 1 个 ITR-9608 光电开关组成，它属于对射光电开关传感器。

在本实验中，我们通过设置代码，模拟出流水线上利用类似传感器实现对产品进行计数的功能。

---

**2. 模块参数**

工作电压：DC 3.3V~5V

工作电流：24mA

最大功率：0.12W

输出信号：数字信号

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

尺寸：32mm x 23.8mm x 13mm

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

---

**3. 模块原理图**

![](media/111301.jpg)

光折断模块上的光电开关是利用被检测物体对光束的遮挡或反射，由同步回路选通电路，从而检测遮挡物体的有无。所有能反射光线的物体都可以被检测。光电开关将输入的电流在发射器上转换为光信号并射出，然后接收器根据接收到的光线强弱或有无，对目标物体进行检测。

当用不透明物体放置在传感器凹槽时，C 脚与 VCC 连通，传感器信号端 S 为高电平，自带红色 LED熄灭；传感器凹槽没有任何东西时，传感器信号端被 R2 拉低为低电平，自带红色LED亮起。

---

**4. 实验组件**

| ![](media/KS5016.png) | ![img](media/KE4014.png) |![img](media/3pin.png) | ![img](media/USB.jpg) | 
| --------------------- | ------------------------ | ---------------------------- |---------------------------- |
|主板 x1     |  光折断模块 x1 | 3P线(反向) x1 | USB线 x1  |     



---

**5. 模块接线图**

![](media/111501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**07_Photo_Interrupt**"。

**注意：为了避免上传代码不成功，请不要在上传代码前连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

串口监视器打印出 PushCounter 的数据，物体每穿过传感器凹槽一次，PushCounter 数据加 1。

![](media/IMG_151445.png)

![](media/IMG_151549.png)

![](media/111703.png)

---

**8. 代码说明**

通过以下表格，我们可以了解此课程代码的逻辑设置，这个编程技巧我们在后面还会用到。

| 初始状态                              |         |
| :------------------------------------ | :------ |
| State（传感信号端数值）               | 设置为0 |
| lastState（传感器信号端上一循环数值） | 设置为0 |
| PushCounter（累计通过物体数目）       | 设置为0 |

| 状态                       |                                                              |                                                  |
| -------------------------- | ------------------------------------------------------------ | ------------------------------------------------ |
| 当物体开始穿过传感器凹槽时 | lastState为0，State检测到变为1，两个数据不相等，lastState变为1。 | PushCounter设置为PushCounter加1打印PushCounter值 |
| 当物体离开传感器凹槽时     | lastState为1，State检测到变为0，两个数据不相等，lastState变为0。 | PushCounter不变不打印PushCounter值               |
| 当物体再次穿过传感器凹槽时 | lastState为0，State检测到变为1，两个数据不相等，lastState变为1。 | PushCounter设置为PushCounter加1打印PushCounter值 |
| 当物体再次离开传感器凹槽时 | lastState为1，State检测到变为0，两个数据不相等，lastState变为0。 | PushCounter不变不打印PushCounter值               |


---

### 第08课 碰撞传感器

**1. 项目介绍**

碰撞传感器主要用的是轻触开关，而上一课我们学习的自锁按键模块用的是按键开关。碰撞传感器常用于3D打印机内做限位开关。

---

**2. 模块参数**

工作电压：DC 3.3V~5V

工作电流：20mA

最大功率：0.1W

输出信号：数字信号

尺寸：39.5mm x 23.5mm x 9.2mm

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

---

**3. 模块原理图**

![img](media/131301.png)

碰撞传感器主要由 1 个轻触开关组成。当物体碰到轻触开关弹片，下压时，2 脚和 3 脚导通，传感器信号端 S 被下拉为低电平，模块上自带的红色 LED 点亮；当没有物体碰撞轻触开关时，2 脚和 3 脚不导通，3 脚被 4.7 K的电阻 R1 上拉为高电平，即传感器信号端S为高电平，此时自带红色 LED 熄灭。碰撞传感器的原理与倾斜模块的电路原理几乎一样，不同之处在于导通方式。

---

**4. 实验组件**

| ![](media/KS5016.png) |![](media/KE4023.png) |![img](media/3pin.png)       | ![img](media/USB.jpg) |   
| --------------------- | --------------------- | ---------------------------- |---------------------------- |
|主板 x1| 碰撞传感器 x1 | 3P线(反向) x1 | USB线 x1  |  
 
 

---

**5. 模块接线图**

![](media/131501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**08_Collision_Sensor**"。

**<span style="background:#ff0;color:#000">
注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。 </span>**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

将传感器的上弹片下压时，value值为0，模块上LED点亮，串口监视器打印出“**0  The end of this!**” ；当松开弹片时，value值为1，模块上LED熄灭，串口监视器打印出“**1  All going well!**”。

![](media/IMG_151845.png)

![](media/IMG_151821.png)

![](media/131701.png)

---

**8. 代码说明**

可以参照第04课的代码说明，这里就不多做介绍了。

---

### 第09课 附近有人吗

**1. 项目介绍**

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

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

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 3.6mA

最大功率: 0.018W

静态电流: <50 uA

输出信号: 数字信号

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

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

最大检测距离: ≤5米

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

尺寸：32mm x 23.8mm x 7.4mm

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

---

**3. 模块原理图**

![](media/161301.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/KS5016.png) |![img](media/KE4018.png)| ![img](media/3pin.png)  | ![img](media/USB.jpg) |   
| ------------------------ | --------------------------- | ---------------------------- |---------------------------- |
|主板 x1 | 人体红外热释传感器 x1 | 3P线(反向) x1 | USB线 x1   |    

---

**5. 模块接线图**

![img](media/161501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**09_PIR_Motion**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

当传感器检测到附近有人在运动时，value值为1，模块上LED熄灭，串口监视器显示“**1   Somebody is in this area!**”；没有检测到附近有人在运动时，value值为0，模块上LED点亮，串口监视器显示“**0   No one!**”。

![img](media/IMG_151352.png)

![img](media/IMG_151315.png)

![img](media/161701.png)

---

**8. 代码说明**

可以参照第04课的代码说明，这里就不多做介绍了。

---

### 第10课 播放声音

**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. 模块原理图**

![img](media/171301.jpg)

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

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

---

**4. 实验组件**

| ![img](media/KS5016.png) |![img](media/KE4010.png) |![img](media/3pin.png)       | ![img](media/USB.jpg) |    
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |  
| 主板 x1|  有源蜂鸣器模块 x1  |3P线(反向) x1 | USB线 x1  |      

---

**5. 模块接线图**

![img](media/171501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**10_Active_Buzzer**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，模块上有源蜂鸣器响起1秒，停1秒，循环交替。

![img](media/IMG_153247.png)

---

**8. 代码说明**

可以参照第02课的代码说明，这里就不多做介绍了。

---

### 第11课 演奏音乐

**1. 项目介绍**

在之前的项目中，我们研究了有源蜂鸣器，它只能发出一种声音，可能会让你觉得很单调。这个项目将学习另一种蜂鸣器，无源蜂鸣器。与有源蜂鸣器不同，无源蜂鸣器可以发出不同频率的声音。在这个项目中，我们将使用控制板控制无源蜂鸣器演奏歌曲。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 50mA

最大功率: 0.25W

控制信号：数字信号

方波大小：大约2KHz

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

尺寸：32mm x 23.8mm x 12.3mm

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

---

**3. 模块原理图**

![img](media/181301.jpg)

这是一个无源蜂鸣器，上一课我们介绍过，有源蜂鸣器自带振荡源，是有正负之分的，只需要提供5V电压信号就会发声，发出的声音音调单一、频率固定。而无源蜂鸣器内部不带震荡电路，是没有正负之分的，类似于喇叭，只要加载不同的频率的电信号就可以实现发声，根据不同的频率所发出的声音也是不一样的。改变单片机引脚输出的工作频率，从而改变蜂鸣器鸣叫的音调。还可以改变输出电平的占空比，从而改变蜂鸣器输出声音的大小。

---

**4. 实验组件**

| ![img](media/KS5016.png) |![img](media/KE4067.png)    | ![img](media/3pin.png)       | ![img](media/USB.jpg) |
| ------------------------ | --------------------------- | ---------------------------- |---------------------------- | 
|主板 x1 |无源蜂鸣器模块 x1 |3P线(反向) x1 | USB线 x1 |

---

**5. 模块接线图**

![img](media/181501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**11_Passive_Buzzer**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，无源蜂鸣器模块先播放7种不同的音调，然后播放三首歌曲。

![img](media/IMG_153143.png)

---

**8. 代码说明**

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

向指定引脚设置无源蜂鸣器的播放频率和节拍。

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

向指定引脚设置无源蜂鸣器播放特定的音乐。

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

向指定引脚设置无源蜂鸣器不发出声音。

---

### 第12课 风扇转动

**1. 项目介绍**

130电机模块上的HR1124S是应用于直流电机方案的单通道H桥驱动器芯片。HR1124S的H桥驱动部分采用低导通电阻的PMOS和NMOS功率管。低导通电阻保证芯片低的功率损耗，使得芯片安全工作更长时间。此外HR1124S拥有低待机电流，低静态工作电流，这些性能使HR1124S易用于玩具方案。

实验中，我们可通过输出到两个信号端IN+和IN-的电压方向来控制电机的转动方向，让电机转动起来。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

最大输入电流：1A

电机驱动电压：5V

电机最大驱动电流：1A（输入DC 5V）

电机最大驱动电流：0.4A（输入DC 3.3V）

控制信号: 数字信号

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

尺寸：32mm x 23.8mm x 24.5mm

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

---

**3. 模块原理图**

![img](media/191301.jpg)

HR1124S芯片的作用是助于驱动电机。而电机所需电流较大，无法用三极管驱动更无法直接用IO口驱动。让电机转动起来的方法很简单，给电机两端添加电压即可。不同电压方向电机转向也不相同，额度电压内，电压越大，电机转动得越快；反之电压越低，电机转动得越慢，甚至无法转动。所以我们可以用PWM口来控制电机的转速，这一课我们先学习用高低电平来控制电机。


---

**4. 实验组件**

| ![img](media/KS5016.png) |![img](media/KE4038.png) |![img](media/4pin.png) |
| ------------------------ | ------------------------ | ---------------------------- |
|主板 x1|  130电机模块 x1     |4P线(反向) x1 |
| ![img](media/USB.jpg)    | ![](media/WS4.png)|![](media/6.png)|
|  USB线 x1   | 电池盒 x1   | AA电池 x6 |

<span style="color: rgb(255, 76, 65);">**注意：电机与风扇叶是分开装的，需要组合到一起。**</span>

**5. 模块接线图**

<span style="color: rgb(0, 209, 0);">**注意：请勿用手握住风扇叶，请将风扇叶对着空旷的地方，以免受伤。**</span>

![img](media/191501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**12_130_Motor**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后外接电源供电，上电后，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

**注意：请勿用手握住风扇叶，请将风扇叶对着空旷的地方，以免受伤。**

<span style="color: rgb(255, 76, 65);">注意：</span> 由于风扇在转动时，所需的电流比其他传感器要大，会引起电路中电压电流波动，特别是风扇进行正反转时，电压电流波动过大，导致主板的电压电流过低，会导致复位。


代码上传成功后，拔下USB线断电，按照接线图正确接好模块，给主板外接电源供电（将装有电池的电池盒接到主板上）。上电后风扇逆时针转动2秒；停止2秒；顺时针转动2秒；停止2秒；循环交替。

![img](media/IMG_154609.png) 

---

**8. 代码说明**

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

将管脚设置为D4、D5，当D4输出为低电平即INA(IN+)输入低电平，D5输出为低电平即INB(IN-)输入低电平时（输入与输出是相对的，这个实验中对于我们单片机的引脚来说，单片机输出高低电平，模块就为输入了，即从单片机输出到模块；例如按键模块则相反，是模块输出到单片机），即：当两个管脚都设置为低电平时，电机停止转动。

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

当D4输出为高电平即INA(IN+)输入高电平，D5输出为低电平即INB(IN-)输入低电平时，电机逆时针旋转。

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

当D4输出为低电平，D5输出为高电平时，电机顺时针旋转。

---

### 第13课 读取电位器的值

**1. 项目介绍**

旋转电位器是一个模拟传感器。前面我们学习过的传感器，都是数字传感器。例如我们前面学习的人体红外热释传感器，当传感器检测到附近有人在运动时，我们读取到高电平（5V），当未检测到附近有人在运动时，我们读取到低电平（0V），而在0~5V中间的电压值，我们数字IO口无法读取到，当然人体红外热释传感器也只能输出高低电平。而模拟传感器就可以通过我们主板上的模拟口读取中间的电压值，那么，在本实验中我们使用旋转电位器通过模拟口来读取中间的电压值（即：模拟值）。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 20 mA

工作功率: 0.1 W

输出信号: 模拟信号

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

尺寸：32mm x 23.8mm x 28.4mm

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

---

**3. 模块原理图**

![img](media/201301.png)

旋转电位器原理是靠电刷在电阻体上滑动，在电路中获取与输入电压形成一定关系地输出电压。旋转电位器传感器选用了一个10K可调电阻。通过旋转电位器上的旋杆，我们可以改变电阻大小，信号端S检测到电压变化（0 ~ 5V），而这个电压变化是一个连续变化的模拟量，也就是在0~5V内可以取任意值，我们必须先对这个模拟量进行ADC采集，来测量连续的这些模拟量。A/D 是模拟量到数字量的转换，依靠的是模数转换器(Analog to Digital Converter)，简称ADC。我们的主板已经集成了ADC采集，可以直接使用。

我们的主板默认分辨率为10位，即ADC位数是10位。一个n位的ADC表示这个ADC共有2的n次方个刻度，10位的ADC，输出的是从0～1023一共1024个数字量，也就是2的10次方个数据刻度，每个刻度就是5V/1024≈0.0049V，这也叫分辨率。

ADC：ADC是一种电子集成电路，用于将模拟信号(如电压)转换为由1和0表示的数字信号。我们在主板上的ADC的范围是默认的10位（ADC的位数表示将模拟量转换成数字量后所用的二进制位数），其可存储数字量范围为：0 ~ 2^10即0 ~ 1023。假设它的参考电压是5V，也就是说把参考电压分成1024份，最小分辨率为5V/1024，模拟值的范围对应于ADC值。因此，ADC拥有的比特越多，模拟的分区就越密集，最终转换的精度也就越高。

![img](media/201302.png)

纵坐标数字0 : 0V ~ 5.0/1024 V 范围内的模拟量（横坐标）;

纵坐标数字1 : 5.0/1024 V ~ 2 * 5.0/1024 V 范围内的模拟量（横坐标）;

......

模拟将被相应地划分。换算公式如下：

![img](media/201303.png)

DAC：这一过程的可逆需要DAC，数字到模拟转换器。数字I/O端口可以输出高电平和低电平(0或1)，但不能输出中间电压值，这就是DAC有用的地方。主板上8位精度的DAC可以将VCC(这里是5.0V)分成2^8=256个部分。例如，当数字量为1时，输出电压值为5.0V/256 * 1=0.0195V，当数字量为128时，输出电压值为5.0V/256 * 128=2.5V，DAC的精度越高，输出电压值的精度就越高。

换算公式如下：

![img](media/201304.png)

---

**4. 实验组件**

| ![img](media/KS5016.png) | ![img](media/KE4064.png)  |![img](media/3pin.png)  | ![img](media/USB.jpg) |    
| ------------------------ | ------------------------- | ---------------------------- | ---------------------------- | 
| 主板 x1| 旋转电位器 x1 |3P线(反向) x1 | USB线 x1  |    

---

**5. 模块接线图**

![img](media/201501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**13_Potentiometer**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

滑动电位器手柄时，串口监视器打印出此时电位器的模拟值。

![img](media/IMG_160244.png)

![img](media/201701.png)

---

**8. 代码说明**

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

从指定的模拟引脚读取模拟值。为了兼容性，默认analogRead()分辨率为 10 位。详细了解请参考链接：[https://vimsky.com/examples/usage/arduino-language-functions-analog-io-analogread-ar.html](https://vimsky.com/examples/usage/arduino-language-functions-analog-io-analogread-ar.html) 。这个函数是从指定的模拟引脚PIN_ANALOG_IN读取电位器的模拟信号，模拟信号的范围：0~1023。 

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

将电位器的模拟信号赋值于变量val。

---

### 第14课 检测水量

**1. 项目介绍**

水滴传感器是一个模拟输入模块，也叫雨水、雨量传感器。可用于各种天气状况的监测，检测是否下雨及雨量的大小，转成模拟信号输出，并广泛应用于汽车自动刮水系统和智能天窗系统等。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 1.5mA

最大功率: 0.075W

输出信号: 模拟信号

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

尺寸：32mm x 23.8mm x 9.3mm

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

---

**3. 模块原理图**

![img](media/211301.jpg)

水滴传感器通过电路板上裸露的印刷平行线检测水量的大小。水量越多，就会有更多的导线被联通，随着导电的接触面积增大，雨滴感应区 2 脚输出的电压就会逐步上升。信号端 S 检测到的模拟值就越大。除了可以检测水量的大小，它还可以检测空气中的水蒸气。

---

**4. 实验组件**

| ![img](media/KS5016.png)|![img](media/KE4048.png) |![img](media/3pin.png)       | ![img](media/USB.jpg) |   
| ------------------------ | ------------------------ | ---------------------------- | ---------------------------- |
|主板 x1 | 水滴传感器 x1 | 3P线(反向) x1 | USB线 x1   |     
 

---

**5. 模块接线图**

![img](media/211501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**14_Steam_Sensor**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

![img](media/211701.png)

在水滴传感器的感应区滴几滴水（**小心用水，注意不要滴到感应区以外的其他任何地方，包括主板**），串口监视器打印出此时水滴传感器的模拟值。水量变化，模拟值也会发生变化。水量越多，输出的模拟越大。

![img](media/IMG_160418.png)

![img](media/211702.png)

---

**8. 代码说明**

可以参照第13课的代码说明，这里就不多做介绍了。

---

### 第15课 检测声量

**1. 项目介绍**

声音传感器是可以检测声音大小的。实验中，我们利用这个传感器测试当前环境中的声音对应的模拟值。声音越大，模拟值越大；并在串口监视器上显示测试结果。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 15mA

最大功率: 0.075W

输出信号: 模拟信号

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

尺寸：32mm x 23.8mm x 10.3mm

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

---

**3. 模块原理图**

![img](media/221301.png)

声音传感器主要由一个高感度麦克风元件和LM386音频功率放大器芯片组成。高感度麦克风元件用于检测外界的声音。利用LM386音频功率放大器芯片设计对高感度麦克风检测到的声音进行放大的电路，最大倍数为200倍。使用时我们可以通过旋转传感器上电位器，调节声音的放大倍数。顺时针调节电位器到尽头，放大倍数最大。

---

**4. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4027.png) |![img](media/3pin.png)  | 
| ------------------------ | ------------------------ | ---------------------------- |
|主板 x1 |  声音传感器 x1 | 3P线(反向) x1 |
| ![img](media/USB.jpg) | ![img](media/ABC13.png) |       | 
|USB线 x1 |一字螺丝刀 x1 |      |

---

**5. 模块接线图**

![img](media/221501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**15_MicroPhone**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

![img](media/830a.png)

串口监视器打印出声音传感器接收到的声音对应的模拟值。对准MIC头大声说话，可以看到接收到的声音对应的模拟值变大。（**注意：如果声音变化对应的模拟值没有变化并且一直都是数字0，需要用一字螺丝刀顺时针旋转电位器来调节。**）

![img](media/IMG_160325.png)

![img](media/221701.png)

---

**8. 代码说明**

可以参照第13课的代码说明，这里就不多做介绍了。 

---

### 第16课 检测光照强度

**1. 项目介绍**

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

---

**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. 模块原理图**

![img](media/231301.png)

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

---

**4. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4026.png) |![img](media/3pin.png)       | ![img](media/USB.jpg) |    
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |
| 主板 x1  | 光敏电阻传感器 x1  |3P线(反向) x1 | USB线 x1  |     

---

**5. 模块接线图**

![img](media/231501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**16_Photoresistor**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

串口监视器打印出光敏传感器的模拟值。光照越强，可以看到模拟值越大。

![img](media/IMG_160353.png)

![img](media/231701.png)

---

**8. 代码说明**

可以参照第13课的代码说明，这里就不多做介绍了。

---

### 第17课 检测温度

**1. 项目介绍**

NTC-MF52AT模拟温度传感器的原理与光敏电阻传感器类似，只是感应的器件不同。将传感器信号端接到主板的模拟口，可以读出对应的模拟值，电压值和温度值。我们可以利用模拟值，输出电压值，通过特定公式，计算出当前环境的温度值。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 20mA

最大功率: 0.1W

输出信号: 模拟信号

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

尺寸：32mm x 23.8mm x 7.4mm

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

---

**3. 模块原理图**

![img](media/241301.png)

NTC-MF52AT模拟温度传感器主要由NTC-MF52AT热敏电阻元件组成。NTC-MF52AT热敏电阻元件能够感知周边环境温度的变化，随着温度的升高，热敏电阻的阻值降低，4.7K电阻两端的电压上升，从而引起信号端S的电压变化。

**NTC 热敏电阻温度计算公式：Rt = R * EXP( B * (1/T1-1/T2) ) 。**

其中，T1和T2指的是K度，即开尔文温度。K度=273.15(绝对温度)+摄氏度。

Rt 是热敏电阻在周围温度为T1（当前温度）时的电阻值。

R是热敏电阻在周围温度为T2常温（常温取25℃）时的标称阻值。参考规格书可知我们用的NTC-MF52AT模拟温度传感器在 25℃ 下热敏电阻的零功率电阻值为10KΩ ± 5%（即R=10K），T2=(273.15+25) 。

B值是热敏电阻的重要参数，为材料常数，在25℃下测得。参考规格书可知B值为 3950±1%。

EXP() 是e^()，e的n次方。

通过转换可以得到温度T1与电阻Rt的关系：T1=1 / (ln(Rt/R) /B+1/T2) ，这里可以将ln换算成log，即T1=1/ ( log(Rt/R)/B + 1/T2 ) 。

那么我们唯一需要知道的就是Rt的值。回到上面的原理图，设热敏电阻两端电压为VRt，固定的 R1电阻两端的电压为VR，由电阻分压知识VR/VRt = R1/Rt可以知道：Rt = R1 * (5.0-VR)/VR 。而我们实际得到的VR是转换后的模拟值，需要转换成电压值，即VR = AnalogValue / 1023 * 5.0。

**注意**：计算出来的温度是开尔文温度，因此需要减去K值，对应的摄氏温度 t = T1 - 273.15，同时加上0.5的误差矫正。

---

**4. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4025.png)  | ![img](media/3pin.png)       | ![img](media/USB.jpg) |    
| ------------------------ | --------------------------- | ---------------------------- |---------------------------- |
| 主板 x1| NTC-MF52AT模拟温度传感器 x1 | 3P线(反向) x1 | USB线 x1   |  
 
---

**5. 模块接线图**

![img](media/241501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**17_Temperature_Sensor**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

串口监视器打印出模拟温度传感器(热敏传感器)当前所处环境下的模拟值、电压值和温度值。

![img](media/IMG_161346.png)

![img](media/241701.png)

---

**8. 代码说明**

可以参照第13课的代码说明，这里就不多做介绍了。                 

---

### 第18课 测压力大小

**1. 项目介绍**

薄膜压力传感器是基于新型纳米压敏材料辅以舒适杨式模量的超薄薄膜衬底一次性贴片而成的，兼具防水和压敏双重功能。

通过采集模块上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/251301.png)

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

---

**4. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4069.png) |![img](media/3pin.png)    | ![img](media/USB.jpg) |      
| ------------------------ | ------------------------ | ---------------------------- | ---------------------------- |
|主板 x1   | 薄膜压力传感器 x1  |3P线(反向) x1 | USB线 x1  | 
   
---

**5. 模块接线图**

![img](media/251501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**18_Film_Pressure_Sensor**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**


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


参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。为了使实验数据最精准，请将薄膜压力传感器尽量平放。

串口监视器打印出薄膜压力传感器的模拟值。用手按压薄膜时，随着压力的增大，可以看到模拟值逐渐变小。

![img](media/IMG_160507.png)

![img](media/251701.png)

---

**8. 代码说明**

可以参照第13课的代码说明，这里就不多做介绍了。


---

### 第19课 火焰传感器

**1. 项目介绍**

火焰传感器对火焰光谱特别灵敏，且灵敏度可调。性能稳定，是救火机器人的必备部件。火焰传感器上有一个远红外火焰探头，起着非常重要的作用，它可以用作机器人的眼睛来寻找火源或足球。利用它可以制作灭火机器人、足球机器人等。

该传感器有两个信号输出端，分别可输出数字信号与模拟信号。实验中，我们分别读取模块传感器数字信号与模拟信号，将测试结果在串口监视器上显示。

---

**2. 模块参数**

工作电压: DC 3.3V~5V

工作电流: 1.2mA

最大功率: 0.006W

输出信号：模拟信号和数字信号

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

尺寸：32mm x 23.8mm x 9.2mm

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

---

**3. 模块原理图**

![](media/261301.png)

红外火焰传感器能够探测到波长在700纳米～1000纳米范围内的红外光，探测角度为60，其中红外光波长在880纳米附近时，其灵敏度达到最大。从电路原理图我们可以看到，上电后红色LED2先点亮，红色LED1处于熄灭状态，检测到火焰时，数字信号端D0输出低电平，红色LED1将点亮。红外火焰探头将外界红外光的强弱变化转化为电流的变化，通过A/D转换器反映为0～255范围内数值的变化。外界红外光越强，数值越小；红外光越弱，数值越大。

---

**4. 实验组件**

| ![img](media/KS5016.png)   |![img](media/KE4020.png) |![img](media/4pin.png)  |
| ------------------------ | ------------------------ | ---------------------------- |
| 主板 x1   |   火焰传感器 x1 | 4P线(反向) x1 | 
| ![img](media/USB.jpg) | ![img](media/ABC13.png) |    |
| USB线 x1    |一字螺丝刀 x1  |    |

---

**5. 模块接线图**

![img](media/261501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**19_Flame_Sensor**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。此时火焰传感器上的红色LED2点亮。用一字螺丝刀旋转火焰传感器上的电位器，微调使传感器上的红色LED1灯介于亮与不亮之间的**不亮**状态。

![](media/261701.png)

打开串口监视器，设置波特率为 **<u>9600</u>**。串口监视器打印出火焰传感器的D0值“1”和字符串“All going well”。当传感器检测到火焰时，红色LED1点亮，在串口监视器中可以看到D0值由“1”变为“0”，字符串“All going well”变为“on fire!”，还打印出A0值，同时传感器检测到的火焰越大，A0值反而越小。

![](media/IMG_160714.png)

![](media/261702.png)

---

**8. 代码说明**

可以参照第04课和第13课的代码说明，这里就不多做介绍了。

---

### 第20课 摇杆模块

**1. 项目介绍**

你看过游戏手柄吗？游戏手柄上有按键，还有摇杆。摇杆是什么工作原理呢？在这个套件中，就有一摇杆模块，它的主要元件是PS2手柄摇杆。控制时，我们需要将模块的X引脚和Y引脚连接至单片机的模拟口。B引脚连接至单片机数字口，V引脚接至单片机电源输出端（3.3-5V），G引脚接单片机GND。通过读取两个模拟值和一个数字口的高低电平情况，可以判断模块上摇杆的工作状态。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 12mA

最大功率: 0.06W

输出信号: 信号端X、Y模拟电压输出(模拟信号)，信号端B是数字电平输出(数字信号) 

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

尺寸：47.6mm x 23.8mm x 34.5mm

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

---

**3. 模块原理图**

![img](media/301301.png)

其实摇杆模块的原理非常简单，内部相当于两个可调电位器（左右和上下）和一个按键。按键没有按下时被R1下拉为低电平，按下时接通VCC即为高电平，与我们前面学习过的按键模块的电平值是相反的。摇动摇杆时内部的电位器就会根据摇杆的摇动调节，从而输出不同的电压，可以读取到模拟值。

---

**4. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4050.png) |![img](media/5pin.png)       | ![img](media/USB.jpg) |     
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |
| 主板 x1      |   摇杆模块 x1 | 5P线(反向) x1 | USB线 x1  |      

---

**5. 模块接线图**

![img](media/301501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**20_Joystick**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

串口监视器窗口将打印出当前摇杆X轴(X引脚)和Y轴(Y引脚)对应的模拟值以及Z轴(B引脚)对应的数字值，移动摇杆或按下它将改变串口监视器中的模拟值和数字值。当按下摇杆时，Button值为1；未按下摇杆时，Button值为0。X值从左到右由0增长到1023。Y值从下到上由0增长到1023。

![img](media/301701.png)

![img](media/IMG_162512.png)

在X轴上移动摇杆，使数据从小到大。

![img](media/301702.png)

在Y轴上移动摇杆，使数据从小到大。

![img](media/301703.png)

按下摇杆。

![img](media/301704.png)

---

**8. 代码说明**

可以参照第04课和第13课的代码说明，这里就不多做介绍了。

---

### 第21课 SK6812 RGB

**1. 项目介绍**

第02课学习了交通灯模块，利用高低电平对模块的3个LED进行点亮和熄灭实现交通灯的效果。我们这个套件中，还有一个SK6812 RGB模块，它是一个集控制电路与发光电路于一体的智能外控LED光源。每个LED原件其外型与一个5050LED灯珠相同，每个元件即为一个像素点，我们这个模块上有四个灯珠即四个像素点。

---

**2. 模块参数**

工作电压: DC 3.3V~5V

工作电流: 140mA

最大功率: 0.7W

光源: SMD 5050 RGB

IC型号: 4颗/WS2811

灰度等级: 256级

发光角度: 180°

发光颜色: 可以通过控制器调为白，红，黄，蓝，绿等

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

尺寸：32mm x 23.8mm x 7.4mm

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

---

**3. 模块原理图**

![img](media/321301.png)

从原理图中我们可以看出，这四个像素点灯珠串联，其实不论多少个灯珠串联，我们都可以用一个引脚控制其中任意一个灯让它显示任意一种颜色。每个LED原件其外型与一个5050LED灯珠相同，每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路，还包含有高精度的内部振荡器和12V高压可编程定电流控制部分，有效保证了像素点光的颜色高度一致。

数据协议采用单线归零码的通讯方式，像素点在上电复位以后，S端接受从控制器传输过来的数据，首先送过来的24bit数据被第一个像素点提取后，送到像素点内部的数据锁存器。LED具有低电压驱动，环保节能，亮度高，散射角度大，一致性好，超低功率，超长寿命等优点。

---

**4. 实验组件**

| ![img](media/KS5016.png)   | ![img](media/KE4009.png) |![img](media/3pin.png)   | ![img](media/USB.jpg) |    
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |
|主板 x1   |  6812 RGB模块 x1 | 3P线(反向) x1 | USB线 x1 |   
   
---

**5. 模块接线图**

![img](media/321501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**21_SK6812_RGB**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，我们可以看到模块上的4个RGB LED亮出对应的颜色灯的效果。

![img](media/IMG_162353.png)

![img](media/IMG_162356.png)

![img](media/IMG_353162356.png)

......

---

**8. 代码说明**

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

设置SK6812 RGB的管脚，灯号和RGB灯珠点亮的颜色值。如果R、G、B值都为0，则熄灭所有的灯珠。

---

### 第22课 旋转编码器计数

**1. 项目介绍**

旋转编码器模块，也叫开关编码器、旋转编码器。此款编码器有20脉冲20定位点、15脉冲30定位点两种。编码器主要用于汽车电子、多媒体音响、仪器仪表、家用电器、智能家居、计算机周边、医疗器械等领域。主要用于频率调节、亮度调节、温度调节、音量调节的参数控制等。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 2mA

最大功率: 0.01W

控制信号: 数字信号

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

尺寸：32mm x 23.8mm x 30.6mm

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

---

**3. 模块原理图**

![img](media/331301.png)

增量式编码器是将位移转换成周期性的电信号，再把这个电信号转变成计数脉冲，用脉冲的个数表明位移的巨细。旋转编码器模块采用的是20脉冲旋转编码器元件，它可以通过旋转计数正方向和反方向转动过程中输出脉冲的次数，这种转动计数是没有限制的，复位到初始状态，即从0开始计数。

旋转编码器提供两种交互方式：

- **按钮**   单击旋钮以按下按钮。按下时，按钮将 SW 引脚与 GND 引脚连接，也就是SW引脚的电平为低电平。

- **旋转**   每次旋转旋钮时，会在 DT 和 CLK 引脚上产生一个 LOW 信号。
  
    - 顺时针旋转会导致 CLK 引脚首先变低，然后 DT 引脚也变低。
    
    - 逆时针旋转会导致 DT 引脚先变低，然后 CLK 引脚变低。
    
    两个引脚将在几毫秒内返回高电平。如下图所示：
    
    ![img](media/331302.png)

---

**4. 实验组件**

| ![img](media/KS5016.png)   |![img](media/KE4049.png) |![img](media/5pin.png)  | ![img](media/USB.jpg) |     
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |
|主板 x1|   旋转编码器模块 x1  |5P线(反向) x1 | USB线 x1  |     

---

**5. 模块接线图**

![img](media/331501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**22_Encoder**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

顺时针旋转编码器，串口监视器打印出来的数据 **<u>增大</u>**；逆时针旋转编码器，串口监视器打印出来的数据 **<u>减小</u>**；按下编码器中间按键，串口监视器打印 “**<u>Button pressed!</u>**”。

![img](media/IMG_164915.png)

![img](media/331701.png)

---

**8. 代码说明**

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

初始化编码器的 CLK 和 DT 引脚所连接的 Arduino 引脚。

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

设置旋转编码器的位置处于0处。

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

定义一些变量Button和btn_state.

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

向左（即：顺时针）旋转编码器，数字逐渐增加1，并换行串口打印出。

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

向右（即：逆时针）旋转编码器，数字逐渐减少1，并换行串口打印出。

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

按下旋转编码器按键，读取按钮开关并对其进行去抖。我们首先读取当前按钮状态，当它变为低电平时，我们等待 10 毫秒，让按钮去抖。串口打印“Button pressed!”。


---

### 第23课 舵机转动

**1. 项目介绍**

之前，我们学习了如何控制电机的速度和旋转方向。在本实验中，我们将学习伺服（舵机）系统，它是一种旋转驱动器类型的电机，可以控制旋转到特定的角度。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

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

尺寸：32.25mm x 12.25mm x 30.42mm

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

---

**3. 模块原理图**

舵机密封包装，由直流电机，一套提供扭矩的变速齿轮组，可调电位器和电子控制板组成。

![img](media/341101.png)

多数舵机只能旋转180度，舵机输出的转矩比简单直流电动机更高。被广泛用于控制模型汽车、模型飞机、机器人等。舵机一般有三线，通常连接到公或母3拼线。其中两线用于电源：正极（2-正极线，红线)，负极（3-负极线，棕线），以及一个信号线（1-信号线，橙线）。如图，套件中的舵机：

![img](media/zg.png)

我们使用PWM信号驱动舵机，该信号占空比一定，频率为50Hz。PWM单个周期高电平持续时间为0.5ms ~ 2.5ms，与舵机角度的0° ~ 180°线性对应。部分对应值如下：

![img](media/zgxy.png)

改变舵机信号值，舵机将旋转到指定角度。

<span style="color: rgb(255, 76, 65);">注意:</span> 由于舵机品牌不同，对于同一信号，不同品牌的舵机旋转的角度也会有所不同。

---

**4. 实验组件**

| ![img](media/KS5016.png) |![](media/KE4022.png)   | ![img](media/USB.jpg) |
| ------------------------ | ------------------- | --------------------- | 
| 主板 x1 | 舵机驱动模块 x1|USB线 x1  |
|![](media/9G.png)   |![img](media/4pin.png) |     |
| 舵机 x1 | 4P线(反向) x1|           |

---

**5. 实验①**

（1）实验接线图

![img](media/341501.png)

（2）实验代码

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**23.1_Servo**"。

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

（3）实验结果

代码上传成功后，拔下USB线断电，按照接线图正确接好舵机，再用USB线连接到计算机上电。上电后，舵机由0度转到90度，停顿1秒；再转到180度，停顿1秒；然后回到0度，停顿1秒，循环转动。

![img](media/IMG_161759.png)

![img](media/IMG_161711.png)

![img](media/IMG_161814.png)

---

**6. 实验②**

（1）实验接线图

![img](media/341501.png)

（2）实验代码

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**23.2_Servo**"。

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

（3）实验结果

代码上传成功后，拔下USB线断电。按照接线图正确接好舵机，再用USB线连接到计算机上电，上电后，舵机在0度 ~ 180度之间来回转动，每15ms转动一度。

![img](media/IMG_161759.png)

![img](media/IMG_161711.png)

![img](media/IMG_161814.png)

---

**7. 代码说明**

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

Arduino专门为了主板推出的servo库，用来操作舵机。创建一个舵机对象来控制舵机，设置控制舵机的引脚和转动的角度。

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

向舵机写入一个数值，来直接控制舵机的轴，角度控制。舵机转动到posVal角度值，舵机每隔15毫秒转动一次，角度逐渐增加1°。

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

向舵机写入一个数值，来直接控制舵机的轴，角度控制。舵机转动到posVal角度值，舵机每隔15毫秒转动一次，角度逐渐减少1°。

---

### 第24课 超声波测距

**1. 项目介绍**

蝙蝠和某些海洋动物都能够利用高频率的声音进行回声定位或信息交流。它们能通过口腔或鼻腔把从喉部产生的超声波发射出去，利用折回的声波来定向，并判定附近物体的位置、大小以及是否在移动。超声波是一种频率高于20000赫兹的声波，它的方向性好，穿透能力强，易于获得较集中的声能，在水中传播距离远，可用于测距、测速、清洗、焊接、碎石、杀菌消毒等。在医学、军事、工业、农业上有很多的应用。超声波因其频率下限大于人的听觉上限而得名。科学家们将每秒钟振动的次数称为声音的频率，它的单位是赫兹(Hz)。

在这个套件中，有一个HC-SR04超声波传感器，它可以发送出一种频率很高的人类无法听到的超声波信号，这些超声波的信号碰到障碍物，就会立刻反射回来。在接收到返回的信息之后，根据发射信号和接收信号的时间差，计算出传感器和障碍物的详细距离，和蝙蝠飞行的原理一样。

---

**2. 模块参数**

超声波传感器工作电压：DC 5V 

超声波传感器工作电流：15mA

超声波传感器工作频率：40Hz

超声波传感器射程范围：2cm~4m

超声波传感器测量角度：<= 15度

超声波传感器输入触发信号：10 uS 的TTL脉冲

超声波传感器输出回响信号：输出TTL电平信号与射程成正比

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

超声波传感器尺寸：45.5mm x 26.7mm x 17.6mm

超声波转接板模块尺寸：32mm x 23.8mm x 18.5mm

超声波转接板模块接口：2.54mm间距，4pin防反接口

---

**3. 模块原理图**

最常用的超声测距的方法是回声探测法。当有脉冲电压触发时（单片机给Trig引脚发送高电平），超声波发射器探头里的晶片就会振动，继而产生超声波。在超声波发射时刻的同时计数器开始计时，超声波在空气中传播，途中碰到障碍物面阻挡就立即反射回来（Echo引脚发送高电平信号给单片机），超声波接收器收到反射回的超声波就立即停止计时。

超声波是一种声波，其声速V与温度有关。一般情况下超声波在空气中的传播速度为340m/s，根据计时器记录的时间t，就可以计算出超声波探头发射点距障碍物面的距离s，即：s=340t/2 。

![img](media/351301.png)

HC-SR04超声波测距模块可提供范围为2厘米至4米的非接触式距离感测功能，测距精度可达高到3mm。超声波传感器包括超声波发射器、超声波接收器与控制电路。其基本工作原理：

(1)采用IO口Trig触发测距，给至少10us的高电平信号;

(2)模块自动发送8个40khz的方波，自动检测是否有信号返回；

(3)有信号返回，通过IO口Echo输出一个高电平，高电平持续的时间就是超声波从发射到返回的时间。

![img](media/351302.png)

---

**4. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4039.png) |  ![img](media/USB.jpg) |
| ------------------------ | ------------------------ | ---------------------------- |
|主板 x1  | 超声波转接模块 x1 |  USB线 x1|
![img](media/ultrasonic.png) | ![img](media/4pin.png) |     |
|HC-SR04 超声波传感器 x1 | 4P线(反向) x1 |    |

---

**5. 模块接线图**

![img](media/351501.png)

![img](media/351502.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**24_Ultrasonic**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

放置障碍物在超声波传感器探头前感应，串口监视器窗口打印出超声波传感器与障碍物之间的距离值。

![img](media/IMG_165053.png)

![img](media/351701.png)

---

**8. 代码说明**

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

这是用于向指定引脚测量距离的超声波传感器指令方块，距离单位为cm。

---

### 第25课 红外遥控与接收

**1. 项目介绍**

红外线遥控是目前使用最广泛的一种通信和遥控手段。因红外线遥控装置具有体积小、功耗低、功能强、成本低等特点，录音机、音响设备、空凋机以及玩具等其它小型电器装置上纷纷采用红外线遥控。红外遥控的发射电路是采用红外发光二极管发出经过调制的红外光波；红外接收电路由红外接收二极管、三极管或硅光电池组成，它们将红外发射器发射的红外光转换为相应的电信号，再送到后置放大器。

红外接收模块选择的是VS1838B红外接收传感器元件，该元件是集接收、放大、解调一体的器件，内部IC就已经完成了解调，输出的就是数字信号。它可接收标准38KHz调制的遥控器信号。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 1.5mA

最大功率: 0.25 W

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

控制信号: 数字信号

尺寸：32 x 23.8 x 10.8 mm

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

---

**3. 模块原理图**

![img](media/361301.png)

红外遥控系统的主要部分为调制、发射和接收。红外遥控是以调制的方式发射数据，就是把数据和一定频率的载波进行“与”操作，这样既可以提高发射效率又可以降低电源功耗。调制载波频率一般在30khz到60khz之间，大多数使用的是38kHz，占空比1/3的方波。红外接收的信号端加上了4.7K的上拉电阻R3，工作时，首先等待检测低电平，接收到信号后，信号端立即由高电平转为低电平。

---

**4. 实验组件**

| ![img](media/KS5016.png)   | ![img](media/KE4036.png) | ![img](media/USB.jpg) |  
| ------------------------ | ------------------------ | -------------------------------- |
| 主板 x1   | 红外接收模块 x1  | USB线 x1  |
|![img](media/remotecontrol.png) | ![img](media/3pin.png) |    | 
| Keyes 遥控器 x1  | 3P线(反向) x1 |    |

---

**5. 模块接线图**

![img](media/361501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**25_IR_Receiver**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

找到红外遥控器，拔出绝缘片。对准红外接收模块的红外接收传感器的接收头，按下遥控器任意按键，接收到信号后，串口监视器窗口打印出当前接收到的按键值，同时，红外接收传感器上的LED会闪烁。

![img](media/IMG_164728.png)

![img](media/361704.png)


Keyes 遥控器上每一个按键都对应着一个按键值，如下图所示。

![img](media/361703.png)

---

**8. 代码说明**

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

用于向指定引脚初始化红外接收，接收到红外遥控的数据，读取红外接收数据的指令方块，刷新红外接收数据，并接收下一个值的指令方块。

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

红外接收的数据以十六进制自动换行打印出来。

---

### 第26课 检测温湿度

**1. 项目介绍**

XHT11温湿度传感器是一款低价的入门级温湿度传感器，它主要由一个电阻式感湿元件和一个NTC测温元件组成。XHT11为4针单排引脚封装，采用单线制串行接口，只需加适当的上拉电阻，信号传输距离可达20米以上，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. 模块原理图**

![img](media/381301.png)

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

**数据格式：** 8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和。

**8位校验和：** 8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据"相加所得结果的末8位。

---

**4. 实验组件**

| ![img](media/KS5016.png)   |![img](media/KE4033.png)  |![img](media/3pin.png) | ![img](media/USB.jpg) |      
| ------------------------ | -------------------------- | ---------------------------- |---------------------------- |
| 主板 x1  | XHT11温湿度传感器 x1 | 3P线(反向) x1 | USB线 x1 |   
   
---

**5. 模块接线图**

![img](media/381501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**26_XHT11**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

串口监视器打印出XHT11温湿度传感器检测到当前环境的温湿度值。

![](media/IMG_161449.png)

![](media/381701.png)

---

**8. 代码说明**

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

初始化温湿度传感器的管脚和型号，这里型号选用dht11.

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

读取温度或湿度。

---

### 第27课 四位数码管显示数字

**1. 项目介绍**

TM1650四位数码管模块选用的是0.36 英寸红色共阴4位数码管，其驱动芯片是TM1650。TM1650是一种带键盘扫描接口的LED驱动控制专用电路的芯片。内部集成有MCU输入输出控制数字接口、数据锁存器、LED 驱动、键盘扫描等电路。TM1650性能稳定、质量可靠、抗干扰能力强，可适用于24小时长期连续工作的应用场合。TM1650采用两线串行传输协议通讯（注意：该数据传输协议不是标准的I2C协议）。该芯片只需要通过两个引脚与MCU通讯就可以完成数码管的驱动，可以节省MCU引脚资源。

实验中使用TM1650四位数码管模块时，我们只需要2根信号线即可使单片机控制4位数码管，大大节约了控制板IO口资源。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 42mA

最大功率: 0.21W

数码管显示颜色: 红色

LED极性: 共阴

通讯方式：2线高速串行接口（CLK,DAT）

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

尺寸：47.6mm x 23.8mm x 10.6mm

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

---

**3. 模块原理图**

![](media/411301.png)

TM1650与MCU之间的通讯采用2线高速串行接口（CLK,DAT），这两个连线分别是数据线DAT和同步时钟线CLK。其中DAT为双向数据传输线，TM1650既用该线从MCU接收数据，也用该线向MCU发送数据。

实验中我们使用封装好的库函数。如果大家有兴趣也可以接着往下学习了解 3.1 TM1650通讯时序格式和 3.2 指令集说明，然后再去了解底层的库函数是如何实现的。

3.1 TM1650通讯时序格式

TM1650采用下图1 中2线串行传输协议通讯：

![](media/411302.png)

（1）开始信号（START）/结束信号(STOP)

开始信号：保持 CLK 为“1”电平，DAT 从“1”跳“0”，认为是开始信号，如上图1的 A 段；

结束信号：保持 CLK 为“1”电平，DAT 从“0”跳“1”，认为是结束信号，如上图1的 E 段；

（2）ACK 信号

如果本次通讯正常，芯片在串行通讯的第 8 个时钟下降沿后，TM1650 主动把 DAT 拉低，直到 CLK 检测到上升沿，DAT 释放为输入状态（对芯片而言）,如上图1的 D 段。

（3）写“1”和写“0”

写“1”：保持 DAT 为“1”电平，CLK 从“0”跳到“1”,再从“1”跳到“0”，则认为是写入“1” ，如上图 1的 B 段。

写“0”：保持 DAT 为“0”电平，CLK 从“0”跳到“1”,再从“1”跳到“0”，则认为是写入“0” ，如上图 1的 C 段。

（4）一个字节（8 位）数据传输格式

![](media/411303.png)

一个字节数据的传输格式如图上 2，数据发送时 MSB 在前，LSB 在后，即高位先进。微处理器的数据通过 2 线 串行接口和 TM1650 通信，当 CLK 是高电平时，DAT 上的信号必须保持不变；只有 CLK 上的时钟信号为低电平时， DAT 上的信号才能改变。数据输入的开始条件是 CLK 为高电平时，DAT 由高变低；结束条件是 CLK 为高时，DAT 由低电平变为高电平。 

（5）写显示操作

![](media/411304.png)

ADDRESS：显示地址（68H、6AH、6CH、6EH）； 

DATA：显示数据。

（6）完整操作时序

![](media/411305.png)

command1：系统命令 48H； 

command2：系统参数设置；

ADDRESS：显示地址（68H、6AH、6CH、6EH）；

DATA：显示数据。

备注：

1.设置系统参数和写入显存数据是两个独立的过程，它们之间的顺序不影响实际应用； 

2.每次输入系统命令（48H）和系统参数设置命令都会改变系统参数，请特别注意待机指令操作。

3.2 指令集说明

（1）数据命令设置 

![](media/411306.png)

<span style="color: rgb(255, 76, 65);">注意：</span>使用的指令是 16 进制 H，输入数据和读取数据都是从高位开始。

所以在代码中我们数据命令设置为 0x48，使用TM1650点亮数码管的功能，而不使用按键扫描的功能。

（2）显示命令设置

![](media/411307.png)

<span style="color: rgb(255, 76, 65);">注意：</span>在发送上述系统显示命令前需要先输入系统命令48H,如48H+11H=1级亮度开屏显示。

B[7:0]：这里实际是一个字节数据，只是不同位部分代表不同功能。

B[6:4]：设置数码管亮度。注意：000 最亮。

B[3]：设置是否显示小数点。

B[0]：设置数码管的开屏、关屏。

（3）显存地址

![](media/411308.png)

如果要显示小数点，则必须先需要将段模式设置为 8 段输出。

![](media/411309.png)

---

**4. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4060.png)| ![img](media/4pin.png)       | ![img](media/USB.jpg) |     
| ------------------------ | ----------------------------- | ---------------------------- |---------------------------- |
|主板 x1   |TM1650四位数码管模块 x1  | 4P线(反向) x1 | USB线 x1| 
  
---

**5. 模块接线图**

![img](media/411501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**27_Four_Digita_Tube**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电。按照接线图正确接好模块后再用USB线连接到计算机上电。4位数码管显示数字，从0000开始，每隔1秒逐渐到9999。

![img](media/IMG_095436.png)

---

**8. 代码说明**

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

初始化四位数码管，清除原来显示的内容。

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

四位数码管显示字符串。

---

### 第28课 点阵显示图案

**1. 项目介绍**

点阵，多个LED组成的阵列，它们的集合称为“阵”，其中单个单元称为“点”。8 X 8点阵共由64个发光二极管组成，且每个发光二极管是放置在行线和列线的交叉点上。

第02课我们学习了一个IO口控制一个led，这节课我们来学习用更少的IO口控制更多的led。

---

**2. 模块参数**

工作电压: DC 3.3V~5V 

工作电流: 190mA

最大功率: 0.95W

通讯方式：I2C通讯

I2C通信地址：0X70

点阵屏显示颜色：蓝色

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

尺寸：32mm x 23.8mm x 9.3mm

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

---

**3. 模块原理图**

![img](media/421301.png)

如原理图所示，如果想要点亮第一行第一列的LED灯，只需要将C1置高电平、R1置低电平就可以了。如果我们想让第一行led全部点亮，只需要将R1置为低电平，C1~C8全部置为高电平就可以了。原理非常简单，但是这样设置的话我们总共需要用到16个IO口，非常浪费单片机资源。为了节省IO口不浪费单片机资源，我们特别设计了这个HT16K33_8X8点阵模块，利用HT16K33芯片驱动1个8*8点阵，只需要利用单片机的I2C通信端口就能控制点阵的64个发光二极管。

我们这款Keyes HT16K33_8X8点阵模块已经固定了通信地址，地址为0x70。

---

**4. 实验组件**

| ![img](media/KS5016.png)    |![img](media/KE4066.png) | ![img](media/4pin.png) | ![img](media/USB.jpg) |     
| ------------------------ | ---------------------------- | ---------------------------- |---------------------------- |
| 主板 x1   | HT16K33_8X8点阵模块 x1 |4P线(反向) x1 | USB线 x1 | 


---

**5. 模块接线图**

![img](media/421501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**28_8×8_Dot_Matrix**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电。按照接线图正确接好模块后再用USB线连接到计算机上电。HT16K33_8X8点阵模块的（0，0）处LED闪烁，（7，7）处LED闪烁，显示“十”字图案和“❤”图案。

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

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

......

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

---

**7. 代码说明**

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

初始化8*8点阵。

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

熄灭8*8点阵上所有的LED

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

设置8*8点阵上某个LED点亮或熄灭。

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

8*8点阵显示字符。

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

设置点亮8 * 8点阵上LED灯，打“√”表示该LED点亮，未打“√”表示该LED灯熄灭。这个方块可以设置8 * 8点阵显示的图案。

---

### 第29课 TFT 屏显示

**1. 项目介绍**

在这个套件中，有一款完全兼容Arduino IDE开发环境的主板，主板上集成了一块1.8寸TFT显示屏。TFT显示屏的分辨率为128 * RGB * 160，显示方向可以调整，横屏竖屏均可。TFT显示屏的驱动IC为ST7735S，采用SPI通信方式，具有显示效果好。

---

**2. 模块参数**

材料：TFT LCD

工作电压：3.3V~5V

TFT可视角度：120度

像素个数：128列 × 160行

分辨率：128 ×（RGB）× 160

通信方式：SPI通信

驱动芯片：ST7735S

总功耗：0.11W

工作温度：-10℃~+60℃

显示类型：a-Si TFT

背光：2片LED，平行

视角：12H

尺寸：1.8寸

---

**3. 模块原理图**

![img](media/431301.png)

---

**4. 实验组件**

| ![img](media/KS5016.png) | ![img](media/USB.jpg) |  
| ------------------------ | --------------------------- |
| 主板 x1| USB线 x1 |
      
---

**5. 模块接线图**

![img](media/011301.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**29_TFT_Screen**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电。按照接线图正确接好模块后再用USB线连接到计算机上电，TFT显示屏依次显示如下：

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

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

......

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

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

---

**8. 实验说明**

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

初始化TFT屏管脚和标签。

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

设置TFT屏背景色。

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

设置TFT屏在起点x 起点y 显示文本(内容)颜色。

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

设置TFT屏显示英文字体，字号和字形。

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

设置TFT屏在某两个位置之间画直线。

---

### 第30课 RFID刷卡

**1. 项目介绍**

RFID刷卡模块上内置的RFIDRFID-RC522射频模块采用的是Philips MFRC522原装芯片设计的读卡电路，使用方便，成本低廉，适用于设备开发、读卡器开发等高级应用的用户，也适用于需要进行射频卡终端设计/生产的用户。本模块可直接装入各种读卡器模具，通过IIC接口简单的2条线就可以直接与用户任何CPU主板或单片机相连接通信。

实验中用刷卡模块读取到的数据是4个16进制数，我们把这四个16进制数串以字符串的形式打印出来。例如，如果读取到的IC卡的数据为：0xED、0xF7、0x94、0x5A，则串口监视器显示出的信息字符串就是ED F7 94 5A；如果读取的钥匙扣的数据为：0x4C、0x09、0x6B、0x6E，则串口监视器打印出来的信息字符串就是4C 09 6B 6E。有时候看到的不是两位数，是因为前面有个0省略了，如0a它显示的就是a。不同的IC卡和钥匙扣，其数据是不一样的。

---

**2. 模块参数**

工作电压: DC 3.3V~5V

工作电流: 13~100mA /DC 5V 

空闲电流: 10~13mA /DC 5V

休眠电流: < 80uA

峰值电流: < 100mA

工作频率: 13.56MHz

最大功率: 0.5W

支持的卡类型：mifare1 S50、mifare1 S70、mifare UltraLight、mifare Pro、mifare Desfire

数据传输速率：最大10Mbit/s

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

尺寸：47.6mm x 23.8mm x 9.3mm

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

---

**3. 模块原理图**

![](media/441301.png)

RFID（Radio Frequency Identification）：无线射频识别，读卡器由频射模块及高平磁场组成。Tag应答器为待感应设备，此设备不包含电池。他只包含微型集成电路芯片及存储数据的介质以及接收和发送信号的天线。读取tag中的数据，首先要放到读卡器的读取范围内。读卡器会产生一个磁场，因为磁能生电由楞次定律，RFID Tag就会供电，从而激活设备。

![](media/441302.png)

---

**4. 实验组件**

| ![img](media/KS5016.png)   |![img](media/KE4065.png) |![](media/WPS12.png)    |
| ------------------------ | ------------------------ | ---------------------------- |
|主板 x1  | RFID刷卡模块 x1    |IC卡/钥匙扣 x1| 
| ![img](media/4pin.png)| ![img](media/USB.jpg)  |     | 
| 4P线(反向) x1 | USB线 x1   |       |

---

**5. 模块接线图**

![img](media/441501.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**30_RFID_RC522**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电。按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。用IC卡和钥匙扣靠近RFID模块，串口监视器打印出RFID刷卡模块读取到的数据信息。

![img](media/IMG_101921.png)

![img](media/IMG_101930.png)

![img](media/441701.png)

**注意：不同的IC卡和钥匙扣，其数据是不一样的。**<span style="background:#ff0;color:#000">请记录下你的IC卡和钥匙扣的UID码，后面的课程第44课会用到。</span>

若代码上传成功后串口监视器不打印数据信息，尝试按一下RESET键。

![img](media/RESET.jpg)

---

**8. 代码说明**

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

对进行MFRC522和IIC初始化。 

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

读取IC卡和蓝色钥匙扣的值。

---

### 第31课 测大气压，海拔和温度

**1. 项目介绍**

BMP388气压传感器是一款新型高性能气压MEMS传感器，非常适用于消费电子无人机、可穿戴设备、智能家居和其他应用中的高度跟踪。BMP388气压传感器是可以检测温度和气压的传感器，是专为移动应用设计的绝对气压传感器。广泛应用于温度检测、大气压强检测、海拔高度检测、室内导航(楼层检测、电梯检测)、户外导航、休闲和运动的应用程序等。

---

**2. 模块参数**

工作电压: DC 3.3V~5V

工作电流：30uA

最大功率：0.000015W

气压测量范围: 300hPa~1100hPa (elevation +9000~-500m)

气压测量误差: ±1hPa (±1m)

气压测量精度: 0.18Pa

温度测量范围: 0℃~ 65℃

温度测量误差 ±0.5℃，maximum ±1℃

温度测量精度: 0.1℃

通讯方式: I2C通信

尺寸 ：31.6mm x 23.8mm x 9.3mm

接口：IIC接口和2.54mm间距，5pin防反接口 (INT引脚可不接)

---

**3. 模块原理图**

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

BMP180气压传感器的工作原理是基于压电效应和微机械结构（MEMS）。

BMP180内部包含一个微机械结构（MEMS）传感器（压阻传感器）、一个高精度模拟-数字转换芯片（ADC）和一个带E2PROM和串行I2C接口的控制单元。在传感器内部，有一个薄膜弹性体受到外界压力的作用而产生形变，这种形变会导致传感器内部气体压力变化。当外部气压发生变化时，传感器内的气压也随之改变，压力变化引起薄膜弹性体的位移量发生微小改变，微机械结构传感器将这个微小的形变转换成输出电信号。然后，经过PLL电路、ADC等处理电路进行放大和转换，最终通过I2C接口向外输出数字信号，提供给上层系统进行数据处理和分析。

此外，BMP180还包含了一个温度传感器，可以测量传感器本身的温度，并利用温度补偿技术来消除温度对气压测量带来的误差，从而提高测量精度和稳定性。在其带有的E2PROM里存储了176位单独校准数据，用于补偿传感器的偏移等其他参数。

---

**4. 实验组件**

| ![img](media/KS5016.png)  | ![img](media/KE4040.png) |![img](media/4pin-5pin.png) | ![img](media/USB.jpg)    |
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |
|主板 x1   | BMP388气压传感器 x1 | 4P转5P线(反向) x1 |USB线 x1 |  
                
---

**5. 模块接线图**

![img](media/41_bb.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**31_BMP388_Barometric_Pressure**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电。按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**，串口监视器显示大气压、海拔和温度。

![img](media/IMG_105029.png)

![img](media/B15.png)

若代码上传成功后串口监视器不打印数据信息，尝试按一下RESET键。

![img](media/RESET.jpg)

---

**8. 代码说明**

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

初始化BMP388。

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

检测并读取温度值，海拔高度值，大气压强值。

---


### 第32课 检测手势方向

**1. 项目介绍**

PAJ7620U2手势识别传感器是可以识别9种不同方向的手势，包括上、下、左、右、前、后、顺时针、逆时针、摇摆。手势识别模块使用i2c接口，使用相应arduino库函数即可编程控制，手势识别模块返回的信号可用作为机器人接收的控制信号，从而实现对机器人的控制。内置的识别算法相当智能，能够把双手从生硬的按键中解放出来。手势识别传感器可用于非接触式控制场景，如非接触式鼠标，智能家居，汽车点击设备控制，机器人交互等。

---

**2. 模块参数**

工作电压：DC 3.3V~5V

工作电流：0.1mA

最大功率：0.0005W

识别距离：5cm~15cm

通讯方式：I2C通信

9种手势识别:

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

尺寸：31.6mm x 23.8mm x 9.3mm

接口：IIC接口和2.54mm间距，5pin防反接口 (INT引脚可不接)

---

**3. 模块原理图**

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

PAJ7620U2手势传感器的工作原理是基于红外线反射和类似微软Kinect的深度视觉技术实现的。

它使用一个由红外发光二极管（IR-LED）和一对红外光传感器（IR photodiode）组成的衍射贴片（Diffraction Gratings）矩阵来发射和接收红外光信号，这样可以让传感器从各个角度接收到反射回来的红外线。当用户握手、挥手或移动其他体部，手或者身体会产生细微的变化，这些变化会导致返回传感器的反射光强度和相位发生变化。PAJ7620U2手势传感器通过计算这些光学特征的变化来识别不同的手势并跟踪其运动轨迹。

与此同时，PAJ7620U2还使用类似Kinect的深度视觉技术，来辅助判断物体和用户之间的距离。 它可以通过红外光投射在用户身上产生的影子来获得深度信息。PAJ7620U2将反射和深度信息结合起来进行处理，可以更加精确地识别大量的手势。

因为它不需要用户直接接触设备，所以可以提供更加方便、舒适和卫生的交互方式。同时，PAJ7620U2的应用范围较广，不受环境光、皮肤颜色等因素的干扰，适用于室内、室外等不同场景。

---

**4. 实验组件**

| ![img](media/KS5016.png)   |![img](media/KE4042.png) |![img](media/4pin-5pin.png)       |![img](media/USB.jpg)    |    
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |
| 主板 x1  |PAJ7620手势识别传感器 x1 | 4P转5P线(反向) x1 |USB线 x1  |   
     

---

**5. 模块接线图**

![img](media/43_bb.png)

---

**6. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**32_PAJ7620U2_Gesture_Recognition**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**7. 实验结果**

代码上传成功后，拔下USB线断电。按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**，当我们在传感器前方摆动手势时，串口监视器上将显示我们对应的手势，如下图。(<span style="color: rgb(255, 76, 65);">注意：在我们测试手势时会有大约0.8秒的延迟。</span>)

![img](media/IMG_104809.png)

![img](media/IMG_104701.png)

![img](media/B17.png)

若代码上传成功后串口监视器不打印数据信息，尝试按一下RESET键。

![img](media/RESET.jpg)


---

**8. 代码说明**

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

初始化paj7620。

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

读取手势值（手势方向）。

---

## 4. 传感器/模块组合项目课程

前面课程中，我们单独测试了传感器/模块的功能，功能比较单一。在此，我们可以将多个传感器/模块搭配使用，组合出各种各样的功能。传感器/模块种类比较多，我们只是选择几款比较经典的组合实验。你们也可以根据自己的想法，自己设置代码，组合出你想要的特别的功能。

---

### 第33课 模拟小台灯

**1. 项目介绍**

从前面的实验课程中我们学习了自锁按键模块，按下自锁按键时，单片机读取到低电平；再次按自锁按键（按起自锁按键）时，读取到高电平。在这一实验课程中，我们将自锁按键模块和SK6812 RGB模块组合模拟小台灯，实现按下自锁按键时，SK6812 RGB模块点亮；再次按下自锁按键（按起自锁按键）时，SK6812 RGB模块不亮。

---

**2. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4045.png)|  ![img](media/USB.jpg) |
| ------------------------ | ------------------------ | ------------------------ | 
| 主板 x1   | 自锁按键模块 x1    |USB线  x1  |
| ![img](media/KE4009.png) | ![img](media/3pin.png) |      |
|  SK6812 RGB模块 x1  | 3P线(反向) x2 |    |

---

**3. 模块接线图**

![img](media/451301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**33_Small_Table_Lamp**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，按下自锁按键，SK6812 RGB模块点亮，再次按下自锁按键(自锁按键按起)，SK6812 RGB模块不亮。循环进行。

![](media/IMG_6126.png)

---

**6. 代码说明**

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

读取自锁按键的值并将其赋值给变量val。

![Img](./media/img-20240607154109.png)
 
这是判断语句，“如果”后面的表达式为真，则运行“执行”后面的代码。“如果”后面的表达式为假 ，则运行“否则”后面的代码。 

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

SK6812 RGB模块上4个LED灯珠都亮白灯。

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

SK6812 RGB模块上4个LED灯珠都不亮。

---

### 第34课 自动感应门

**1. 项目介绍**

在前面实验课程中，我们使用一个输入模块控制另一个输出模块。在这一实验中，我们还是用一个模块控制另一个模块。

生活中，我们可以利用一个检测传感器控制一个有源蜂鸣器响起，做声光报警设备，如人体检测（人体红外热释传感器）等等。这一实验课程中我们将避障传感器，舵机驱动板和舵机组合实验，实现避障传感器检测到障碍物时舵机转动带动门开的效果。

---

**2. 实验组件**

| ![img](media/KS5016.png) | ![img](media/KE4022.png) | ![img](media/KE4019.png) | ![img](media/9G.png)  | 
| ------------------------ | ------------------------ | ------------------------ | ---------------------------- | 
|主板 x1| 舵机驱动模块 x1      | 避障传感器 x1      | 舵机 x1 |
|![img](media/4pin.png)|![img](media/3pin.png)        | ![img](media/USB.jpg) |![img](media/ABC13.png) |
|  4P线(反向) x1 |3P线(反向) x1 | USB线 x1 | 一字螺丝刀 x1  | 

---

**3. 模块接线图**

![img](media/461301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**34_Automatic_Induction_Door**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。当避障传感器检测到障碍物时，避障传感器上SLED灯亮起，舵机转动，门打开；当避障传感器检测不到障碍物时，舵机转动，门关闭。

![](media/IMG_6099.png)

---

**6. 代码说明**

可以参照第04课，第23课和第33课的代码说明，这里就不多做介绍了。

---

### 第35课 入侵检测报警器

**1. 项目介绍**

上一课实验中我们学习了使用避障传感器检测障碍物模拟智能感应门。在这一实验课程中我们将人体红外热释传感器、SK6812 RGB模块和有源蜂鸣器模块组合实验，实现人体红外热释传感器检测到附近有人经过时，有源蜂鸣器响起，SK6812 RGB模块上4个LED灯珠闪烁的效果。

---

**2. 实验组件**

| ![img](media/KS5016.png)   |![img](media/KE4018.png)     | ![img](media/KE4010.png) |
| ------------------------ | ---------------------------- | ------------------------ |
| 主板 x1  |人体红外热释传感器 x1  | 有源蜂鸣器模块 x1  |
|![img](media/KE4009.png) | ![img](media/3pin.png)  | ![img](media/USB.jpg)| 
|SK6812 RGB模块 x1|3P线(反向) x3 | USB线  x1   | 

---

**3. 模块接线图**

![](media/471301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**35_PIR_Alarm**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。当人体红外热释传感器检测到附近有人经过时，人体红外热释传感器上的红灯灭，有源蜂鸣器发出警报，SK6812 RGB模块4个LED灯珠闪烁。

![](media/IMG_6071.png)

---

**6. 代码说明**

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

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

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

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

![Img](./media/img-20240607154743.png)
 
有源蜂鸣器响起发出警报。

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

SK6812RGB模块4个LED灯珠亮红灯。

---

### 第36课 变色龙

**1. 项目介绍**

在第22课的实验中我们学习了使用旋转编码器计数。在这一实验课程中我们将旋转编码器模块和SK6812 RGB模块组合实验，通过旋转编码器计数的结果，控制SK6812 RGB模块上4个LED显示不同的颜色来模拟变色龙。

---

**2. 实验组件**

| ![img](media/KS5016.png)     |![img](media/KE4049.png)     | ![img](media/KE4009.png) |
| ---------------------------- | ---------------------------- | ------------------------ |
|主板 x1|  旋转编码器模块 x1      | SK6812 RGB模块 x1     |
| ![img](media/5pin.png)       | ![img](media/3pin.png)       | ![img](media/USB.jpg)    |  
| 5P线(反向) x1| 3P线(反向) x1 | USB线  x1   |   

---

**3. 模块接线图**

![img](media/491301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**36_Chameleon**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。打开串口监视器，设置波特率为 **<u>9600</u>**。

任意方向(<span style="color: rgb(255, 76, 65);">最好先顺时针方向</span>)旋转编码器，串口监视器打印出对应余数；RGB模块上的LED显示余数对应的颜色：余数0显示红色、余数1显示绿色、余数2显示蓝色。按下旋转编码器，RGB模块上LED保持当前颜色不变。是不是很像变色龙呀！

![](media/IMG_5971.png)

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

---

**6. 代码说明**

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

![Img](./media/img-20240606131657.png)是模除运算符。代码中模除的结果是旋转编码器计数的值与3相除的余数。 

剩余的可以参照第22课的代码说明，这里就不多做介绍了。

---

### 第37课 模拟智能窗户

**1. 项目介绍**

生活中能看到各种各样的智能产品，例如智能窗帘、智能窗户、智能电视、智能灯光等等。这一课我们来学习做一个智能窗帘，利用水滴水蒸气传感器模块检测雨水，然后通过设置舵机的角度来达到关窗和开窗的效果。

当然，这只是我们模拟的一个场景，主要用于加深我们的印象，达到对模块学以致用的效果。现实生活中，智能窗户并不是使用舵机来开关的。

---

**2. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4048.png) | ![img](media/KE4022.png)| ![img](media/9G.png)|
| ------------------------ | ------------------------ | -------------------- | ---------------------------- |   
|主板 x1  |水滴传感器 x1 | 舵机驱动模块 x1       |  舵机 x1 |
|![img](media/3pin.png) | ![img](media/4pin.png)  | ![img](media/USB.jpg) |    |
| 3P线(反向) x1 | 4P线(反向) x1 |USB线 x1 |     | 

---

**3. 模块接线图**

![img](media/511301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**37_Smart_Window**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

<span style="color: rgb(255, 76, 65);">注意：代码中的模拟值的阈值400可以根据实际情况设置。</span>

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。当水滴传感器检测到一定水量，舵机转动达到关窗的效果。否则舵机转动到另一个角度，达到开窗的效果。

![img](media/IMG_5961.png)

---

**6. 代码说明**

可以参照第13课和第23课的代码说明，这里就不多做介绍了。

---

### 第38课 夜光灯

**1. 项目介绍**

前面我们已经学习了光敏传感器的工作原理，在这一项目中，我们将光敏传感器和SK6812 RGB模块组合实验，实现光敏传感器检测到光照强度模拟值高于设定值时SK6812 RGB模块上的4个LED灯珠熄灭，低于设定值时SK6812 RGB模块上的4个LED灯珠点亮的效果。

---

**2. 实验组件**

| ![img](media/KS5016.png) |![img](media/KE4009.png) |![img](media/KE4026.png) |
| ------------------------ | ------------------------ | ------------------------ |
|主板 x1| SK6812 RGB模块 x1   |光敏传感器 x1  |
| ![img](media/3pin.png)  | ![img](media/USB.jpg) |   |
| 3P线(反向) x2 | USB线 x1   |     |

---

**3. 模块接线图**

![img](media/521301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**38_Night_Lamp**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

<span style="color: rgb(255, 76, 65);">注意：代码中的模拟值的阈值200可以根据实际情况设置。</span>

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

串口监视器打印出光敏传感器检测到光照强度对应的模拟值，使用手机的照明灯对着光敏传感器模块上的光敏电阻照射时，当光敏传感器检测到光照强度的模拟值大于等于200时，SK6812 RGB模块上的4个LED灯珠熄灭；否则，低于200时，SK6812 RGB模块上的4个LED灯珠点亮，实现了夜光灯的效果。

![img](media/IMG_5927.png)

---

**6. 代码说明**

可以参照第13课和第33课的代码说明，这里就不多做介绍了。

---

### 第39课 压力报警器

**1. 项目介绍**

生活中，有很多人会使用压力器来测量自己的最大压力有多少，有些压力器具有压力过大警报功能，提醒人们压力过大，需要进行减少压力以免损坏压力器。这一课我们来学习制作一个压力报警器，它虽然简单，但却是非常具有意义的。原理很简单，利用薄膜压力传感器检测到一定压力（设定压力值），检测的结果控制一个有源蜂鸣器响起。

---

**2. 实验组件**

| ![img](media/KS5016.png)|![img](media/KE4010.png)|![img](media/USB.jpg)  | 
| ---------------------------- | ---------------------------- | ------------------------ |
|主板 x1 | 有源蜂鸣器模块 x1 | USB线  x1 |
|  ![img](media/KE4069.png) |![img](media/3pin.png)|      | 
| 薄膜压力传感器 x1      |3P线(反向) x2 |     |

---

**3. 模块接线图**

![img](media/531301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**39_Pressure_Alarm**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

<span style="color: rgb(255, 76, 65);">注意：代码中的模拟值的阈值400可以根据实际情况设置。</span>

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。为了使实验数据最精准，请将薄膜压力传感器尽量平放。

串口监视器打印出薄膜压力传感器的模拟值。用手按压薄膜时，随着压力的增大，可以看到模拟值逐渐变小。

当薄膜压力传感器的模拟值小于400时，有源蜂鸣器响起，否则有源蜂鸣器不响。

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

---

**6. 代码说明**

可以参照第13课和第33课的代码说明，这里就不多做介绍了。

---

### 第40课 温湿度仪表 

**1. 项目介绍**：

在冬季时，空气中的湿度很低，就是空气很干燥，再加上寒冷，人体的皮肤就容易过于干燥而裂，所以需要使用加湿器给家里的空气增加湿度，但是怎么知道空气过于干燥了呢？那就需要检测空气湿度的设备，前面我们已经学习过了XHT11温湿度传感器的工作原理。在这一课我们将结合XHT11温湿度传感器和主板上的TFT显示屏来制作一个温湿度仪表，在TFT显示屏上显示XHT11温湿度传感器检测到环境中的温度和湿度。

---

**2. 实验组件**

| ![img](media/KS5016.png)  |![img](media/KE4033.png)  |![img](media/3pin.png)         |![img](media/USB.jpg)    |
| ------------------------ | ---------------------------- | ----------------------------- |----------------------------- |
|主板 x1| XHT11温湿度传感器 x1|3P线(反向) x1  |USB线  x1 |


---

**3. 模块接线图**

![](media/5813011.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**40_Temperature-humidity_meter**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，上传成功后可以在主板上的TFT显示屏看到XHT11温湿度传感器检测到环境中的温度值和湿度值。

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

---

**6. 代码说明**

可以参照第26课和第29课的代码说明，这里就不多做介绍了。

---

### 第41课 TFT显示屏显示TF卡图片 

**1. 项目介绍**：

本套件中的主板内置有TF卡槽，在TF卡保存图片文件，然后将TF卡插入TF卡槽，通过编写相关程序代码，这样TFT显示屏会显示TF卡中的图片相关信息。

---

**2. 实验组件**

| ![img](media/KS5016.png) | ![img](media/WS2.png)     |![img](media/WS5.png)     |![img](media/USB.jpg) |
| ------------------------ | ---------------------------- | ----------------------------- |----------------------------- |
|主板 x1| TF卡 x1 | 读卡器 x1|USB线  x1|


---

**3. 将图片转入TF卡**

(1). 将TF卡插入读卡器

![](media/WS3.png)

(2). 将读卡器(已经插有TF卡)插入电脑的USB口上。

![](media/WS1.png)

(3). 鼠标左双击“**我的电脑(或此电脑)**”，在此页面可以看到“**U盘**”标志。鼠标右单击“**U盘**”标志，出现对话框，选择单击“**属性**”查看TF卡的文件系统是不是“**FAT32**”？如果是就可以了。

![](media/WS7.png)

![](media/WS6.png)

如果TF卡的文件系统不是“**FAT32**”，则需要修改TF卡的文件系统。鼠标右单击“**U盘**”标志，出现对话框，选择单击“**格式化**”，出现格式化页面，在此页面点击“**FAT(默认)**”后面的**下拉箭头**来选择“**FAT32**”，然后点击“**开始**”进行格式化。这样，TF卡的文件系统“**FAT**”更改成“**FAT32**”。

![](media/WS8.png)

![](media/WS9.png)

![](media/WS10.png)

(4). 全部选中文件夹中的图片(**文件类型：BMP 图片文件(.bmp)**)，然后将选中的图片**发送到**(或**复制粘贴到**)读卡器中的TF卡(U盘)。<span style="color: rgb(255, 76, 65);">（**特别注意：图片名字和格式都不能修改**）</span>

![](media/ABC12.png)

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

(4). 图片发送到TF卡(U盘)后，退出电脑上的读卡器中的TF卡(U盘)，将TF卡正确插入主板上的TF卡槽中。

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

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

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

---

**4. 模块接线图**

![](media/KE0175.png)

---

**5. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**41_TFT_displays_TF_card_pattern**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**6. 实验结果**

代码上传成功后，拔下USB线断电，再用USB线连接到计算机上电，上传成功后可以在主板上的TFT显示屏看到循环显示TF卡上的图片文件。

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

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

.....

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

---

### 第42课 碰撞警报器

**1. 项目介绍**

在如今大城市中，几乎家家户户都拥有一辆代步的私家车，很多私家车都是停靠在路边，很多行人在行走时都会不小心碰到私家车。这时，被碰到的私家车都会出现灯光闪烁，蜂鸣器鸣叫，提醒人们，你已经碰到车了。那我们可不可以也来模拟被碰撞了就发出警报呢？当然可以了，这个实验我们就来使用碰撞传感器控制蜂鸣器和SK6812 RGB模块来模拟碰撞警报器。

---

**2. 实验组件**

| ![img](media/KS5016.png)   |![img](media/KE4023.png)     | ![img](media/KE4010.png) |
| ------------------------ | ---------------------------- | ------------------------ |
| 主板 x1  |碰撞传感器 x1  | 有源蜂鸣器模块 x1  |
|![img](media/KE4009.png) | ![img](media/3pin.png)  | ![img](media/USB.jpg)| 
|SK6812 RGB模块 x1|3P线(反向) x3 | USB线  x1   | 

---

**3. 模块接线图**

![img](media/57130112.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**42_Collision_Alarm**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

当手按压碰撞传感器上的金属弹片时，传感器上的灯亮红灯，蜂鸣器鸣叫，SK6812 RGB模块上的4个LED灯珠闪烁不同的颜色灯。

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

---

**6. 代码说明**

可以参照第21课和第33课的代码说明，这里就不多做介绍了。

---

### 第43课 智能红外遥控灯

**1. 项目介绍**

在前面实验中，我们学会了SK6812 RGB模块上4个LED灯珠亮不同颜色灯、也学会了使用红外接收模块，并将接收到的遥控器对应的键值打印出来。在这一实验课程中，我们将红外接收模块和SK6812 RGB模块组合实验，实现用红外遥控器控制SK6812 RGB模块上4个LED灯珠的亮灭以及控制SK6812 RGB模块上4个LED灯珠显示不同颜色灯。

在这一实验课程中我们使用红外遥控器上的“ ▲ ”和“ ▼ ”等两个按键控制SK6812 RGB模块上4个LED灯珠分别亮与灭，然后再使用“ ① ”、“ ② ”、“ ③ ”、“ ④ ”、“ ⑤ ”、“ ⑥ ”、“ ⑦ ”、“ ⑧ ”、“ ⑨ ”等九个按键来控制SK6812 RGB模块上4个LED灯珠分别亮红色灯、绿色灯、蓝色灯、橙色灯、黄色灯、紫色灯、金色灯、粉红色灯、品红色灯的效果。

---

**2. 实验组件**

| ![img](media/KS5016.png) |![img](media/KE4036.png)     | ![img](media/KE4009.png) |
| -------------------------------- | ---------------------------- | ------------------------ |
|主板 x1|红外接收模块 x1        | SK6812 RGB模块 x1     |
| ![img](media/remotecontrol.png) | ![img](media/3pin.png)       | ![img](media/USB.jpg)    | 
| Keyes 遥控器 x1 | 3P线(反向) x2 | USB线  x1 |

---

**3. 模块接线图**

![img](media/571301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**43_Intelligent_IR_Control**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

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

找到红外遥控器，拔出绝缘片，对准红外接收模块的红外接收传感器的接收头。第一次按下红外遥控器上的 “ **▲** ” 键，SK6812 RGB模块上4个LED灯珠被点亮，实现开灯的效果。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FF629D  led on</u>**” 。

按下红外遥控器上的 “ **▼** ” 键，SK6812 RGB模块上4个LED灯珠熄灭，实现关灯的效果。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FFA857  led off</u>**” 。

按下红外遥控器上的 “ **①** ” 键，SK6812 RGB模块上4个LED灯珠亮红色灯。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FF6897  red led</u>**” 。

按下红外遥控器上的 “ **②** ” 键，SK6812 RGB模块上4个LED灯珠亮绿色灯。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FF9867  green led</u>**” 。

按下红外遥控器上的 “ **③** ” 键，SK6812 RGB模块上4个LED灯珠亮蓝色灯。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FFB04F  blue led</u>**” 。

按下红外遥控器上的 “ **④** ” 键，SK6812 RGB模块上4个LED灯珠亮橙色灯。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FF30CF  orange led</u>**” 。

按下红外遥控器上的 “ **⑤** ” 键，SK6812 RGB模块上4个LED灯珠亮黄色灯。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FF18E7  yellow led</u>**” 。

按下红外遥控器上的 “ **⑥** ” 键，SK6812 RGB模块上4个LED灯珠亮紫色灯。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FF7A85  purple led</u>**” 。

按下红外遥控器上的 “ **⑦** ” 键，SK6812 RGB模块上4个LED灯珠亮金色灯。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FF10EF  gold led</u>**” 。

按下红外遥控器上的 “ **⑧** ” 键，SK6812 RGB模块上4个LED灯珠亮粉红色灯。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FF38C7  pink led</u>**” 。

按下红外遥控器上的 “ **⑨** ” 键，SK6812 RGB模块上4个LED灯珠亮品红色灯。串口监视器打印出按下的按键值和SK6812 RGB模块上4个LED灯珠亮灯情况：“**<u>FF5AA5  magenta led</u>**” 。

![img](media/571501.png)

---

**6. 代码说明**

可以参照第21课和第26课的代码说明，这里就不多做介绍了。

---

### 第44课 智能门禁系统

**1. 项目介绍**

生活中，很多门禁系统都是使用射频模块进行开锁的，既方便又安全。这一课，学习利用RFID522刷卡模块和舵机设置一个智能门禁系统。

原理很简单，使用RFID522刷卡模块感应，使用IC卡或者钥匙卡来开锁，舵机的作用即门禁锁。

---

**2. 实验组件**

| ![img](media/KS5016.png) | ![img](media/KE4065.png) |![img](media/KE4022.png)|![](media/9G.png) |
| ------------------------ | ------------------------ | ---------------------------- | ------------------------ | 
|主板 x1 |RFID刷卡模块 x1    |舵机驱动模块 x1  |舵机 x1|
| ![img](media/WPS12.png)     | ![img](media/4pin.png) | ![img](media/USB.jpg) |      |
|  IC卡/钥匙扣 x1 | 4P线(反向) x2 |USB线  x1 |    |

---

**3. 模块接线图**

![](media/591301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**44_Intelligent_access_control**"。

**<span style="background:#ff0;color:#000">特别注意：对于不同的IC卡和钥匙扣，其读取的IC卡和钥匙扣的UID码值可能都不一样。在代码运行前，需要将你自己的IC卡和钥匙扣的UID码值替换程序代码中的UID码（UID码在第30课完成实验可以得知），替换位置如下图所示。</span>**

![](media/591401.png)

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


参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。上传成功后打开串口监视器，波特率设置为 **<u>9600</u>**。使用正确的IC卡或者钥匙扣刷卡时，串口监视器打印出卡的UID码并提示 “**open the door!**”，同时舵机转动到相应的角度模拟开门的效果。

![](media/MGR_12345.png)

![](media/591501.png)

---

**6. 代码说明**

在前面的课程中，使用RFID刷卡模块已经测试出来了IC卡和钥匙扣的UID码。这一课利用对应的UID码信息来控制舵机转动对应的角度，模拟开门的效果。

---

### 第45课 智能火警装置

**1. 项目介绍**

你知道智能火警装置吗？根据国家犯罪记录局（NCRB）的估计，从2010年至2014年，印度发生的火灾事故已造成超过120万死亡。即使为火灾事故采取了许多预防措施，但这些自然/人为灾难却还是时有发生。发生火灾时，为了营救人员和灭火，非常需要消防员等人力资源。随着技术的进步、机器人技术的发展，未来很有可能使用智能火警装置代替消防员灭火。这将提高灭火的效率，也能保障消防员的生命安全。

在这个项目中，我们将学习如何使用主板构建一个非常简单的智能火警装置。用火焰传感器检测火焰，当检测到火焰时，RGB闪烁蜂鸣器警报来提醒人们，并启动130电机吹灭火源。

---

**2. 实验组件**

| ![img](media/KS5016.png) | ![img](media/KE4009.png) | ![img](media/KE4038.png) | ![img](media/KE4020.png) |
| ------------------------ | ------------------------ | ------------------------ | ------------------------ |
|主板 x1|SK6812 RGB模块 x1     |130电机模块 x1     | 火焰传感器 x1      | 
| ![img](media/KE4010.png)|![](media/4pin.png) |![](media/3pin.png) | ![](media/USB.jpg) |
|有源蜂鸣器 x1|4P线(反向) x2 | 3P线(反向) x2 | USB线 x1 |
| ![](media/WS4.png)    |   ![](media/ABC13.png)    | ![](media/6.png)|          |
| 电池盒  x1  | 一字螺丝刀 x1  |AA电池 x6 |        |

---

**3. 模块接线图**

![](media/481301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**45_Intelligent_Fire_Alarm_Device**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后外接电源供电，上电后，观察实验结果。**

<span style="color: rgb(255, 76, 65);">注意：代码中的模拟值的阈值500可以根据实际情况设置。</span>

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

由于风扇在转动时，所需的电流比其他传感器要大，会引起电路中电压电流波动，特别是风扇进行正反转时，电压电流波动过大，导致主板的电压电流过低，会导致复位。

代码上传成功后，拔下USB线断电，按照接线图正确接好模块，给主板外接电源供电（将装有电池的电池盒接到主板上）。上电后，打开串口监视器，设置波特率为 **<u>9600</u>**。

串口监视器上打印出火焰的模拟值，当模拟值低于500时，SK6812 RGB模块上的4个LED闪烁蜂鸣器警报来提醒人们，并且启动风扇来灭火。

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


---

**6. 代码说明**

在代码中我们设置了阈值为500（item < 500），阈值可以根据实际情况更改。当火焰传感器检测到模拟值低于这个阈值时，SK6812 RGB模块上的4个LED闪烁红灯蜂鸣器警报来提醒人们，并且启动风扇来灭火；否则，SK6812 RGB模块上的4个LED不亮蜂鸣器不叫，风扇关闭。风扇的驱动方式请查看上面的第12课。


---

### 第46课 楼道感应灯

**1. 项目介绍**

如今智能家居发展迅速，你使用过智能家居当中的智能楼道感应灯吗？在晚上或天黑时，当我们跺跺脚或者拍拍手时，智能楼道感应灯自动亮起；当没有声音或白天天亮时时，智能楼道感应灯处于熄灭状态。智能楼道感应灯上安装有光敏传感器和声音传感器，光敏传感器检测光照强度，声音传感器将外界声音的大小，转换成对应数值。智能楼道感应灯设置一个声音强度临界点，当光照强度低于某一值，声音转换后对应的数值超过该声音强度临界点时，灯光亮起一段时间。 

在这一实验课程中，我们将光敏传感器，声音传感器和SK6812 RGB模块组合实验，学习制作一个最简单的智能楼道感应灯。

---

**2. 实验组件**

| ![img](media/KS5016.png) |![img](media/KE4026.png)| ![img](media/KE4027.png) |![img](media/ABC13.png) |
| ------------------------ | ------------------------ | ------------------------ |------------------------ |
|主板 x1| 光敏传感器 x1  |声音传感器 x1     |一字螺丝刀 x1|
|![img](media/KE4009.png) | ![img](media/3pin.png) | ![img](media/USB.jpg) |    |
| SK6812 RGB模块 x1     | 3P线(反向) x3 | USB线 x1   |      |

---

**3. 模块接线图**

![img](media/5213011.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**46_Corridor_Sensing_Light**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

<span style="color: rgb(255, 76, 65);">注意：代码中的模拟值的阈值可以根据实际情况设置。</span>

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，打开串口监视器，设置波特率为 **<u>9600</u>**。

![img](media/830a.png)

串口监视器打印出声音传感器接收到的声音对应的模拟值和光敏传感器检测光照强度的模拟值。遮住光敏传感器光照使检测到的光照强度模拟值低于200时，对准MIC头大声说话，接收到的声音增大时模拟值也增大，当模拟值大于150时，SK6812 RGB模块上4个LED灯珠亮起5秒，然后熄灭。这样就可以模拟智能楼道感应灯。（**注意：如果声音变化对应的模拟值没有变化并且一直都是数字0，需要用一字螺丝刀顺时针旋转电位器来调节。**）

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

![img](media/521501.png)

---

**6. 代码说明**

可以参照第13课和第33课的代码说明，这里就不多做介绍了。

---

### 第47课 控制舵机和LED

**1. 项目介绍**

前面已经学习过舵机，SK6812 RGB模块，自锁按键模块和旋转电位器等相关知识，那它们可不可以组合制成更复杂的实验呢？当然可以。则在本实验中，自锁按键控制SK6812 RGB模块上的4个LED亮起，然后旋转电位器控制舵机来回缓慢地转动。

---

**2. 实验组件**

| ![img](media/KS5016.png)     | ![img](media/KE4064.png)     |![img](media/KE4009.png) |
| ---------------------------- | ---------------------------- | ------------------------ |
|主板 x1| 旋转电位器 x1 |SK6812 RGB模块 x1 | 
| ![img](media/KE4045.png) |![](media/KE4022.png)  |![](media/9G.png) |
| 自锁按键 x1 | 舵机驱动模块 x1 | 舵机 x1 |
| ![img](media/3pin.png)  | ![img](media/4pin.png) | ![img](media/USB.jpg) |
|3P线(反向) x3 | 4P线(反向) x1 | USB线  x1 |

---

**3. 模块接线图**

![img](media/5313012.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**47_Control_Servo_and_LED**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。按下自锁按键时，SK6812 RGB模块上的4个LED亮起，然后旋转电位器，舵机则来回缓慢地转动。

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

---

**6. 代码说明**

可以参照第13课和第33课的代码说明，这里就不多做介绍了。

---

### 第48课 气候播报

**1. 项目介绍**

每天晚上的天气预报节目都会播报未来几天的气候情况，包括每个城市的气压，海拔、气温、风向和风的强度等各种气候。在本实验，我们将使用BMP388气压传感器检测气压，海拔，气温，并且在TFT显示屏显示。

---

**2. 实验组件**

| ![img](media/KS5016.png)  | ![img](media/KE4040.png) |![img](media/4pin-5pin.png) | ![img](media/USB.jpg)    |
| ------------------------ | ------------------------ | ---------------------------- |---------------------------- |
|主板 x1   | BMP388气压传感器 x1 | 4P转5P线(反向) x1 |USB线 x1 | 

---

**3. 模块接线图**

![](media/581301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**48_Weather_Broadcast**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。上电后，可以在TFT显示屏上看到当前的气压、海拔和气温。

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

---

**6. 代码说明**

可以参照第29课和第31课的代码说明，这里就不多做介绍了。

---

### 第49课 激光防盗

**1. 项目介绍**

在新闻节目中经常会听到很多有关盗窃事件，很多财产都被盗贼盗走，损失很多。现在很多家庭里都没有安装防盗装置，来发出警报以提醒人们。那我们可不可以帮他们制作一个防盗装置呢？在本实验课程中，我们将使用激光模块，光敏传感器，SK6812 RGB模块，蜂鸣器组合一起来制作激光防盗装置。

---

**2. 实验组件**

| ![img](media/KS5016.png) | ![img](media/KE4043.png) |![img](media/KE4009.png)     |![img](media/KE4026.png) |
| ------------------------ | ---------------------------- | ----------------------------- |----------------------------- |
|主板 x1| 激光模块 x1 | SK6812 RGB模块 x1| 光敏传感器 x1 |
| ![img](media/KE4010.png) |![img](media/3pin.png)  | ![img](media/USB.jpg) |  |
| 有源蜂鸣器 x1 | 3P线(反向) x4|USB线 x1 |     |

---

**3. 模块接线图**

![](media/5813012.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**49_Laser_anti-theft**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电。上电后，可以看到激光模块发出的激光正对着光敏传感器模块上的光敏电阻，在光敏传感器模块和激光模块之间用物体挡住激光，发现SK6812 RGB模块上的4个LED灯珠依次闪烁红灯和黄灯，蜂鸣器不断地鸣叫。

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

---

**6. 代码说明**

可以参照第4课，第13课和第21课的代码说明，这里就不多做介绍了。

---

### 第50课 模拟温度散热装置

**1. 项目介绍**

生活中，我们的电脑或者电路板芯片等器件会由于工作时间过长或者功耗过大的问题而发热严重，所以我们常常需要一个散热装置。

在前面的课程我们学习了如何使用温度传感器和电机模块，这一课我们学习把它们结合起来做成一个智能散热装置。当检测到环境温度高于某一个值时的时候，电机开启，从而达到降低环境温度、散热效果，再把此刻的温度值显示在四位数码管中。

---

**2. 实验组件**

| ![img](media/KS5016.png) | ![img](media/KE4060.png) |![img](media/KE4038.png)     |
| ------------------------ | ---------------------------- | ----------------------------- |
|主板 x1| TM1650四位数码管模块 x1 | 130电机模块 x1|
| ![img](media/KE4025.png) | ![img](media/3pin.png)  | ![](media/6.png)|
|  NTC-MF52AT模拟温度传感器 x1 | 3P线(反向) x1|AA电池 x6 |
| ![img](media/4pin.png)    | ![img](media/USB.jpg) | ![](media/WS4.png) | 
| 4P线(反向) x2 |USB线 x1 | 电池盒 x1 |

---

**3. 模块接线图**

![](media/5813013.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**50_Heat_abstractor**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

<span style="color: rgb(255, 76, 65);">注意：代码中的温度阈值30可以根据实际情况设置。</span>

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

代码上传成功后，拔下USB线断电，按照接线图正确接好模块后，给主板外接电源供电（将装有电池的电池盒接到主板上）。上电后，可以在四位数码管模块上看到当前温度值，当温度超过代码中设定的30°C时，风扇转动，散热。

![](media/IMG_5831.png)

---

**6. 代码说明**

变量的设置与存储检测值，与前面我们学习的一样，也是通过设置一个温度的阈值（阈值30可以根据实际情况重新更改），超过这个阈值进行控制电机转动，四位数码管显示温度值。

---

### 第51课 超声波雷达

**1. 项目介绍**

蝙蝠飞行与获取猎物是通过回声定位的。回声定位：某些动物能通过口腔或鼻腔把从喉部产生的超声波发射出去，利用折回的声音来定向，这种空间定向的方法称为回声定位。科学家们从蝙蝠身上得到的启示发明了雷达，即雷达的天线相当于蝙蝠的嘴，而天线发出的无线电波就相当于蝙蝠的超声波，雷达接收电波的荧光屏就相当于蝙蝠的耳朵。

这一课我们就来学习制作一个简易雷达。将HC-SR04 超声波传感器、无源蜂鸣器、SK6812 RGB模块和主板上的TFT显示屏组合实验，利用距离大小控制无源蜂鸣器响起对应频率的声音、SK6812 RGB模块上4个LED灯珠亮起对应颜色灯，然后把这个距离显示在TFT显示屏上。这样就搭建好了一个简易的超声波雷达系统。

---

**2. 实验组件**

| ![img](media/KS5016.png) | ![img](media/ultrasonic.png) | ![img](media/KE4039.png)|![](media/WS4.png)|
| ---------------------------- | ---------------------------- | ----------------------------- | ----------------------------- |
|主板 x1  |HC-SR04 超声波传感器 x1 | 超声波转接模块 x1 |电池盒 x1 |
| ![img](media/KE4067.png) | ![img](media/KE4009.png)  |![](media/6.png)| ![img](media/3pin.png) |
| 无源蜂鸣器 x1  | SK6812 RGB模块 x1  | AA电池 x6 |3P线(反向) x2|
| ![img](media/4pin.png) | ![img](media/USB.jpg)  |  |  |
| 4P线(反向) x1| USB线  x1  |   |     |

---

**3. 模块接线图**

![img](media/561301.png)

---

**4. 实验代码**

本项目中使用的代码保存在文件夹“<u>**...\项目代码\Mixly_代码**</u>”中，我们可以在此路径下打开代码文件''**51_Ultrasonic_radar**"。

**注意：为了避免上传代码不成功，请上传代码前不要连接模块。代码上传成功后，拔下USB线断电，按照接线图正确接好模块后再用USB线连接到计算机上电，观察实验结果。**

<span style="color: rgb(255, 76, 65);">注意：代码中的距离阈值可以根据实际情况设置。</span>

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

参照第01课的示例，导入提供的示例代码并连接好串口端口，然后上传示例代码。

---

**5. 实验结果**

上传代码，代码上传成功后，拔下USB线断电，按照接线图正确接好模块后，给主板外接电源供电（将装有电池的电池盒接到主板上）。

当超声波传感器检测到障碍物距离范围在10cm 以内时，SK6812 RGB模块上的4个LED灯亮红色，并将检测到障碍物的距离显示在TFT显示屏上。同时无源蜂鸣器发出声响，起到提示的作用。

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

当超声波传感器检测到障碍物距离范围在10cm ~ 20cm 以内时，SK6812 RGB模块上的4个LED灯亮绿色，并将检测到障碍物的距离显示TFT显示屏上。同时无源蜂鸣器发出声响，起到提示的作用。

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

当超声波传感器检测到障碍物距离范围在20cm 以外时，SK6812 RGB模块上的4个LED灯亮蓝色，并将检测到障碍物的距离显示在TFT显示屏上。同时无源蜂鸣器发出声响，起到提示的作用。

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

---

**6. 代码说明**

可以参照前面课程的代码说明，这里就不多做介绍了。

---




