jl7gmnのblog

yahooブログから移行してきました。アマチュア無線を中心としたブログです。

スマートフォン

MODEL 1200FXローテーターその30

ローテーターの停止方法をPMW方式を使って低速化設定する事で、いったりきたりの収束動作はなくなりました。低速動作は高速回転から低速にすることで惰性回転で減速しながら停止の動作です。設定角度を±1よりオーバーランしても単独の低速回転からのスタートでは回転しません。うまい具合になっています。
以下実際の動作をESP32DevKitCサーバーとESP32DevKitCクライアント、そしてクライアントとしてのスマフォでの動作確認をしてみました。角度の送信はスマフォからもESP32DevKitCクライアントのどちらでも可能です。今回はESP32DevKitCクライアントはESP32DevKitCサーバーからの現在角度と設定角度を受信します。ESP32DevKitCサーバーはスマフォクライアントからの設定角度を受けて1200FXローテーターを回転させています。なお、家庭に設定のルーターのWiFiは使っていません。ESP32DevKitCの個人設定サーバーWiFiでのUDP通信で行なっています。スマフォも個人サーバーに繫いでのUDP通信です。
(ESP32DevKitCサーバーに個人で設定したSSIDと任意パスワードで自分のサーバーが出来上がります。これに繫いでます。)
■スマフォからの0°から360°のUDP通信データ送信でのローテーターのCW方向回転です。
左側がクライアント、右側がサーバーです。サーバーはローテーター制御しています。


■スマフォからの360°から0°のUDP通信データ送信でのローテーターCCW方向回転です。
 

スマフォからでもESP32DevKitCクライアントからでもローテーターをコントロールすることが出来、現在の角度もクライアント側で表示しますのでとても便利になりました。スマフォでも現在の角度データを受け取り表示しますがスマフォアプリではデータ処理が1バイトのデータ表示のみで値255までは現在角度を表示しますが、値256以上のデータでは正式な角度表示はなりません。ESP32DevKitCでの行なった1バイト以上の時の数値処理が必要です。
(スマフォでのUDPデータの基本送出は1バイトですから、温度表示は−側が少し厄介で工夫がいると思いますが0°から100°までは問題なくスマフォで受取正常に表示しますね。角度は残念ながら0°から255°までということです。256°から360°は正常に表示されません。)
角度設定して、スマフォでも正常な現在角度の表示になるように0から999の3桁までの数値がそのまま表示出来るデコード処理付きスマフォアプリを作っていただくと実用なりますね。どなたか開発していただけたら嬉しいですね!だれかアンドロイドスマフォ用に開発してくれませんでしょうか?
スマフォの携帯性の良さはやはり群を抜いてますから、スマフォが使えると超便利でありがたいですが!

そういえば、スマフォアプリも開発出来るQtなんかもありましたね?
NC制御の切削用アプリのCandleはQtで開発されたアプリでしたが、Qt上だけでしか当時動かす事が出来ませんでした。コレをLinuX上のアイコンで動作させる為、Qtのコンパイルでお世話になったことをふと思い出しました。

つづく?

MODEL 1200FXローテーターその29

ESP32DevKitCのサーバー、クライアントでのUDP双方向通信で1200FXのローテーターの現在角度の情報送出で、クライアント側にてデコードして表示のみでしたが、現在のローテーター角度だけでは、処理上不足ということで、設定角度の合わせて2つの情報をサーバー側から送出するようにしてみました。

その25の追加したルーチンへの追加処理で行ないました。サーバー側では設定角度情報は常時TFT液晶に表示されていますので、表示用のkakudo変数を単にUDPデータ送出用として設定角度を変換し送るルーチンの追加だけで済みます。

 //**********************************************
  tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.setTextSize(3);
  tft.setCursor(0,44);
  tft.print("SET :");   
  char cc[6];
  sprintf(cc,"%3d",kakudo);
  tft.print(cc);  
  //**********************************************

  //************************************************************************
  //  UDP data Send to client (STA mode)  add 2022oct24
  //************************************************************************
  udp.beginPacket(client_address,localPort);

  //Sending Readkakudo to Client Devided data byte High and byte Low add 2022oct25
  // kakudo setting data
  // int32_t kakudo = 0;   //presetting orijin degree

  uint8_t kakudoHH = (uint8_t)((kakudo & 0x0000FF00) >> 8);   // set kakudoHH
  uint8_t kakudoHL = (uint8_t)((kakudo & 0x000000FF) >> 0);   // set kakudoHL
  uint8_t ReadkakudoLH = (uint8_t)((Readkakudo & 0x0000FF00) >> 8); //set readkakudo HL
  uint8_t ReadkakudoLL = (uint8_t)((Readkakudo & 0x000000FF) >> 0);

  udp.write(kakudoHH); // send byte HH data by UDP
  udp.write(kakudoHL); // send byte HL data by UDP

  udp.write(ReadkakudoLH);  //send byte LH data by UDP
  udp.write(ReadkakudoLL);  //send byte LL data by UDP

  udp.endPacket();
  //************************************************************************

