OnStepを動作させるとき、何らかの方法で現在時刻と緯度経度を設定する必要がありますが、OnStepの実装の中で、TIME_LOCATION_SOURCE を使って、RTCまたはGPSから情報を取得することができます。
今回はTennsy4.0限定ですが、OnStep基板Rev2.0でGPSモジュールを載せる方法をメモしておきます。
GPSモジュールの実装
今回は秋月電子で取り扱いのある、GPSモジュール AE-GYSFDMAXB を使用しました。
GPS受信機キット 1PPS出力付き 「みちびき」3機受信対応
これ以外にもシリアル出力のGPSモジュールであれば対応可能です。
ただし、Teensy4.0のI/Oは3.3V かつ5Vトレラントではないので、GPSのI/Oレベルも3.3Vのものが必要になります。
GPSモジュールとTeensyの接続ですが、使用できるピンがすでに不足しているので、Teensy4.0の裏面のピンパターンから配線します。
24ピンのTX6と、25ピンのRX6を引き出します。5VとGNDは基板のJ6から取れます。
表面実装のESP-WROOM-02の上のスペースにGPSモジュールを載せました。
もちろん、モジュール同士絶縁してください。
GPSモジュールにバックアップのボタン電池を取り付けられますが、今回は付けていません。
OnStepの書き換え
事前に、Arduino IDEのライブラリに TinyGPSPLUS を導入しておいてください。
手順は「ツール」-「ライブラリの管理」から TinyGPSPLUS を検索してインストールすればOK。
OnStepの修正箇所は Config.h のみです。
Config.h 内に TIME AND LOCATION セクションがあるので、そこを修正します。
TIME_LOCATION_SOURCE を GPS に修正し、
SERIAL_GPS を Serial6、SERIAL_GPS_BAUD はGPSモジュールのシリアル速度に書き加えます。
あとは通常通り、TeensyにOnStepを書き込みます。
以上で完了です。
動作確認
実際にGPSから位置情報を取得しているか調べます。
Androidアプリ OnStep2 から調べる
Observing Sitesメニューの中の Site Name が GPSになっていて、位置情報が正しければ動作しています。Site 1にGPSが割り当てられているようです。
Ekosから調べる
Ekosから接続すると、Site Management の中の Site Name が GPS になっています。
まとめ
最小限の修正でGPSからの時刻および位置情報の取得が可能になりました。
今回はオフィシャルの実装に沿った修正なので、OnStepがバージョンアップしても使用できる可能性が高いように思います。
OnStepをスタンドアロンで動かし、ハンドコントローラやアプリのOnStep2で運用する場合はGPSによって便利になると思います。
INDIシステムで運用する場合は、GPSDのようなシステムで動かす仕組みの方が汎用性があって利便性は高くなります。
なお、OnStep上の実装は、メインのloop内でGPSからSite 1 の位置情報を更新し続けるようになっています。
早速リクエストにお答えいただきありがとうございました。
返信削除MAX-ESPを作る準備をしていましたが、現行の基板に追加できるとのことで助かりました。
お正月休みに試してみます。
お礼申し上げます。
こんにちは。
削除試しにビルドしたら意外とあっさり動作しました。
基板上のシリアルピンは他のモジュールで使用する可能性があるので、空きピンを使いました。
GPSモジュール側からのシリアル受信のみ使用するなら、GPS側TXピンだけでOKなので1本引き出しで済みます。
早速ありがとうございました。
返信削除同じGPSモジュールを使用して試してみました。
GPSのLEDが点滅して動作しているようですがObservingSiteでGPSが出てくれません(OnstepとGPSがつながっていない?)。
もう少し試行錯誤してみます。
こんにちは。
削除LEDが点滅していればGPSは測位していると思います。
シリアルのTXとRXはクロス接続という点と、あとはConfig.hファイルの修正くらいなので問題点の洗い出しは難しくないと思います。
頑張ってみてください(^^)/
ちなみに、記事のOnStepはバージョン4.24を使用しています。
こんばんは。すみませんです。もしよろしければご教示ください。
返信削除// TIME AND LOCATIONの
#define Serial_GPS Serial6
はコンパイルエラーになり
#define SerialGPS Serial6
でコンパイルは通りますがOnStepのObservingLocationでGPSが表示されません。
何か思い当たることがありましたらお願いいたします。
OnStepは4.24でTeensy4.0です。
#define Serial_GPS Serial6
削除ですが、Serial_GPS はすべて大文字でないといけません。
#define SERIAL_GPS Serial6
でお試しください。
返信ありがとうございます。
返信削除#define SERIAL_GPS Serial6
はコンパイルエラーになり下記のメッセージが出てきます。
requires adding a line to identify the serial port '#define SerialGPS Serial6' for example."
IDEなどのバージョンを変えてコンパイルをためしてみます。
セルフレス申し訳ありません。
返信削除OnStepのバージョンが古かったようです。あらたにDLしたらコンパイルOKでした。
Teensy4.0にフラッシュまではきましたがObservingSiteのSite1にGPSがでるところまではいっていません。
もう少しあがいてみます。
コードで間違えやすいのは、
削除大文字小文字の区別
つづりミス
全角スペースは使用しない
ぐらいかと思います。
define名が間違っていてもビルドは通る可能性が高いのでご注意ください。
GPSやっと繋がりました。ありがとうございました。
返信削除以下おバカな質問で申し訳ありません。
スマホは位置と時間の情報を持っており、OnStep Controller2を起動したときにObserving Siteと時刻についてはスマホが持っている数値を半自動的に入力してからSkysafariを使うようにしています(10秒程度で完了)。
GPSがつながっていることによって場所と時間の入力が不要になるという考え方でよろしかったでしょうか?
こんにちは。
削除GPSを載せると、そこから位置情報と時刻を取得しますので、OnStep Controller2などから手動で設定する必要がなくなります。
SkySafariで接続時にスマホ情報を反映させる必要もなくなります。
外部からの助けなく、位置と時刻を取得できると考えてもらえばOKです。
はじめまして!
返信削除今3Dプリンターでギアから赤道儀を製作しています。OnStepもとりあえず動作するところまで辿り着きました。これからFocuserとRotatorもOnStepを通してINDIで操作しようと計画しています。
いきなり質問で大変申し訳ありませんが、OnStepにGPSとRTCを実装した場合、KStarに時刻および位置情報は反映するのでしょうか?もし反映するなら最初から実装しようかと考えております。
よろしくお願いします。
KEN_Xさん、こんにちは。
削除OnStepに載せたGPS情報をKStarsに反映できるか?ということだと思いますが、KStarsでINDI接続によってコントロールしていると仮定します。
KStarsの設定-INDIの中に、Time & Location Updates という項目がありますが、この中の、Mount updates KStars が該当オプションかと思います。
時間と位置情報の取得オプションも隣にあります。
赤道儀コントローラの情報を利用する方法は私も試したことがないので手元に情報がありませんが、ひょっとしたら挙動が怪しいかもしれません。
お試しください。
iPadでコメントしたのですが、アップされてませんでした。
削除早速、ブレッドボードで組んでみました。ローテーター、フォーカーサーの動作確認は出来ました。GPSについては、家の中で衛星を捕捉できずKstarsとの連携確認は出来ませんでした。明日にでもバッテリーをもって屋外で試す予定です。
ありがとうございました。
こんな感じのサイクロイダルドライブ赤道儀を作っています。
削除https://mr-deep-addicted.com/?p=1322
無地、OnStepのGPSからKstarsの時間と位置に反映出来ました。
返信削除ありがとうございました。
こんにちは。GPS接続に関しては大変お世話になりました。
返信削除以下、もしよろしければご教示いただけますと幸いです。
OnStepのST4端子とオートガイダーを接続し、OnStepとスマートハンドコントローラー(SHC)をシリアルで接続したいと考えています(ST4端子とSHCが直接接続できることは承知しています)。
Teensy4.0のSirial7とSHCを接続するためにOnStepのConfig.hを下記のように書き換えましたが文法的に合っていますでしょうか。余計な行があるかもしれません。
よろしくお願いします。
/// SERIAL PORT COMMAND CHANNELS --------------------------- see https://onstep.groups.io/g/main/wiki/Configuration-Controller#SERIAL
#define SERIAL_A_BAUD_DEFAULT 9600
#define SERIAL_B_BAUD_DEFAULT 9600
#define SERIAL_C_BAUD_DEFAULT 9600
#define SERIAL_C Serial7
#define SERIAL_B_ESP_FLASHING OFF
#define SERIAL_C_BLUETOOTH_NAME "OnStep"
こんにちは。
削除Teensy4.0のSerial7をSHCのコントロールポートとして使用したいということかと思います。
Serial7によって通信上、SHCとの接続ができたとしても、その先の処理がコードがないので、動作しないのではないかと思います。
また、SERIAL_CはESP32ボード制御用に予約されているので、定義をそのまま使用することはできないかと思います。
返信いただきありがとうございます。
返信削除これは、以前に購入させていただきました、のりきゅうさんが配布されている基板とは少し話題が異なるのですが、お聞きしてお答えいただく人を知らないので無理を承知でお聞きしました。
もしよろしければで構いませんが、Teensy4.0の裏面のTX7RX7をシリアルの窓口として有効にするコマンドがありましたらお教えいただけますと幸いです。
上記の文章をConfig.hに追加してもTX7RX7の出力は0Vで何の信号も出ていません。
削除単純にRX7/TX7をシリアルとして使うために初期化するなら、コード自体に処理を追加する必要があります。
例えば、OnStep.ino の 196行目以降に起動時に処理される各シリアルポートの初期化処理が書いてあります。
この最後の部分、229行目あたりに、
------------------------------------------------------
#if ST4_HAND_CONTROL == ON && ST4_INTERFACE != OFF
SerialST4.begin();
#endif
Serial7.begin(9600);
// take another two seconds to be sure Serial ports are online
delay(2000);
------------------------------------------------------
" Serial7.begin(9600);"の部分を記述すれば、とりあえずSerial7は初期化され、通信可能になります。
後は、必要な通信処理を書いていくことになります。
ありがとうございます。私には手に負えない可能性が高いですが、試してみます。
返信削除以前から時々質問させていただいています。その都度お答えいただきありがとうございます。もう一つお聞きしてもよろしいでしょうか。
返信削除OnStep基板上にはんだ付けしたWROOM02にWifiにかえてスマートウェブサーバーをインストールしてみました。ちゃんと動作しますがOnStepController2に下記のエラーがでます。
init nv/eeprom bad
あまり気持ちがいいものではないので、同じモジュールに再びWifiをダウンロードしました。動作に問題はないのですが、先のエラーメッセージが消えません。
WROOM02のEEPROMの内容をいったん全部消去して再びWifiをダウンロードしたいのですが、WROOM02のEEPROM消去のやり方がよくわかりません。ネットにいろいろでていますが、どれも?です。
やり方をご教示いただけますと幸いです。
こんにちは。
削除>OnStep基板上にはんだ付けしたWROOM02にWifiにかえてスマートウェブサーバーをインストールしてみました。ちゃんと動作しますがOnStepController2に下記のエラーがでます。
>init nv/eeprom bad
>あまり気持ちがいいものではないので、同じモジュールに再びWifiをダウンロードしました。動作に問題はないのですが、先のエラーメッセージが消えません。
EEPROM上のデータが不正のエラーのように思いますが、これ自体はWROOM2ではなく、Teensy上のEEPROMだと思われます。
で、問題点を絞り込むに際し、OnStepのConfig.h上のパラメーターが正常値になっているか確認してみてください。
OnStepのフォーラムを探すと、同じエラーが発生しているケースが見つかります。
・PEC設定が間違っていたパターン
https://onstep.groups.io/g/main/topic/nv_eeprom_bad/84031253
https://onstep.groups.io/g/main/topic/78043436
・AXIS1_DRIVER_IHOLD値が間違っていたパターン
https://onstep.groups.io/g/main/topic/init_nv_eeprom_bad_in_android/87697087
今一度、OnStepのConfig.hの確認をお勧めします。
また、OnStepのコード上でEEPROMの初期化ができるようです。
OnStep.ino 内の
#define NV_FACTORY_RESET OFF
を ON にして書き込むと、EEPROMが初期化された上で処理されるようです。
初期化後は OFFに戻しておくことが必要です。
いろいろありがとうございます。
返信削除#define NV_FACTORY_RESET ON OFF
でうまくいきました。ご報告します。