2009年11月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

最近のトラックバック

無料ブログはココログ

役に立ったAVRマイコンの本

読書

« 2009年5月 | トップページ | 2009年7月 »

2009年6月

2009年6月29日 (月)

回転楕円体(GRS80)における2地点の最短距離と方位角の計算は・・・無理?(笑)

国土地理院のHP見ましたがかなり複雑な計算で(笑)

とりあえず地球を完全な球とみなした簡易的な球面三角法で・・・

2地点の緯度経度を X1,Y1 X2,Y2 として距離Lは

距離01.png

で求まるらしい・・・

A地点
緯度X1  
35
18
53.44
35.31484444
0.61636031 ラジアン
経度Y1  
139
27
52.37
139.4645472
2.434115539 ラジアン
   
B地点
緯度X2  
35
28
36.36
35.47676667
0.619186386 ラジアン
経度Y2  
139
26
27
139.4408333
2.433701653 ラジアン
cosθ=d
0.99999595
θ=cos^-1d
0.002846144
地球半径R(km)
6370
AB地点間距離L(km)
18.12993642


2地点間距離02.jpg

スーパーマップルSMDで約18km・・・ほぼ一致する。でも距離が短くなると誤差が増えるらしい・・・

以前の神奈川の境川・引地川サイクリングでノアをデポした泉の森公園駐車場に戻るのに苦労したので・・・(笑)

千葉の検見川の浜の駐車場なんかもそーだが夕方4時30分でゲートが閉鎖されてしまうのでリターンに手こずるとヒヤヒヤもん。

PIC C言語で計算できるか?

三角関数計算が必要な理由がわかったでしょ(笑)

素直にポケットナビ買えって言われそーですが(笑)

LittlePianoConcert~午後の旅立ち~

昨日は「かつしかシンフォニーヒルズ」で息子のピアノ発表会でした。

千葉のど田舎から中央環状四つ木で降りて1時間30分弱、ノアのAVIC-HRZ099が活躍!

リチャードクレーダーマンが弾いてた「午後の旅立ち」が課題曲・・・

上手く弾けたので、ご褒美に京成青砥駅前に移動してユアエルム内の寿司屋で御祝いしました(笑)

2009年6月28日 (日)

お祝い

お祝い

かつしかに居る

かつしかに居る

2009年6月26日 (金)

Cに浮気・・・(笑)

・・・ってビックリした?(笑)

三角関数も標準算術関数にあって・・・恐るべしC言語・・・

詳細は後で・・・

2009年6月22日 (月)

スーパーマップルデジタルにPICからNMEAを送信してみた♪

「GPSデータロガー」の為のその1ってところか(笑)

今では、安価でデータロガー付きでUSB接続できるGT-730Fなどあるので自作の意味あるのか?って言われそーですが・・・

GT-720Fの使い道ですが、

車載では1.液晶へ速度、方位、高度などのGPSモニターとデータロガー 2.モービルPC+電子地図でナビゲーション

※ナビがあるので2については試して見たいだけ、ノアはAVIC-HRZ099、ジムニーはNVX-M7000搭載。

自転車や徒歩では1.小型液晶へGPSモニターとデータロガー

を考えています。

GoogleMapへの走行ログの表示の仕方などは書籍等に記載されていますので特にここでは取り上げません。

私が所有している電子地図はスーパーマップルデジタルVer6です。最新版はVer9だと思います。(以下SMD)

GPSセンサーを接続してナビゲーションできる機能があります。

測地系はWGS-84(世界)と東京どちらでも使用できるようです。

wgs84_01.jpg

NMEAのうちRMC/GLL/GAAに対応ってあるけどGAAって何だよ?(笑)たぶんGGAの誤記だろうな・・・

GPSセンサーモジュールのGT-720Fを繋いでリアルタイムにナビってのはありきたりで面白くないわけだ・・・

wgs84_02.jpg

そこでPICにGPSセンサーのフリをしてもらい認識するか試してみた!

シリアル送信するテキストデータは下記。

