正点原子 esp32s3使用手机控制led灯的开关

本人是新手,刚开始接触esp32板,希望能与大家交流。

开发板使用:正点原子ATK_DNESP32S3 V1.3

IDE: VSCODE + PLATFORMIO

在VS Code新建工程,工程命名为:wifi

主板选择对应主板,这里由于没有找到正点原子对应的主板,我自已导入了一个。

实验步骤:

主板GPIO20口连led,在led上串接一个电阻,然后接回gnd接口,构成回路。让 ESP32S3 作为 WiFi 热点(AP),手机可以直接连接ESP32S3,然后控制led灯的远程控制。

实验结果:

用手机连上开发板的热点,然后通过浏览器访问http://192.168.4.1

在页面上有 on 和 off 两个按钮,当点击 on 时,通过gpio20口连接的led灯点亮。当点击 off 时,led灯灭。

新建工程:

主板选择对应主板,这里由于没有找到正点原子对应的主板,我自已导入了一个。

该页面可以点击以下图标打开:

然后,在src目录下的main.cpp编辑代码:

#include <Arduino.h>
#include <WiFi.h>
#include <WebServer.h>

const char* ssid = "ESP32S3_LED";
const char* password = "12345678";
const int ledPin = 20; // GPIO20

WebServer server(80);

void handleRoot() {
  bool ledState = digitalRead(ledPin);
  String html = "<html><head><title>LED Control</title>";
  html += "<style>";
  html += "body{font-size:3em;text-align:center;margin-top:60px}";
  html += ".btn{font-size:3em;padding:40px 80px;margin:30px;background-color:green;";
  html += "color:white;border:none;border-radius:20px;cursor:pointer}";
  html += ".active{background-color:red}";
  html += "</style></head><body>";
  html += "<h1>LED Control</h1>";
  
  // ON button
  html += "<a href='/on'><button class='btn";
  html += ledState ? " active" : "";
  html += "'>ON</button></a>";
  
  // OFF button
  html += "<a href='/off'><button class='btn";
  html += !ledState ? " active" : "";
  html += "'>OFF</button></a>";
  
  html += "</body></html>";
  server.send(200, "text/html", html);
}

void handleOn() {
  digitalWrite(ledPin, HIGH);
  handleRoot();
}

void handleOff() {
  digitalWrite(ledPin, LOW);
  handleRoot();
}

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);

  WiFi.softAP(ssid, password); // 启动AP模式
  Serial.println("WiFi AP started.");
  Serial.print("IP address: ");
  Serial.println(WiFi.softAPIP());

  server.on("/", handleRoot);
  server.on("/on", handleOn);
  server.on("/off", handleOff);
  server.begin();
}

void loop() {
  server.handleClient();
}

代码详解:

WebServer server(80);
  • 创建一个 Web 服务器对象,监听 80 端口。

handleRoot() 函数

  • 生成网页,显示两个按钮(ON/OFF),根据 LED 当前状态高亮对应按钮。
  • 按钮样式设置成大且明显,以适应手机浏览。
void handleOn() {
  digitalWrite(ledPin, HIGH);
  handleRoot();
}

void handleOff() {
  digitalWrite(ledPin, LOW);
  handleRoot();
}
  • /on 路径点亮 LED 并刷新主页。
  • /off 路径关闭 LED 并刷新主页。
  WiFi.softAP(ssid, password); // 启动AP模式
  Serial.println("WiFi AP started.");
  Serial.print("IP address: ");
  Serial.println(WiFi.softAPIP());
  1. WiFi.softAP(ssid, password);
    让 ESP32S3 作为 WiFi 热点(AP模式),创建名为 ESP32S3_LED、密码为 12345678 的无线网络。手机等设备可以直接连接这个 WiFi。

  2. Serial.println("WiFi AP started.");
    在串口输出“WiFi AP started.”,提示热点已启动。

  3. Serial.print("IP address: "); Serial.println(WiFi.softAPIP());
    在串口输出热点的 IP 地址(通常是 192.168.4.1),方便在浏览器访问控制页面。

  4. server.on("/", handleRoot);
    设置 Web 服务器,当访问根路径 / 时,调用 handleRoot(),显示控制页面。

  5. server.on("/on", handleOn);
    设置 Web 服务器,当访问 /on 时,调用 handleOn(),点亮 LED。

  6. server.on("/off", handleOff);
    设置 Web 服务器,当访问 /off 时,调用 handleOff(),关闭 LED。

  7. server.begin();
    启动 Web 服务器,开始监听 HTTP 请求。

编译:

下载:

在无线局域中找到ESP32S3_LED,输入密码 12345678 进行连接:

打开手机浏览器,访问 http://192.168.4.1

点击ON, 可以看到led灯点亮了,点击OFF, 可以看到led又熄灭了。

### 关于正点原子 ESP32-S3 开发板资料与教程 #### 原理图获取 针对希望了解或使用正点原子 ESP32-S3 开发板的开发者而言,可以访问特定仓库来下载该开发板的相关原理图文件。此资源不仅提供了硬件层面的设计细节,还便于深入理解设备内部结构及其工作方式[^1]。 #### 初步认知与发展特性 对于初次接触这款开发板的人来说,有专门的文章介绍了其基本特性和优势所在。文章指出,正点原子推出的这款ESP32S3开发板拥有高达240MHz的工作频率,并集成了Wi-Fi和蓝牙模块,在此基础上更进一步支持AI应用程序的研发活动[^2]。 #### 实验指导文档 为了帮助使用者快速入门并掌握如何操作这枚微控制器,存在一系列详细的实验指南。例如,在其中一个实例中提到通过配置串口参数实现每两秒钟向终端发送一次“Hello world!!!”,与此同时LED会按照一秒间隔闪烁的方式运行,这些具体的实践案例有助于加深学习效果[^3]。 #### FreeRTOS API 使用说明 当涉及到多任务处理机制时,则可以通过研究有关`mutex_lock`函数的具体实现——即它实际上是调用了FreeRTOS下的`xSemaphoreTake()`方法——从而更好地理解和运用实时操作系统中的同步原语概念[^4]。 综上所述,上述链接均能为想要深入了解正点原子 ESP32-S3 开发板以及围绕其展开编程工作的用户提供宝贵的参考资料和支持材料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FightingFreedom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值