本节目标
掌握ESP32连接WiFi的方法,学习舵机角度控制,最终实现一个网页端控制舵机角度的综合小Demo。
学习记录
1. WiFi连接与网络服务
使用ESP32的STA模式连接路由器,串口打印本机IP,并通过WebServer搭建基础HTTP服务。
2. 舵机基础控制
使用ESP32Servo库完成舵机初始化,设置50Hz和脉宽范围,通过write接口控制舵机在0~180度间转动。
3. 综合小Demo:WiFi控制舵机
将Web接口与舵机控制逻辑组合,通过浏览器访问不同路由即可切换舵机角度,实现远程控制效果。
项目代码(节选)
下面展示核心逻辑:连接WiFi、注册控制路由、设置舵机角度。
#include <WiFi.h>
#include <WebServer.h>
#include <ESP32Servo.h>
const char* WIFI_SSID = "YOUR_WIFI_SSID";
const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD";
WebServer server(80);
Servo myServo;
static const int SERVO_PIN = 4;
static const uint16_t SERVO_MIN_US = 500;
static const uint16_t SERVO_MAX_US = 2500;
int currentAngle = 90;
void handleSetAngle(int angle) {
angle = constrain(angle, 0, 180);
currentAngle = angle;
myServo.write(currentAngle);
server.send(200, "text/plain", "Servo angle set to " + String(currentAngle));
}
void setup() {
Serial.begin(115200);
myServo.setPeriodHertz(50);
myServo.attach(SERVO_PIN, SERVO_MIN_US, SERVO_MAX_US);
myServo.write(currentAngle);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(300);
}
server.on("/", HTTP_GET, []() {
server.send(200, "text/plain", "Use /servo/0 /servo/90 /servo/180");
});
server.on("/servo/0", HTTP_GET, []() { handleSetAngle(0); });
server.on("/servo/90", HTTP_GET, []() { handleSetAngle(90); });
server.on("/servo/180", HTTP_GET, []() { handleSetAngle(180); });
server.begin();
Serial.println(WiFi.localIP());
}
void loop() {
server.handleClient();
}
图片展示