GPGSV
        ADDWF   PCL,F
        DT      "$GPDTM,W84,,00.0000,N,00.0000,W,,W84*53",0DH,0AH,0

GPRMC
        ADDWF   PCL,F
        DT      "$GPRMC,225446.00,A,3536.2729,N,14024.6821,E,000.5,054.7,191194,06.2,W,A*68",0DH,0AH,0

何度か試したが認識せず・・・

キャリッジリーターンとラインフィードが無いとダメなんじゃないか?追加したけどダメ

GPRMCだけじゃだめなんじゃないか?で、GPGSVも追加したがダメ

そー言えば通信速度ってこれでいいのか?GT-720Fのデフォルト9600で試してた。あれ?何処にも記載がないぞ!

ネットでSMD Ver9のFAQに4800ってあるじゃないか!おまけにGAAがGGAに直ってるし(笑)

4800に変更・・・40Hを81Hに・・・

;-----------USART初期設定--
                MOVLW   024H
                MOVWF   TXSTA
                MOVLW   81H             ; 4800 (9600->40H)
                MOVWF   SPBRG
                BCF     STATUS,RP0      ; Set bank 0

                MOVLW   090H
                MOVWF   RCSTA

通信ソフトのアクノリッチ(AcKnowrich)で確認。約1秒置きにPICからデータが送られている。

wgs84_06.jpg

SMDで認識できた♪(笑)

GPRMCだけでも良いかも・・・

・・・ってことはGT-720Fも4800に変更しないと認識しないんだ・・・

wgs84_07.jpg

これでPICを疑似GPSセンサーとして認識してるわけだ!

これなら車での林道走行ログや、自転車のサイクリングログ、登山のコースログなどを保存して、帰宅後に電子地図上で何倍速かで再現するなんてことができそーですよね♪

父の日も子守で終わった(笑)

昨日は、越後屋(笑)さんからオーケストラのチケットを頂きまして、東総文化会館に聞きに行ってきました。

コンサートピアノ「ベーゼンドルファー」の音が素晴らしかった。

またピアノのおねえさんの連打は早くて凄かった!

IMG_2985.JPG

IMG_3000.JPG

来週は「かつしかシンフォニーヒルズ」で息子のピアノ発表会だ!

サイクリングも登山もまだまだおあずけか・・・

2009年6月20日 (土)

GT-720F やっと移動運用(笑)ビデオ

ノアに装着・・・

GT-720F やっと移動運用(笑)

息子が、たい焼き食べたい!というので、ノアに仮装着、やっと移動運用できました。

gpsm01.JPG

gpsm02.JPG

緯度 35+36.2729/60 経度 140+24.6821/60

ワングーに居ます(笑)

gpsm04.jpg

1ノットは1時間に1海里進む速さ、1海里=1.852km

1ノット=1.852km/h

画像の速度は10.2ノット=1.852×10.2=18.9km/h

※ワングーの駐車場内だと思います。息子が撮影(笑)

gpsm03.JPG

自転車に搭載したほうが面白そう・・・

記録媒体はどーするかな?

そうそう電池駆動の為に消費電流も測定してみよう・・・

2009年6月19日 (金)

GT-720F は GPVTG センテンスを出力してない???ビデオ

詳細は「GT-720F は GPVTG センテンスを出力してない???」を見て(笑)
固定測位ですが、データは多少ばらつくようです。

BGMは陰陽座 梧桐(あおぎり)の丘です。


GT-720F は GPVTG センテンスを出力してない???

未確認ですが・・・パソコンの通信ソフトで取り込めばハッキリするのですが・・・

購入直後にパソコンに接続してその後、PIC接続専用に配線してしまったから確認が面倒で(笑)

画面キャプチャーしとけば良かった・・・

メーカーのデータシートには記載されてるから、デフォルトで無くてGPSViewerで設定変更できるのかも?それとも私のプログラムがおかしいのかな?

今回は、GPGGA と GPRMC から抽出してみました。

GPGGAから 緯度、経度、測位衛星数、海抜高度

GPRMCから 速度(単位ノット)、年月日

