15、ESP32 Wifi

       ESP32 的 WIFI 功能是模块内置的,通过 ESP32 的基础库调用一些函数就可以轻松使用它。

Wifi STA 模式:

        让 ESP32 连接附近 WIFI,可以上网访问数据。

// 代码显示搜索连接附近指定的 WIFI
// 通过 pin 按键可断开连接#include <WiFi.h>
#include <Arduino.h>const char* ssd = "么么";
const char* pasd= "yaoqiao321";const byte LED = 2;
const byte PIN = 4;void setup()
{Serial.begin(115200);pinMode(PIN, INPUT_PULLUP);pinMode(LED, OUTPUT);digitalWrite(LED, LOW);Serial.print("[WiFi] 开始连接:");Serial.println(ssd);WiFi.begin(ssd, pasd);for(uint8_t i=0; i<20; i++){switch(WiFi.status())   // 检查 WiFi 连接状态{case WL_NO_SSID_AVAIL:{Serial.println("[WiFi] 没有找到 SSID");break;}case WL_SCAN_COMPLETED:{Serial.println("[WiFi] 扫描完成");break;}case WL_CONNECTED:{Serial.println("[WiFi] 已连接!");Serial.print("[WiFi] IP 地址:");Serial.println(WiFi.localIP());i = 21;break;}case WL_CONNECT_FAILED:{Serial.print("[WiFi] 失败 - 未连接! ");return;}case WL_CONNECTION_LOST:{Serial.println("[WiFi] 连接丢失");break;}case WL_DISCONNECTED:{Serial.println("[WiFi] 连接已断开");break;}default:{Serial.print("[WiFi] WiFi 状态:");Serial.println(WiFi.status());break;}}delay(1000);if(i == 20){Serial.print("[WiFi] 连接失败!");WiFi.disconnect();      // 断开连接return;}}digitalWrite(LED, HIGH);
}void loop()
{if (digitalRead(PIN) == LOW){Serial.println("[WiFi] 正在断开连接!");if(WiFi.disconnect(true, false)){Serial.println("[WiFi] 已断开连接");}delay(1000);}
}

         官方 API:

// 代码连接 WIFI 访问 NTP 服务器时间#include <Arduino.h>
#include <WiFi.h>const char* ssd = "vivo X80";
const char* pasd= "YQY1122334455";
const char* ntp_server = "ntp.aliyun.com";  // NTP 服务器
const int gmt_offset = 8 * 60 * 60;         // UTC/GMT+8,东 8 时区偏移量,单位秒
const int daylight_offset = 0;              // 夏令时偏移值,单位秒const byte LED = 2;void setup()
{pinMode(LED, OUTPUT);digitalWrite(LED, LOW);Serial.begin(115200);// 设置时区setenv("TZ", "CST-8", 1);   // TZ 是时区环境变量,CST-8 是中国标准时间,1 表示覆盖旧值tzset();    // 作用时区变量Serial.print("[WiFi] 开始连接:");Serial.println(ssd);WiFi.begin(ssd, pasd);while (WiFi.status() != WL_CONNECTED){Serial.println("[WiFi] 正在尝试连接...");delay(1000);}Serial.println("[WiFi] 连接成功");// 同步时间configTime(gmt_offset, daylight_offset, ntp_server);Serial.println("完成时间同步");digitalWrite(LED, HIGH);
}void loop()
{time_t now = 0;struct tm time_info;char strftime_buf[64] = {'\0'};time(&now);localtime_r(&now, &time_info);strftime(strftime_buf, sizeof(strftime_buf), "%Y.%m.%d %A %T", &time_info);Serial.println(strftime_buf);delay(1000);
}


Wifi AP 模式:

        ESP32会自建一个WIFI热点,其他设备可以加入这个热点进行数据交换,类似局域网,不可联网。

        开启 AP 模式:

/*** 设置一个接入点 AP* @param ssid              WiFi 名称 SSID(最多 63 字符)* @param passphrase        WiFi 密码(WPA2 密码最少 8 位),不设置默认为开放性网络* @param channel           WiFi 信道号(1 - 13),最好区分开环境中其他网络,避免信号干扰* @param ssid_hidden       隐藏信号 (0 = 开放网络, 1 = 隐藏网络,需要指定查找)* @param max_connection    最大连接数(1 - 4),默认 4
*/
bool WiFiAPClass::softAP(const char* ssid, const char* passphrase, int channel, int ssid_hidden, int max_connection, bool ftm_responder)

         配置 IP(不是必须的):

/*** 配置接入点* @param local_ip      WIFI IP* @param gateway       网关* @param subnet        子网掩码*/
bool WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dhcp_lease_start)

        关闭 AP 模式:

