### 第21课 WiFi控制

#### 21.1 项目介绍

物联网，就是将硬件设备接入网络。接入网络最便捷的方法就是使用WiFi连接了。ESP32 Plus主控板自带有WiFi模块，所以将我们的智能家居接入网络还是比较简单的。

我们将智能家居连接到局域网，也就是你家里的WiFi或者你手机开启的热点。连接成功后就会分配一个地址，这个地址就可以用来通讯了，我们将分配到的地址在串口监视器中打印出来；同时，读取APP上各个按钮的字符串，并且在串口监视器中打印出来。

#### 21.2 相关资料

Station模式：当ESP32选择Station模式时，它作为一个WiFi客户端。它可以连接路由器网络，通过WiFi连接与路由器上的其他设备通信。如下图所示，PC和路由器已经连接，ESP32如果要与PC通信，需要将PC和路由器连接起来。

![](media/station.jpeg)

#### 21.3 实验组件

|![](media/esp32.png)|![](media/lcd2.png)|![](media/4p.png)|![](media/usb.png)|
|-|-|-|-|
|ESP32 Plus主板 *1|I2C LCD1602模块 *1|4P线 *1|USB线 *1|

#### 21.4 模块接线图

I2C 1602 LCD模块的控制引脚：

|I2C 1602 LCD模块（SDA引脚）|SDA|
|-|-|
|I2C 1602 LCD模块（SCL引脚）|SCL|

⚠️ **特别注意：智能家居已经组装好了，这里不需要把I2C 1602 LCD模块拆下来又重新组装和接线，这里再次提供接线图，是为了方便您编写代码！**

![](media/pjt9.png)

#### 21.5 APP下载安装

⚠️ **<span style="color: rgb(255, 76, 65);">特别提醒：</span>如果前面已经下载安装了APP，则这一步骤可以直接跳过。**

**步骤1：** 在手机/平板浏览器的搜索框中输入官网链接： www.keyes-robot.com

![](media/wyx1.png)

**步骤2：** 找到 “**资料中心**”，并且点击它。

![](media/wyx2.png)

**步骤3：** 在页面找到 “**APP下载**”选项，并且点击它。

![](media/wyx3.png)

**步骤4：** 在 “**APP下载**” 页面，找到 “**keyes IoT home**”。

![](media/wyx4.png)

**步骤5：** 根据自己的手机/平板系统选择对应的APP下载安装。选择如下：

![](media/wyx7.png)

**安卓系统**

a\. 点击 "**点击下载**" 按钮，下载对应的 "**keyes IoT home.apk**" 文件。

![](media/wyx5.png)

b\. 按照安装提示进行安装。

![](media/waxy11.jpg)

![](media/wxyx11.jpg)

c\. 下载安装后，单击![](media/IoT-home.jpeg) 打开，出现如下图界面。

![](media/IOT-home1.png)

选择WIFI。

![](media/IOT-home2.png)

![](media/IOT-home3.jpg)


**苹果系统**

a\. 点击 "**跳转APP Store**" 按钮，跳转到 APP Store ![](media/APP-Store.png)


![](media/wyx6.png)


b\. 在 APP Store 上搜索 **keyes IoT home** ，选择 **keyes IoT home** ，然后点击 ![](media/xiazai.png) 获取，下载安装APP即可。

![](media/WASQ11.png)

c\. 下载安装后, 单击![](media/IoT-home.jpeg) 打开，出现如下图界面。

![](media/IOT-home1.png)

选择WIFI

![](media/IOT-home2.png)

![](media/IOT-home3.jpg)

#### 21.6 智能家居连接WiFi的实验代码

⚠️ <span style="color: rgb(255, 76, 65);">**特别提醒：**</span> 打开代码文件后，需要修改ESP32开发板需要连接的WiFi名称与密码，您需要分别将 `ChinaNet-2.4G-0DF0` 和 `ChinaNet@233` 替换为您自己的 Wi-Fi 名称和 WiFi 密码。WiFi名称和WiFi密码修改后才能上传代码，否则你的ESP32开发板将无法连接网络。

![](media/ASA11.png)

⚠️ **<span style="color: rgb(255, 76, 65);">注意：</span> 请确保代码中的WiFi名称和WiFi密码与连接到您的计算机、手机/平板电脑、ESP32开发板和路由器的网络相同，它们必须在同一局域网（WiFi）内。**

⚠️ **<span style="color: rgb(255, 76, 65);">注意：</span>WiFi必须是2.4Ghz频率的，否则ESP32无法连接WiFi，不支持连接5GHz频段的WiFi。**。

实验代码:

![](media/pjtx28.png)

#### 21.7 实验结果