野蛮なプログラムなので、センテンスが読めないと無限ループに陥るのじゃ(笑)

今のところ上の2つは読めないってことはないんだが・・・

追記;2階家屋内でも最高10個衛星測位できたようです。

gps13.JPG

gps13m.jpg

GPVTG が読めれば速度km/hが表示できたのだが・・・

ノットじゃなぁ~船じゃないんだから(笑)

 

C1001UB VF3.5Vって誰が言った?・・・(笑)

「C1001UBとTC74HC4511AP」って書いたら

アンマッチって思った人いたでしょう???早く言ってよね(笑)

c1001_02.JPG

16F877Aはポートが沢山有るから液晶とGPSモジュールGT-720Fに加えて3桁7セグスタティックドライブユニットも接続した。

BCDコードを送って表示もOKだ!・・・しかし変・・・暗い(笑)

今まで電圧計で使用したC533SRとか7セグの使用経験あったので甘く見た・・・机上計算だけでブレッドボードでテスト点灯すらしとらん・・・

VFっていくつだったっけ?仕様書を見返す・・・手書きのなぶり書き計算が残ってた(笑)

VF3.5Vで計算してる。電流制限抵抗は150Ωにした(笑)・・・これDPだけ、7セグはVF7Vが正解、思い違いが激しいな・・・

c1001_03.JPG

BCDデコーダ/7セグドライバICのTC74HC4511APって5V仕様・・・

VF7Vに電源電圧5Vってアンマッチじゃん(笑)

ガッビーン!!!

駄目だこりゃって・・・チョットまてよ・・・TC4511BPってあるよね♪ピンコンパチで3~18V電源電圧で動作する奴、これに差し替えて9Vか12Vでドライブすればリカバリできるか!電流制限抵抗値が変わるとハンダ吸引して抵抗21個付け替えないといけないから、なるべく今のままの抵抗が使える電圧を選べばいいし・・・

とりあえずこれでもテストはできるからゆっくり落ち着いてIC(TC4511BP)を手配しよう・・・

実はこのテストユニット、16芯フラットケーブルが無かったので作りっ放しで動作チェックもしてなかった(笑)

先日、「ノアのスライドドア開かず」の件で本納のトヨタに行ったついでに茂原まで足を伸ばしアルシマ無線でケーブルを買ってきたので初めてテストした!

注;茂原にこりん星人はいませんでした(笑)

bp_01.JPG

ケーブル圧接型ソケットも初めて使用したので、ここでも誤りが(笑)

フラットケーブルに3桁のBCDコードを順序よく配列するようにBOXプラグをプリントしたつもりが逆転して配列滅茶苦茶・・・まあ、ケーブルの反対側相手コネクタ接続するときにクロスしてハンダ付けで問題なかったのですが、次回の為の覚え書きです。

BOXPLUG.jpg

参考画像です。

bp_02.JPG

bp_04.JPG

圧接したあとに試しに外して見ました・・・ロック部を小さいマイナスドライバーや端子抜き工具などで浮かすと外れます。

bp_03.JPG

8×2で16ピンの互い違い構造が良く判ると思います。

bp_05.JPG

ストレインリリーフも手配してありましたが今回は未使用です。

んで何がしたいかって?

長くなるので今回はここまで(笑)

2009年6月17日 (水)

ノア、右スライドドアが開かない(笑)

先日、トヨタに行ったのはこれ・・・かみさんが「おとうさん大変!ドアが開かない!」

書くかどうか迷ったが、同じ不具合に悩むAZR系ノア、ヴォクシー乗りの為に・・・

対策品あります。モールリップに引っかかり防止のシールゴムを追加貼付するもの。経年劣化もあるのでこれで完璧とは言えないと思うが生命に係わる部位でもないので・・・

IMG_2962.JPG

以前から多少引っかかりがありました。問題あったらすぐディーラーに行って相談して下さい。

親切に対応してくれると思います。あまり騒ぎ立てぬように・・・ものつくりは大変(笑)

「梧桐の丘」  陰陽座

