#include <WiFi.h>
const char *ssid = "oudafa";
const char *password = "12345678";
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
WiFi.softAP(ssid,password);
Serial.print("Access Point: ");
Serial.println(ssid);
Serial.println(WiFi.softAPIP());
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));
delay(1000);
}
这里面使用了WiFi库里面的softAP()函数,两个参数ssid和password分别代表了在使用esp搭建的wifi的名称和密码,而WiFi.softAPIP()则表示esp32的IP地址,
#include <WiFi.h>
const char* ssid = "feng";
const char* password = "123456789";
void setup()
{
Serial.begin(115200);
pinMode(5, OUTPUT); // set the LED pin mode
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}
void loop(){
}
同样WiFi.begin()则使用了WIFI库里面的begin()函数可以连接到外部局域wifi网络,两个参数也是代表名称和密码,WiFi.localIP()表示在连接当前局域网中的esp32的IP地址
#include <Arduino.h>
#include "WiFi.h"
void mySmartWifiConfig()
{
WiFi.mode(WIFI_MODE_STA);
Serial.println("开启智能配网:");
WiFi.beginSmartConfig();
while (1)
{
Serial.print(".");
delay(500);
if (WiFi.smartConfigDone())
{
Serial.println("配网成功");
Serial.printf("SSID:%s", WiFi.SSID().c_str());
Serial.printf("PSW:%s", WiFi.psk().c_str());
break;
}
}
}
bool autoConfig()
{
WiFi.disconnect(true,true);
WiFi.begin();
for (size_t i = 0; i < 20; i++)
{
int wifiStatus = WiFi.status();
if (wifiStatus == WL_CONNECTED)
{
Serial.println("自动连接成功!");
return 1;
}
else
{
delay(1000);
Serial.println("等待自动配网中...");
}
}
Serial.println("无法自动配网!");
return 0;
}
void setup()
{
Serial.begin(115200);
delay(5000);
if (!autoConfig())
{
mySmartWifiConfig();
}
}
void loop()
{
if (WiFi.isConnected())
{
Serial.println("网络已连接");
delay(1000);
}
}
代码烧入后就进入智能配网模式, 用手机微信扫描安信可官方二维码
#include "Arduino.h"
#include <WiFi.h>
#include <WebServer.h>
#include <ESPmDNS.h>
#include <esp_wifi.h>
const char* AP_SSID = "ESP32_Config"; //热点名称
String wifi_ssid = "";
String wifi_pass = "";
String scanNetworksID = "";//用于储存扫描到的WiFi
#define ROOT_HTML "<!DOCTYPE html><html><head><title>WIFI Config by lwang</title><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head><style type=\"text/css\">.input{display: block; margin-top: 10px;}.input span{width: 100px; float: left; float: left; height: 36px; line-height: 36px;}.input input{height: 30px;width: 200px;}.btn{width: 120px; height: 35px; background-color: #000000; border:0px; color:#ffffff; margin-top:15px; margin-left:100px;}</style><body><form method=\"GET\" action=\"connect\"><label class=\"input\"><span>WiFi SSID</span><input type=\"text\" name=\"ssid\"></label><label class=\"input\"><span>WiFi PASS</span><input type=\"text\" name=\"pass\"></label><input class=\"btn\" type=\"submit\" name=\"submit\" value=\"Submie\"> <p><span> Nearby wifi:</P></form>"
WebServer server(80);
#define RESET_PIN 13 //用于删除WiFi信息
bool AutoConfig();
void wifi_Config();
void setup() {
Serial.begin(115200);
pinMode(RESET_PIN, INPUT_PULLUP);
// 连接WiFi
if (!AutoConfig())
{
wifi_Config();
}
//用于删除已存WiFi
if (digitalRead(RESET_PIN) == LOW) {
delay(1000);
esp_wifi_restore();
delay(10);
ESP.restart(); //复位esp32
}
}
void loop() {
server.handleClient();
while (WiFi.status() == WL_CONNECTED) {
//WIFI已连接
}
}
//用于配置WiFi
void wifi_Config()
{
Serial.println("scan start");
// 扫描附近WiFi
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0) {
Serial.println("no networks found");
scanNetworksID = "no networks found";
} else {
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " " : "*");
scanNetworksID += "<P>" + WiFi.SSID(i) + "</P>";
delay(10);
}
}
Serial.println("");
WiFi.mode(WIFI_AP);//配置为AP模式
boolean result = WiFi.softAP(AP_SSID, ""); //开启WIFI热点
if (result)
{
IPAddress myIP = WiFi.softAPIP();
//打印相关信息
Serial.println("");
Serial.print("Soft-AP IP address = ");
Serial.println(myIP);
Serial.println(String("MAC address = ") + WiFi.softAPmacAddress().c_str());
Serial.println("waiting ...");
} else { //开启热点失败
Serial.println("WiFiAP Failed");
delay(3000);
ESP.restart(); //复位esp32
}
if (MDNS.begin("esp32")) {
Serial.println("MDNS responder started");
}
//首页
server.on("/", []() {
server.send(200, "text/html", ROOT_HTML + scanNetworksID + "</body></html>");
});
//连接
server.on("/connect", []() {
server.send(200, "text/html", "<html><body><font size=\"10\">successd,wifi connecting...<br />Please close this page manually.</font></body></html>");
WiFi.softAPdisconnect(true);
//获取输入的WIFI账户和密码
wifi_ssid = server.arg("ssid");
wifi_pass = server.arg("pass");
server.close();
WiFi.softAPdisconnect();
Serial.println("WiFi Connect SSID:" + wifi_ssid + " PASS:" + wifi_pass);
//设置为STA模式并连接WIFI
WiFi.mode(WIFI_STA);
WiFi.begin(wifi_ssid.c_str(), wifi_pass.c_str());
uint8_t Connect_time = 0; //用于连接计时,如果长时间连接不成功,复位设备
while (WiFi.status() != WL_CONNECTED) { //等待WIFI连接成功
delay(500);
Serial.print(".");
Connect_time ++;
if (Connect_time > 80) { //长时间连接不上,复位设备
Serial.println("Connection timeout, check input is correct or try again later!");
delay(3000);
ESP.restart();
}
}
Serial.println("");
Serial.println("WIFI Config Success");
Serial.printf("SSID:%s", WiFi.SSID().c_str());
Serial.print(" LocalIP:");
Serial.print(WiFi.localIP());
Serial.println("");
});
server.begin();
}
//用于上电自动连接WiFi
bool AutoConfig()
{
WiFi.begin();
for (int i = 0; i < 20; i++)
{
int wstatus = WiFi.status();
if (wstatus == WL_CONNECTED)
{
Serial.println("WIFI SmartConfig Success");
Serial.printf("SSID:%s", WiFi.SSID().c_str());
Serial.printf(", PSW:%s\r\n", WiFi.psk().c_str());
Serial.print("LocalIP:");
Serial.print(WiFi.localIP());
Serial.print(" ,GateIP:");
Serial.println(WiFi.gatewayIP());
return true;
}
else
{
Serial.print("WIFI AutoConfig Waiting......");
Serial.println(wstatus);
delay(1000);
}
}
Serial.println("WIFI AutoConfig Faild!" );
return false;
}
结构化程序设计是采用顺序结构、选择结构(IF语句)、循环结构(FOR,WHILE语句)、子程序等来进行程序设计的一种编程典范。
Arduino-ESP32与ESP-IDF的版本对应表。
Arduino-ESP32提供了多种文件系统解决方案,本文将深入解析SPIFFS、LittleFS和SD卡三种主流存储方案,帮助你做出最佳选择。
ESP32-P4-WIFI6-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 BLE 5 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等。
ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。
ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。
Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789
本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。
本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。
ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。
ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。