项目37 WiFi 测试

项目37 WiFi 测试#

1. 实验简介:

在本实验中,我们先使用ESP32的WiFi Station模式读取WiFi的IP地址,然后通过APP连接WiFi来读取APP上各功能按钮发送的字符。

2. 实验元件:

Img

Img

Img

ESP32*1

USB 线*1

智能手机/平板电脑(自备)*1

3. 实验接线:

使用USB线将ESP32主板连接到电脑上的USB口。

Img

4. 安装APP:

⚠️ 特别提醒:如果已经在手机/平板上安装好了APP,则这一步骤可以直接跳过;否则,需要参照以下步骤在手机/平板上来安装APP。

Img

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

Img

步骤2: 找到 “资料中心”,并且点击它。

Img

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

Img

步骤4: 在 “APP下载” 页面,找到 “keyes wifi”。

Img

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

Img

安卓系统(Android)

a. 点击 “点击下载” 按钮,下载对应的 “keyes wifi.apk” 文件。

Img

b. 按照安装提示进行下载安装。

Img

Img

Img

Img

Img

c. 下载安装后,打开 keyes wifi APP,出现如下图界面。

Img

苹果系统(IOS)

a. 点击 “跳转APP Store” 按钮,跳转到 APP Store

Img

b. 在 APP Store 上的搜索框输入 keyes link,点击搜索,出现下载界面,点击 “Img”,就可以下载安装 keyes link 的APP。接下来的操作和安卓系统类似的,可以参考上面安卓系统的步骤进行操作。

5. 项目代码:

特别注意:确保计算机网络,手机/平板的网络,ESP32主板,路由器,代码中输入你自己的WiFi名称和密码都必须是在同一个局域网(WiFi)下。

Img

//**********************************************************************************
/*
 * 文件名   : WIFI 测试
 * 描述 : Wifi模块测试Wifi ip
*/

#include <Arduino.h>
#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiClient.h>

String item = "0";
const char* ssid = "ChinaNet-2.4G-0DF0";
const char* password = "ChinaNet@233";
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
  Serial.println("TCP server started");
  MDNS.addService("http", "tcp", 80);
}

void loop() {
  WiFiClient client = server.available();
  if (!client) {
      return;
  }
  while(client.connected() && !client.available()){
      delay(1);
  }
  String req = client.readStringUntil('\r');
  int addr_start = req.indexOf(' ');
  int addr_end = req.indexOf(' ', addr_start + 1);
  if (addr_start == -1 || addr_end == -1) {
      Serial.print("Invalid request: ");
      Serial.println(req);
      return;
  }
  req = req.substring(addr_start + 1, addr_end);
  item=req;
  Serial.println(item);
  String s;
  if (req == "/")
  {
      IPAddress ip = WiFi.localIP();
      String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
      s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>Hello from ESP32 at ";
      s += ipStr;
      s += "</html>\r\n\r\n";
      Serial.println("Sending 200");
      client.println(s);
  }
  //client.print(s);
  client.stop();
}
//**********************************************************************************

特别注意:需要先将实验代码 Img 中的用户Wifi名称和用户Wifi密码改成你们自己的Wifi名称和Wifi密码。

6. 实验现象

特别注意:确保计算机网络,手机/平板的网络,ESP32主板,路由器,代码中输入你自己的WiFi名称和密码都必须是在同一个局域网(WiFi)下。

Img

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

打开串口监视器,设置波特率为 115200,这样,串口监视器打印检测到的WiFi IP地址,然后打开WiFi APP。 在WIFI按钮前面的文本框中输入检测到的WIFI IP地址(例如,下上面串口监视器检测到的IP地址:192.168.1.136),再点击WIFI按钮,“403 Forbidden” 或 “网页无法打开” 就会变成 “192.168.1.136”。这样,就说明APP已经连接上了WIFI。

Img

用手分别点击APP上的各个功能按钮,然后串口监视器会打印接收到的对应字符。

Img

注意: 如果打开串口监视器且设置波特率为115200之后,串口监视器窗口没有显示如下信息,可以按下ESP32的复位键 Img