梧桐(あおぎり)の丘・・・なんなんだこの曲はすごい・・・原爆に関係してるのかぁ・・・

息子がレンタルしてきた

IMG_2968.JPG

GT-720Fで緯度、経度、海抜高度まで表示・・・しかしPCではまりまくり

とりあえずここまで出来た♪

gps12m.jpg

所在地バレバレなので適当に数値をマスキングしてあります。2階家屋内で測位したデータです。海抜高度は61.2mなのかぁ(笑)

緯度(北緯) 35度3×.×527分→35+3×.×527/60

経度(東経) 140度2×.×393分→140+2×.×393/60

GoogleMapに計算した右の形式で緯度経度を入力すれば位置確認できます。 自宅が表示できました。

とりあえずGT-720FのNMEA-0183フォーマットのGPGGAセンテンスから情報を抽出しました。

あと測位衛星数、GPZDAセンテンスから年月日、UTC時刻、GPVTGセンテンスから方位と速度など抽出したいと思っています。

ここからは覚え書きです。今回PCではまりまくりました(泣)

下記は緯度経度まで表示したもの、これに海抜高度を追加表示させようとプログラムを追加増大すると正常に動かない(泣)

どう見直してもフローは合っている。どうして??????

gps11m.jpg

今回のプログラムはテーブルを多用しています。下記の様なPCLにプラスするものです。

;--------GPS DATA比較領域------------
GPSADD1
        ADDWF   PCL,F           ; PC+OFFSET
        DT      "GPGGA",0
;---------液晶表示データ領域------------
TABLE
        ADDWF   PCL,F           ; PC+OFFSET
        DT      "GPS GT720F NMEA-0183",0

PICはPCレジスタに従ってプログラムを実行しています。プログラムメモリは13ビットでPCLATHレジスタが上位5ビット、PCLレジスタが下位8ビットになっています。

PCLレジスタは下位8ビットなので0xFFまで表現できます。テーブルのようにPCLにプラスする動作では8ビットの最大0xFFまでは良いのですが、これを越えてしまい0x100になってしまうと上位PCLATHに繰り上がり反映されない為、とんでもないアドレスにジャンプして正常に動作しなくなります。

最初、テーブルはメインとサブルーチンの間に配置してありました。プログラムが小さいうちは良いのですが、メインプログラムが増大していくとテーブルのプログラムアドレスが知らぬうちにずれて0xFFを越えてしまい正常に動作しなくなります。

テキストエディタで無意識にプログラム書いていると判りません。MPLABでアセンブラをビルドした時に生成されるリスト(拡張子が.lst)のファイルを開いて見ると良く解ります。

青丸は0xFFまで、赤丸のテーブルデータは越えて0x100以上になっています。これは正常に動作しません。

PC01.jpg

テーブルを先頭に移動したものです。

        ORG     0
        GOTO    START
<ここにテーブルを置く>

START

テーブルの最期のデータは0xFFを越えていません。言い換えると0xFFまではデータを追加できるということです。正常に動作します。

PC02.jpg

PC03.jpg

あ~はまりまくり(笑)でも勉強になった!

GPSモジュールは移動で使わないと面白くもなんともない・・・電源は車でのバッテリー使用と、自転車、徒歩の電池使用の2通り考える・・・

2009年6月14日 (日)

またトヨタのディーラーに居る

またトヨタのディーラーに居る
なんだかなぁ

2009年6月12日 (金)

GT-720Fの連続文字列を液晶に表示・・・ビデオ

詳細は「GT-720Fの連続文字列を液晶に表示・・・」を見て(笑)

GT-720Fの連続文字列を液晶に表示・・・

最終的には液晶の指定アドレスに必要な情報だけ表示が目標ですが、何を何処に表示するか考え中(笑)

とりあえず受信が正常に行われているかのチェック用に連続文字列の液晶表示にしてみた。

下の画像は前回の受信した文字列をそのまま表示したもの。液晶の内部アドレスが飛んでいるため1行づつ順番には表示されません。

gps09.JPG