/*** 断开网络连接 (关闭 AP)* @param wifioff disable mode?* @return one value of wl_status_t enum*/
bool WiFiAPClass::softAPdisconnect(bool wifioff)
#include <Arduino.h>
#include <WiFi.h>WiFiAPClass WiFiAP;const char* ssd = "ESP32_Wifi"; 
const char* pasd = "12345678";IPAddress local_IP(192, 168, 1, 1);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);void setup()
{Serial.begin(115200);WiFi.softAPConfig(local_IP, gateway, subnet);   // 配置 本地IP 网关IP 子网掩码WiFi.softAP(ssd, pasd);   // AP 模式,创建一个 ESP32_Wifi 热点
}void loop()
{delay(2000);Serial.print("本地 IP: ");Serial.println(WiFi.softAPIP());Serial.print("广播 IP: ");Serial.println(WiFi.softAPBroadcastIP());Serial.print("接入网络 ID: ");Serial.println(WiFi.softAPNetworkID());Serial.print("子网掩码: ");Serial.println(WiFi.softAPSubnetCIDR());Serial.print("主机名: ");Serial.println(WiFi.softAPgetHostname());Serial.print("热点 MAC: ");Serial.println(WiFi.softAPmacAddress());Serial.print("连接客户端: ");Serial.println(WiFi.softAPgetStationNum());
}


连接附近指定 WIFI:

