jl7gmnのblog

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

2022年05月

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

またもや、ESP32モジュール用のライブラリのバージョンアップが表示されたので、問題ないだろうと思いバーションアップをしました。そのすぐ後に今までのLogger32用のローテーター制御の収束動作部を見直しする為に先ずは現状でコンパイルを行ないました。ところがコンパイルでエラーが出て進めない状態になってしまいました。エラーは次の内容です。

'adc_gpio_init' was not declared in this scope


使用しているインクルードファイルも何も変えていないのに、コンパイルできていたスケッチがESP32のモジュールのバーションアップで、コンパイルできなくなってしまいました。
前の動いているスケッチのバックアップで試しても同じエラーが出ます。完全にESP32モジュールのライブラリのバーションアップが原因となった様です。
やはり、前回もそうでしたが各ペリフェラル関連の安易なバージョンアップは気をつけないといけない内容なのかもしれません。ESP32モジュールのライブラリなので問題無いだろうという考えはダメの様です。今動いている時のモジュールのバーションも覚えておく必要があるのかもしれません。先ずはWebにて同じようなトラブルを経験した情報がないかをチェックしてみました。バーションアップに関してはかなりトラブル(動作しなくなる)があるようです。対策としても、動いていた時のモジュールのバージョンにインストールし直しするのが、常道の様です。
エラーの内容をそのまま鵜呑みにして、対応するルーチン名が何処にあるのかなどと調べたいところですが、調べ無いのが正解のようです。バーションアップする1つ前のバージョンまたはインストール時のバージョンをインストールし直すのが解決の近道の様です。下記のページがとても参考になりました。


このWebページ通りにGitHubリンクを開きバージョンアップの情報を最初に確認するのが大切です。
いつのバージョンアップで動かなくなったかを定める(確認する)必要があります。

GitHubページも様変わりしているので、そのままの画像ページではなくなっていますので、どれが該当のものかを若干探す必要はあります。Hi!

リンク通りにクリックすると下記のGitHubページが表示されます。ページが様変わりしています。

範囲を選択_303
commitsをクリックとありますが、場所はかなり違いました。
一番右端の1,768 commits の所のcommitsがそのようです。
範囲を選択_304

commitsをクリックすると過去のバージョンアップの日付と内容が一覧で表示されました。
範囲を選択_305

一番上が一番新しいバージョンアップで Commits on May 13,2022 です。
昨日のバージョンアップしたESP32モジュールのバージョンアップです。
これより前のバージョンにすれば良いことになります。

最初からインストールする場合は、5月13日より前のバージョンを<>でダウンロードしておきます。
圧縮ファイルなので解凍展開で使用します。
ここでのバージョンアップして動かなくなった年月日の内容は記録しておいたほうが良いかもしれませんね。
先ずはバージョンアップしてしまったものが確定出来ましたので、次のインストール方法へ進みます。
GitHubのページの下にArduino core for the ESP32,ESP32-S2,ESP32-S3 and ESP32-C3の項目があります。Web記載情報では ESP32-S2 and ESP32-C3 Supportですが、かなり様変わりしています。

範囲を選択_307

またWebではクリックする箇所として Instructions for Boards Manager とありますが、見当たりません。順番がWeb情報と少し違いますが上のマウスの箇所(Getting Started)をクリックします。
するとESPRESSIFのページに飛びます。

範囲を選択_308

First Stepsの How to installの中の Before installing をクリックします。すると次のページに飛びます。
ここがWeb情報での内容と同じインストール時にコピペするリンクが貼られています。

範囲を選択_309

Installing using Arduino IDE

使用するリンクは Stable release linkです。これをIDEの設定ページで書き込みます。コピペは出来るようにありましたが、初めての時は手打ちでいちいち位置文字ずつアルファベットを忠実に打ち込む必要がありました。問題なくコピペ出来るのでしょうが、私のPC環境ではその時は出来ませんでした。

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

上記リンクをArduinoのIDEを起動して、環境設定にコピペします。または打ち込みます。
追加のボードマネージャーのURL:の場所です。
前と同じ場合はそのままでOKです。
範囲を選択_306

コピペまたは打ち込みが終了したらOKで閉じます。

後はIDEのツール中のボード:"ESP32 Dev Module"を選択しその中のボードマネージャーをクリックします。ボードマネージャーが開きデータをダウンロードし始めます。取り込み完了後、検索に”ESP32 ”
を入力して対象を選出します。下記のフォーム状態で、バージョンを選択します。各バージョンが表示されます。
範囲を選択_311
既に上のフォームはby Espressif Systems バージョン2.0.2 INSTALLEDにインストール処理済みです。

最初はバージョンは2.0.3でこれがバージョンアップしてコンパイルできなくなったバージョンです。
ESP32のボードのバージョンが2.0.2と一つ前の物に戻りました。