液晶表示内部アドレスです。

図はBSch3Vで描いてBMPで保存しJpegに変換トリミング後Pcrewで色つけしました(笑)

LCD表示アドレス.jpg

20文字×4行と他の16文字×2行などと互換を取っているため内部アドレスが飛んでいます。プログラム制御無しに文字を描いていくと1行目の次は3行目に表示されます。クリックして拡大出来る画像です。

LCD表示アドレス.jpg

そこでテーブルと条件分岐で1行づつ順番に描くプログラムにしてみました。解りやすいように意図的に19文字×4行表示にしています。定数を変えることにより他の16文字×2行などにも対応出来ます。最下段表示完了すると画面をクリアしてホーム00Hから描くようにしました。

さらに改行コードで次の行に飛ぶようにすればもっと見やすいかも?です。

gps10.jpg

GPSモジュールGT-720Fは電源を投入すると赤のLEDが点灯して直ちにNMEA-0183フォーマットを1秒更新(1Hz)で送出します。測位できててもできていなくてもです。2階建ての1階家屋内では測位出来ません。2階では家屋内でも測位できるようです。測位すると赤LEDがゆっくりと点滅します。

1Hzで受信し液晶表示するプロセスではPIC内蔵の受信ダブルバッファだけで正常表示出来ていると思われます。更新が1秒間に5回(5Hz)など高速のGPSモジュールもありますが、正常に表示するには外部受信バッファが必要になるかもしれません。

画像は測位できていない状態で$GPGGAの北緯Nが0000.0000になっています。

なんで測位できた画像じゃないのかって?

家で測位したら「ジムニーおや爺」の正体バレバレじゃん(笑)

そのうち移動でテストしてみます。バッテリー駆動も検討しないと・・・

2009年6月11日 (木)

デカメロン・・・(笑)

意味が違うって(笑)

頂きました。こんな高価なものをすんません

IMG_2947.JPG

ここんとこ忙しくて・・・そろそろ期末のことも考えないといけないなぁ~

昨日は埼玉県川口市まで・・・トラック野郎望郷一番星!(笑)

川口市伊刈まで機材取りに行かなければならなくなり・・・

最初はノアに積んでくる予定でしたが、荷物の量が正確に把握出来ず不安が・・・

かみさんが知人の大工さんから2トン車借りてくれました♪

ベースはいすゞのたぶんエルフですがお飾り付きでなんだかわからん状態(笑)

IMG_2941.JPG

久々のディーゼル車ですがマニュアルトランスミッションでも低速トルクがあり走りやすい。DPFの一種のDPD装着車・・・

普段、ジムニーのシフトパターンに慣れてしまって少々とまどいますが、低速トルクがあり2速発進可能です♪

SP.jpg

以下、他サイト抜粋です。問題あれば削除します・・・

DPDとはDiesel Particulate defuser(ディーゼル・パティキュレート・ディフューザー)の略で、ディーゼルエンジン排出ガス中のPM(粒子状物質)を浄化する「いすゞ」の開発した後処理装置。セラミック製フィルターで排出ガス中のPMを捕集・濾過し、PMの堆積量が多くなったら一気に焼却してフィルターを再生する。コモンレールシステムの精密な制御や排気スロットルなどによる排気温度制御によって効率的な燃焼(再生)を実現するもので、フィルターの再生は走行中に自動的に行なわれる。ただし、走行条件によってはアイドリング状態でフィルターの手動再生が必要となる場合がある。

今回の走行ではクラスター内ディスプレイに自動再生表示は出たが手動再生は出なかった。・・・これコモンレール式燃料噴射装置かぁ・・・

HSA(ヒルスタートエイド)も付いてるんだぁ~使わないみたいでオフですが(笑)排気ブレーキもあって面白い・・・

時間が無いので殆ど高速使用ですが外環川口西で降りて1時間30分で目的地到着

IMG_2942.JPG

外環下の国道は流れが悪い・・・

IMG_2943.JPG

PAでちょっと休憩・・・

IMG_2944.JPG

