如何使用ESP32从网页控制伺服电机

释放双眼,带上耳机,听听看~!

我们将使用ESP32从网页控制伺服电机,这比使用Arduino容易得多。

在这个项目中,我们将使用ESP32从网页控制伺服电机。从Arduino控制伺服电机非常容易,但是使用ESP32来控制它有点困难,因为ESP32不具有Analogwrite()函数。因此,借助伺服电机的库,我们将能够控制舵机。

硬件

  • 1个 ESP32
  • 1个 伺服马达
  • 1个 连接线

电路原理图

伺服电机的黄线为信号线;将其连接到ESP32的D15引脚。红色线是电源线;红色线是电源线。将其连接到ESP32的3.3V。黑线是地线;黑线是GND。将其连接到ESP32的GND。

如何使用ESP32从网页控制伺服电机

代码讲解

首先,我们包含了Wi-Fi和伺服电机的库。对于Arduino,我们对PWM使用了“ analogwrite()”命令,但对于ESP32,“ analogwrite()”命令不起作用。因此,我们使用的库将使我们能够从ESP32引脚获取PWM输出。

#include "servo.h"

然后,我们存储了Wi-Fi名称和密码,以便以后可以连接。之后,我们选择了将在其中创建服务器的端口80。

const char* wifi_pass = "qutaojiao";    // Your Wifi network password here
WiFiServer server(80);                   // Server will be at port 80

在初始化函数中,我们使用库函数定义了将伺服电机连接到的引脚,并将伺服电机移至90度(已设置为初始位置)。

ledcAttachPin(15, 1);   // GPIO 15 assigned to channel 1
ledcWrite(1, servo_pos); // Moved the servo to 90 degree

然后,使用上面提供的信息将ESP32连接到Wi-Fi网络。如果与Wi-Fi网络的连接成功,则串行监视器上将显示“连接成功”;如果与Wi-Fi网络的连接不成功,它将继续尝试直到连接到Wi-Fi。 Fi网络。

  Serial.print(wifi_name);
  WiFi.begin(wifi_name, wifi_pass);       // Connecting to the wifi network
  while (WiFi.status() != WL_CONNECTED)   // Waiting for the response of wifi network
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("Connection Successful");

以下命令将在串行监视器上显示IP地址。这是将在其中创建服务器的IP地址。


以下命令将启动服务器:

server.begin();

在循环函数中,首先我们检查是否有任何客户端请求可用。如果有任何客户请求,我们将阅读该请求并将其存储在字符中。我们将通过发送HTML命令来响应此客户请求,这将在我们控制伺服电机的位置创建网页。

WiFiClient client = server.available();   //Checking if any client request is available or not
  if (client)
  {
    boolean currentLineIsBlank = true;
    String buffer = "";  
    while (client.connected()){
      if (client.available()) {           // if there is some client data available
        char c = client.read(); 
        buffer+=c;                        // read a byte
        if (c == 'n' && currentLineIsBlank) {  // check for newline character
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();    
          client.print("ESP32");
          client.print("
ESP32 Servo Control 

");
          client.print("Left");
          client.print("Right"); 
          client.print("");
          break;      // break out of the while loop:

按下网页上的向左或向右按​​钮时,网页会将信息发送到伺服器将移至的网络服务器:

if(buffer.indexOf("GET /?moveright")>=0)
          {
            if (servo_pos > 8000)
            {
              servo_pos = 8000;
            }
            servo_pos = servo_pos += 1000;
            ledcWrite(1, servo_pos);
            delay(100);
          }
            
          if(buffer.indexOf("GET /?moveleft")>=0)
            {
              if (servo_pos < 0)
              {
                servo_pos = 0;
              }
            servo_pos = servo_pos -= 1000;
            ledcWrite(1, servo_pos);
            delay(100);

完整代码

给TA打赏
共{{data.count}}人
人已打赏
ArduinoESP32ESP32-进阶免费项目

如何使用ESP32控制继电器模块

2019-11-20 11:16:44

ESP32-进阶

使用 Arduino IDE 的 LoRa ESP32 – 入门

2021-6-18 15:12:11

10 条回复 A文章作者 M管理员
  1. Luca

    已经补充完整了代码

  2. Jason3068

    没有完整的吗?

    • Luca

      头文件为

      #include "servo.h"

      #include "ESP8266WiFi.h"

      双引号换成尖括号,文中的被系统防火墙过滤掉了

  3. 惊涛骇浪

    很赞

  4. 格菲尔曼

    有没有网页的教程啊,求

    • Luca

      网页相关的教程可以去w3cschool看看

  5. 格菲尔曼

    还是说这个可以生成网页?

    • Luca

      这个不能生成网页 只是可以打开网页来控制舵机

  6. 偏执

    有没有完整的代码

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
'); })();