1 WIFI 验证AP模式(S3建立连接点,所有设备连接到S3,此时S3类似路由器)
#include <Arduino.h>
#include "WiFi.h"
void setup()
{
USBSerial.begin(115200);
WiFi.softAP("ESP_AP", "12345678");
}
void loop()
{
USBSerial.print("主机名:");
USBSerial.println(WiFi.softAPgetHostname());
USBSerial.print("主机IP:");
USBSerial.println(WiFi.softAPIP());
USBSerial.print("主机IPV6:");
USBSerial.println(WiFi.softAPIPv6());
USBSerial.print("主机SSID:");
USBSerial.println(WiFi.SSID());
USBSerial.print("主机广播IP:");
USBSerial.println(WiFi.softAPBroadcastIP());
USBSerial.print("主机mac地址:");
USBSerial.println(WiFi.softAPmacAddress());
USBSerial.print("主机连接个数:");
USBSerial.println(WiFi.softAPgetStationNum());
USBSerial.print("主机网络ID:");
USBSerial.println(WiFi.softAPNetworkID());
USBSerial.print("主机状态:");
USBSerial.println(WiFi.status());
delay(1000);
}
2 WIFI 验证Station模式(S3连接到路由器wifi,此时S3类似一台待上网的手机)
2.1 station模式下WIFI详细信息
#include <Arduino.h>
#include "WiFi.h"
void setup()
{
USBSerial.begin(115200);
WiFi.begin("wifiname", "qkx20212021");
WiFi.setAutoReconnect(true);
}
void loop()
{
USBSerial.print("是否连接:");
USBSerial.println(WiFi.isConnected());
USBSerial.print("本地IP:");
USBSerial.println(WiFi.localIP());
USBSerial.print("本地IPv6:");
USBSerial.println(WiFi.localIPv6());
USBSerial.print("mac地址:");
USBSerial.println(WiFi.macAddress());
USBSerial.print("网络ID:");
USBSerial.println(WiFi.networkID());
USBSerial.print("休息:");
USBSerial.println(WiFi.getSleep());
USBSerial.print("获取状态码:");
USBSerial.println(WiFi.getStatusBits());
USBSerial.print("getTxPower:");
USBSerial.println(WiFi.getTxPower());
USBSerial.print("是否自动连接:");
USBSerial.println(WiFi.getAutoConnect());
USBSerial.print("是否自动重连:");
USBSerial.println(WiFi.getAutoReconnect());
USBSerial.print("获取模式:");
USBSerial.println(WiFi.getMode());
USBSerial.print("获取主机名:");
USBSerial.println(WiFi.getHostname());
USBSerial.print("获取网关IP:");
USBSerial.println(WiFi.gatewayIP());
USBSerial.print("dnsIP:");
USBSerial.println(WiFi.dnsIP());
USBSerial.print("状态:");
USBSerial.println(WiFi.status());
USBSerial.println();
USBSerial.println();
delay(1000);
}
2.2 station模式下同步进行WIFI扫描
#include <Arduino.h>
#include "WiFi.h"
String ssid;
String password;
void setup()
{
USBSerial.begin(115200);
WiFi.mode(WIFI_MODE_STA);
WiFi.disconnect();
delay(100);
USBSerial.println("开始扫描WIFI:");
int n = WiFi.scanNetworks();
if (n)
{
USBSerial.print("扫描到");
USBSerial.print(n);
USBSerial.println("个WIFI");
for (size_t i = 0; i < n; i++)
{
USBSerial.print("WiFi的名称(SSID):");
USBSerial.println(WiFi.SSID(i));
USBSerial.print("WiFi的信号强度(RSSI):");
USBSerial.println(WiFi.RSSI(i));
USBSerial.print("WiFi加密与否:");
USBSerial.println(WiFi.encryptionType(i) == WIFI_AUTH_OPEN ? "未加密" : "加密");
if (WiFi.SSID(i) == "kaixin")
{
ssid = WiFi.SSID(i);
password = "qkx20212021";
}
USBSerial.println();
}
}
else
{
USBSerial.println("没扫描到WIFI");
}
WiFi.begin(ssid.c_str(), password.c_str());
while (!WiFi.isConnected())
{
USBSerial.println(">>>>>>>>>");
}
USBSerial.println("连接成功");
}
void loop()
{
}
2.3 station模式下异步进行WIFI扫描
String ssid = ""
String password = ""
Ticker t1
void aysncScanHandler()
{
if (!WiFi.isConnected())
{
int wifiScanStatus = WiFi.scanComplete()
switch (wifiScanStatus)
{
case -1:
USBSerial.println("扫描中...")
break
case -2:
USBSerial.println("未进行扫描...")
break
default:
USBSerial.println("扫描完成")
for (size_t i = 0
{
USBSerial.print("WiFi的名称(SSID):")
USBSerial.println(WiFi.SSID(i))
USBSerial.print("WiFi的信号强度(RSSI):")
USBSerial.println(WiFi.RSSI(i))
USBSerial.print("WiFi加密与否:")
USBSerial.println(WiFi.encryptionType(i) == WIFI_AUTH_OPEN ? "未加密" : "加密")
if (WiFi.SSID(i) == "kaixin")
{
ssid = WiFi.SSID(i)
password = "qkx20212021"
}
}
WiFi.scanDelete()
t1.detach()
break
}
}
}
void connectAnny()
{
WiFi.begin()
while (!WiFi.isConnected())
{
USBSerial.println(">>>>>>>")
}
USBSerial.println("连接成功")
}
void setup()
{
USBSerial.begin(115200)
WiFi.mode(WIFI_MODE_STA)
WiFi.disconnect()
delay(100)
USBSerial.println("开始扫描WIFI:")
WiFi.scanNetworks(true)
t1.attach(0.5, aysncScanHandler)
}
void loop()
{
if (!WiFi.isConnected())
{
if (ssid == "kaixin")
{
USBSerial.println(ssid)
connectAnny()
}
}
}

3 WIFI UDP
#include <WiFi.h>
#include <WiFiUdp.h>
WiFiUDP Udp;
const char* wifi_SSID="ESP_AP";
const char* wifi_Password="12345678";
uint16_t udp_port=1122;
char incomingPacket[255];
void setup() {
USBSerial.begin(115200);
WiFi.softAP(wifi_SSID,wifi_Password);
USBSerial.println("\n开发板IP地址为:");
USBSerial.println(WiFi.softAPIP());
Udp.begin(udp_port);
}
void loop() {
int Data_length=Udp.parsePacket();
if(Data_length)
{
int len = Udp.read(incomingPacket, 255);
if (len > 0)
{
incomingPacket[len] = 0;
}
Udp.beginPacket(Udp.remoteIP(),Udp.remotePort());
Udp.println("receive data:");
Udp.println(incomingPacket);
Udp.endPacket();
}
}
4 WIFI TCP
#include <WiFi.h>
const char *ssid = "kaixin";
const char *password = "qkx20212021";
const IPAddress serverIP(192,168,146,222);
uint16_t serverPort = 1234;
WiFiClient client;
void setup()
{
USBSerial.begin(115200);
USBSerial.println();
WiFi.mode(WIFI_STA);
WiFi.setSleep(false);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
USBSerial.print(".");
}
USBSerial.println("Connected");
USBSerial.print("IP Address:");
USBSerial.println(WiFi.localIP());
}
void loop()
{
USBSerial.println("尝试访问服务器");
if (client.connect(serverIP, serverPort))
{
USBSerial.println("访问成功");
USBSerial.print("Hello world!");
while (client.connected() || client.available())
{
if (client.available())
{
String line = client.readStringUntil('\n');
USBSerial.print("读取到数据:");
USBSerial.println(line);
client.write(line.c_str());
}
}
USBSerial.println("关闭当前连接");
client.stop();
}
else
{
USBSerial.println("访问失败");
client.stop();
}
delay(5000);
}
5 WIFI HTTP
#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
#define URL "http://www.weather.com.cn/data/sk/101180901.html"
const char* ssid = "kaixin";
const char* password = "qkx20212021";
void setClock() {
configTime(8 * 3600, 0, "2.cn.pool.ntp.org", "time.nist.gov","3.cn.pool.ntp.org");
USBSerial.print(F("Waiting for NTP time sync: "));
time_t nowSecs = time(nullptr);
while (nowSecs < 8 * 3600 * 2) {
delay(500);
Serial.print(F("."));
yield();
nowSecs = time(nullptr);
}
USBSerial.println();
struct tm timeinfo;
if (!getLocalTime(&timeinfo))
{
USBSerial.println("Failed to obtain time");
return;
}
USBSerial.println(&timeinfo, "%F %T %A");
}
void setup() {
USBSerial.begin(115200);
USBSerial.println();
for(uint8_t t = 4; t > 0; t--) {
USBSerial.printf("[SETUP] WAIT %d...\n", t);
USBSerial.flush();
delay(1000);
}
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
USBSerial.print(".");
delay(1000);
}
USBSerial.println(" connected");
setClock();
}
void loop() {
HTTPClient https;
USBSerial.print("[HTTPS] begin...\n");
https.begin(URL);
USBSerial.print("URL: ");
USBSerial.println(URL);
int httpCode = https.GET();
if (httpCode > 0) {
USBSerial.printf("[HTTPS] GET... code: %d\n", httpCode);
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = https.getString();
USBSerial.println(payload);
}
} else {
USBSerial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
}
https.end();
USBSerial.println();
USBSerial.println("Waiting 10s before the next round...");
delay(10000);
}