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接口的对象&…

JAVA面试之MQ

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

第一次用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;

如何搭建本地的 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;用横向…

001_Langchain

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

《汇编语言》- 读书笔记 - 附注

《汇编语言》- 读书笔记 - 附注 附注1&#xff1a;Intel 系列微处理器的3种工作模式1. 实模式2. 保护模式保护模式 与 实模式 的主要区别寻址能力内存保护特权级别任务管理和虚拟内存 为何需要保护模式访问受保护资源 3. 虚拟 8086 模式4. 长模式&#xff08;Long Mode&#xf…

R语言学习—6—多元相关与回归分析

1、引子 xc(171,175,159,155,152,158,154,164,168,166,159,164) #身高 yc(57,64,41,38,35,44,41,51,57,49,47,46) #体重 par(marc(5,4,2,1)) #设定图距离画布边缘的距离&#xff1a;下5&#xff0c;左4&#xff0c;上2&#xff0c;右1 plot(x,y) 2、相关…

【C语言实现贪吃蛇】(内含源码)

前言&#xff1a;首先在实现贪吃蛇小游戏之前&#xff0c;我们要先了解Win32 API的有关知识 1.Win32 API Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外&#xff0c;它同时也是一个很大的服务中心&#xff0c;调佣这个中心的各种服务&#xff08;每一…

电话号码的字母组合 【C++】【力扣刷题】

解题思路&#xff1a; 以第一个为例,digits “23”&#xff0c;表明从电话号码的按键中选取2和3这两个字符&#xff0c;然后去寻找它们各自所对应的字母&#xff0c;这里每一个数字字符所对应的字母的不同&#xff0c;0对应的是空字符&#xff0c;而1的话题目中讲到是不对应任…

【webrtc】MessageHandler 6: 基于线程的消息处理:StunRequest实现包发送和超时重传

G:\CDN\rtcCli\m98\src\p2p\base\stun_request.cc使用OnMessage 实现包的发送和包的超时重传StunRequest 一个StunRequest 代表是一个独立的请求的发送STUN消息 要不是发送前构造好的,要不就是按照需要构建的使用StunRequestManager: 每一个STUNRequest 携带一个交互id 写入m…

CUDA和显卡驱动

1.安装显卡驱动 https://www.nvidia.com/download/index.aspx?langen-us 由于我的显卡是RTX4060&#xff0c;因此先选择RTX40系列&#xff0c;然后选择RTX4060&#xff0c;进行安装 2.查看显卡对应的CUDA CUDA安装地址&#xff1a;https://developer.nvidia.com/cuda-toolk…

一文带你了解MySQL的索引分类

文章目录 ☃️分类☃️演示图☃️思考☃️总结 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端开…