質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1491閲覧

GPSモジュール[GYSFDMAXB]で位置情報がうまく受信されない。

退会済みユーザー

退会済みユーザー

総合スコア0

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/01/09 09:17

以下は似非カーナビのようなものでGPSから取得した情報を、マップにマーカーをプロットすることで自分の現在地が分かるという内容のプログラムです。
GPSから得た緯度経度情報は、'r_latlon.csv'に書き込まれ、マップ生成時にはこのcsvファイルを読み、マップに反映させます。

しかし、このプログラムを動作させた状態で歩行した時、'r_latlon.csv'ファイルには、
・「計測開始地点の緯度経度情報」
・「計測開始地点からわずかに進行方向にズレた緯度経度情報」
のみが記録されてしまい、いくらか歩いて進んでいてもその現在地は記録されません。

GPSを動かしている関数は'def rungps()'なのですが、どこが原因でこの不具合が生じているのでしょうか?
プログラム自体に不具合がない場合はGPSモジュール本体の故障の可能性もありますので、プログラムの確認をお願いしたいです。
どなたかお分かりの方がいましたらどうかご教授願いたいです。
宜しくお願い致します。

Python

1# カーナビ(オンライン) 2# "r_latlon.csv" に保存 3# "r_map.html" で出力 4# 1秒の遅れで11m進む(時速40km) 5 6import csv, folium, io, micropyGPS, serial, time 7import pandas as pd 8import webbrowser 9from selenium import webdriver 10 11#(タイムゾーンの時差(日本は9時間), '出力フォーマット(ddは10進=35.6789)') 12gps = micropyGPS.MicropyGPS(9, 'dd') 13driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver") 14browser = None 15 16#--------------------------------------------------------------------------------- 17def rungps(): 18 #timeoutを秒で設定(10秒の間に受信したデータを返す) 19 s = serial.Serial('/dev/serial0', 9600, timeout=10) 20 #ここでGPSデータ取得するが初回はうまく取得できていない  21 s.readline() 22 while True: 23 sentence = s.readline().decode('utf-8') 24 if sentence[0] != '$': 25 continue 26 for x in sentence: 27 gps.update(x) 28 29 if gps.clean_sentences > 20: 30 print('%2.8f, %2.8f' % (gps.latitude[0], gps.longitude[0])) 31 df = pd.DataFrame([[gps.latitude[0], gps.longitude[0]]]) 32 df.to_csv('ar_latlon.csv', mode='a', header=False, index=False) 33 plot_to_map() 34 time.sleep(1.0) 35#--------------------------------------------------------------------------------- 36def plot_to_map(): 37 df = pd.read_csv('ar_latlon.csv', names=('lat', 'lon')) 38 #ここかな↓ 39 map = folium.Map(location=[df.lat[0], df.lon[0]], zoom_start=18) 40 41 for i, r in df.iterrows(): 42 folium.Marker(location=[r['lat'], r['lon']], icon=folium.Icon(color='black', icon='circle')).add_to(map) 43 map.save("ar_map.html") 44 45 global browser 46 if browser is None: # 初回は開く 47 browser = webdriver.Chrome(r'/usr/lib/chromium-browser/chromedriver') 48 browser.get('file:///home/pi/Desktop/ar_map.html') 49 else: # 2回目以降は再読込 50 browser.refresh() 51 time.sleep(2.0) 52#--------------------------------------------------------------------------------- 53 54rungps() 55if browser is not None: 56 browser.quit() 57 time.sleep(1.0) 58

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinobu_osaka

2019/01/09 09:34

まずあちことに転がっている他の方が書いたコードを使って動作チェックをしてはどうですか? 不具合の理由がわからなくなる為、ハードウェアの正常チェックの後にオリジナルのコードを書くのが基本ですよ。
退会済みユーザー

退会済みユーザー

2019/01/09 11:07

全て試した上での質問投稿です。 申し訳ありませんが、いつも後ろ向きな回答ばかり頂くのでもう回答の方を一切止めていただけませんか? お願いします。
TaroToyotomi

2019/01/09 11:36

GPSデータがうまく更新されていれば、gps.clean_sentencesの値がインクリメントされていくはずなので、CSVに保存するタイミングで表示してみては?
shinobu_osaka

2019/01/09 15:24

試して動いたのならGPSモジュール本体の故障の可能性はないのでは…? 似た内容を他の方も回答されてますよ。
退会済みユーザー

退会済みユーザー

2019/01/11 07:33

TaroToyotomiさんご回答ありがとうございます。 該当箇所は df.to_csv だと思うのですがどの位置だと最適だとお考えでしょうか?
TaroToyotomi

2019/01/12 05:28

CSVに落とすときにデータが正常に更新できているのが確認できればいいのでそれでいいと思います。
退会済みユーザー

退会済みユーザー

2019/01/16 08:05

>>CSVに保存するタイミングで表示してみては? というのはcsvファイルに保存するタイミングで何を表示させることを言っているのでしょうか?
退会済みユーザー

退会済みユーザー

2019/01/16 10:09

gps.clean_sentencesの値ですが、 緯度経度が取得されるまで、1〜21が記録されています。 21になった時に緯度経度が同時に取得されます。
TaroToyotomi

2019/01/16 13:52

その値はデータが更新されるたびにインクリメントされるはずなので、21から変わらないということはそれ以降はうまく更新されていないということでしょうね。
退会済みユーザー

退会済みユーザー

2019/01/16 15:26

>>その値はデータが更新されるたびにインクリメントされるはずなので、21から変わらないということは 21で取得開始し、それ以降は22,23...と増えていきます。
guest

回答1

0

ベストアンサー

まあ、こういうのはハードウエア的なミスも考えれるため、コードだけを見てもどうしようもない気がします。
どういう形でそのモジュールを接続されてるかはわかりませんが、GPSモジュールは受信機ですので、接続形態がまずいと受信できない場合もあることを分かっておいてください

で、いろいろ見ていると、
GPS受信機キット
ここにPCで接続してモニタできるようなソフトが有るようなので、これでまず動作確認してはどうでしょうか。

投稿2019/01/09 09:31

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/11 07:34

ありがとうございます。 .exeファイルをラズパイでファームウェア更新するにはどうすれば良いですか?
y_waiwai

2019/01/11 07:36

ここに上がってるソフトはWindows向けのものです。 そのモジュールをPCにつないでまず動作確認しましょう そうすれば、それが壊れてるのか正常なのかがはっきりします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問