任务完成办法
1、ESP32 连接到wifi(SAT模式)
2、ESP32 开启web服务
3、ESP32通过前端传来的数据来驱动舵机(GET)
4、完成这个任务
(这个任务很奇怪,我很好奇到底怎么样按压快门,如果说需要做一个模具,然后来按压快门,好像超出了这个任务的价值,但是如果只是驱动舵机,和前面测光的又没有什么关系。虽然蓝牙这一块和测光也没什么关系,也没有说怎么远程连接,很明显不会是做一个安卓或者ios程序。我就智能想到目前这个办法了)
5、遇到的问题
5.1使用arduino的Servo很容易就驱动好舵机了,但是ESP32不兼容
5.2 ledcSetup 和 ledcAttachPin 这两个驱动LED灯的PWM也不能用
5.3 以为是电压的问题,使用Arudino UNO板供电,是4.6V,换了电脑电源是5.03V还是失败。
5.4 接线说明
黄线 ESP32 PIN15
红线 5V电源 
粽线 GND ESP32 GND
(我一直没搞懂,这个板子是3.3v的,舵机是5V的,出题的老师是怎么想的在这种地方设置难度)
看下面的代码
#include <WiFi.h>
#include <WebServer.h>
const char* ssid = "CMCC-NxAn";
const char* password = "mhcsm2m4";
const int servoPin = 15;  // 舵机信号线连接到引脚 15
WebServer server(80); // 创建 Web 服务器对象
// 设置舵机角度的函数
void setServoAngle() {
  // Move servo to 0 degrees
  analogWrite(servoPin, 0);  // 0 degrees (or equivalent pulse width)
  delay(1000);
  // Move servo to 180 degrees
  analogWrite(servoPin, 180);  // 180 degrees (or equivalent pulse width)
  delay(1000);
  // Move servo using microsecond pulse width (example)
  analogWrite(servoPin, 600);  // 600 microseconds
  delay(1000);
  analogWrite(servoPin, 2400);  // 2400 microseconds
  delay(1000);
  // Detach (stop sending pulses)
  analogWrite(servoPin, 4000);  // >=4000 to detach
  delay(1000);
}
void setup() {
  Serial.begin(115200);
 
  // 连接 Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
  pinMode(servoPin, OUTPUT); // 设置舵机引脚为输出模式
  // 设置网页服务
  server.on("/", HTTP_GET, [](){
    Serial.println("Received request for root page");
    String html = "<html><head><style>"
                  "body { margin: 0; height: 100vh; display: flex; justify-content: center; align-items: center; }"
                  "button { width: 100%; height: 100%; font-size: 24px; }"
                  "</style></head><body>"
                  "<button onclick=\"fetch('/snap')\">Press the camera shutter button</button>"
                  "</body></html>";
    server.send(200, "text/html", html);
  });
  // 处理按钮按下请求
  server.on("/snap", HTTP_GET, [](){
    Serial.println("Snap button pressed"); // 请求被接收
    setServoAngle(); // 驱动舵机
    server.send(200, "text/plain", "Shutter pressed"); // 英文响应
    Serial.println("Servo angle set to 90 degrees");
  });
  server.begin(); // 启动服务器
  Serial.println("Server started");
}
void loop() {
  server.handleClient(); // 处理客户端请求
}上面的代码使用乐鑫官方库,构建一个Web服务器,手机浏览器地址栏输入ESP32 获取到的wifi地址,点击”Press the camera shutter button“
就可以驱动舵机按下相机快门了。
注意事项
1、当前逻辑由于没有外网ip,所以你必须要手机和ESP32 在一个局域网内。
2、ESP32 是SAT模式,连接到路由器,要注意路由器必须开启DHCP供ESP32获取IP,不然的就就要设置固定IP。
3、仅支持IPv4,仅IPv6的网络环境无法使用(这种情况目前概率为0)

 
					
				
 
			
			
			
						
			 
					
				 
					
				 
					
				 
					
				 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

