2025年1月16日木曜日

esp8266 servo-m/dcm-pwm/soft-ap radicon/static ip radicon

https://techatronic.com/esp8266-with-servo-motor-control-servo-motor-with-esp8266/


サーボモーターSG90が半分の角度しか回らないので調査


https://www.rocher.kyoto.jp/arbr/?p=1763 に対処方あり

dc-dc stepdown convertorで3.3vをとりだすとesp01がつかえる

servoは上記をとおさず5vをとりだし、制御は3vロジックでいけた

最終コードは

#include <Servo.h> // servo library  
 Servo s1;  
 void setup()  
 {   
  s1.attach(0,500,2400);  // servo attach gpio0 pin of esp01 
 }  
 void loop()   
 {  
   s1.write(0);  
   delay(1000);  
   s1.write(90);  
   delay(1000);  
   s1.write(180);  
   delay(1000);  
 }  


------------------------------------------------------------------------------------------------

https://makers-with-myson.blog.ss-blog.jp/2017-01-14 を参考に

PWMのFREQ/DUTYをセットして成功した DUTYは1000くらいまで設定しないと

モータがうごかんかった PINMODE設定不要だったこと(行儀わるし、書くべし)

https://www.ei.tohoku.ac.jp/xkozima/lab/espTutorial0.html にFREQ目安あり

PWM 周波数が高いほど、使用可能なデューティ分解能は低くなり、その逆も同様です。

https://micropython-docs-ja.readthedocs.io/ja/v1.19.1ja/library/machine.PWM.html より

const in ledPin = 2;

void setup(){

  pinMode(ledPin,OUTPUT);

     analogWriteFreq(1000);

     analogWriteRange(1000);

}

void loop(){

  digitalWrite(4,LOW); // drv8833用、stby3.3vわすれずに

  for(int dutyCycle=0;dutyCycle<1000;dutyCycle++){

    analogWrite(ledPin,dutyCycle);

   delay(10);

  }

 for(int dutyCycle=0;dutyCycle<1000;dutyCycle++){

    analogWrite(ledPin,dutyCycle);

   delay(10);

  }

}

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 // https://cotechworks.ltt.jp/2023/06/05/post-668/ を改変

#include <ESP8266WiFi.h>

#include <ESP8266WebServer.h>

#define WIFI_SSID "ESP8266-softAP"    /* SSID */

#define WIFI_PWD "12345678"           /* パスワード */

#define AIN0 2

#define AIN1 4

ESP8266WebServer server(80);

IPAddress ip( 192, 168, 0, 1 );         /* ESP8266のIPアドレス */

IPAddress subnet( 255, 255, 255, 0 );   /* サブネットマスク */


void setup() {

  pinMode(AIN0,OUTPUT);

  pinMode(AIN1,OUTPUT);

  /* softAPモードに設定 */

  WiFi.mode(WIFI_AP);

  WiFi.softAPConfig(ip, ip, subnet);

  WiFi.softAP(WIFI_SSID, WIFI_PWD);

 

  server.on("/", []() {

    server.send(

      200,

      "text/html",    

      "<h1>Hello! Web Server!</h1>"

      "Click <a href=\"/F\">forward</a>"

      "</br>"

      "Click <a href=\"/B\">backward</a>");

  });


  server.on("/F", []() {

    digitalWrite(AIN0,HIGH);

    digitalWrite(AIN1,LOW);

    delay(100);

    digitalWrite(AIN0,HIGH);

    digitalWrite(AIN1,HIGH);

    server.send(

      200,

      "text/html",    

      "<h1>Hello! Web Server!</h1>"

      "Click <a href=\"/F\">forward</a>"

      "</br>"

      "Click <a href=\"/B\">backward</a>"); 

   });


   server.on("/B", []() {

    digitalWrite(AIN0,LOW);

    digitalWrite(AIN1,HIGH);

    delay(100);

    digitalWrite(AIN0,HIGH);

    digitalWrite(AIN1,HIGH);

    server.send(

      200,

      "text/html",    

      "<h1>Hello! Web Server!</h1>"

      "Click <a href=\"/F\">forward</a>"

      "</br>"

      "Click <a href=\"/B\">backward</a>"); 

   });

  server.begin();


}


void loop() {

  /* クライアントからアクセスがあった時の処理 */

  server.handleClient();

}

-------------------------------------------------------

#include <WiFiClient.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define LED 13                    //LED点灯に使用するピン
ESP8266WebServer server(80);
#define AIN0 4
#define AIN1 2
#define BIN0 12
#define BIN1 14