#include <Arduino.h>
#include <WiFi.h>void setup()
{Serial.begin(115200);int num = WiFi.scanNetworks();Serial.print("可用WIFI数:");Serial.println(num);Serial.println("WIFI信息如下:");for(int a=0; a<=num; a++)Serial.println(WiFi.SSID(a));Serial.println("输入 WIFI 和密码:");
}void loop()
{while(Serial.available()>0){String SD = Serial.readStringUntil(',');    // 读取","以前的字符串const char* ssd = SD.c_str();   // String 转换 char*delay(100);String PSD = Serial.readStringUntil('\0');    // 读取"\0"以前的字符串const char* pasd = PSD.c_str();delay(1000);Serial.print("WIFI:");Serial.println(SD);Serial.print("PSD:");Serial.println(PSD);WiFi.begin(ssd,pasd);while(WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println("connected success!");Serial.print("IP:");Serial.println(WiFi.localIP());}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/6131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纯血鸿蒙APP实战开发——主页瀑布流实现

介绍 本示例介绍使用ArkUIWaterFlow组件和LazyForEach实现瀑布流场景。该场景多用于购物、资讯类应用。 效果图预览 使用说明 加载完成后显示整个列表&#xff0c;超过一屏时可以上下滑动。 实现思路 创建WaterFlowDataSource类&#xff0c;实现IDataSource接口的对象&…

Furion项目的单元测试

.Net项目中如果要对Controller或者服务进行测试一般要用mock创建需要注入的实例, 要配置好这些实例还挺复杂的 在Furion帮我们实现了单元测试的构造函数注入, 让单元测试变得简单, 具体步骤如下 在解决方面里面新增一个xunit的测试项目TestProject1, 测试项目一般单独放在test…

Java学习第04天-方法

文章目录 方法方法的定义、调用方法使用的常见问题方法案例方法调用的内存图方法的参数传递机制基本类型参数引用类型参数案例 方法重载单独使用return关键字 方法 方法是一种语法结构&#xff0c;它可以把一段代码封装成一个功能&#xff0c;以方便重复调用 好处 提高了代码的…

查看mysql数据库大小、表大小和最后修改时间

1.查看数据库表基本信息。 select * from information_schema.TABLES where information_schema.TABLES.TABLE_SCHEMA ‘数据库名’ and information_schema.TABLES.TABLE_NAME ‘表名’; 2.查看MySQL数据库大小 SELECT sum(DATA_LENGTH)sum(INDEX_LENGTH) FROM informati…

JAVA面试之MQ

如何保证消息的可靠传输&#xff1f;如果消息丢了怎么办 数据的丢失问题&#xff0c;可能出现在生产者、MQ、消费者中。 &#xff08;1&#xff09;生产者发送消息时丢失&#xff1a; ①生产者发送消息时连接MQ失败 ②生产者发送消息到达MQ后未找到Exchange(交换机) ③生产者发…

pcb沉金工艺有什么作用:为何它成为电子制造的必备工艺?

在电子制造业中&#xff0c;PCB&#xff08;印刷电路板&#xff09;的质量和性能对于产品的整体表现至关重要。沉金工艺因其能够显著提升pcb的焊接性能、耐腐蚀性和导电性能&#xff0c;已成为电子制造不可或缺的一部分。 一、沉金工艺的作用 1.焊接性能的提升&#xff1a;工…

第一次用ssh登录树莓派or linux服务器出现Permission denied (publickey)

authenticity of host ) cant be established ssh userip Permission denied (publickey) 解决办法&#xff1a; 第一步&#xff1a; PasswordAuthentication yes 第二步&#xff1a; service sshd restart 这两步一步都不能少 注意&#xff01;

游资宁波桑田路悟道心法

“书藏古今&#xff0c;港通天下”–说的是甬城。 孙中山先生说&#xff0c;“凡吾国各埠&#xff0c;莫不有币人事业&#xff0c;即欧洲各国&#xff0c;亦多雨商足迹”&#xff0c;“甬人开风气之先&#xff0c;为各省之模范”–说的是甬人。 “炒股不跟解放南&#xff0c;…

如何搭建本地的 NPM 私有仓库 Nexus

NPM 本地私有仓库&#xff0c;是在本地搭建NPM私有仓库&#xff0c;对公司级别的组件库进行管理。在日常开发中&#xff0c;经常会遇到抽象公共组件的场景&#xff0c;在项目内部进行公用。新的项目开始时&#xff0c;也会拷贝一份创建一个新的项目&#xff0c;这样做不易于管理…

k8s部署maven项目

failed to verify certificate: x509: certificate signed by unknown authority 今天在执行kubectl get nodes的时候报的证书验证问题&#xff0c;看了一圈首次搭建k8s的都是高频出现的问题。 couldn’t get current server API group list: Get “https://kubernetes.docker…

虚拟机网络桥接模式无法通信,获取到的ip为169.254.X.X

原因&#xff1a;VMware自动选择的网卡可能不对 解决&#xff1a;编辑-虚拟网络编辑器-更改桥接模式-选择宿主机物理网卡&#xff0c;断开虚拟机网络连接后重新连接即可

能源监控新方案:IEC104转MQTT网关在新能源发电中的应用

需求背景 近些年&#xff0c;我国新能源产业快速发展&#xff0c;光伏、风电等新能源项目高速增长&#xff0c;新能源发电已经成为国家能源结构的重要组成部分。 打造数字化、智能化、信息化的电力物联网系统&#xff0c;实现光伏风电等新能源发电站的远程监控、远程维护是新能…

每日一题-贪心算法

目录 前言 买入股票的最佳时机(1) 买入股票的最好时机(2) 前言 当你踏上贪心算法的旅程&#xff0c;仿佛置身于一场智慧的盛宴&#xff0c;每一步都是对问题解决方案的审慎选择&#xff0c;每一次决策都是对最优解的向往。贪心算法以其简洁高效的特性&#xff0c;被广泛运用于…

【golang学习之旅】Go的 switch 分支语句

系列文章 【golang学习之旅】报错&#xff1a;a declared but not used 【golang学习之旅】Go 的基本数据类型 【golang学习之旅】Go 的循环结构 【golang学习之旅】Go里面 if 条件判断语句 目录 系列文章switch 分支fallthrough 关键字无条件 switch switch 分支 有些时候需…

esp32-cam 1. 出厂固件编译与测试

0. 环境 - ubuntu18 - esp32-cam - usb转ttl ch340 硬件连接 esp32-camch340板子U0RTXDU0TRXDGNDGND5V5V 1. 安装依赖 sudo apt-get install vim sudo apt install git sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial p…

Qt 信号槽中信号重名解决办法

1、类似与Qt4中的写法&#xff1a; 2、函数指针 3、泛型 connect(ui->combox, QOverload<int>::of(&QCombox::currentIndexChanged), this ,&mainwindow::onindexchange);

LLM应用:让大模型prompt总结生成Mermaid流程图

生成内容、总结文章让大模型Mermaid流程图展示&#xff1a; mermaid 美人鱼, 是一个类似 markdown&#xff0c;用文本语法来描述文档图形(流程图、 时序图、甘特图)的工具&#xff0c;您可以在文档中嵌入一段 mermaid 文本来生成 SVG 形式的图形 Prompt 示例&#xff1a;用横向…

33.Docker安装

Docker由CE和EE两个版本&#xff0c;CE是社区版免费&#xff0c;EE企业版收费。 Docker CE支持64位版本centos7,内核版本不低于3.10&#xff0c;Centos7满足最低内核要求&#xff0c;所以在centos7安装docker。 前期准备工作 使用虚拟机上安装Centos7系统&#xff0c;再安装…

001_Langchain

LangChain LangChain 是一个开源框架,旨在帮助开发者使用大型语言模型(LLMs)和聊天模型构建端到端的应用程序。它提供了一套工具、组件和接口,以简化创建由这些模型支持的应用程序的过程。LangChain 的核心概念包括组件(Components)、链(Chains)、模型输入/输出(Mode…

赶紧收藏!2024 年最常见 100道 Java 基础面试题(二十五)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 100道 Java 基础面试题&#xff08;二十四&#xff09;-CSDN博客 四十九、什么是死锁&#xff1f; 死锁是计算机科学中一个重要的概念&#xff0c;尤其在并发编程和多线程环境中。在Java中&#xff0c;死锁同样是一…