按照接线图接好线，外接电源，选择好正确的开发板板型（ESP32 Dev Module）和 适当的串口端口（COMxx），然后单击按钮![](media/upload.png)上传示例代码至ESP32主控板。示例代码上传成功后，上电后。

⚠️ <span style="color: rgb(255, 76, 65);">**注意：手机/平板需要和智能家居连接同一个WiFi，或者手机/平板打开热点，智能家居连接手机/平板的热点，且示例代码中的WiFi名称与WiFi密码和手机/平板、智能家居是同一个WiFi名称与密码。** </span>

⚠️ **<span style="color: rgb(255, 76, 65);">注意：</span>WiFi必须是2.4Ghz频率的，否则ESP32无法连接WiFi，不支持连接5GHz频段的WiFi。**。

⚠️ **<span style="color: rgb(255, 76, 65);">特别注意：</span> 手机或平板一定要与ESP32开发板连接的是同一个WiFi，否则将无法进入控制页面。还有就是ESP32开发板在使用WiFi功能时功耗很大，需要外接DC电源(电源电压必须充足，最好使用新电池)才能满足它的工作电力需求，如果达不到它的工作电力需求ESP32板将会一直复位导致代码无法正常运行。**

在串口监视器窗口点击![](media/AB0.png)，设置波特率为9600，如果成功连接上WiFi，串口监视器会打印出分配到的IP地址（假如串口监视器没打印出分配到的IP地址，可以按下ESP32主控板上的复位键重启，重新连接WiFi）。不同的网络（WiFi），IP地址是不一样。

![](media/WSA01.png)

同时，LCD1602显示屏也同步显示对应的IP地址。

![](media/qxe12.jpg)

⚠️ **<span style="color: rgb(255, 76, 65);">特别注意：</span>** 在本例中，您可以在APP页面中输入你自己的**ESP32 IP地址**(**这里是以 192.168.3.57 为例，而你需要将本例APP中的IP地址：192.168.3.57 修改成你自己的 ESP32 IP地址**)。

**打开APP，选择WIFI**

![](media/IOT-home2.png)

![](media/IOT-home3.jpg)

在APP上输入LCD1602 显示的IP地址或串口监视器窗口打印的IP地址，然后单击 **CONNECT** 按钮。

![](media/WAXD11.jpg)

连上WIFI之后，分别单击APP上对应的按钮，串口监视器窗口打印接收到的字符串。

![](media/APP3.jpg)

![](media/WSA10.png)

#### 21.8 APP使用说明

手机APP上各个按钮对应的控制字符和各个按钮对应的功能，这里我们整理了一个表格如下：

|按钮:![](media/WIFI-mode.png)|  |功能：选择WIFI模式| 
|-|-|-|
|按钮:![](media/connect.png)|  |功能：WIFI IP 地址连接| 
|按钮:![](media/led1.png)|控制字符：点一下发送 “a”； 再点一下发送“A”。|功能：点一下，开启LED灯；再点一下，关闭LED灯。|
|按钮:![](media/window.png)|控制字符：点一下发送 “b”； 再点一下发送“B”。|功能：点一下，开启窗户； 再点一下，关闭窗户。|
|按钮:![](media/music.png)|控制字符：点一下发送 “c”。|功能：点一下，播放一首歌曲。|
|按钮:![](media/whistle.png)|控制字符：点一下发送 “d”。|功能：点一下，蜂鸣器“哔”响一声。|
|按钮:![](media/door.png)|控制字符：点一下发送 “e”； 再点一下发送“E”。|功能：点一下，开启门； 再点一下，关闭门。|
|按钮:![](media/fan.png)|控制字符：点一下发送 “f”； 再点一下发送“F”。|功能：点一下，开启风扇； 再点一下，关闭风扇。|
|按钮:![](media/raindrop.png)| |功能：显示区显示雨滴值。|
|按钮:![](media/humful-gas.png)| |功能：显示区显示危险气体状态safe或dangerous。|
|按钮:![](media/anybody.png)| |功能：显示区显示人体检测状态someone或no one。|
|按钮:![](media/temper.png)| |功能：显示区显示温度数值 |
|按钮:![](media/humidy.png)| |功能：显示区显示湿度数值 |
|按钮:![](media/sfx1.png)|控制字符：点一下发送 “o”； 再点一下发送“O”。|功能：点一下，RGB灯开启模式一氛围灯；再点一下，关闭RGB灯。|
|按钮:![](media/sfx2.png)|控制字符：点一下发送 “p”； 再点一下发送“P”。|功能：点一下，RGB灯开启模式二跑马灯；再点一下，关闭RGB灯。|
|按钮:![](media/rgb.png)|控制字符：点一下发送 “g”； 再点一下发送“G”。以此类推。|功能：点一下，RGB灯开启红色；再点一下，关闭RGB灯。以此类推。|