void onroot() {
    String msg ;
    msg += "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"><title>LED Button</title></head><body>";
    msg += "<script>";
    msg += "function sendOn(){" ;
    msg += "send(\"/on/\");";
    msg += "document.getElementById(\"LEDstatus\").innerHTML=\"ON!\";";
    msg += "}";
    msg += "function sendOff(){";
    msg += "send(\"/off/\");";
    msg += "document.getElementById(\"LEDstatus\").innerHTML=\"OFF!\";";
    msg += "}";
    msg += "function sendOnL(){" ;
    msg += "send(\"/onL/\");";
    msg += "document.getElementById(\"LEDstatus\").innerHTML=\"ON!\";";
    msg += "}";
    msg += "function sendOffR(){";
    msg += "send(\"/offR/\");";
    msg += "document.getElementById(\"LEDstatus\").innerHTML=\"OFF!\";";
    msg += "}";
  
    msg += "function send(url){";
    msg += "var xhr = new XMLHttpRequest();";
    msg += "xhr.open(\"GET\", url, true);";
    msg += "xhr.send();";
    msg += "}";
    msg += "</script>";
    msg += "<button id=\"on\" onClick=sendOn()>LED ON</button>";
    msg += "<button id=\"off\" onClick=sendOff()>LED OFF</button>";
    msg += "<button id=\"onL\" onClick=sendOnL()>LED ON L</button>";
    msg += "<button id=\"offR\" onClick=sendOffR()>LED OFF R</button>";
    msg += "<p id=\"LEDstatus\"></p>";
    msg += "</body></html>";

    server.send(200, "text/html", msg);
}

void LedOn(){
  Serial.println("ON");
  digitalWrite(LED,HIGH);
  
  digitalWrite(AIN0,HIGH);
  digitalWrite(AIN1,LOW);
  digitalWrite(BIN0,HIGH);
  digitalWrite(BIN1,LOW);
  delay(500);
  digitalWrite(AIN0,LOW);
  digitalWrite(AIN1,LOW);
  digitalWrite(BIN0,LOW);
  digitalWrite(BIN1,LOW);
  
  server.send(200, "text/html","OK");
}

void LedOff(){
  Serial.println("OFF");
  digitalWrite(LED,LOW);
  
  digitalWrite(AIN0,LOW);
  digitalWrite(AIN1,HIGH);
  digitalWrite(BIN0,LOW);
  digitalWrite(BIN1,HIGH);
  delay(500);
  digitalWrite(AIN0,LOW);
  digitalWrite(AIN1,LOW);
  digitalWrite(BIN0,LOW);
  digitalWrite(BIN1,LOW);

  server.send(200, "text/html","OK");
}
void LedOnL(){
  Serial.println("ON");
  digitalWrite(LED,HIGH);
  
  digitalWrite(AIN0,HIGH);
  digitalWrite(AIN1,LOW);
  digitalWrite(BIN0,LOW);
  digitalWrite(BIN1,HIGH);
  delay(500);
  digitalWrite(AIN0,LOW);
  digitalWrite(AIN1,LOW);
  digitalWrite(BIN0,LOW);
  digitalWrite(BIN1,LOW);
  
  server.send(200, "text/html","OK");
}

void LedOffR(){
  Serial.println("OFF");
  digitalWrite(LED,LOW);
  
  digitalWrite(AIN0,LOW);
  digitalWrite(AIN1,HIGH);
  digitalWrite(BIN0,HIGH);
  digitalWrite(BIN1,LOW);
  delay(500);
  digitalWrite(AIN0,LOW);
  digitalWrite(AIN1,LOW);
  digitalWrite(BIN0,LOW);
  digitalWrite(BIN1,LOW);

  server.send(200, "text/html","OK");
}

void setup() {

    pinMode(LED, OUTPUT);
    pinMode(AIN0, OUTPUT);
    pinMode(AIN1, OUTPUT);
    pinMode(BIN0, OUTPUT);
    pinMode(BIN1, OUTPUT);
    digitalWrite(AIN0, LOW);
    digitalWrite(AIN0, LOW);
    digitalWrite(BIN0, LOW);
    digitalWrite(BIN0, LOW);
    Serial.begin(115200);
    Serial.println("");
    Serial.println("ESP8266 Wifi test");

     
    //  WiFi.config(IPAddress(192, 168, 43, 160), WiFi.gatewayIP(), WiFi.subnetMask());
    
    WiFi.config(IPAddress(192,168,43,160),IPAddress(192,168,43,1),IPAddress(255,255,255,0));

    
    WiFi.begin("HUAWEI@nova@lite@3+","99991111");
 
    WiFi.mode(WIFI_STA);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.print("Connected as ");
    Serial.println(WiFi.localIP());
    Serial.println(WiFi.gatewayIP());
    Serial.println(WiFi.subnetMask());
    // Web server setting
    server.on("/", onroot);
    server.on("/on/", LedOn);
    server.on("/off/", LedOff);
    server.on("/onL/", LedOnL);
    server.on("/offR/", LedOffR);
    server.begin();
}

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

0 件のコメント:

コメントを投稿