無線ブログ集
メイン | 簡易ヘッドライン |
DDS-VFOリニューアル情報その1 (2023/7/18 3:37:39)
ふと、Sメータのデジタル化の情報をESP32のサンプルから試していて、スプライトのサンプルとかをyoutubeで勉強していました。ふとWeb情報からTwitterを覗いたところJF3HZB
uebo氏がTFTの多品種対応書き直し版をしていることがわかり、GItHubより、さっそく試しに、ダウンロードしてみました。
tjlab-jf3hzb/Digital_VFO_with_analog_daial_V2
スケッチはVFOsys2_00.inoです。
新たなドライバーのダウンロードが必要でしたので、さっそくzip形式で1つダウンロードして自動組み込みしました。LovyanGFXライブラリです。GitHubからCodeでダウンロードです。ZIPファイルをライブラリマネージャーでインストールです。インストールライブラリをダウンロードしたので選択クリックで下記のインクルードファイルをスケッチに取り込みできます。
そのまま何もしないで、ボードをつないでコンパイルすると、エラーがズラズラと出ます。
エラーメッセージを読んで、対応してゆくことになります。
■dial.hppの書き換え少々(各種TFT用のhppファイル)
私の手持ちのTFTはST7735ですのでこの情報に合わせてスケッチを修正です。
オリジナルは
#include "prm\ST7735S_128x160.hpp"
このhppファイルは階層prmにありますが、VFOSYS2_00.inoと同じ階層に移動しました。
次に書き換えます。階層を別にしないほうが私の場合分かりやすいためです。元のままでも問題はないです。
#include "ST7735S_128x160.hpp"
しかし、このファイルでも下記のエラーを吐きました。
定義がないとのメッセージなので、内容をみて修正してゆきます。
tjlab-jf3hzb/Digital_VFO_with_analog_daial_V2
スケッチはVFOsys2_00.inoです。
新たなドライバーのダウンロードが必要でしたので、さっそくzip形式で1つダウンロードして自動組み込みしました。LovyanGFXライブラリです。GitHubからCodeでダウンロードです。ZIPファイルをライブラリマネージャーでインストールです。インストールライブラリをダウンロードしたので選択クリックで下記のインクルードファイルをスケッチに取り込みできます。
#include <LovyanGFX.hpp>
あと、動かすためというか、TFTへの表示を見たくて、取り急ぎ若干のスケッチへの定義追加と数か所の修正をして、TFT表示の確認まではできました。そのまま何もしないで、ボードをつないでコンパイルすると、エラーがズラズラと出ます。
エラーメッセージを読んで、対応してゆくことになります。
■dial.hppの書き換え少々(各種TFT用のhppファイル)
私の手持ちのTFTはST7735ですのでこの情報に合わせてスケッチを修正です。
オリジナルは
#include "prm\ST7735S_128x160.hpp"
このhppファイルは階層prmにありますが、VFOSYS2_00.inoと同じ階層に移動しました。
次に書き換えます。階層を別にしないほうが私の場合分かりやすいためです。元のままでも問題はないです。
#include "ST7735S_128x160.hpp"
しかし、このファイルでも下記のエラーを吐きました。
定義がないとのメッセージなので、内容をみて修正してゆきます。
VFOsys2_00\ST7735S_128x160.hpp:111:25: error: 'SPI_DMA_CH_AUTO' was not declared in this scope
cfg.dma_channel = SPI_DMA_CH_AUTO; // 使用するDMAチャンネルを設定 (0=DMA不使用 / 1=1ch / 2=ch / SPI_DMA_CH_AUTO=自動設定)
このスコープで宣言がされてないとあるので、単に宣言します。内容から0,1,2の内から選ぶ設定のようですが、1と2は推奨しないとあるので必然的に0が設定する値となるので、次のように宣言しました。
#define SPI_DMA_CH_AUTO 0
この宣言を一上の 4行目に入れました。
これでこのエラーは回避できました。
■dial.cppの修正箇所について
ここでのコンパイルエラーは次のメッセージでした。
Compilation error: 'fmax' is not a member of 'std'
このfmax自体はstdのメンバー関数の定義がないとのことなので、ひとまずカーソルをfmaxにおき、右クリックで定義に移動をします。
するとstl_algobase.hのなかにメンバー定義の箇所がありました。
namespace std ‗GLIBCXX_VISIBILITY(default) のなかにメンバー関数が定義されているのですが、maxがそれらしきメンバーのようです。。ほかにはminなどもありました。 ということでfmaxをmaxに修正します。
数か所fmaxがあるので、全部maxに書き換えます。
上記書き換えでこの数か所エラーも全部回避できました。
ESP32DevKitCとTFT液晶の接続のみしてある状態でのコンパイルです。ほかの接続はまだしていませんが、表示がうまく出ました。
以前のVFOsysです。TS820Sで組み込みで使わさせていただき、大変お世話になっています。
初回は820VFOでのVFOsysの使用です。本体のTS820Sとは本体に組んだArduinoNanoよりのシリアル通信周波数情報をESP32で受けて周波数表示を変える仕様でした。ハムログでのシリアル通信での周波数読み取りもESP32では別のシリアル通信を使い行っていました。
2回目はTS820S本体に組み込みで使用しました。ボタンSWでのRITも付けました。ハムログとの連携も行いました。去年の2月の頃には21MHzでのWとのQSOでも大活躍しました。
と以前のVFOsysは大活躍しています。
ロータリーエンコーダだけつないで確認しました。プルアップ2.2kでポート16,17接続で、センターアースにつないで、CW,CCW方向とも周波数表示が問題なく変化しました。DDS-ICはまだ接続してないので、今日はロータリーエンコーダでの周波数表示変化確認だけです。
今回のリニューアルでは周波数の表示がデジタルフォントのような感じですね。他にもルーチン的にバージョンアップしていると思われます。
GitHubにあるreadme.txtの内容です。
以前のVFOsysではTS820で利用させていただきました。デジタルサブダイヤルに感激したことからの展開で、次々とスケッチも拡張し、全バンド対応化、ハムログでの周波数の読み取りもDualコア機能を駆使し、ダイヤルを回した時だけシリアル通信でできるようにしたりと、最近のトランシーバーのような使い方をアナログトランシーバー(TS820S)でも+アルファ的にバージョンアップさせることができました。オリジナルのuebo氏の公開スケッチのおかげです。今回は、新しいサイズの大きなTFTも対応しているとのことですので、ますます応用範囲がひろがりますね。素晴らしいDDS-VFOスケッチのリニューアル公開にとても感謝しております。
これから少しまたVFOsysにはまりそうです。古い受信機などがあるので、まずはアナログからデジタルへの展開のDDS-VFO化からやれたら楽しいかと思います。最近わたしのパソコンもある程度のスピードの速いものを購入してありましたので、ESPのスケッチを新しいPCでコンパイルするようにしています。スケッチコンパイルが前のVistaインストールのLinuxと比べると雲泥の差です。早すぎるぐらいです。ストレスがありません。最新のプラットフォームIDEにもしています。少し勝手が変わった感じですが、慣れると問題ありません。Uebo氏も古いボードマネージャーでは新しいものが対応していないということでの新しいボードマネージャーでのリニューアルでもあるようです。新しいものへ対応してゆくことへの準備も必要ですね。まずは情報提供まで!
つづく?
このスコープで宣言がされてないとあるので、単に宣言します。内容から0,1,2の内から選ぶ設定のようですが、1と2は推奨しないとあるので必然的に0が設定する値となるので、次のように宣言しました。
#define SPI_DMA_CH_AUTO 0
この宣言を一上の 4行目に入れました。
これでこのエラーは回避できました。
■dial.cppの修正箇所について
ここでのコンパイルエラーは次のメッセージでした。
Compilation error: 'fmax' is not a member of 'std'
このfmax自体はstdのメンバー関数の定義がないとのことなので、ひとまずカーソルをfmaxにおき、右クリックで定義に移動をします。
するとstl_algobase.hのなかにメンバー定義の箇所がありました。
namespace std ‗GLIBCXX_VISIBILITY(default) のなかにメンバー関数が定義されているのですが、maxがそれらしきメンバーのようです。。ほかにはminなどもありました。
template <
typename _Tp, typename _Compare >
_GLIBCXX14_CONSTEXPR
inline
const _Tp&
max ( const _Tp& __a, const _Tp& __b, _Compare __comp )
{
//return __comp(__a, __b) ? __b : __a;
if ( __comp ( __a, __b ))
return
__b;
return __a;
}
//int yc = voff +
top_margin + (std::fmax(radiusMain, radiusSub));
int yc = voff + top_margin + ( std:: max (
radiusMain, radiusSub )) ;
上記書き換えでこの数か所エラーも全部回避できました。
ESP32DevKitCとTFT液晶の接続のみしてある状態でのコンパイルです。ほかの接続はまだしていませんが、表示がうまく出ました。
以前のVFOsysです。TS820Sで組み込みで使わさせていただき、大変お世話になっています。
初回は820VFOでのVFOsysの使用です。本体のTS820Sとは本体に組んだArduinoNanoよりのシリアル通信周波数情報をESP32で受けて周波数表示を変える仕様でした。ハムログでのシリアル通信での周波数読み取りもESP32では別のシリアル通信を使い行っていました。
2回目はTS820S本体に組み込みで使用しました。ボタンSWでのRITも付けました。ハムログとの連携も行いました。去年の2月の頃には21MHzでのWとのQSOでも大活躍しました。
と以前のVFOsysは大活躍しています。
ロータリーエンコーダだけつないで確認しました。プルアップ2.2kでポート16,17接続で、センターアースにつないで、CW,CCW方向とも周波数表示が問題なく変化しました。DDS-ICはまだ接続してないので、今日はロータリーエンコーダでの周波数表示変化確認だけです。
今回のリニューアルでは周波数の表示がデジタルフォントのような感じですね。他にもルーチン的にバージョンアップしていると思われます。
GitHubにあるreadme.txtの内容です。
"VFOsys2" is the original version of a digital VFO with analog dial display by Tj
Lab(JF3HZB),
which can be compiled on Arduino IDE with Board manager "esp32 ver. 2.0.9" and Library "LovyanGFX ver. 1.1.7".
Usable display panel:
ST7735S (128 x 160, 80 x 160),
ST7789 (135 x 240, 240 x 240, 240 x 320),
ILI9341 (240 x 320),
SSD1331 (64 x 96).
JF3HZB T. Uebo
Tj Lab
https://tj-lab.org
これから少しまたVFOsysにはまりそうです。古い受信機などがあるので、まずはアナログからデジタルへの展開のDDS-VFO化からやれたら楽しいかと思います。最近わたしのパソコンもある程度のスピードの速いものを購入してありましたので、ESPのスケッチを新しいPCでコンパイルするようにしています。スケッチコンパイルが前のVistaインストールのLinuxと比べると雲泥の差です。早すぎるぐらいです。ストレスがありません。最新のプラットフォームIDEにもしています。少し勝手が変わった感じですが、慣れると問題ありません。Uebo氏も古いボードマネージャーでは新しいものが対応していないということでの新しいボードマネージャーでのリニューアルでもあるようです。新しいものへ対応してゆくことへの準備も必要ですね。まずは情報提供まで!
つづく?
execution time : 0.021 sec