バージョンが戻ってきちんとコンパイルが出来るかを確認します。まず上記フォームを閉じて、今まで動いていてコンパイルエラーが出ていたスケッチをコンパイルしてみます。
元のコンパイル出来る状態に戻りました。問題なくコンパイル、書き込み出来ました。とんだバージョンアップ騒ぎでした。やたらとボードのバージョンアップもするものではない事の一例を経験した次第です。おかげでバージョンアップ前に戻す手順も分かり今後にいかせるでしょう。

本音としては、バージョンアップした後でも動かせるのが本当は望ましいと思っていますが、そのためにはGitHubのバージョンアップの情報の内容を見ていかないといけないのでしょうが、今回はバージョンアップを前のバージョンに戻すだけの対応です、細かくは見ていません。もう少しバージョンアップ時の新たな対応情報を調べて見る必要もありますね。

つづく?


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

ビールの500mlをのんだせいか、いつの間にか寝て、朝の4時に目を冷ましてしまいました。目が冷めたついでにローテーターの動作確認をスマフォで確認してみました。いわゆるデバッグです。
ESP32DevKitCでのローテーター1200FXの0°のときの収束制御に時間がかかる現象が出たため、見直しをしようと思っていた所ライブラリのアップデートが表示されたので、何気なくアップデート処理を行いました。結構な数のバージョンアップが完了し、早速収束制御スケッチを見直ししようと思い最新のスケッチをロードしてコンパイル、書き込みを行なった所TFT液晶がホワイト状態で何も表示されなくなってしまいました。
先ずは何が原因かを追求しなければなりませんので、TFT液晶の交換から最初に行ないます。壊れた可能性はかなり低いので(特に変な事をしていない)やはり、別のTFTでも同じ現象です。TFT液晶は問題ない事になります。2個とも壊れる事はまずまず無いです。次はESP32DevKitCの交換です。別の動作している物と交換してみました。結果、コンパイル書き込みしても、同じくTFT液晶がホワイト状態です。となるとハードではなく、配線の断線が考えられますが、調べてみても断線は何処にもありません。となるとPCの状態がおかしくなった可能性も考えられますがコンパイル動作、書き込み動作は問題なく動きます。しかもスマフォでのUDP通信でのリモコン動作も問題なく動いてくれます。単にTFT液晶に表示しないだけの現象です。
少し、考えてみると、ライブラリのアップデート後に液晶表示しない状態が発生していることなので、各ライブラリのバージョンが上がった為に起きた問題かもしれません。確かにアップデート時には、TFT関連のバーションアップもありました。インストール済みから見てみると関連のTFT_eSPIのバージョンアップもしてました。バージョンは2.4.51の最新番になったようです。このことが原因の可能性が高いです。
早速TFT液晶のセットアップファイルのUser_Setup.hを対象のTFTの設定になっているかを確認しました。(MODEL 1200FXローテーターその2にTFT液晶のUser_Setup.hの設定値を記載していますので、同じ設置値かの確認です。)
確認結果、ビンゴです。初期化時の状態ファイルになっていました。使用するTFT液晶に合わせた設定にし直して保存し、コンパイル、書き込みを行ないました。元通りにTFTに角度情報が表示されホットしました。とんだ、バージョンアップでした。
特にTFT液晶関連のバージョンアップ時は設定したファイルまで初期化ファイルで上書きされてしまう様です。対策は設定ファイルをバックアップとっておきバーションアップ時後に、上書きをしてもとに戻す対応が必要です。
TFT液晶の角度表示にこぎつけるまで、1時間半程かかってしまいました。
TFT関連のライブラリバーションアップは、初期化があることを忘れないようにしないといけません。Hi!

これから0°の収束部のスケッチ確認となるのですが、もう朝の6時になってしまいました。次にしましょうか!

つづく?


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

エモトのローテーター1200FXのリモートコントロールをESP32DevKitCを使いUDP通信機能を用いたスマフォからのリモートコントロールでのリモコン動作が上手く行きましたので、次のステップのロギングソフトのLogger32のローテーターコントロールへと進めています。今まではMAP上の位置をマウスクリックすることで、そのクリックした角度へ自動で回転して静止するまで問題なく動作してくれています。一番確認したいことは、Logger32のTELNETへ繋ぎ今現在の各バンドにてON AIRしている局の情報をクリックしてきちんと動いてくれるかの確認が残っていました。このため、今まで確認で使用していたWindowsXPを止め、Window10に新たにLogger32の最新番になるようにインストールし、TELNETに接続し情報を取り込みそのON AIRしている局のmonitorフォーム、及びTELNETの情報フォーム上からのマウスクリックでのON AIR局の位置への自動ローテーター制御が動作してくれるかを確認してみました。作製してからの初めての確認です。
結果は、素晴らしいの一言を発生してしまいました。

動画は少し見づらいですが、最初はマウスでマップの90°をクリックするマップクリック動作確認から始めました。次はTELNETからのモニター上にあるON AIRしてる局のコールサイン(赤色)をクリックして、その局の位置へのローテーターの自動制御動作確認です。
面白いくらいにクリックしたコールサイン局ロケーション方向に的確にむかってゆき静止してくれています。モニター上のコールサインだけでなくTELNETの情報のコールサインの情報位置クリックでも同じように動作確認出来ました。ESP32DevKitCで組んだスケッチで問題ない様です。TELNET情報でも上手く動作してくれました。


Logger32のローテーターのコントロールフィーチャーのロングパスとショートパスの切り替えもESP32DevKitCスケッチで問題なくローテーター1200FXは方向切り替え動作してくれました。
キーボード操作でのパス切り替えはLogger32では下記の操作にて行ないシリアルデータを送出する仕様でした。なお、局のTELNET情報にはロングパスの角度とショートパスの角度が両方載っています。

ショートパス:Ctrl + A
ロングパス    :Alt + A

また、設定にてショートパスにて動作する事も出来ましたので、通常時ショートパス角度に合わせる様にしてみました。コンディションがロングパスの時にAlt + Aキーで切り替えで対応する事にすればよいかと思います。

とにかくLogger32はネット情報も取り入れてリアルタイムでDXを狙うには欠かせないロギングアプリだと思います。

つづく?

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

エモトの1200FXをLogger32にて使用できるインターフェースが大体形になってきました。Logger32のローテーター制御時のインターフェース回路からのシリアル送出データ(マップ上で向けたい場所をクリックした後のLogger32へ送るデータ)をロジックアナライザーで確認してみました。停止位置角度1°からマウスで59°をクリックし動き始めてから止まるまでのLogger32への全送出データです。

範囲を選択_296

D0はLogger32から送られてくるシリアルデータです。(ESP32DevKitCのシリアル受信信号)
D1はESP32DevKitCからのシリアル送出データです。
最初のLogger32からの角度リクエストコマンド”C”を受けてESP32側からの現在の角度シリアルデータを返送後にLogger32のマップ上でクリックしたタイミング時のLogger32のプリセットデータの送出があります。

丁度2番めのD0の少し長いデータです。
範囲を選択_299

このLogger32のマップ上でクリックした位置角度情報がESP32へ送出されます。
詳しくは下記のデータになります。(マウスでMAPをクリックした状態の位置角度59°でした)

範囲を選択_298

Logger32からは下記のデータが送出されます。
S[0D]X2[0D]M059[0D]

S:ローテーター回転ストップコマンド
X2:ローテーターのスピード設定 2は中速
M059:プリセット角度59°まで回転動作開始
0D:デリミタ(コマンドやデータの区切りまたは終了箇所を表します。)

つまりLogger32からマップ上をクリックした時に送出されるシリアルデータのコマンドは、ローテーターを一端停止コマンドで止めて、ローテーターの回転速度設定を中速にして、プリセット(マップのクリックした位置角度)角度までローテーターを回転開始せよ!というプリセット角度への回転動作開始命令です。
後はLogger32からのこの"SX2M059"コマンドを受けてESP32DevKitCは1200FXローテーターをプリセット値まで回転をさせ始めます。後はLogger32からのローテーター位置角度リクエストコマンド送出に対しESP32DevKitCから現状のローテーター位置角度をLogger32へ送出します。同時にプリセット値になったかの確認を行ない、プリセット値と現状位置角度差がプリセット値近傍の±1になるとパルス微動収束動作に切り替え、位置角度差が完全に0になるまでのこの収束動作を続けます。

ESP32DevKitCではシリアル受信したこの一連コマンド ”SX2M059" をデリミタ毎に解析しそれぞれをString変数に入れてます。(String変数を使ったのはコマンドから数値を抜き出しが容易なためです。)後は文字処理の抜き出し関数で角度の部分を抜き出し整数化(059→59)してESP32DevKitCのプリセット角度変数へ代入すればMコマンドを受けているので、自動でプリセット位置角度まで動き始めます。

なお、スピードコマンドに関してですが、1200FXでもコントローラーにはSPEEDボリュームがありますが、今の時点ではボリューム位置をセンターにしてあります。(1200FXはこのスピードで動くと決めた状態)SPEEDのボリューム設定で右回転最大でHI、また左回転で最小のLOWもありますが、HIの場合、オーバーランも大きくなるのでHI位置へボリュームは設定していません。なので”X2”のSPEED設定用コマンドは読み飛ばしです。元々1200FXはアナログ式のスピード設定でデジタル的には工夫しないと対応出来ないと思っています。(対応を考える場合は勿論、動作方法や仕組みは見ないといけません)

