Thunderbolt互換GPSDO兼NMEA-0183GPS受信機用モニタ
sorry. japanese only.
H8S2128を使用して,Thunderbolt互換GPSDOとNMEA-0183出力のGPSをモニタするGPSモニタ
を作成しました。
↓のような感じでLCD表示基板より一回り大きい100mmx35mm程度の基板に収まっています。
以前にも,秋月のH8S付マイコン基板(その1)でThunderbolt互換GPSDOのモニタを作りま
したが,基板のサイズが大きく,ハンドリングしづらい,ということもあり,今回はサ
イズにこだわりコンパクトな基板にまとめてみました。
機能も少々追加して,昔AVRで作成したNMEAメッセージ表示の機能も持たせて,NMEA-0183
とThunderbolt互換GPSDOの両用GPSモニタと呼べるようなモノになっています。
実際に動作している様子を動画にしました( http://www.youtube.com/watch?v=BQOdxvxgXfQ )
基板のサイズもLCD表示器より一回り程度大きいだけで,GPSからのメッセージを編集し
て見やすくして表示しますので,簡単なGPS時計や位置表示の表示器としても使えます。
時刻表示に関して言えば,Thunderbolt互換GPSDOは,ほぼPPSに合わせて時刻パケット
が出力されてくるのでよいのですが,NMEA-0183GPS受信機は機種によってメッセージ送
信のタイミングがマチマチという点があります。
Thunderbolt互換GPSDOの出力するTSIPメッセージでは,以下の2種のメッセージを表示
の対象としています。
8F-ABパケットで日付や時刻を表示
8F-ACパケットでGPSDOの状態やワーニングフラグをはじめ
緯度,経度,高度,PPS状態,10MHzOSC状態,内部温度,OVCXO制御電圧を表示します。
NMEA-0183メッセージでは,以下の4種類のセンテンスを対象に表示を行います。
ZDAセンテンスで日付や時刻を表示
GGAセンテンスで緯度,経度,高度やGPSモード,使用中GP衛星数
RMCセンテンスで日付や時刻,緯度,経度,GPSモード,受信状態
GSVセンテンスでは受信衛星ごとのSNRをグラフ表示します
通信条件は,4800,9600,19200,38400bpsで8n1の調歩同期式シリアル通信です。基板には
Dsub9Pのオスコネクタで,RS-232C接続となります。既にGPSなどをPCにシリアル接続出来
るようであれば,そのままPCの代わりに接続できると思います。
モニタ用としては搭載したLEDにより,以下の異常状態が一目で判別つきます。
赤緑LEDの両点灯 → GPSとの通信が出来ない場合。
赤緑LEDの両消灯 → NMEAメッセージのモニタ中。
赤消灯,緑点灯 → Thunderbolt互換GPSDOの正常稼動中(OSC出力はGPSに同期)。
赤点灯,緑点滅 → Thunderbolt互換GPSDOの始動中/エラーから復帰中。
赤点灯,緑消灯 → Thunderbolt互換GPSDOのエラー状態。
状態を表示するCLCDは,HD44780互換のコントローラのもので,16桁x2行構成以上のモノ
であれば,大体使用できると思います。
あの電源ピンの極性が反対という極悪仕様にも,ジャンパで切り替え対応しています。
表示上は,16x2行か20x4行のものを想定しています。
イメージ的に差異を伝えるならば,20桁x4行LCD表示が全表示とすれば,その内左上16桁
x2行が16桁x2行LCDでは表示されるようなイメージです。
当然20桁x4行CLCDでは,表示情報全てが表示されますが,16桁x2行のCLCDでも,最低限
必要な情報は表示できる様になっています。(実際の表示状況は,後述します)
具体的なLCD表示器としては,秋月で取り扱っているLCDのうち手元にある以下のLCD表示
器で動作を確認しました。
(16文字x2行)SC1602BS-B,SC1602BSLB,SC1602BBWB,LM162AT1
(20文字x4行)SC2004CSLB,SC2004CSWB,SC2004CS-B
LCD表示器への接続は2x7の14ピンヘッダコネクタで,ピンアサインは以下の通りです。
1:VccまたはGND(ジャンパ設定で切り替えができます)
2:GNDまたはVcc(ジャンパ設定で切り替えができます)
3:コントラスト調整
4:R/S
5:R/W(L固定で使用します)
6:E
7-10:未使用(N.C.)
11:DB4
12:DB5
13:DB6
14:DB7
電源は,5V100mA程度の直流安定化電源が必要です(実測で60mA程度)。実際には,余裕を
みてその倍あればいいでしょう。
GPSモジュールの電源に余裕があれば,それをそのまま使う使い方を想定していますので,
DCジャックではなく,ネジ式の圧接ターミナルでの接続になっています。
GPSモニタの回路図は,下図のようになっています。
GPSモニタの回路図
オマケでJJYエミュレータ機能を追加してみました。
JJY短波もどきの音響時報と,JJY長波もどきのタイムコード(40kHz/60kHz)送出機能です。
Bボタンを押してUTC←→JSTの切替えをしますが,その切替え毎に,この機能はON/OFFが
トグルします。この機能がONの場合は,1行目のhh:mm:ssの直後に何かが表示されます。
また,この機能のON/OFFの度にタイムコード送出キャリアが40/60kHzでトグルします。
20x4LCDであれば,2行目の末尾に4または6という数字で表示されます。
また,Bボタン長押し(約5秒)でモールス符号による時刻の打鍵機能をON/OFFします。
1行目のMM/DDの直後に'.'ピリオドが表示されている場合は,打鍵機能はONです。
JJY短波もどきの音響時報は,毎秒コツコツ音(1600Hz)と毎分59秒後半に正分予告のヴー
音(600Hz)と,毎時59分57秒から正時到来時報のプププポーン(440Hz/880Hz)を圧電サウン
ダ等で鳴動させることができます。
さらに必要があれば,毎9分30秒からモールス符号でhhmm形式の予告時刻情報を鳴らすこと
ができます。(到来する正分の時刻をUTC△UTC△hh△mmまたは,JST△JST△hh△mmとコード
で打鍵します。キャリアは1000Hzで,ややゆっくりとした打鍵速度です)
かつて放送されていたJJY短波を聴かれたことがあれば,判るように音響時報はかなり便利
だと思います。
オマケですから,音は悪いです(WDT1のNMI割込みの影響で,150Hz前後の変調がかかってい
ます)し,もちろん音声アナウンスはありませんw
JJY長波もどきのタイムコード送出機能は,電波時計を調整する電波をコイルやスピーカー
などの放射体を使って送出する機能です。
GPSから時刻が送られている場合にのみ送出します。
視覚的なギミックとして,送出中のタイムコードM(マーク),0,1の長短が,hh:mm:ssの直後
にグラフで表示されます。
出力は,H8Sのポート出力を保護抵抗を介してそのまま使っており,出力が非常に低いため,
状況によっては,放射体を電波時計に密接する等のようにしないと,調整がうまくできない
かも知れません。
手元の電波時計は,置時計(オレゴンサイエンス製)と腕時計(CASIO製)で動作確認しました。
放射体は,ラッピングワイヤの15Tコイルでやりましたが,PCの近辺だと腕時計が40kHzでは,
調整に失敗することがありました。
音響時報でNMI割り込みによる変調が掛かる事が分かっていたので,こちらはDTCを使って
ハードよりの機能を使って変調を抑えてあります。
こちらもオマケですから,うるう秒周りとかは手を抜いています("0"符号の増減ではなく,
Mマークが増減する)し,毎時15,45分のJJYコールサインなどはありませんw
(開発中にはJJYコールサインはあったのですが,電波時計の調整には無用な上に,「JJY」が
NICTの登録商標ということもあり,自重して削除しましたw)
GPSモニタの回路図(JJYエミュレータ対応)
操作パネルイメージ
●赤LED |__________________________ |
○緑LED || LCD表示器 ||
◎Bボタン|| ||
◎Aボタン|~~~~~~~~~~~~~~~~~~~~~~~~~~ |
実物(基板には,16x2LCD表示器がちょうどマウントできる様にネジ穴が開いています)
初期表示(起動時に1秒程度表示)
初期の通信速度を表示する。
ボタンを押さない状態で起動すると4800bps.
Aボタンだけを押した状態で起動すると38400bps.
Bボタンだけを押した状態で起動すると19200bps.
A+Bの両ボタンを押した状態で起動すると9600bps.
[16x2行LCD]
NMEA/TSIPmonitor
SCI0=nnnnnnbps
[20x4行LCD]
NMEA/TSIPmonitor.
SCI0=nnnnnnbps 8N1
Ver1.xx by H.I.
H8S_kernelYYMMDDnn
NMEA,TSIPのいずれのメッセージも受信が出来ない場合の表示
シリアル通信の断などでNMEA,TSIPのいずれのメッセージも2秒以上受信が
途絶えると,内部時刻を表示するモードになります。
表示される時間や日付は内部の時計の値で,リセット直後は2012/01/01
00:00:00 UTCから計時します。
[16x2行LCD]
hh:mm:ss MM.DD U <- 日付の区切り記号が'.'ピリオドになる
20YY/MM/DD (wek)
[20x4行LCD]
hh:mm:ss mm.dd UTC
20YY/MM/DD (wek)
nnnnnnbps. 8N1
NMEA/TSIPmonitor.
Bボタンを押すと,CLCDを初期化してJST<->UTC表示を切り替えて
再表示する。(以下モードによらず同じ機能)
Aボタンを押すと通信速度を4800->9600->19200->38400->4800bps
に順次切り替わります。
NMEAメッセージを受信している場合の表示
時間や日付はNMEAメッセージのもの,内部の時計もそれに合わせて
セットされます。
[16x2行LCD]
hh:mm:ss MM/DD U <- 日付の区切り記号が'/'スラッシュになる
SNR=xxxxxxxxxxxx 各衛星の受信シグナルの強度をグラフ表示(GSV)
[20x4行LCD]
hh:mm:ss MM/DD UTC ?
SNR=xxxxxxxxxxxxxxxx
XXX XXXX:nn,XX-XXXX
YYYY/MM/DD (wek)
Aボタンを押すと2行目を次のように順次切り替えて表示する。
[16x2行LCD]
LAT X xx@xx.xxxx 緯度を度分単位で表示する(GGAまたはRMC)
[20x4行LCD]
LAT X xx@xx.xxxx'XXX
↓
[16x2行LCD]
LON Xxxx@xx.xxxx 経度を度分単位で表示する(GGAまたはRMC)
[20x4行LCD]
LON Xxxx@xx.xxxx'XXX
↓
[16x2行LCD]
ALT xxxxx.xx m 高度を表示する(GGA)
[20x4行LCD]
ALT xxxxx.xx m
TSIPパケットメッセージを受信している場合の表示
時間や日付はTSIPパケットのもの,内部の時計もそれに合わせて
セットされます。(時刻はパケット8F-ABのもの)
[16x2行LCD]
hh:mm:ss MM-DD U <- 日付の区切り記号が'-'ハイフンになる
XXXXXXX,XXXXXXXX GPSDOの稼動状態を表示する
[20x4行LCD]
hh:mm:ss MM-DD UTC
XXXXXXX,XXXXXXX.
YYYY offset=nnnnn(s)
GPSDOの稼動状態は,前半がdiscipliningMode,後半がDisciplining
Activityの情報で,以下の略号で表示されます。
DiscipliningModeの略号対応:
0: "Normal " Normal
1: "PowerUp" Power-Up
2: "AHoldOV" Auto Holdover
3: "MHoldOV" Manual Holdover
4: "Recover" Recovery
5: "NotUsed" Not Used
6: "Disable" Disciplining disabled
DiscipliningActivityの略号対応:
0: "Ph Lock" Phase locking
1: "OSCwarm" Oscillator warming up
2: "FrqLock" Frequency locking
3: "PlacPPS" Placing PPS
4: "IniLoop" Initializing loop filter
5: "CompOSC" Compensating OCXO
6: "Inactiv" Inactive
7: "NotUsed" Not Used
8: "Recover" Recovery
ワーニングフラグが立つと,以下の対応するメッセージが4秒おきに交代で
表示されます。通常の情報表示はワーニングのある間は表示を抑止されます。
機器の異常などではなく,閏秒待ちでも同様のワーニング表示(minorWarning
Bit7がセットされるため)となります。
もしこのような時に,ワーニング中でも通常の常時をしたい場合は,Aボタン
を10秒以上押し続けると,ワーニングメッセージ抑止が出来ます。
元に戻す場合には,トグル動作なので,同じように10秒以上押し続ければ,
ワーニング表示に戻ります。面倒ならリセットしてもいいです。
Critical Warining
bit0: "ROM CheckSUM Err"
bit1: "RAM Check Failed"
bit2: "PowerSupply Fail"
bit3: "FPGA CheckFailed"
bit4: "OSC Voltage@Rail"
bit5: "CRITICAL bit5 ON"
bit6: "CRITICAL bit6 ON"
bit7: "CRITICAL bit7 ON"
bit8: "CRITICAL bit8 ON"
bit9: "CRITICAL bit9 ON"
bit10: "CRITICAL bit10ON"
bit11: "CRITICAL bit11ON"
bit12: "CRITICAL bit12ON"
bit13: "CRITICAL bit13ON"
bit14: "CRITICAL bit14ON"
bit15: "CRITICAL bit15ON"
Minor Warining
bit0: "Voltage NearRail"
bit1: "Antenna Open "
bit2: "Antenna Shorted "
bit3: "NotTrackingSats."
bit4: "NotDisciplin OSC"
bit5: "Survey-in Progre"
bit6: "NoStoredPosition"
bit7: "LeapSecondPendin"
bit8: "In test mode "
bit9: "PositionQuestion"
bit10: "EEPROM Invalid "
bit11: "Almanac Invalid "
bit12: " MINOR bit12 ON"
bit13: " MINOR bit13 ON"
bit14: " MINOR bit14 ON"
bit15: " MINOR bit15 ON"
thunderboltGPSDOのアンテナをはずしてワーニングを立てた場合の表示を
行ってみました。ワーニングが消えても,PLLのセットアップ中などで,
Normal状態に戻るまでの間は,赤LEDが点灯し,緑LEDが点滅します。
[16x2行LCD]
[20x4行LCD]
[20x4行LCD]
hh:mm:ss MM-DD UTC
XXXXXXX,XXXXXXX.nnn%
YYYY offset=nnnnn(s)
XXXX-XXXXnnnnnnnsec. CriticalAlarms,MinorAlarms,holdoverDuration
TSIPで通常の表示の場合は以下のような動作になります。
Aボタンを押すと次のように順次切り替えて表示します。
[16x2行LCD]
hh:mm:ss MM-DD U
PPS xxxxxxxxxns
[20x4行LCD]
hh:mm:ss MM-DD UTC
PPS xxxxxxxxxns
YYYY offset=nnnnn(s)
↓
[16x2行LCD]
hh:mm:ss MM-DD U
10M xxxxxxxxxppb
[20x4行LCD]
hh:mm:ss MM-DD UTC
10M xxxxxxxxxppb
YYYY offset=nnnnn(s)
↓
[16x2行LCD]
hh:mm:ss MM-DD U
TEMP xxxxxxxx゚C
[20x4行LCD]
hh:mm:ss MM-DD UTC
TEMP xxxxxxxx゚C
YYYY offset=nnnnn(s)
↓
[16x2行LCD]
hh:mm:ss MM-DD U
DAC xxxxxxxxxV
[20x4行LCD]
hh:mm:ss MM-DD UTC
DAC xxxxxxxxxV
YYYY offset=nnnnn(s)
value=0xXXXXXXXX
↓
[16x2行LCD]
hh:mm:ss MM-DD U
LAT Xxxxxxxxxx゚ 緯度を度で表示する
[20x4行LCD]
hh:mm:ss MM-DD UTC
LAT Xxxxxxxxxx゚ deg
YYYY offset=nnnnn(s)
LON Xxxxxxxxxx゚ deg
↓
[16x2行LCD]
hh:mm:ss MM-DD U
LON Xxxxxxxxxx゚ 経度を度で表示する
[20x4行LCD]
hh:mm:ss MM-DD UTC
LON Xxxxxxxxxx゚ deg
YYYY offset=nnnnn(s)
ALT Xxxxxxxxxxm
↓
[16x2行LCD]
hh:mm:ss MM-DD U
ALT Xxxxxxxxxxm 高度を表示する
[20x4行LCD]
hh:mm:ss MM-DD UTC
ALT Xxxxxxxxxxm
YYYY offset=nnnnn(s)
LAT Xxxxxxxxxx゚ deg
なお,NMEAやTSIPメッセージ受信中のAボタンを押して表示モードを
変更した情報は保持されており,受信メッセージが切り替わった場合
にも,該当する表示モードで表示されます。
NMEAメッセージの場合,ZDA,RMCセンテンスのいずれかが受信できない
と日付は有効になりません。
日付の情報で,万が一2009/01/01以前のものを受信した場合は,
2009/01/01 00:00:00とみなして処理します。
CLCDのフレーム表示レートが1/2〜1/3秒程度なので,GPSで更新頻度が
高すぎる場合,表示が更新されないまたはカクカクしたり,チラついて
表示される場合があります。
1秒未満の高頻度更新が可能なGPSレシーバーでは,NMEAメッセージの内
GGA,RMC,ZDAの各センテンスの更新頻度を秒1回程度に設定してください。
ソースアーカイブ
コンパイルには,H8Sミニカーネルの外部シンボルが,実行にはH8Sミニカーネル
の環境が必要です。(所要メモリ約14KB)
ソースアーカイブ(Ver1.00)はコ↓コ↑
構成部品の一覧
[半導体部品]
H8S/2128
MAX232E
PNPトランジスタ(2SA1313など)
LED(赤)
LED(緑)
[受動電子部品(SMD)]
20MHzクリスタル
20kトリマ
チップFB(フェライトビーズ)
チップ抵抗10kΩ (15個)
チップ抵抗2.4kΩ (3個)
チップ抵抗1kΩ (2個)
チップキャパシタ15pF (2個)
チップキャパシタ2.2uF (8個)
[機構部品]
2Pターミナル
ジャンパピン (2個)
4P(2x2)ヘッダ
14P(7x2)ヘッダ
Dsub9Pオス
タクトSW (3個)
[表示部品]
キャラクタ表示型LCD
14P(2x7)ピンソケットなど
[JJYオマケ対応用部品]
チップ抵抗1kΩ (2個)
上記で個数記載のないものの数量は1です。
JJYオマケ対応用のピンヘッダや圧電サウンダ,放射体のコイルやスピーカーは別途用意
してください。
完成品は下の画像のようになります。
また完成品をヤフオクにも,ホビー、カルチャー > アマチュア無線 > その他のカテゴリ
に出品していますのでご参考までに。
-->
[ご注意]
・このページの記載事項については,一切無保証です。