- 必要なコンポーネント:
- GPSモジュールとその動作:
- GPSと通信するためのRaspberryPiの準備:
- Raspberry Pi GPSモジュールインターフェースの接続:
- Pythonスクリプトの前のテスト:
Arduinoのような最もクールな組み込みプラットフォームの1つは、メーカーやDIY担当者に、GPSモジュールを使用して位置データを簡単に取得し、位置に依存するものを構築する機能を提供しています。Raspberry Piが搭載する電力量を考えると、同じ安価なGPSモジュールを使用してGPSベースのプロジェクトを構築することは確かに非常に素晴らしいことであり、それがこの投稿の焦点です。今日、このプロジェクトでは、GPSモジュールをRaspberry Pi3とインターフェースします。
このプロジェクトの目標は、GPSモジュールからUARTを介して位置データ(経度と緯度)を収集し、それらを16x2 LCDに表示することです。したがって、16x2LCDがRaspberryPiでどのように機能するかをよく知らない場合は、これも別の方法です。学ぶ絶好の機会。
必要なコンポーネント:
- ラズベリーパイ3
- Neo 6m v2GPSモジュール
- 16 x 2 LCD
- RaspberryPiの電源
- ヘッドレスモードでpiをPCに接続するためのLANケーブル
- ブレッドボードとジャンパーケーブル
- LCDへの抵抗器/ポテンショメータ
- RaspbianJessieを実行しているメモリカード8または16Gb
それ以外に、GPSデーモン(GPSD)ライブラリ、16x2 LCD Adafruitライブラリをインストールする必要があります。これは、このチュートリアルの後半でインストールします。
ここでは、Raspbian JessieOSでRaspberryPi3 を使用してい ます。すべての基本的なハードウェアとソフトウェアの要件については前に説明しましたが、RaspberryPiの概要で調べることができます。
GPSモジュールとその動作:
GPSは全地球測位システムの略で、正確なUTC時間(協定世界時)で地球上の任意の場所の緯度と経度を検出するために使用されます。GPSモジュールは、車両追跡システムプロジェクトの主要コンポーネントです。このデバイスは、衛星から毎秒、時刻と日付の座標を受信します。
GPSモジュールは、追跡位置に関連するデータをリアルタイムで送信し、NMEA形式で非常に多くのデータを送信します(下のスクリーンショットを参照)。NMEA形式は複数の文で構成されており、必要な文は1つだけです。この文は$ GPGGAから始まり、座標、時間、その他の役立つ情報が含まれています。このGPGGAは、全地球測位システム修正データと呼ばれます。GPSデータとその文字列の読み取りについて詳しくは、こちらをご覧ください。
文字列内のコンマを数えることで、$ GPGGA文字列から座標を抽出できます。$ GPGGA文字列を見つけて配列に格納すると、Latitudeは2つのコンマの後に、Longitudeは4つのコンマの後に見つけることができます。これで、これらの緯度と経度を他の配列に配置できます。
以下は、$ GPGGA文字列とその説明です。
$ GPGGA、104534.000,7791.0381、N、06727.4434、E、1,08,0.9,510.4、M、43.9、M,, * 47
$ GPGGA、HHMMSS.SSS、latitude、N、longitude、E、FQ、NOS、HDP、altitude、M、height、M,,チェックサムデータ
識別子 |
説明 |
$ GPGGA |
全地球測位システムの修正データ |
HHMMSS.SSS |
時間、分、秒、ミリ秒の形式の時間。 |
緯度 |
緯度(座標) |
N |
方向N =北、S =南 |
経度 |
経度(座標) |
E |
方向E =東、W =西 |
FQ |
品質データを修正する |
NOS |
使用されている衛星の数 |
HPD |
精度の水平希釈 |
高度 |
海面からの高度 |
M |
メーター |
高さ |
高さ |
チェックサム |
チェックサムデータ |
あなたは私たちの他のGPSプロジェクトをチェックすることができます:
- GPSとGSMを使用したArduinoベースの車両トラッカー
- GPS、GSM、加速度計を使用したArduinoベースの車両事故警報システム
- ArduinoでGPSを使用する方法
- Arduino、ESP8266、GPSを使用してGoogleマップで車両を追跡する
GPSと通信するためのRaspberryPiの準備:
さて、これは退屈ではありません。OSをインストールし、IPアドレスを取得し、パテなどの端末ソフトウェアに接続するのに十分な、RaspberryPiについてすでによく知っていると思います。 PI。上記のいずれかを実行する際に問題が発生した場合は、コメントセクションで私に連絡してください。喜んでサポートさせていただきます。
このプロジェクトを開始するために最初に行う必要があるのは、UARTを介してGPSモジュールと通信できるようにRaspberry Pi 3を準備することです。信じてください。非常にトリッキーで、正しく実行するためにかなりの努力を払いました。私のガイドは注意深くあなたが一度にそれを手に入れるでしょう、これはプロジェクトのかなり難しい部分です。ここでは、Neo 6m v2GPSモジュールを使用しました。
飛び込むために、ここにRaspberry Pi 3UARTがどのように機能するかについての簡単な説明があります。
Raspberry Piには、PL011とミニUARTの2つのUARTが組み込まれています。それらは異なるハードウェアブロックを使用して実装されているため、わずかに異なる特性を持っています。ただし、ラズベリーpi 3では、ワイヤレス/ BluetoothモジュールがPLO11UARTに接続され、ミニUARTがLinuxコンソール出力に使用されます。見方にもよりますが、実装レベルが高いため、PLO11を2つのUARTの中で最も優れたものとして定義します。したがって、このプロジェクトでは、Raspbian Jessieの最新バージョンで利用可能なオーバーレイを使用して、PLO11UARTからBluetoothモジュールを非アクティブ化します。
ステップ1:Raspberry Piを更新する:
すべてのプロジェクトを開始する前に私が最初にやりたいことは、ラズベリーパイを更新することです。それでは、通常の操作を実行して、以下のコマンドを実行しましょう。
sudo apt-get update sudo apt-get upgrade
次に、でシステムを再起動します。
sudoリブート
ステップ2:Raspberry PiでUARTをセットアップする:
この下で最初に行うことは、/ boot /config.txt ファイルを編集すること です。これを行うには、以下のコマンドを実行します。
sudo nano /boot/config.txt
config.txtファイルの最後に、次の行を追加します
dtparam = spi = on dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + xで終了し、yを押してEnterキーを押して保存します。
エラーが発生するとpiが起動しなくなる可能性があるため、ダブルチェックしてタイプミスやエラーがないことを確認してください。
これらのコマンドの理由は何ですか、 force_turbo はUARTがこの場合250に設定している最大コア周波数を使用できるようにします。これは受信したシリアルデータの一貫性と整合性を確保するためです。この時点で、 force_turbo = 1 を使用すると、ラズベリーパイの保証が無効になることに注意してください。ただし、それ以外にも、かなり安全です。
dtoverlay = PI3-無効-BT から切断ブルートゥース ttyAMA0 、これは私たちが経由する完全なUARTの電源を使用するアクセスできるようにすることです ttyAMAO 代わりのミニUART ttyS0のを。
このUARTセットアップセクションの2番目のステップは、 boot /cmdline.txt を編集すること です。
cmdline.txtのコピーを作成し、編集する前に最初に保存して、後で必要に応じて元に戻すことができるようにすることをお勧めします。これは、以下を使用して実行できます。
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
コンテンツを;に置き換えます。
dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4エレベーター=期限fsck.repair = yesrootwait静かなスプラッシュplymouth.ignore-serial-consoles
保存して終了。
これが完了したら、変更を有効にするためにシステムを再起動する必要があります( sudo restart )。
ステップ3:RaspberryPiシリアルゲッティサービスを無効にする
次のステップは、Piのシリアル gettyサービス を無効にすることです。このコマンドは、再起動時にPiが再起動しないようにします。
sudo systemctl stop [email protected] sudo systemctl disable [email protected]
次のコマンドを使用して、必要に応じて再度有効にすることができます
sudo systemctl enable [email protected] sudo systemctl start [email protected]
システムを再起動します。
ステップ4:ttyAMAOをアクティブ化する:
ttyS0を無効にしました。次は、 ttyAMAO を有効にし ます 。
sudo systemctl enable [email protected]
ステップ5:Minicomとpynmea2をインストールします。
GPSモジュールに接続してデータを理解するためのミニコムになります。また、GPSモジュールが正常に機能していることをテストするために使用するツールの1つです。minicomの代わりに、デーモンソフトウェアGPSDがあります。
sudo apt-get install minicom
受信したデータを簡単に解析するために、 pynmea2ライブラリ を利用し ます 。を使用してインストールできます。
sudo pip install pynmea2
ライブラリのドキュメントはここにありますhttps://github.com/Knio/pynmea2
ステップ6:LCDライブラリのインストール:
このチュートリアルでは、AdaFruitライブラリを使用します。ライブラリはAdaFruit画面用に作成されましたが、HD44780を使用するディスプレイボードでも機能します。ディスプレイがこれに基づいている場合は、問題なく動作するはずです。
ライブラリのクローンを作成して直接インストールする方が良いと思います。実行を複製するには;
git clone
クローンディレクトリに移動してインストールします
cd./Adafruit_Python_CharLCD sudo python setup.py install
この段階で、コンポーネントの接続に進む準備ができるように、もう一度再起動することをお勧めします。
Raspberry Pi GPSモジュールインターフェースの接続:
以下の回路図に示すように、GPSモジュールとLCDをRaspberryPiに接続します。
Pythonスクリプトの前のテスト:
Pythonスクリプトに進む前に、GPSモジュールの接続をテストすることが重要だと感じています。これにはminicomを使用します。次のコマンドを実行します。
sudo minicom -D / dev / ttyAMA0 -b9600
ここで、9600はGPSモジュールが通信するボーレートを表します。これは、GPSとRPIの間のデータ通信が確認されたら、Pythonスクリプトを作成するときに使用できます。
テストは猫を使用して行うこともできます
sudo cat / dev / ttyAMA0
ウィンドウでは、前に説明したNMEAセンテンスを見ることができます。
このRaspberryPi GPSチュートリアルのPythonスクリプトは、以下のコードセクションに記載されています。
以上で、システム全体をテストします。あなたのGPSが良い修正を得ていることを確認することは重要です、それを取り出すことによって、私のものは屋内で働いていましたが、ほとんどのGPSは修正を得るために3から4の衛星を必要とします。
正しく動作しますか?うん…
質問やコメントがありますか?コメントセクションにそれらをドロップします。
デモンストレーションビデオを以下に示します。ここでは、GPSとRaspberryPiを使用してLCDに緯度と経度の位置を示しています。