これ借りてほんと良かった。ノアじゃ積みきれなかった♪

IMG_2946.JPG

行きは空荷でサスが跳ねて最悪の乗りごごち、帰りは荷物の重さでリヤが多少安定した(笑)

今週はハードで疲れる(笑)

追記;ナビは壊れてて使えませんでしたが、ETC付きでした。

 

2009年6月 9日 (火)

GPSモジュールGT-720Fとめいどのみやげ(笑)

先日の秋葉原行きは訳あって防犯設備の増設が目的だった・・・これでまず経費がかさむ(泣)

その上、今月はカード払いで、ギターと河村隆一コンサートチケット代がまとめて(泣)

IMG_2850.JPGIMG_2806.JPG

せっかく秋葉原まで来たんだから・・・

めいどのみやげ~萌~♪

IMG_2919.JPG

じゃなかった(笑)

うちの娘 「あまりカワイくないですねぇ?」

たしかにおまえのほうがかわいいよ♪(笑)

わし 「オレなんでチラシ貰ったんだろ?・・・」

娘 「そっち系の人だと思われたんじゃないですか?(笑)」

・・・ああ、わしゃあおたくだよ!(笑)

冗談はさておき、せっかく秋葉原まで来たんだから電子部品の購入をしたいのだが、今月と来月はカード払いが高額で(泣)

秋月電子で安価なGPSモジュールGT-720Fを手持ちの現金で購入・・・

gps01.JPG

一見、GPSアンテナ?ってくらい小型ですがRS232CレベルコンバーターIC内蔵のGPSモジュールです。

受信形式 54パラレルチャンネル L1c/Acode

通信プロトコル NMEA-0183 9600bps 8 N 1

測地系 WGS-84

電源 DC3.8V~8V 180mA(5V時)

秋月でもうひとつの選択肢GPS-52Dはデフォルト測地系が東京(TOKYOMeanSolution)だし少し高いのでパスした。

gps02.JPG

ネット検索ではストロベリーリナックスのTTL、RS232C両出力のものや指先に乗るくらい小型の物もあったのですが・・・

安価な上にコネクターとの接続加工が容易なこともGT-720Fを選択した理由です。

付属のハーネス付きコネクター。両端は同じ形状なので半分に切ってアダプターが2個作れます♪

gps03.JPG

gps04.JPG

6本ありますが、接続するのは4本・・・秋月のHPにありますがメーカーのPDFは本当に間違っています(笑)

解説書なども含めてこういったところが秋月電子のいいところ♪

ハーネスをハンダで接続し熱収縮チューブで保護・・・

gps05.JPG

反対側は電源、GND、通信線をジャンパーピンにハンダ付け

gps06.JPG

熱収縮チューブで保護

gps07.JPG

PIC16F877Aテストボードには5V電源、GND、RS232C通信線の接続ピンを設けてあったのでそこへ接続♪

gps08.JPG

NMEA-0183フォーマットのデータをたれ流し状態で液晶に表示できた♪

gps09.JPG

パソコンに繋げば通信ソフトにも同様に取り込めます♪

RS232C受信プログラムはエラー処理を追加しました。実はここで少しはまってしまった。今週忙しいので詳細は後日に・・・

2009年6月 7日 (日)

昨日は秋葉原に居た!

メイドに用があったのではなく(笑)仕事で・・・しかし路上にはカワイイメイドが多いな(笑)最近の秋葉原って変!

駐車場探してグルグル回って、パーツ店のある通りの60分300円コインパーキングにノアを駐車・・・

あれ左は「マルツパーツ」だ!右には怪しいメイド喫茶店?怖くて写真撮れない(笑)携帯のカメラで撮影です。

090606_1203~01.JPG

090606_1229~01.JPG

前方には「秋月電子」「千石通商」も見える。仕事で目的の「アルタクラッセ」はその先。

090606_1233~02.JPG

もろもろ用事を済ませて、神田に移動・・・

首都高下でもAVIC-HRZ099の精度は良いようで・・・

090606_1239~01.JPG

