周知のように、アマチュア無線は、通信活動の特性上、各 QSO(同士の通信)の後にはログ記録を行う必要があります。しかし、電波は光速でリアルタイムに伝送されるため、ほんの一瞬で世界中に届きます。そのため、世界各地で使用されている時間が異なるため、統一のため、アマチュア無線では通常、UTC(協定世界時)を使用します。
UTCと北京時間の差は8時間なので、計算も比較的簡単です。しかし、実際には毎回手で計算するのが少し大変だったので、UTCの時間を簡単に確認できる時計を作りたいと思いました。また、QTH(送信場所)の情報交換も重要な要素であり、アマチュア無線での QSO(通信)では頻繁に情報が交換されます。特にFT8などのデジタルモードの人気が高まっているため、メーデンハイド・グリッド座標が広く利用されています。しかし、メーデンハイド・グリッドの取得は容易ではないため、現在地のグリッドをすぐに確認できるような小さなデバイスを作りたいと考えていました。しかし、学校で他の課題があるため、この計画は一時的に保留することになりました。
その後、友人のBG5ABLがGNSSモジュールを使用しているのを見て、再びこのプロジェクトに関心を持つことになり、計画を進めることにしました。まず、重要な部品の選定です。GNSSモジュールとしては、宙のAir530Zを選びました。これは、使い勝手が良く、ネイティブでアクティブなGPSアンテナを搭載しており、性能も十分だったためです。また、資料はすべて中国語で提供されているため、読者が容易に理解できます。。

次に、マイコン(MCU)についてですが、開発の容易さや十分なリソースの確保が非常に重要であると考えています。そのため、最終的にSTM32シリーズの中から選択することにしました。以前はSTM32シリーズ全体の価格が高騰していましたが、STM32G0は比較的安価で、5元以下で購入できるという点が魅力でした。必要なリソースを概算した結果、STM32G030F6P6を選択しました。

全体的な設計が決定されたので、基板の設計に取りかかりました。これまでに3つのバージョンを作成しましたが、それぞれのバージョンで、これまで見過ごしていた小さな欠陥が見つかったため、修正を繰り返しています。しかし、すべてのバージョンは正常に使用できます。

私は、立創EDAを使用して回路図を作成しています。本格的な商用版と比較すると機能は限定されますが、私のような個人や小規模な開発者にとっては十分に使いやすいツールです。
プログラムに関しては、以前GNSSモジュールを開発した経験から、それほど手間をかけずに、基本的な機能を備えた初期バージョンを作成することができました。

最初は、RT-Threadのリアルタイムシステムを導入する予定でしたが、その後、あまり必要性を感じなくなったため、裸に近い状態でプログラムを実行する方法を選択しました。実際に、外部メモリを使用しない場合、画面で使用する文字データがFlashメモリを大きく消費することがわかりました。現在のバージョンでは、O1最適化を採用しており、プログラムサイズは31.54KBとなり、私の32KBのROMを搭載したマイコンにわずか差で収まっています。マイコンには2つのシリアルポートがあり、一つはモジュールとの通信に使用し、もう一つは上位機との通信に使用しています。モジュール間のデータ転送は継続的に行われるため、CPUへの負荷を軽減するためにDMA(Direct Memory Access)を使用してシリアルポートからのデータ受信を行っています。これにより、データの損失を防ぐことができます。

プログラムの準備が完了したら、基板(PCB)の到着を待ち、それに基づいて組み立てと配線作業を行います。

やはり、すべての貼付タイプで最も手軽なのは、バーベキューグリルを使用する方法です。溶接とプログラミングが完了した後、このような結果が得られました。

Air530Zモジュールは、アクティブアンテナとバックアップ電源の存在下で使用した場合、非常に迅速なホットスタートによる位置特定が可能。ほぼ瞬時に位置を特定できますが、モジュールに保存されている履歴データの有効期限を超えた場合、コールドスタートでは若干遅くなることがあります。
現在、プログラムをいくつかのインターフェースに分割しています。起動時には、まず歓迎画面が表示されます。

起動後、デフォルトでは詳細な情報表示画面が表示されます。

この画面では、システムが現在の時刻、速度、緯度・経度、およびメーデンハイッドのグリッド情報を表示します。最上部のステータスバーには、現在の位置情報、システム温度(MCUに内蔵された温度センサーを使用し、工場で校正済みの値)、およびバッテリー残量を示す情報が表示されます(電圧を推定しており、クーロン計を使用していないため、正確な値ではありません。あくまで参考としてください)。
右側のボタンを押すことでページを切り替えられます。2ページ目は、日付と時間の表示です。左側のボタンで、協定世界時(UTC)または中国標準時(CST、北京時間)の表示を切り替えることができます。


次のページには、速度に関する情報がまとめられています。具体的には、km/h、m/s、ノットという3つの単位で表示されており、現時点では英制単位への変換機能は実装されていません。そのため、左側のボタンは現在使用できません。私は室内で測定しているため、電波の強度が弱いことが原因で、位置情報がずれて速度が算出されている可能性があります。

次に表示されるページには、システムに関する情報が記載されています。具体的には、現在のシステム温度(これはステータスバーにも表示されているものと同じ)、現在のシステム動作電圧、現在のバッテリー電圧、およびファームウェアのバージョン(現在6つのバージョンにアップデート済みなので、1.5と表示されます)などが含まれています。

最後のページは、GNSSの元のメッセージ表示です。ここでは、解析を容易にするために、モジュールがGNRMCの情報のみを使用するように設定しています。GNRMCの情報だけでも十分ですが、欠点は標高情報や衛星数に関する情報がないことです。後で時間があれば、他のメッセージの解析機能を追加することも検討します。

これらのデータを画面に表示するのと同時に、マイクロコントローラ(MCU)と上位機との間のシリアル通信も常に稼働しています。MCUは、モジュールから送信されるGNUTC/NMEAデータパケットをリアルタイムで転送し、これにより、このデバイスをコンピュータに接続(CH340Nチップが内蔵されています)することで、BktTimeSyncのようなソフトウェアを使用して、GNSSシステムを用いてコンピュータの時刻同期を行うことができます。これは、特にフィールドでのFT8などの厳密なタイミング要件を持つ通信において非常に役立ちます。
現時点で、これらの機能を実装しました。今後は、この小さな玩具の機能拡張を試みます。具体的には、より多くのメッセージの解析や、起動画面での呼び出し表示のカスタマイズなどです。また、現在のGUIのデザインも改善したいと考えています。もし、残りのROMがこれらを実現できない場合、STM32G031F8P6に乗り換えることになるかもしれません。このチップは64KBのROMを搭載しており、現在持っているものより倍以上の容量があります。(あるいは、あえて諦める)
また、SolidWorksのソフトウェアの使い方を学んでいます。この小さなおもちゃに3Dプリントでケースを作りたいと思っています。(笑)
私のブログを読んでいただきありがとうございます。私は、組み込みシステムとアマチュア無線が密接な関係にあると考えています。組み込みシステムの開発を通じて、面白いおもちゃを作ることができ、それがアマチュア無線にも役立つと考えます。
ご意見やご提案をお待ちしております。皆様とともに、新しいコミュニティの発展に貢献できるよう努めます。
BH8PHG 2022年8月16日