## 项目38 WiFi 智能家居

**1. 实验说明：**

在前面的实验中，我们已经了解了ESP32的WiFi Station模式。那么在本章实验中，我们将使用ESP32的WiFi Station模式通过APP连接WIFI来控制多个传感器/模块工作，实现WiFi智能家居的效果。

**2. 实验器材：**

|![Img](./media/afc52f6616725ba37e3b12a2e01685ad.png)|![Img](./media/a2aa343488c11843f13ae0413547c673.png)|![Img](./media/2d879e56de94fbb14399ec17c0b10861.png)|![Img](./media/c910a7be7acddac1d2c4e4a1613524f4.png)|
| :--: | :--: | :--: | :--: |
|ESP32*1|面包板*1| 130直流电机模块*1|继电器模块*1|
|![Img](./media/bf6d1660c4a52edca11f5a7763edfc19.png)|![Img](./media/7b166aa2bc58fd46700f92d9d49514a1.png)|![Img](./media/28c9fe25104d16cc0ed7da8c80c443ea.png)|![Img](./media/4191d5454859076aa2a6c069185be177.png)|
| 舵机*1 |温湿度传感器*1| 超声波传感器*1|4P转杜邦线公单*2|
|![Img](./media/4d0be04892e2038c372f82caba521f64.png)|![Img](./media/c562656c96657983e724daed7c8d6202.png)|![Img](./media/3cc5c242c0f357b3dc496037a7d8bae8.png)|![Img](./media/ed228ff5627e0c8cc0c79fa04f1d4d16.png)|
|智能手机/平板电脑(<span style="color: rgb(255, 76, 65);">自备</span>)*1|面包板专用电源模块*1|6节5号电池盒*1|风扇叶*1|
|![Img](./media/4c49cdffc9e5e6f1aad838120d35897a.png)|![Img](./media/b4421594adeb4676d63581a1047c6935.png)| ![Img](./media/1a190cfbfe81a1524e1d1ef681688a64.png)|![Img](./media/e989c0ba5c3c1ea8c5fc08d02344da37.png)|
|5号电池(<span style="color: rgb(255, 76, 65);">自备</span>)*6|MicroUSB线*1|3P转杜邦线公单*2|跳线若干|

**3. 实验接线图：**

| 继电器| ESP32主板 | 温湿度传感器 | ESP32主板 |
| :--: | :--: | :--: | :--: |
| G | G| G | G |
| V | 5V | V | 5V |
| S | IO32 | S | IO15 |

| 超声波传感器| ESP32主板 | 130 风扇模块 | ESP32主板 |
| :--: | :--: | :--: | :--: |
| Vcc | 5V| G | G |
| Trig | IO14 | V | 5V |
| Echo | IO27 | IN+ | IO19 |
|Gnd|G|IN-|IO18|

| 舵机| ESP32主板 |
| :--: | :--: | 
| 红色线 | 5V|
| 棕色线 | G |
| 橙色线 | IO4 |

![Img](./media/344eb73d8060a421457efecce1ec0f4e.png)

(<span style="color: rgb(255, 76, 65);">注:</span> 先接好线，然后在直流电机上安装一个小风扇叶片。)

**4. 安装APP:**

安装APP的方法请参照 <span style="color: rgb(255, 76, 65);">**项目37 WiFi测试**</span> 。这里就不重复讲解。

**5. 项目代码：**

<span style="color: rgb(255, 76, 65);">特别注意：</span>需要先将项目代码 ![Img](./media/img-20241105083150.png) 中的用户Wifi名称（SSID 名称）和用户Wifi密码（PASSWD 密码）改成你们自己的Wifi名称和Wifi密码。

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

**6. 实验现象：**

<span style="background: rgb(255, 251, 0);"><span style="color: rgb(255, 76, 0);">**特别注意：**<span style="color: rgb(255, 76, 0);"></span>确保计算机网络，手机/平板的网络，ESP32主板，路由器，代码中输入你自己的WiFi名称和密码都必须是在同一个局域网（WiFi）下。</span></span>

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

确认程序代码中的Wifi名称和Wifi密码修改正确后，编译并上传代码到ESP32主板上。

打开串口监视器，设置波特率为 <span style="color: rgb(255, 76, 65);">115200</span>，这样，串口监视器打印检测到的WiFi IP地址。（**注意：** 如果打开串口监视器且设置波特率为115200之后，串口监视器窗口没有显示如下信息，可以按下ESP32的复位键 ![Img](./media/515a31c10d414cae43980905e7df1879.jpg)）

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

然后打开WiFi APP，在WIFI按钮前面的文本框中输入检测到的WIFI IP地址（<span style="color: rgb(255, 76, 65);">例如，上面串口监视器检测到的IP地址：192.168.1.136</span>），接着点击WIFI按钮来连接WiFi。（<span style="color: rgb(255, 76, 65);">WiFi的IP地址有时候会改变，如果原来的IP地址不行，需要重新检测WiFi的IP地址</span>）

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

**APP已经连接上了WiFi后，开始进行如下操作：**

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

（1）点击 ![Img](./media/bb79be97b679a1cb8281a7c496f283ff.png) 按钮，继电器打开，模块上的指示灯点亮；再次点击 ![Img](./media/bb79be97b679a1cb8281a7c496f283ff.png) 按钮，继电器关闭，模块上的指示灯不亮。

（2）点击 ![Img](./media/76543daeb680c2a1c2d683b090bcb40f.png) 按钮，舵机转动到180°处；再次点击 ![Img](./media/76543daeb680c2a1c2d683b090bcb40f.png) 按钮，舵机转动到0°处。

（3）点击 ![Img](./media/1c7de5dcf1bc26c05aa6776876007fb7.png) 按钮，电机（带小风扇叶）转动；再次点击 ![Img](./media/1c7de5dcf1bc26c05aa6776876007fb7.png) 按钮，关闭电机。

（4）在超声波传感器前放一个物体，点击 ![Img](./media/333c0081491bda5b140b2ed1e365e015.png) 按钮，超声波传感器测距，串口监视器窗口显示距离值，说明此时物体离超声波传感器的距离为301.2cm；再次点击 ![Img](./media/333c0081491bda5b140b2ed1e365e015.png) 按钮，关闭超声波。

（5）点击 ![Img](./media/ba27f5c4eb27223a8293f112037fd219.png) 按钮，温湿度传感器测量环境中的温度，串口监视器窗口显示温度值，说明此时环境中的温度为28.6℃；再次点击 ![Img](./media/ba27f5c4eb27223a8293f112037fd219.png)按钮，关闭温湿度传感器。

（6）点击 ![Img](./media/100e3e7685ce761e53f5b80d76d80c73.png) 按钮，温湿度传感器测量环境中的湿度，串口监视器窗口显示湿度值，说明此时环境中的湿度为54.4%；再次点击 ![Img](./media/100e3e7685ce761e53f5b80d76d80c73.png) 按钮，关闭温湿度传感器。

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