いつもの神保町の三井ビル地下駐車場に・・・

このビルの1Fには変わったピアノ?が展示してある

090606_1337~01.JPG

息子の目的は「ロックオンキング」(笑)

090606_1253~01.JPG

三省堂書店に寄って早々の退却となりました。

来週は仕事で平日に川口まで行かなきゃならんかも・・・トホホ

2009年6月 4日 (木)

なんだかんだで文字列判断出来た♪ビデオ

詳細は「なんだかんだで文字列判断出来た♪」を見て(笑)

2009年6月 3日 (水)

なんだかんだで文字列判断出来た♪

GPSのNMEA-0183フォーマット・・・

こういう共通規格って良く出来てるよな♪ 

1.まず受信データを1文字ずつ読みセンテンスの開始を判断する。

2.があったら指定のアドレスフィールド(今回はGPGGA)が一致するか判断する。

テーブルに格納したアドレスフィールド文字列(今回はGPGGA)と1文字ずつ比較して全て一致したら次のプロセスへジャンプさせる。

一致しない場合は1.へ戻る(画像の①は「GPG」まで一致して表示し、そのあと不一致で最初に戻っています)

注;テストプログラムは動作チェックの為、1文字ずつ一致した場合、表示させてます。(画像の①)

3.デリミタ(,)を判断し数えて表示させたいデータフィールドへ来たら次のデリミタ(,)が現れるまで、1文字ずつ表示する。

今回は2番目のデリミタ(,)のデータを表示させています。動作チェックの為、次のデリミタ(,)が現れたら「」を表示させています。これによりNULL値のチェックができます。

(画像の②は2番目デリミタデータがNULL値なので「」を表示、③はtest02なので「test02D」と表示。)

nmea04.JPG

あとは複数の情報を抽出し、液晶の指定アドレスに表示できるように体裁整えればいい♪

GPSモジュールがTTL出力ならばPICとの接続はハーネスが短い場合、RS232Cレベルコンバーター無しでTTL直結でいいかも・・・

ハーネスが長ければGPS-ADM3202-RS232Cケーブル-ADM3202-PICかな・・・

誰か、わしにいらなくなったGPSモジュール頂戴(笑)

これは廃紙に手書きでプログラム考えたときのもの(笑)

nmea05.JPG

黄丸のオンボード書き込みピンのおかげでプログラムの書換作業効率が上がった♪

でも抜き差しが硬いので6芯モジューラージャック化を検討中・・・

877a_onb.JPG

アセンブラは下記です。バグあるかも知れない・・・

<中略>

LOOPRX00
        BTFSS   PIR1,RCIF
        GOTO    LOOPRX00
        MOVLW   '$'
        SUBWF   RCREG,W
        BTFSC   STATUS,Z
        GOTO    DOLL1
        GOTO    LOOPRX00
DOLL1
        CLRF    POINT
LOOPRX01
        BTFSS   PIR1,RCIF
        GOTO    LOOPRX01
G_A_S
        MOVF    POINT,W
        CALL    GPSADD1
        ADDLW   0
        BTFSC   STATUS,Z
        GOTO    GPS_D1
        SUBWF   RCREG,W
        BTFSC   STATUS,Z
        GOTO    G_A_E
        GOTO    LOOPRX00
G_A_E
        CALL    (液晶の ビジーチェックへ)
        MOVF    RCREG,W
        CALL    (液晶のデータ表示へ)     
       INCF    POINT,F
        GOTO    LOOPRX01
GPS_D1
        CLRF    D_P
LOOPRX02
        BTFSS   PIR1,RCIF
        GOTO    LOOPRX02
        MOVLW   2CH
        SUBWF   RCREG,W
        BTFSC   STATUS,Z
        GOTO    D_C1
        GOTO    LOOPRX02
D_C1
        INCF    D_P,F
        MOVLW   D'2'            ; デリミタ2番目かチェック
        SUBWF   D_P,W
        BTFSC   STATUS,Z
        GOTO    G_S_O1
        GOTO    LOOPRX02
