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モニタの回路図は,下図のようになっています。
scematic graph of H8S MCU based GPS monitor
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)
scematic graph of H8S MCU based GPS monitor
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オマケ対応用のピンヘッダや圧電サウンダ,放射体のコイルやスピーカーは別途用意 してください。 完成品は下の画像のようになります。 また完成品をヤフオクにも,ホビー、カルチャー > アマチュア無線 > その他のカテゴリ に出品していますのでご参考までに。 --> [ご注意] ・このページの記載事項については,一切無保証です。
inserted by FC2 system