クライアントでは、追加されたUDP通信データ(設定角度)のデコード処理の追加が必要となります。
以下UDP設定角度データデコード、TFT液晶表示する設定角度は同じ角度情報なので現在角度と同じ様に桁処理を追加設定します。

■void loop()ルーチンへの追加

void loop() {
  uint8_t dataHH;// NOV02 add
  uint8_t dataHL;// NOV02 add
 
  uint8_t dataLH;
  uint8_t dataLL;
 
  int32_t rv_data1;
  int32_t rv_data2;

 // データ受信
  if (rec_size = udp.parsePacket()) {
    counter_100msec = RE_CONNECT; // re connect counter resets.

    uint8_t dataHH = (uint8_t)udp.read();  // kakudoHH
    uint8_t dataHL = (uint8_t)udp.read();  // kakudoHL

    uint8_t dataLH = (uint8_t)udp.read();  // ReadkakudoLH
    uint8_t dataLL = (uint8_t)udp.read();  // ReadkakudoLL
   
   int32_t rv_data1 = (int32_t)(
     (((uint8_t)dataHH <<  8) & 0x0000FF00)
   | (((uint8_t)dataHL <<  0) & 0x000000FF)
   );

   int32_t rv_data2 = (int32_t)(
     (((uint8_t)dataLH <<  8) & 0x0000FF00)
   | (((uint8_t)dataLL <<  0) & 0x000000FF)
   );
 
   crv_data1 = rv_data1;//add 2022NOV02 setting kakudo value but now nouse
   crv_data2 = rv_data2;//add 2022NOV02 setting Readkakudo value but now nouse
    //**********************************************************************
    // ADD 2022NOV02
    // TFT display Now Readkakudo value
    //**********************************************************************
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setTextSize(3);
    tft.setCursor(0,0);
    tft.print("Now :");
   
    // rv_data2 value change add blunk for set digit right location
    if(rv_data2 < 10){
       tft.print("  ");
       tft.print(rv_data2);
    }
    else
    if(rv_data2 < 100){
       tft.print(" ");
       tft.print(rv_data2);
    }
    else
    if(rv_data2 >= 100){   
       tft.print(rv_data2);
    }

   //*********************************************************************
   // ADD 2022NOV02
   // TFT display Setting kakudo value
   //*********************************************************************
   tft.setTextColor(TFT_WHITE,TFT_BLACK);
   tft.setTextSize(3);
   tft.setCursor(0,44);
   tft.print("SET :");   
 
   // rv_data1 value change add blunk for set digit right location
    if(rv_data1 < 10){
       tft.print("  ");
       tft.print(rv_data1);
    }
    else
    if(rv_data1 < 100){
       tft.print(" ");
       tft.print(rv_data1);
    }
    else
    if(rv_data1 >= 100){   
       tft.print(rv_data1);
    }

  }

上記のルーチン追加でクライアントのTFT液晶にサーバーと同じ位置に現在角度(NOW:***)と設定角度(SET:***)がリアルタイムでサーバー側とシンクロして表示されるようになります。
目標としていましたサーバーと同じ現在角度と設定角度表示、クライアントからサーバーへの角度設定がUDP双方向通信処理で出来る様になりました。

実際のローテーターでの確認も必要と思い、シャックのローテーターに繫いで動作確認も行なってみました。先ずはESP32どうしでの確認で、ローテーターコントローラの指針のさす角度とクライアントのボタンが同じ事を確認します。スマフォとESP32サーバーでもどちらでも確認はOK!
(ローテーターはESP32サーバー側につながっています)
ESP32どうし(ESP32クライアント、ESP32サーバー)とスマフォとESP32サーバー組み合わせ。

スマフォもESP32サーバー化したアドレスを設定する事で家庭内のWiFiルーター使用時と同じ様に使えます。全く問題はありませんでした。
特に便利なのは携帯スマフォでアンテナを見ながら角度設定出来る事です。
ローテータコントロールしてるシャックへ行って角度設定してまわしてから、それから外へ位置確認しに行ってとかの面倒が皆無となります。私の家は2Fにベランダがあるのでアンテナとシャックのローテーターコントローラーの両方が見れるので、さほど面倒ではありませんが!

ESP32DevKitCのサーバー側とクライアントのESP32またはスマフォがWiFiで繋がる範囲で動作します。スマフォでは、実際家のまわりでも十分使えました。タワーの下でも問題なく使えました。通販でWiFiアンテナが外付けのESP32が注文した物と間違えて送られてきたトラブルがありましたが、アンテナ付きのESP32より、アンテナ外付けのESP32のWiFiのほうが繋がる距離が延びるのではないかと少し期待しています。まだわかりませんが、WiFiのUDP通信距離については、アンテナ外付けESP32で返ってよかったのかもしれません。ESP32のサーバーもアンテナ外付けに交換し、コンパイル書き込みして、どれくらいの距離まで使えるかをいつか確認してみたいと思います。

デバッグは継続してゆきます。

つづく?

MODEL 1200FXローテーターその28

今までのローテーターの停止の方法を再度考え直してみました。なぜかと言うと、収束する方法で静止させる方法はローテーターに対しては回転機構のギヤの破壊行為となる危険性があるということが気になっていたからです。基本に忠実にローテーターの現在のコントロール方法で静止するまでのステップを全部まとめると、収束動作無しで止まる様な問題とならないケースもなかにはありますが、設定ポイントの角度を超えてしまったケースでは反対方向へと必ず収束動作をしてしまいます。コレは設計仕様です。改善するとしたら、きちんと停止させてからの反対方向への回転をさせるのがギヤを破壊しない良い方法であると分っています。ただし、スケッチ的には出来ますが、静止するまではまた、戻り角度オーバーしたりとかの動作も予想されるので、静止まで時間がかかる事が当然想定されます。停止をいれた方法では、少し検討と確認が必要となりそうです。現在の収束仕様ではCW方向も、CCW方向もポートに繫いだスィッチングトランジスタでON/OFF制御のDC電圧で動作回転させています。回転している時は、同じ電圧ですので静止直前も回転しているときも同じ回転スピードです。目的の角度の±7°ぐらい手前で回転信号の長さを変えて0°になるまでの差分でだんだんと短い電圧を掛けて制御するようにしていましたがやはり同じ電圧なので多少の長さ調整では、モーターがフル回転なのでオーバーランしてしまう事が多い様です。
例の如くハードウェアは既に基板化して出来ていますので、やるとするならばソフトウェアでの対応になります。ということで、ソフトウエアでスケッチを考える必要が出来てきました。言葉でやりたい事をまとめるとすると、目的の設定角度を超えないで止める別の方法を考えれば良いと言うことです。とても簡単明瞭です。文字にした形も無い方法は紛れも無くやりたい事そのものですが何をどうするという具体的な事がまだありません。コレを実現したいので、先ずは使っているESP32DevKitCの機能で対応使用出来るフィチャーがないかを調べてみました。ネットでも調べている内にLEDの明るさを制御する方法の解説がありました。いわゆるPWMでパワーコントロールする方法です。モーターへかける電圧をONしている時間とOFFしている時間のDuty比(比率)を変えて回転を早くしたり、遅くしたりが出来る方法として応用出来そうです。コレを使って見ることにしました。うってつけの方法になりそうです。早速自作の試験ボードとブレッドボードで現在のローテーター回転制御している同じポートで配線して確認です。その前にESP32DevKitCのどのポートがPWM制御出来るかを仕様から確認しました。いま使っている回転制御のポート04と22はPWM可能でした。因みに、全部ではありませんが、殆どのポートはPWM制御出来るようです。(自分が使いたい、または、使っているポートのPWM対応は必ず確認は必要です。)

■試験中の04 と22のポートにLEDを繫いで光り具合を確認しました。
CIMG9844

■テスト様にスケッチした簡単なDUTY比での明るさ確認用スケッチです。
//PMW TEST for IMPULUVING NO CONVERGENCE BEHAVIOR OF CCW & CW ROTATION
// 1200FX EMOTATOR UDP CONTROL
//
const int ccwPin = 22;
const int cwPin = 04;

void setup() {
  // put your setup code here, to run once:

  //      (ch,freq ,bit)
  ledcSetup(0,12800,8);// 0channel setting
  ledcSetup(1,12800,8);// 1channel setting

  //           (PortNo,ch)
  ledcAttachPin(ccwPin,0);// 22 attach 0channel
  ledcAttachPin(cwPin,1); //  4 attach 1channel
}

void loop() {
  // put your main code here, to run repeatedly:
  //ledcWrite(0,64);// ON    64:256 -> 1:4
 
  //       (ch,Dutyratio)
  ledcWrite(0,128); // ON   128:256 -> 1:2
  delay(100);
  ledcWrite(0,0);   // OFF
 
  ledcWrite(1,128); // always ON 1:2

  delay(100);
}

上記の簡単なスケッチでDUTYの確認です。
詳細な設定はしらべてもらうとして、まとめると下記になります。
1.使うポートを定義します。
2.void setup()ルーチンにチャンネルと周波数と制御するbitを設定します。
3.同じルーチン内に使用するポートとチャンネルをアタッチします。
4.void loop()ルーチンにはledcWrite(チャンネル,*)で*に0から256最大のうちから設定
*が0だと出力OFF、256だとフル出力、128だと50%DUTY比で出力
(設定最大は256なので128では50%のDUTY比率の出力です。)

■テスト中の波形50%DUTY
上の矩形波形は常時出力している様に見えますが、出力矩形波はON/OFFしています。
下の矩形波は連続出力です。
CIMG9845

このスケッチを応用して組み入れてます。

考えている動作は以下になります。
他の位置から目的の設定角度へスタート開始時は次のコマンドでDC電圧でフルにローテーターモーター回転動作します。
ledcWrite(0,256);

CW方向、及びCCW方向回転時どちらも、現状の角度と目的設定角度の差分角度が±10°手前になったらスピードが遅くなるようにDC電圧をフルから比率12:256のDUTY比でパワーを下げるようにパワーコントロール開始します。スピードが遅くなったことでオーバーラーンはしないで停止する様にこのコマンドスケッチを入れました。
ledcWrite(0,12);
幾つかのDUTY比(128、64、32、16)のコマンドスケッチを入れたサブルーチンを作りパワーを減少する方向で試しましたが、あまりローテーターの回転スピードの下降変化は感じられませんでした。上記のコマンドスケッチ12の比率だと遅くなったと十分感じられましたので、上記のledcWrite(0,12)にしています。停止確認も期待通りでした。オーバーランはせずに停止してくれました。
上記のコマンドを入れた実際のサブルーチンは下記になります。
//************************************************
//■CW方向フル回転時
void RotCWHS(){ // port04 ch1, HS : High - Speed  CW
  //PWM out
  ledcWrite(1,256);// CW ON
  ledcWrite(0,0);  // CCW OFF
}
//■CW方向スロー回転時
void RotCWSS(){ // port04 ch1      SS : Slow - Speed CW
  //PWM out
  ledcWrite(1,12);// CW ON
  ledcWrite(0,0);  // CCW OFF
}

//*************************************************
//■CCW方向フル回転時
void RotCCWHS(){ // port22 ch0    HS : High - Speed  CCW
    //PWM out
     ledcWrite(0,256);// CCW ON
  ledcWrite(1,0);  // CW OFF
}
//■CCW方向スロー回転時
void RotCCWSS(){ // port22 ch0     SS : Slow - Speed CCW
   //PWM out
  ledcWrite(0,12);// CCW ON
  ledcWrite(1,0);  // CW OFF
}
//*************************************************

上記のサブルーチンを角度差分のSelect case で±10前から±1°までにスピードスローとなるサブルーチンを入れます。勢い良く回転してきたHS回転を10°手前にてSS回転でスローにするとゆっくりブレーキがかかった様に丁度いいタイミングで勢いが弱まってcase0:のルーチンの停止コマンドスケッチ下記で停止します。

Select case の0°では停止のルーチン下記ルーチンの RotSTOP();を入れます。
//■停止ルーチン
void RotSTOP(){
  //PWM out
  ledcWrite(1,0);  // OFF port 04
  ledcWrite(0,0);  // OFF port 22 
  delta=0;
  delta2=0;
}


上記の電圧PWM制御方式を採用しDUTY比率を下げる事によりローテータ制御SWのON時間の平均が下がります。ON/OFF制御の平均値ON時間コントロールにて結果、モータースピードが遅くなります。遅くなった回転ではオーバーラーンセずに停止する事が出来るようになります。
電圧のPWMのDUTY比率を変える(下げる)事で解決です。モーター回転数はCWスイッチ、CCWスイッチをPWM制御にて制御する事で、間違いなく下げる事ができました。止まる時は目的の設定角度に近づいて、ゆっくりスーッと止まる感じになりました。とにかくハードウェアの変更対応をしなくて済み、ソフトウエアのみの対策で上手く行きましたので、ひとまずギヤを壊す制御ではなくなり安心する事が出来ました。結果としては、まずまず、大成功と言えると思います。Hi !

厳密に言うと停止してても現状の停止した角度と目的設定角度と差分値がある場合では、極小の電圧パルスがでています。回転出来ない様な微小パワーレベルなので0に等しいと言えます。オシロスコープでは確認出来ます。LEDも少しチカッと光っているかな程度です。この程度のパルス電圧だけではローテーターは回転しないので良しとしています。

UDP通信のデバッグは継続しています。

つづく?

MODEL 1200FXローテーターその27

ふとESP32DevKitCのサーバー化を検討中に、ローテーターの停止ルーチンで大切なポイント(確認項)の不足があることに気づきました。大切なポイントとは、ローテーターの停止設定値に対してある位置からローテーターを回転させて、角度の差分が近づいてきた時にブレキー的なルーチンを入れて停止させてゆくのですが、肝心の差分が0となった時の停止設定を入れてませんでした。(一番重要なルーチン)ファンクション化して動作確認中はスケッチはあったのですが、いつの間にか削除してしまってました。時折でしたがローテーターがいったりきたりが多かったりする原因になっていました。(設定値と同じ角度になった時も動いてしまう原因)不足スケッチの追加でのデバッグ修正になります。case 1: case:-1の処理時に差分値をdelta2 = 0とするスケッチも追加。

■定義域のRotSTOP()ファンクション
void RotSTOP(){
  digitalWrite(ledcw,0);
  digitalWrite(ledccw,0);
  Houkou = 0;
  delta=0;
  delta2=0;
}


■Void loop(){ルーチン内の修正箇所
〜略
delta2 = Readkakudo-kakudo;
switch(delta2){
      case 6 :RotCW();
              delay(10);
              break;
      case 5 :RotCW();
              delay(10);
              break;
      case 4 :RotCW();
              delay(10);
              break;
      case 3 :RotCW();
              RotCW();
              RotCCW();
              delay(10);
              break;
      case 2 :RotCW();
              RotCW();
              RotCCW();
              delay(10);
              break;
      case 1 :RotCW();
              delta2=0;
              delay(10);
              break;
      case 0 :RotSTOP();
              delay(10);
              break;
      case -1:RotCCW();
              delta2=0;
              delay(10);
              break;
      case -2:RotCCW();
              RotCCW();
              RotCW();
              delay(10);
              break;
      case -3:RotCCW();
              RotCCW();
              RotCW();
              delay(10);
              break;
      case -4:RotCCW();
              delay(10);
              break;
      case -5:RotCCW();
              delay(10);
              break;
      case -6:RotCCW();
              delay(10);
              break;
      default:
              break;      
    }
略〜

上記の停止項(case 0)の追加で完全に、動いてゆき回転停止する時の設定角度近辺でのいったりきたりする動作は、ほぼ皆無となりました。
ローテーターを停止しない状態で、いったりきたりさせるボタン操作はローテーターのギヤを壊す原因となることがあるらしく、回転方向を変える場合は必ず停止状態を作り、それから元と逆の回転動作を行う様にする事でギヤの破損を防ぐ事が出来ると、ある社長さんからエモトの社長さんとの話した時の情報ということで教えて頂いていました。DXを追いかける時のSメータを見てのCW、CCWのSW操作は、回転が停止しない状態の時に逆方向のSWを押さない様にとの事です。DX局はすぐには逃げませんからね。ローテーターを長く使用するためには、慌てた回転動作は禁物という事です。(アンテナ自体の指向性はHF帯のアンテナではブロードですから少しぐらい方向が違っても送受信での影響はないと思っていいかと思います。(UHF/SHF帯では違いますが Hi!))
ローテーターには重いアンテナがのっていますから、急には止まれなないし、この時の逆回転ではギヤが壊れるというのは納得出来ますね。手動操作時でも注意は必要ですね。Hi!
部屋の中でのテストで、ローテーターには何もついていない無負荷で、気づいてよかった修正でした。

つづく?

MODEL 1200FXローテーターその26

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ボタンの操作の方向禁止設定の必要があるケースが動作確認しててありましたので、クライアント側のボタン押下禁止処理をする上で必要となります。


つづく?
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード
  • ライブドアブログ