1200FXローテーター側のESP32DevKitCのサーバー化を行ないました。忘備録です。
(1200FXのローテーターのコントロールで使っていた家のWiFiのルーターは、はっきり言うと、不要になります。ローテータ制御では使わないだけで、他のパソコンでのネットサーフィンなどでは勿論使います。Hi ! )
どのような設定をするかと言うと、いままでのスケッチの定義設定の変更とサーバー用スケッチの追加です。簡単なスケッチセンテンス追加なので簡単です。Hi!
いままで、Linuxでのサーバー化特集の記事を見てもよく分からなかった事が、今回のESP32でのサーバー化をやってみて、サーバー化とは、どういう事なのかの大枠がおぼろげですが見えてきた様に思います。パソコンよりとても理解しやすいと思います。サーバー化は実際に設定して動かしてみることが間違いなく、最も早く理解できる方法だと思います。

早速WiFiを使ったUDP通信のサーバー化設定を行ないます。

以下のようにサーバーにするESP32の定義を修正します。
IPアドレスをサーバー用に設定
設定出来るIPアドレスは割り当て済みがあるようなので使用できるIPは詳しくは調査が必要です。
(今回はサンプル例題にあわせて設定してます)
//const IPAddress ip(192, 168, 4, 3);       // IPアドレス(ゲートウェイも兼ねる)
const IPAddress ip(192, 168, 30, 3);  // AP IPアドレス(ゲートウェイも兼ねる)自分で適宜設定
const IPAddress subnet(255, 255, 255, 0); // サブネットマスク
const IPAddress client_address(192,168,30,4);

■いままでの家庭用のルーターのSSIDとパスワードを自分で決めて書き換えます。
//const char ssid[] = "**************"; //ご自分の家のルーターのSSIDに書き換えてください
//const char pass[] = "*************"; //ご自分の家のルーターのパスワードに書き換えてください
設定の例)
const char ssid[] = "ESP32_MYHOMEwifi"; // SSID change to original  server name
const char pass[] = "**********";                    // password 任意

■サーバー用の定義を追加します。
WiFiServer server(80); //add for server setting 2022/oct/22

■void setup()ルーチンにサーバー開始センテンスを追加します。
server.begin();//add for server bigining 2022.oct.22

■void loop()ルーチンにはクライアントにサーバー利用可のスケッチを追記します。
 WiFiClient client = server.available();  //add for server setting 2022oct22

以上の設定だけで、ESP32DevKitCに自分のWiFiによるサーバーが出来上がります。家のルーターは使わなくても良くなります。(ESP32サーバーとESP32クライアントでのWiFiを使ったローテーター制御UDP通信となったので、家のWiFiルーターを使う通信が必要なくなりました。)
■クライアント側へは、サーバー化のスケッチ追加設定等は何もありません。
クライアン後側は接続IPアドレスをサーバー側に合わせ書き換えるだけです。
---------------------------------------------------------------------------------------------------------------------------------------
ESP32DevKitCのサーバーとESP32DevKitCのクライアントのみでの双方向のUDP通信ができました。
スマフォのWiFi設定で上記のESP32_MYHOMEwifiが確認できます。自分の設定したサーバー名が表示されると,とても嬉しくなります。

関係ありませんが、void setup()ルーチンにサーバーへの接続するまでTFT液晶に動くドット表示を下記スケッチで追加修正しました。動作し始めてからWiFiが繋がるまで何かしら動いている状態がわかれば(見れれば)いいかと思い追加しています。確認で使うシリアルモニタ表示もドット表示残してあります。
TFT液晶表示では、次の画面の表示のためにドットを消すルーチンも追加してます。


省略
WiFi.begin(ssid, pass);
  delay(100);

  int ii = 0 ;
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");

    //****************************************
    // Connecting Message display
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setTextSize(2);
    tft.setCursor(0,0);
    tft.print("Connecting!");
    // Connecting display dot data
    tft.setTextSize(3);
    ii=ii+2;
    tft.setCursor(ii,36); //22oct23
    tft.print(".");
    //****************************************
    delay(100);
  }

 //****************************************
    //  Erase "Connecting!"
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setTextSize(3);
    tft.setCursor(0,0);
    tft.print("           ");
    //  Erase "." area
    tft.setCursor(0,36); //22oct23
    tft.print("                      "); //erase "."
    //****************************************


上記にてクライアントのESP32DevKitCに電源を入れONにして、サーバーに繋がるまで、Connecting!表示の次の行でドット".” が右に動いてゆきます。サーバーに繋がるとこの画面は終了し、サーバーから送られてくるNow:に現在のローテーター角度が表示されます。

今回は、1200FXに繋がったサーバー側の表示情報の内の現状のローテーター角度のみをクライアント側で受取表示する様にしていますが、この情報にプラスしてサーバーで受信デコードされTFT液晶のSETに表示された設定角度値もクライアントに送出する様にしたいと思います。
設定角度値はクライアントからも角度設置値としてデータ送出していますが、肝心なのはサーバー側が送る設定角度値情報です。これは、クライアント側送出データをデコードし確定した設定角度値である必要があるということです。これはクライアントでの角度UP/DOWNボタンの操作の方向禁止設定の必要があるケースが動作確認しててありましたので、クライアント側のボタン押下禁止処理をする上で必要となります。


つづく?