Перейти до вмісту
    Arduino / WiFi-палець на ESP8266

    WiFi-палець на ESP8266

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    Якщо ESP 8266 як в мене то зробити такі дії:

    У File → Preferences
    в полі Additional Boards Manager URLs додати:

    https://github.com/esp8266/Arduino/releases/download/3.1.2/package_esp8266com_index.json

    Потім:
    Tools → Board → Boards Manager

    • знайди esp8266
    • встанови “esp8266 by ESP8266 Community”

    В TOOLS ARDUINO IDE → BOARD

    NodeMCU (ESP-12E / ESP-12F) ← найчастіше

    Робочий скетч для ESP:

    Ми створимо простий веб-сервер. Коли ви перейдете за певним посиланням, ESP натисне кнопку.

    #include <ESP8266WiFi.h>
    #include <ESP8266WebServer.h>
    #include <Servo.h>
    
    // --- НАЛАШТУВАННЯ ---
    const char* ssid = "";  
    const char* password = ""; 
    
    
    const int IDLE_ANGLE = 0;   // Положення "спокою" (палець піднятий)
    const int PRESS_ANGLE = 90; // Положення "натиску" (палець внизу)
    
    const int SERVO_PIN = D5; 
    
    Servo myServo;
    ESP8266WebServer server(80);
    
    void handleRoot() {
      server.send(200, "text/plain", "Wi-Fi Finger is Ready! Use /press?duration=1000");
    }
    
    void handlePress() {
      String durationStr = server.arg("duration");
      int holdTime = 1000; 
    
      if (durationStr != "") {
        holdTime = durationStr.toInt();
      }
      
    
      if (holdTime > 10000) holdTime = 10000;
      if (holdTime < 100) holdTime = 100;
    
      Serial.println("Pressing button...");
      
      myServo.write(PRESS_ANGLE);
      
      delay(holdTime);
      
      myServo.write(IDLE_ANGLE);
      
      Serial.println("Released.");
      server.send(200, "text/plain", "Pressed for " + String(holdTime) + " ms");
    }
    
    void setup() {
      Serial.begin(115200);
      
      // Підключення серво
      myServo.attach(SERVO_PIN);
      myServo.write(IDLE_ANGLE);
    
    
      WiFi.begin(ssid, password);
      Serial.print("Connecting");
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println();
      Serial.print("Connected! IP address: ");
      Serial.println(WiFi.localIP());
    
    
      server.on("/", handleRoot);
      server.on("/press", handlePress);
    
      server.begin();
      Serial.println("HTTP server started");
    }
    
    void loop() {
      server.handleClient();
    }

    Після завантаження прошивки відкрийте Serial Monitor в PuTTY (швидкість 115200), щоб дізнатися IP-адресу вашого ESP8266 (наприклад, 192.168.1.105).

    Активація WiFi-пальця

    Спосіб А: Через браузер (для тесту)

    Просто введіть в адресний рядок: http://192.168.1.105/press?duration=1500

    • Де 192.168.1.105 — IP вашого ESP.
    • duration=1500 — час утримування в мілісекундах (1.5 секунди).

    Спосіб В: Скрипт на Python

    Якщо ви хочете інтегрувати це у складнішу систему на ПК:

    import requests
    
    esp_ip = "192.168.1.105"  # Замініть на ваш IP
    duration = 1000           # Час у мілісекундах
    
    try:
        url = f"http://{esp_ip}/press"
        params = {'duration': duration}
        response = requests.get(url, params=params)
        
        if response.status_code == 200:
            print("Успішно натиснуто!")
        else:
            print("Помилка з'єднання")
    except Exception as e:
        print(f"Помилка: {e}")

    Поради для налаштування

    1. Калібрування кутів: MG996R має кут повороту 180 градусів. У коді стоять значення 0 і 90.
      • Якщо серво крутить “не туди”, змініть місцями значення IDLE_ANGLE та PRESS_ANGLE.
      • Підбирайте кут “натиску” обережно, щоб серво не намагався проломити стіл або корпус пристрою, який ви натискаєте. Почніть з малого кута (наприклад, зміна на 20-30 градусів).
    2. IP Адреса: Щоб IP-адреса не змінювалася після перезавантаження роутера, бажано в налаштуваннях роутера прив’язати статичний IP до MAC-адреси вашого ESP8266.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *