ホーム >> 無線ブログ集 >> jl7gmnのblog

無線ブログ集

  メイン  |  簡易ヘッドライン  

リンク 単体表示


link jl7gmnのblog jl7gmnのblog (2024/7/3 7:06:06)

現在データベースには 156 件のデータが登録されています。

feed MODEL 1200FXローテーターその15 (2022/6/20 9:17:04)
Logger32 でのローテーター自動コントロールの為のシリアル通信用でESP32DevKitCとの接続レベル合わせ用の出来合いのRS232Cレベル変換器ユニットがあれば、現在組んであるADM2302回路と入れ替えたいと思っていました。現在のADM2302は回路にコンデンサーが4つも外付けで使われています。メインの基板に組み込むと壊れた時の交換等を考えると出来合いのユニットにしておくほうが何かとベターです。パターンも作製しなくてすみます。代替交換もしやすくなります。以前ヤフーオークションを見ていたら丁度今回の用途にぴったしの変換ユニットがあったので落札し購入入手済みのレベル変換ユニットを使います。早速現在のRS232Cレベル変換器インターフェースADM2302のIC回路とそっくり入れ替えです。(レベル変換はESP32DevKitCとRS232CインターフェースではESP側の3.3VのI/Oとシリアル側のレベルとの変換の為に必要となります。)

なお、今まで使っていたUSBシリアル通信用のインターフェースはAvelのSRC06-USBそのままです。

範囲を選択_337 範囲を選択_338
回路図です。
範囲を選択_340

■現在のレベル変換回路(ADM2302ANZ)

■簡単に接続用のケーブルで繋ぐだけで、簡単に入れ替え出来ます。


レベル変換用インターフェースへの入れ替えの次は、シリアル通信が上手くゆくかの確認です。
即、Logger32のアプリケーションで確認しました。
マウスでの地図上をクリックしてそこへ自動でローテーターが動いてゆくかと、Telnet情報で表示された局をクリックしてのその局の方角へのローテーター制御移動の2つの確認です。結果は単純に回路の入れ替えだけなので、全て前と同じ様に問題なく動作しました。

Logger32のTelnet 15mBandの今日の朝方
動作確認とは関係はないですが、朝方は特にアジア圏とヨーロッパ方面が開けているようです。SSBよりCWが多い様でした。
後から調べたら、今日の朝9時まで第63回ALL ASIAN DXコンテストでした。どおりでアジア局が多いと思っていました。


シリアル通信インターフェースがユニットで使用できる様に簡単になりました。基板化もターミナル端子を出すだけで容易になります。最終の基板化(パターン化)の為のへの回路図修正変更もしなければなりません。

つづく?

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

'adc_gpio_init' was not declared in this scope


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


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

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

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

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

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

一番上が一番新しいバージョンアップで 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ですが、かなり様変わりしています。


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


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

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のバージョンアップの情報の内容を見ていかないといけないのでしょうが、今回はバージョンアップを前のバージョンに戻すだけの対応です、細かくは見ていません。もう少しバージョンアップ時の新たな対応情報を調べて見る必要もありますね。

つづく?



feed MODEL 1200FXローテーターその13 (2022/5/12 5:48:21)
ビールの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時になってしまいました。次にしましょうか!

つづく?



feed MODEL 1200FXローテーターその12 (2022/5/11 21:36:00)
エモトのローテーター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を狙うには欠かせないロギングアプリだと思います。

つづく?

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


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

丁度2番めのD0の少し長いデータです。

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


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°まですべての角度のプリセットが出来ます。

つづく?





feed MODEL 1200FXローテーターその10 (2022/5/2 18:17:58)
スマフォでの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に使用時はスマフォでは動作しません。その逆もしかりです。

つづく?


feed MODEL 1200FXローテーターその9 (2022/5/2 16:48:54)
Logger32のローテーターコントロールでのエモト1200FX用として使用したGS-232B設定でのシリアル通信の状態をロジックアナライザーで確認しておきました。変な信号がないかの確認でもあります。Hi !

D0はLogger32から送られてくるコマンド ” C ” です。現在のローテーターの位置角度のリクエストです。
D1はコマンド” C ”を受けてESP32側でローテーターのA/D変換された0°〜360°の現在のローテーター位置角度数値を返します。その時間も計測してみました。
Logger32からのコマンドを受けてから位置角度情報を返すまでの時間は≒88mSec です。これは一箇所だけ捉えた情報で、実際はかなりバラツキがあります。参考程度情報です。



Logger32からのコマンド " をアスキー文字表示設定にして確認です。
範囲を選択_288
Logger32からはシリアルコマンド  "  と " 0D " の(CR)キャリッジリターンコード付きで繰り返し送られて来ています。

コマンド ”  をESP32側のシリアル受信確認後にリアルタイム現状位置角度の数字をGS-232Bの角度返送時使用するヘッダーを付けて角度の数値をアスキー文字で, その後に ” 0D0A ” のデリミタ付けて ” A Z = 1 8 0 0 D 0 A ” で返す様にスケッチで組んであります。組んでる通りに見えています。

GS-232B 返送時HEADDER :" AZ ="
現在のローテーター角度180° :" 180
デリミタとしてのCRLF     :" 0D0A "

ローテーター位置角度が変わればその変わった角度の数値を返すという事をローテーターがプリセットで止まっても、いつまでも繰り返しています。” C ”コマンドを送り現状位置角度を受取りして位置表示をする事を繰り返し続けるシステムです。なので、” C ”コマンドが来ればESP32側は即反応して位置角度情報を送る様にスケッチを組みました。プリセット位置でとまったら終わりではなく、止まったローテーターの位置の角度数値を送り続けます。

あとWindowsXPの場合のLogger32側の処理が遅いので、1秒あたりの位置角度返送回数は5秒間で10回なので、2回/秒のローテーター位置角度確認コマンドを送っている事になります。今時のOSに変わると返送コマンドを受けてから回転表示させて次の” C ”コマンドを出すまでの時間が短くなるといいう塩梅かと思います。

停止時ですが位置角度情報を受けて表示して次の” C ”コマンド送出までは≒500mSECかかっています。


プリセット動作時は、もっと遅くなります。5秒間に7回ですから 1.4回/秒と時間がかかるようになります。

Logger32で位置角度情報を受けて表示して次のコマンド” C ”を送るまでは≒600mSECとなっています。

また、パソコンの状態で変わるようでESP32側のLogger3からコマンド” C ”を受けてから角度を返すまでは上のロジックデータを見ても分る通り早かったり遅かったりがあるようです。

現状のロジックアナライザーを使っての確認をしてみました。変なシリアルデータは全くないようです。

つづく?



feed MODEL 1200FXローテーターその8 (2022/5/1 20:05:07)
アンドロイドスマフォのUDP通信を使ったESP32DevKitCでのエモトの1200FXローテーターの方向指示制御が上手く動作してくれています。次のステップアップとして、世界的に使われているアマチュア無線用ログアプリであるLogger32のアプリケーションの機能にあるローテーターコントロールにて使える様にスケッチを組んでみました。Logger32には対応するローテーターはたくさんありますが、そのうちの日本での定番のGS-232B選択にて動くようにしてみました。制御コマンドはYAESUのマニュアルサイトからダウンロードです。コマンドについては取扱説明書に詳しく載っています。GS−232Bは水平、垂直方向のローテーター対応ですので、水平制御のコマンドを使いました。

ESP32DevKitC最初はTS820のハムログ通信で使用した超小型USBシリアル変換モジュールを使ったのですが、途中で動作フリーズとかで中々確認作業が進みませんでしたので、ArvelのSRC06-USBとADM3202追加にて交換配線した所、かなり安定に動作するようになりました。滞っていた確認作業があっという間に進み、Logger32のDX spot mapでのクリックした場所の角度まで自動で移動動作するローテーター制御がほぼ問題ない?まで出来上がりました。以下動作画像です。

 

Logger32の制御時にはSWを1つESP32DevKitCに追加です。切り替えSW変数名はSL_SWです。GPIO32ポートに入力ポートとしてプルアップでの追加割り当てしました。

フマフォアプリ制御時:LOW (SW ON時GNDレベル)
Logger32対応時          :HIGH (SW OFF時オープン)

#define SL_SW 32 //smafo logger32 change SW  

今回はPCがかなり古いWindowXPを使いましたのでLogger32のバージョンはダウンロード都合でVersion3.50.0です。動画を見ても指針の動きも遅延もあります。Window10等にするとかなりスムースに指針も動くと思います。ある程度の位置ズレも合わせ込みしているところも、分るかと思います。方向のズレの角度として問題ない1°のズレも指針が重ならないと大きく見えます。

スマフォ側の制御時でもLogger32のDx spot mapでリアルタイムのローテーター位置が表示されますので、とても便利です。実際やっていて完成後のマップクリックで自動で動いた時はとても感激しました。Hi !

スマフォのUDP通信制御コントロール時のLogger32のDX spot map ローテーターの位置表示です。



Logger32のローテーターデバッグのフォームではクリック送出の制御コマンドとポーリングリクエストのコマンドCと、それを受けESP32側から送り返す現在のローテーター位置(A/D変換し360°に合わせ込んだ角度)角度情報データをLogger32で受取し黒色指定した指針で表示しています。
デバッグフォーム上でのデータを見ているとかなり受取角度データがあるのですが、間引きした感じで指針が動作しています。これはWindowsXPのスピード処理の遅さが原因です。最近のWindows10ならデータ受取し追従して、かなりなめらかな指針移動で動作すると思われます。ちなみにESP32に追加したシリアル通信は9600bps設定です。ポート指定はシリアル通信制御ではDDSで実績のあるGPIO16,GPIO17をシリアル通信用に指定しています。(前から決めて空けておいたポートです。)

Serial2.begin(9600,SERIAL_8N1,RXD2,TXD2);// RXD2:16,TXD2:17

ESP32DevKitCは本当に処理能力スピードが速くて、様々な通信方式(ブルーツース、WifI、UDP通信、他)対応もあり、スマフォでの制御等が簡単に出来るので最高です。様々な通信方式のアンドロイドのアプリケーションも沢山あることも触手が動く理由でもあります。アプリも便利でかつ簡単に設定できる点など種類が豊富で目的で選べるという点も今回のローテーターコントロールで使う理由になっています。
また、スケッチでほぼハード制御部のをほとんどが対応出来るので、ハードウェアのスィッチング出力制御回路と15°角度ステップ、1°角度ステップ、ホームプリセット、と今回のスマフォ制御とLogger32制御切り替え用SW、LPF回路の追加、及び表示用TFTディスプレー、シリアル通信用のIC追加位で、とても回路がシンプルになる事もかなりの魅力になっています。

対応するローテーターも何の送受のコマンドが使われているかがわかれば、制御機能付きのローテーターは基本全部コントロール出来ます。

最終の状態の回路図もまとめたいと思います。超小型USBシリアル変換モジュール(FT234XD)でのシリアル通信はXPでは余り上手くありませんでしたが、Window10を使っての確認は必要ですね!まだまだ色々とやることが多いです。Hi!

また、気づいた人もいるかと思いますが、マップの中心がアメリカです。日本にしないといけませんが、ロケータでの設定かと思うのですが、誰か教えてくれませんか?スケッチ確認では何処が中心でも問題ないのですが。実使用では日本に合わせないといけませんね!スケッチで疲れたので、少し楽したいです。Hi!

スマフォの一般アプリを使ってのEMOTO 1200FXの方向制御とLogger32のローテーター制御の両方がESP32DevKitCにて対応出来ました。方角をマップ上でクリックしての動作確認も結構見てても楽しいです。

つづく?
続きを読む

feed MODEL 1200FXローテーターその7 (2022/4/29 3:22:55)
エモトのローテーター1200FXをハムアプリケーションのLogger32のローテーターコントロールで動かす為のUDP通信上でのシミュレーションコマンド制御が上手く行きましたので、スマフォ側での操作専用の制御コマンドを追加しました。追加と言っても、既にESP32DevKitCにあるプリセット値を+1カウントアップするSW、または−1カウントダウンするSWと同じ動作をスマフォのボタンで行う追加です。スマフォ側はボタンのラベル設定とコマンド値設定および、CR自動追加設定は他のどのコマンドボタンとも同じ設定方法です。また、プリセット値用以外にローテーターのプリセット後動作完了後のリセットSWと同じボタンも設定しました。またプリセット角度0°のボタンも追加しています。

スマフォ設定はボタンのラベル設定とコマンド設定(アスキー文字)だけです。
Z:プリセット動作完了後のCW、 CCWスマフォボタン操作イネーブルとするリセット
D:プリセット値−1(DOWN)
U:プリセット値+1(UP)

CIMG9572

UDP通信で送信される追加コマンドがESP32で組んだデコードスケッチでデコードされるので、後は分岐ルーチンへの対応するスケッチを追加コーディングしてゆくだけです。

switch構文に追加した上記のコマンド(Z, D, U)のスケッチです。
switch(i[0]){
  case 'Z'://preset is finish then enable CW CCW button
            RotSTOP();
            if((((delta == 0)or(delta ==1)or(delta == -1)))and((Readkakudo >= -5)and(Readkakudo <= 180))){
               kakudo = 360;
               s = 48 ;
            }
            if((((delta == 0)or(delta ==1)or(delta == -1)))and((Readkakudo > 180)and(Readkakudo <= 365))){
               kakudo = 0;
               s = 0 ;
            }
            kakudo=kakudo;
            if((Readkakudo == 360)or(Readkakudo == 359)or(Readkakudo == 361)){
                 if((delta == 0 )or(delta == 1)or(delta == -1)){
                     kakudo = 0;
                     s = 0;
                  }
             }
             break;
 case 'U'://preset +1 When push UDP Apprication PRESET-UP button
             udpupdn = 1;
             kakudo = kakudo+udpupdn;
             udpupdn = 0;
             if(kakudo > 360){
                kakudo = 1;
             }
             kakudo = kakudo;
             break;
 case 'D'://preset -1 When push UDP Apprication PRESET-DOWN button
             udpupdn = -1;
             kakudo = kakudo+udpupdn;
             udpupdn = 0;
             if(kakudo < 0){
                kakudo = 359;
             }
             kakudo = kakudo;
             break; 
            
以下省略〜

ESP32DevKitC側には15°ずつアップまたはダウンするSWがありますが、スマフォには追加しないことにしました。先ずスマフォの操作ボタンが多くなると煩雑になってしまう事と、15°ずつのアップダウン操作は出来ませんが、既にボタンに設定してある0°、90°、180°、270°、360°のプリセットボタンが45°ずつですので停止ボタンとの組み合わせて十分プリセットが出来るからです。これらのプリセット角度ボタンの近い角度ボタンを押してローテーターの回転し始めで停止ボタンを押すと回転が止まります。この状態でプラスマイナスのスマフォボタン操作で1°ずつアップまたはダウンにて目的とするプリセット角度に設定が十分可能だからです。設定し終わったらPRESET-GOボタンを押すだけです。ESP32DevKitCのPRESET-GOと同じでプリセット動作開始操作となります。
他、スマフォの0°、90°、180°、270°、360°のプリセットボタンはどれもホームポジションに設定出来るボタンとして考えても良いかと思います。また、ESP32DevKitC側にはホームポジションとして90°だけSW設定していましたが、スマフォのアプリボタンに任意の角度をコマンド設定すれば自分専用のホームボジション角度設定が簡単に出来ます。ESP32DevKitCのスケッチ追加などは不要です。M***の***の角度設定コマンドをボタンに設定するだけです。
自分のアンテナのホームポジション角度を設定する場合、北を0°として右回転で359°までの間の角度のうち例えば、135°がホームポジション角度だとするとスマフォアプリのコマンドは M135 を設定でOKという事です。
下記は90°のプリセットですが、labelを ”PRESET135", commandを "M135" にするだけです。
ラベルは任意です。ボタンに表示するラベルですので HomePosition でも他何でもOKです。

一通りESP32DevKitC側の操作SWの全機能はスマフォのアプリボタンに設定出来ました。
動作確認は続けていますが、今の所はスマフォ制御にて変な動作は全くおきていません。

つづく?

feed MODEL 1200FXローテーターその6 (2022/4/28 6:41:07)
変な時間に目を覚ましたので、ローテーターのアプリケーションでのシリアル通信による方法をスマフォのUDP通信を利用して、疑似シミュレーションをしてみることにしました。疑似シミュレーションとはいえそのままシリアル回線を繋ぎ送られてくるシリアルデータをアスキーコマンド文字に変換するだけのルーチンを組めばそのままアプリでのローテータプリセットが動作します。先ずはアプリケーションから送られるコマンドを確認しました。これは有能なハム用アプリのLogger32でローテーターコントロールに対応するYAESUのGS232A(B)の水平角度セット関連のコマンドを一部ですがそのまま使用します。GS232A(B)の取扱説明書からの確認です。

R [ENTER] :右回転
L [ENTER] :左回転
A [ENTER] :右回転または左回転の停止(ストップ)

Mxxx[ENTER] :水平ローテーターの角度セット(水平ローテーターの方向が、xxxになるまで回転
(000〜450 または 360   数値を3桁で入力)

上記が設定した主なコマンドです。現在の角度チェックコマンドの C[ENTER] はディスプレーに表示されているので不要で使いません。アプリケーションで動作上必要な場合は組み入れることにしています。

これをスマフォのアプリ(UDP TCP Server)に設定します。
CIMG9563

Button configへのCCWのラベルとコマンド”L”の設定です。

STOP(停止)コマンド ”A"の設定です。

CWのコマンド ”R”の設定です。

アプリケーションからの送信を想定したMコマンドでのプリセット角度90°の設定です。("M090")
CIMG9567

他の角度180°、270°、360°もボタン5,6,7に同様に設定しています。

もう一つ必要なのがアプリケーションとは関係なくディスプレー側に付く角度ステップSWでのプリセット値に対して動かす為のコマンドも設定してありあす。PRESET-GOラベルで”M”に角度xxxの付けない場合の特別なアプリケーションとは関係ないコマンドをボタン8に設定しました。
コマンドMの解析で角度プリセット値が無い場合の処理で対応しました。

なお、コマンドはアスキー文字です。それとコマンド仕様通りにアスキー文字の後には自動でCR(キャリジリターンキーコマンド)が付くようにアプリの Settings で add Carrige Return に☑チェックを入れておきます。
(注意事項としてGS232A(B)のコマンド説明の中に”LF”コマンドは入れない様にとあります。)
こうすると自動で CCWの場合 ”L”、"CR"がスマフォのCCWボタンを押すとコマンドで送出されます。


これをESP32側でデコードします。
  char i[64];
  j = udp.read(i,64);
  i[j]='\0';

アスキー文字は数値で表示されますが、コマンドはi[0],i[1],i[2],i[3],i[4] .....の配列に入ります。
単体のコマンドはi[0],i[1]に入ります。CCWだとコマンド”L”なので、それぞれデコード値は"76","13"となります。

プリセット角度付き設定コマンドの場合はi[0],i[1],i[2],i[3],i[4]にアスキーコードで入ります。
プリセット90° の場合 コマンド "M090" です。

コマンドでのデータを文字としては入手出来たのでプリセット付き設定コマンドの場合は角度を抜き出します。100°以下の場合角度が3文字で0が入るので、Mより後が角度データですので文字数値変換で0を取り除きます。"090" を数値の90にします。100°以上は問題なく3桁の整数値に変換されます。

主な変換部です。
substringを使い1文字目+1以降全部を抜き出します。"090"
  String kakudomoji =gattai.substring(1);  

文字を数値化します。整数値の90に変換されます。
int32_t suuchikakudo =0;
                   suuchikakudo = kakudomoji.toInt();
後はメインルーチンで角度設定用変数 kakudo にプリセット値のsuuchikakudo を入れればプリセット値の角度になるまで動いてゆき自動収束動作後にローテーターが止まります。

なおコマンド毎の動作はswitch 構文で コマンド自体のi[0]で分岐処理しています。

 switch(i[0]){
        case 'A':
            RotSTOP();
            Houkou = 0; //CW:1 , CCW=2
          //digitalWrite(ledccw,0);
          //digitalWrite(ledcw,0);
          break;
        case 'L':
            RotCW();//change
            Houkou = 2; //CW:1 , CCW=2
          //digitalWrite(ledccw,1);
          //digitalWrite(ledcw,0);
          break;
        case 'R':
            RotCCW();//change
            Houkou = 1; //CW:1 , CCW=2
          //digitalWrite(ledcw,1);
          //digitalWrite(ledccw,0);
          break;
以下省略〜

上記の設定でアプリケーションを想定したコマンドでも動作するようになりましたが、やはり問題はありました。自動収束動作をさせた為にプリセット値とリアルタイムの角度データの差分が−1で停止もあるのでこの時に次のプリセットの動作方向が逆に動いて行くエラーです。対策としてプリセットで使用した差分値は使わずにプリセット停止状態の時のリアルタム角度とアプリからのコマンドプリセット値による別の差分値で利用することで新たなプリセット角度コマンドとのプリセット差分はCW方向でもCCW方向でも正常動作するようになりました。
Logger32でのローテーターコントロールは画面上の任意?角度の位置をクリックした時に例えば90°の位置だった場合コマンドの[M090][CR]がシリアル出力されるのだと思います。想像なので実際のアプリのシリアル値や操作も確認しないといけないですね。
今回の疑似アプリ対応スケッチはもう少し色々設定操作して問題がないか見てみます。

つづく?

« [1] 6 7 8 9 10 (11) 12 13 14 15 16 » 

execution time : 0.067 sec
サイト内検索

メインメニュー

ログイン
ユーザ名:

パスワード:



パスワード紛失


オンライン状況
190 人のユーザが現在オンラインです。 (77 人のユーザが 無線ブログ集 を参照しています。)

登録ユーザ: 0
ゲスト: 190

もっと...