スケッチでは現在の角度を常時取り込んでいますので動き始めた角度とプリセット角度との差が0になるまで回転を続けます。0では止まる様にしていますが、オーバーランもあるので、近辺のプラスマイナス1の位置となった場合の処理を付けて0に収束するまで通常の回転信号オンの”H”ではなく、パルス出力にて微回転させて収束動作を差分が0になるまで出力し続ける収束動作をするようにしています。停止はプラスマイナス1でも止まるように見えていますが実は止まっているのではなくて差分0になるまでの収束動作中ということです。0にならない間は収束用パルス出力は出続けます。完全に差分が0になると収束用パルスは完全に止まります。この収束動作中であることは余り実用上問題はありません。プリセット位置での誤差±1°での停止に見えます。Hi!
Loggee32でのロジックアナライザーでの停止位置角度2°時に59°をマップクリックした場合の
ESP32DevKitCからの現在位置角度情報は、以下の送出がされていました。

停止位置角度 2°
コマンド"SX2M059"後 のコマンド”C”を受けての現在位置角度
2°、3°、6°、10°、15°、21°、26°、31°、36°、43°、48°、55°、60°、60°、60°、60°、60°、60°

最後の60°は差分が+1°時の収束動作中で、途中で止めましたが、もう少し時間が経つと59°になり完全に差分が0°なり収束動作が停止します。見た目は59°のプリセット設定値に対して+1°なので収束動作中ですが止まった状態に見えます。

Logger32からのマッププリセット時のプリセットコマンドとこのコマンドに対してのESP32DevKitCからのプリセットでの停止状態となるまでの位置角度情報の実際値でした。

スマフォのを使った場合も位置角度プリセット動作は全く同じです。コマンドもアプリ設定のアスキーデータ"M090"という具合にLoggerから送られる "SX2M090" コマンドの位置角度部分は全く同じです。
またスマフォの場合は、0の完全停止またはプラスマイナス1の収束動作時だけCW、CCWの方向回転が出来ない(プリセット動作コマンドと角度位置が差分が0、または±1)のをリセットするボタンを付けてあります。このリセットボタンは、本当の意味でのリセットではなく現状の角度とプリセット値を変えてやる事で差分が0または±1でなくなる事で回転が出来るようにしているだけです。このリセットを行なっただけでは回転はしません。回転開始はスマフォアプリ設定ボタンのコマンドの””を送出して始めてプリセット位置角度までの回転がスタートします。なおリセットに関しては0°から180°の停止状態の場合は、360°にプリセット、180°より大きく360°時の停止状態の場合は0°にプリセットです。この任意の停止時には+15°、またはー15°ずつのステップボタンでプリセット値を変更出来ます。更に細かな+1°、−1°のステップボタンもあるので、基本は1°から360°まですべての角度のプリセットが出来ます。

つづく?




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

スマフォでのESP32DevKitCでのエモト1200FXの位置角度コントロールをしている状態をLogger32のローテーター制御の表示マップに連動表示している動画です。
コントロールはスマフォのアプリケーションUDP TCP ServerにLogger32で使用出来る機種のコマンドを設定しESP32にUDP通信で送る方法で対応しました。(機種:YAESU GS−232B)


 
スマフォとLogger32での動作がほぼ完成状態となった時点での動画がなかったので撮って見ました。
スマフォはリモコンとして動作します。角度はESP32DevKitC側にあるTFT液晶に現在のローテーター位置角度とプリセット角度、それにスマフォからのアスキーコマンドが表示されます。勿論1200FXのリモート端子とESP32DevKitCは繋がっています。

動作概略
1200FX側からはローテーター位置角度に相当する電圧が出力されるのでこの電圧をAD変換して0°から360°に対する電圧値の角度変換数値をアスキー文字にてLogger32にGS-232B設定としてのヘッダーを付け、デリミタの"0D0A"を最後につけて、コマンド”C”が送付されて来たら送り返します。1200FXはプリセット角度になるとストップしますが、角度情報はいつまでもコマンド”C”が送られている間でも、停止している時の位置角度情報を返し続けます。
回転させる方向についてですが、基本はプリセット角度に関しては現在の位置角度との比較をして差し引きの角度(+か−のどちらか)を使うことで現在の角度から回転させる方向を判断しています。
Logger32のマップクリックでの1200FXへのプリセットは単純で送出されるシリアルデータを読み込みデータから角度情報を抜き出し、ESP32DevKitCでプリセット設定用変数に入れ込むだけです。あとはプリセット角度と現在の角度の差分からプリセットへの回転方向を判断しプリセット角度になるまで動くという具合です。スマフォからの送ったデータは同じコマンド体系なので全く同じ方法での動作をします。
Logger32使用とスマフォの切り替えSWでどちらか片方でのみ使用する様に切り替SWで選択して使います。Logger32に使用時はスマフォでは動作しません。その逆もしかりです。

つづく?

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

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