G_S_O1
LOOPRX03
        BTFSS   PIR1,RCIF
        GOTO    LOOPRX03
        MOVLW   2CH
        SUBWF   RCREG,W
        BTFSC   STATUS,Z
        GOTO    D_E1
        CALL    (液晶の ビジーチェックへ)
        MOVF    RCREG,W
        CALL    (液晶のデータ表示へ)     
        GOTO    LOOPRX03
D_E1
        INCF    D_P,F
        CALL    (液晶の ビジーチェックへ)
        MOVLW   'D'
        CALL    (液晶のデータ表示へ)     
        GOTO    LOOPRX00
;--------GPS アドレスフィールド比較文字列データ領域---
GPSADD1
        ADDWF   PCL,F           ; PC+OFFSET
        DT      "GPGGA",0
<中略>

2009年6月 2日 (火)

とりあえずアセンブラで$を判断させてみた・・・ビデオ

詳細は「とりあえずアセンブラで$を判断させてみた・・・」を見て!(笑)
つまらん動画でスンマソン(笑)

とりあえずアセンブラで$を判断させてみた・・・

GPSのNMEA-0183フォーマット・・・

軽く肩の筋トレしながら睨んでたら(笑)流れが見えてきた・・・

$GPGGA,,3444.0000,N,13521.0000,E,1,(省略)

とりあえず出来るかどーかは別として(笑)流れ・・・

1.まず受信データを1文字ずつ読みセンテンスの開始$を判断する。

2.$があったらアドレスフィールド(GPGGAなど)が一致するか判断する。これはテーブルに格納した文字列と1文字ずつ比較して全て一致したら次のプロセスへジャンプさせる。

3.デリミタ(,)を判断し数えて表示させたいデータフィールドへ来たら次のデリミタが現れるまで、液晶の指定アドレスに1文字ずつ表示する。

ってのはどーかな(笑)

1をテストしてみた。アセンブラは下記です。

<中略>

LOOP00
        BTFSS   PIR1,RCIF
        GOTO    LOOP00
        MOVLW   "$"
        SUBWF   RCREG,W
        BTFSC   STATUS,Z
        GOTO    DOLL1
        GOTO    LOOP00
DOLL1
        CALL    (液晶の ビジーチェックへ)
        MOVF    RCREG,W
        CALL    (液晶のデータ表示へ)     
        GOTO    LOOP00

<中略>

実行結果画像です。パソコン側通信ソフトはアクノリッチ(AcKnowrich)。

PIC16F877Aの電源投入後、液晶にCGRAMを含むテスト表示を行い、パソコンへ文字を送信し受信待ちとなります。

パソコンから適当に$を含む文字を送信すると液晶には$だけ表示されます。当然$がなければなにも表示しません。

nwea03.JPG

ここまでは簡単だが・・・2と3が難しい(笑)

アセンブラで受信した多量の文字から文字列抽出はどーよ?

1文字づつしか処理出来ないし・・・アセンブラで書くと結構大変かも・・・

試しにアクノリッチ(AcKnowrich)で送信し16F877Aで受信

改行コード無しと改行コード有りで送信してみた。

clrf_01.jpg

ちなみにLCDもアクリルパネルをカット、曲げ穴加工で100円均一ケースに固定した。

これでだんだん作業効率が上昇する。

clrf_02.JPG

LCDに対応するアスキーコードが無いから赤丸みたいな不明の2文字表示になる(笑)

改行コードはCR(キャリッジリターン)とLF(ラインフィード)の2文字の組合せ・・・

このコードを受信したらLCDに文字表示せずLCDの指定アドレスに飛ぶなどの条件分岐ができそーだが・・・

大昔使ったラインエディタとか思い出す(笑)

clrf_03.JPG

文字列の一致判断、さてどーするか?アセンブラかC言語か?

GPSモジュールのNMEA-0183フォーマットから欲しい情報だけ抜き出してLCD表示とかやってみたいのだが・・・

« 2009年5月 | トップページ | 2009年7月 »

フォト

役に立ったPIC書籍リスト