2025年2月3日月曜日

esp32-cam / esp01(dcm,static IPの怪の解決に成功はしたが?)

esp32-camでexampleのcamera web serverに以下の手段でstatic addressを振って成功

ただしesp32-wroverにするだけでは不足で①#define CAMERA_MODEL_AI_THINKERを

有効にして、もとの設定をコメントアウトする②partition schemaをhugeにする必要あり

以下は①②がデフォルトでそうなってるっぽいが困ったら上記を参照すること!

https://randomnerdtutorials.com/projects-esp32-cam/ でesp32-wroverを選んで

esp32-cam robot うごくが通信不安定 電源問題かもしれない。。。。

このコードはstation modeなので、softapもいずれ。。。。たぶんいらんな(以下参照)

おなじsiteのvideo streaming web serverのコードに

  IPAddress local_IP(192,168,43,160);

  IPAddress gateway(192,168,43,1);

  IPAddress subnet(255,155,0,0);

  IPAddress primaryDNS(8,8,8,8);

  IPAddress secondaryDNS(8,8,4,4);

  if(!WiFi.config(local_IP,gateway,subnet,primaryDNS,secondaryDNS)){

    Serial.println("STA failed to configure");

  }

の数行を  

  WiFi.begin(ssid, password);

 の前におくとstatic addressが振られる!


--------arecore no1---------------------------------------

 txdはgpio1,rxdはgpio3だった

以下はdrv8833のPWMでないコード まずは成功したので残すが、arecore noo2に

後述したようにモータはサーボもDCも一個だけしかつかえんようだ。。。。

#define VIN1 1

#define VIN2 3

void setup() 

{

  pinMode(VIN1, OUTPUT);

  pinMode(VIN2, OUTPUT);

   //analogWriteFreq(1000);

   //analogWriteRange(1000);

}


void loop()

{

  int i = 0;


  //正回転

  digitalWrite(VIN1, LOW);

  digitalWrite(VIN2,HIGH);

  //回転速度を上げる

  //for(i = 0; i < 1000; i ++)

 // {

   // analogWrite(VIN1, i);

    //delay(10);

  //}

  delay(500);

  digitalWrite(VIN1,HIGH);

  digitalWrite(VIN2,HIGH);

  delay(500);

  digitalWrite(VIN1,HIGH);

  digitalWrite(VIN2,LOW);

  //回転速度を上げる

  //for(i = 0; i < 1000; i ++)

 // {

   // analogWrite(VIN1, i);

    //delay(10);

  //}

  delay(500);

  digitalWrite(VIN1,HIGH);

  digitalWrite(VIN2,HIGH);

  delay(500);

  //回転速度を下げる

  //for(i = 0; i < 1000; i ++)

  //{

  //  analogWrite(VIN1, 0xff - i);

  //  delay(10);

  //}


  //逆回転

  //digitalWrite(VIN1, LOW);


  //回転速度を上げる

  //for(i = 0; i < 1000; i ++)

  //{

//    analogWrite(VIN2, i);

  //  delay(10);

  //}


  //回転速度を下げる

  //for(i = 0; i < 1000; i ++)

  //{

   // analogWrite(VIN2, 0xff - i);

  //  delay(10);

  //}

}

------------arecore no1---------------static ip -----------------------------------

https://teramorosu.hatenablog.com/entry/2016/10/23/163640でうまく設定できない

https://qiita.com/wamisnet/items/e2aea81f7f800a262be6を参考に改変

以下に成功 

ただしmotor2個につかうために0,2,1,3の組み合わせを使うも失敗

当然サーボ1個とモータ1個の同時制御も不成功

esp8266で再挑戦したら、あっさり成功 esp01では供給電流がたりんようだ

#include <WiFiClient.h>

#include <ESP8266WiFi.h>

#include <ESP8266WebServer.h>

#define LED 13                    //LED点灯に使用するピン

ESP8266WebServer server(80);


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 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 += "<p id=\"LEDstatus\"></p>";

    msg += "</body></html>";


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

}


void LedOn(){

  Serial.println("ON");

  digitalWrite(LED,HIGH);

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

}


void LedOff(){

  Serial.println("OFF");

  digitalWrite(LED,LOW);

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

}


void setup() {


    pinMode(LED, OUTPUT);


    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());


    // Web server setting

    server.on("/", onroot);

    server.on("/on/", LedOn);

    server.on("/off/", LedOff);

    server.begin();

}


void loop() {

    server.handleClient();

}

0 件のコメント:

コメントを投稿