LoginSignup
17
15

More than 5 years have passed since last update.

Raspberry PIとGPSを使って自分の位置をさくっと収集する方法

Last updated at Posted at 2018-02-12

はじめに

自分の位置を予測する方法についての記事を書いたら、収集する方法についての問い合わせがあったので、収集方法についての記事を書きます。

データの利用例は以下のURLをご参照下さい。

GPSで取得した位置情報のログを学習し、数分後に自分がどこにいるのかを予測する

準備

OSインストール

以下のURLよりOSのイメージをダウンロード

RASPBIAN

以下のソフトウェアを使ってmicroSDに書き込む

Etcher

microSDをラズパイに挿して電源を投入し、しばらく待ったらログイン画面が出るので、pi、raspberryと入力してログイン。

GPS関連の設定

初期設定

設定プログラムを実行。

sudo raspi-config

「5 Interfacing Option」ー「P6 Serial」を選択し、有効化。

プログラムのインストール

以下のコマンドを実行。

sudo apt-get -y install gpsd gpsd-clients python-gps

起動設定の変更

sudo nano /boot/cmdline.txt

「console=serial0,115200」を削除

gpsd設定変更

sudo nano /etc/default/gpsd

以下の二箇所を修正。

USBAUTO="false"
DEVICES="/dev/serial0"

設定後、以下のコマンドを実行。

sudo shutdown -h now

GPSモジュールの接続

下図のとおり接続。

20180128_センシングプラザ紹介.001.jpeg

接続後、電源を投入。

動作確認

以下のコマンドを実行し、正しくデータが収集できていることを確認。

gpsmon

データ収集

以下のスクリプトで取得した位置情報をSQLiteに保存。

getGPS.py
#!/usr/bin/env python

from gps import *
import sqlite3
from datetime import datetime, timedelta

if __name__ == '__main__':

    dbname = "gpslog.db"
    conn = sqlite3.connect(dbname)
    c = conn.cursor()

    session = gps()

    session.stream(WATCH_ENABLE|WATCH_NEWSTYLE)

    dt_buff = ""

    for report in session:

        if report['class'] == "TPV":

            dt = datetime.strptime(report['time'].replace('T', ' ')[:19],'%Y-%m-%d %H:%M:%S')
            dt = str(dt + timedelta(hours=9))
            lon = report['lon']
            lat = report['lat']

            if dt != dt_buff:
                sql = "INSERT INTO log VALUES('{}',{},{})".format(dt[:19], lon, lat)
                c.execute(sql)

            dt_buff = dt

            time.sleep(1)

上記スクリプトを以下のコマンドで実行。

chmod a+x getGPS.py
./getGPS.py

自動起動

起動時に自動実行されるように設定。

sudo nano /etc/rc.local

以下の一行を「exit 0」の前に追記。

/home/pi/getGPS.py &

以上。

17
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15