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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

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

Python

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

Q&A

解決済

1回答

1731閲覧

RaspberryPi3 ModelBでGPSモジュールを使って緯度経度情報を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

Raspberry Pi

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

Python

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

0グッド

1クリップ

投稿2018/10/04 15:03

編集2018/10/04 15:06

前提・実現したいこと

RaspberryPi3 ModelBでGPSモジュールを使って緯度経度情報を取得したいです。
実行すると以下のエラーが出てしまいます。

発生している問題・エラーメッセージ

pi@raspberrypi:~/Desktop $ sudo python3 01.py
Traceback (most recent call last):
File "01.py", line 6, in <module>
gps = micropyGPS.MicropyGPS(9, 'dd') # MicroGPSオブジェクトを生成する。
AttributeError: module 'micropyGPS' has no attribute 'MicropyGPS'

該当のソースコード

Python

1 2import serial 3import micropyGPS 4import threading 5import time 6 7gps = micropyGPS.MicropyGPS(9, 'dd') # MicroGPSオブジェクトを生成する。 8 # 引数はタイムゾーンの時差と出力フォーマット 9 10def rungps(): # GPSモジュールを読み、GPSオブジェクトを更新する 11 s = serial.Serial('/dev/serial0', 9600, timeout=10) 12 s.readline() # 最初の1行は中途半端なデーターが読めることがあるので、捨てる 13 while True: 14 sentence = s.readline().decode('utf-8') # GPSデーターを読み、文字列に変換する 15 if sentence[0] != '$': # 先頭が'$'でなければ捨てる 16 continue 17 for x in sentence: # 読んだ文字列を解析してGPSオブジェクトにデーターを追加、更新する 18 gps.update(x) 19 20gpsthread = threading.Thread(target=rungps, args=()) # 上の関数を実行するスレッドを生成 21gpsthread.daemon = True 22gpsthread.start() # スレッドを起動 23 24while True: 25 if gps.clean_sentences > 20: # ちゃんとしたデーターがある程度たまったら出力する 26 h = gps.timestamp[0] if gps.timestamp[0] < 24 else gps.timestamp[0] - 24 27 print('%2d:%02d:%04.1f' % (h, gps.timestamp[1], gps.timestamp[2])) 28 print('緯度経度: %2.8f, %2.8f' % (gps.latitude[0], gps.longitude[0])) 29 print('海抜: %f' % gps.altitude) 30 print(gps.satellites_used) 31 print('衛星番号: (仰角, 方位角, SN比)') 32 for k, v in gps.satellite_data.items(): 33 print('%d: %s' % (k, v)) 34 print('') 35 time.sleep(3.0) 36 37

試したこと

"AttributeError"と検索して調べたところ
・ファイル名の変更
というキーワードが引っかかったのでこれをもとに
・Desktop上にある"micropyGPS"というフォルダ名の変更
・上記フォルダ内にある"micropyGPS.py"というファイル名の変更
・"01.py"にある"micropyGPS.MicropyGPS"の"."より後半部の名前の変更
以上を行いましたが相変わらずエラー表示でした。

補足情報(FW/ツールのバージョンなど)

参考にさせていただいたサイト(これを見ながら進めていました)

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

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

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

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

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

tiitoi

2018/10/04 15:44

print(micropyGPS.__file__) とすると、どうなりますか?
退会済みユーザー

退会済みユーザー

2018/10/05 04:46

pi@raspberrypi:~/Desktop $ python3 01.py Traceback (most recent call last): File "01.py", line 6, in <module> gps = micropyGPS.__file__(9, 'dd') # MicroGPSオブジェクトを生成する。 AttributeError: module 'micropyGPS' has no attribute '__file__'-------------------------------------------症状は変わらずでした。。
guest

回答1

0

ベストアンサー

inokai_さん、

micropyGPS.pyファイルの取得をしなおしてみてはどうでしょう。

rm -fv micropyGPS.py wget https://raw.githubusercontent.com/inmcm/micropyGPS/master/micropyGPS.py

こちらの環境(RaspberryPi3B, 2018-06-27-raspbian-stretch)では、

sudo python3 にて、以下でエラーは出ませんでした。

import micropyGPS gps = micropyGPS.MicropyGPS(9, 'dd')

投稿2018/10/04 16:45

mt08

総合スコア1825

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

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

退会済みユーザー

退会済みユーザー

2018/10/05 04:50

できたっぽいです!! 01.pyが通りました! あとは出力内容に間違いがないか再考します! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問