ラズパイにGPSモジュールを付ける UART接続

本日は、マイブームとなっているラズパイの話題である。
仕事からみなのだが、GPSを扱う予定になった。じゃあ、ラズパイにGPSモジュールを付けなければ、ということで早速注文するのである。
以下を購入

 えーと、何回も貼り付け直してもAmazonの画像が出なくなってしまう。
 何が悪いのか...
 よくわからないのでそのままであるが、勘弁してね。
アンテナが付いているので、便利かなということでこいつにした。
ラズパイとの接続は、UARTでやるとなっている。
GPSモジュールって、昔はウン万円もしていたと思うのだが、今や数千円で買えるのね。
早速取り付けてみた。
ラズパイ GPSモジュール
3.3V   VCC
GND GND
14(TxD) RxD
15(RxD) TxD
TxとRxを接続するのがミソ。
DSC_0293.JPG
赤い色のやつが、GPSモジュール。LCDには、緯度・経度を表示したいと考えている。位置情報の試験には車載しないとダメか。
接続してみたものの、シリアルデバイス/dev/ttyAMA0をcatしてみても、NMEAデータが降って来ない。
どうして?
どうも、シリアルポートがコンソールになっているので、これを止めないといけないらしい。カーネルパラメータをいじる必要がある。
ラズパイのカーネルパラメータは、/boot/cmdline.txtに書かれているとのこと。
UARTは、/dev/ttyAMA0でアクセス可能との記述があちこちにあるが、raspberry pi 3では、/dev/ttyS0に変更になったらしい。serial0となっている場合もあり。
当方のラズパイ3は、console=serial0,15200となっていた。
カーネルがシリアルコンソールを立ち上げないように、以下の部分を削除する。
console=serial0,115200
serial0の部分は、/dev/ttyAMA0や/dev/ttyS0となっている場合もあるようだ。
gettyが起動しないように、inittabを編集しろ、という記事をあちこちで見たが、ラズパイ3には、/etc/inittabがない。gettyもtty1でしか動いていないようなので、これは無視した。
再起動すると、ttyS0が使えるとのこと。やってみた。
cat /dev/ttyS0
デバイスがありません。
mknodでttyS0を作ってみた。
cat /dev/ttyS0
反応なし...
cat /dev/ttyAMA0
反応なし...
どうも、ラズパイ3の場合、/boot/config.txtで「enable_uart=1」を入れないとUARTが有効にならないっぽい。Bluetoothがらみで、そうなっているそうな。
以下のURLに詳しく書いてあった
https://learn.adafruit.com/adafruit-ultimate-gps-on-the-raspberry-pi/using-uart-instead-of-usb
別のサイトで、「core_freq=250」って書いておくとよいとの情報もあり。
デフォルトで250みたいなんだけど、一応書いておく。
root@raspberrypi:/boot# cat /dev/ttyS0
58
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
おお、取れた。
 ちなみに、NMEA形式です。「ネマ」じゃなくて、エヌメアもしくなニーマね。
 どうでもいいけど、この単語読むのが難しい。オレ的には、「ニーマ」って呼んじゃう。
 *の後はチェックデジット。
 まぁ、どうでもいいか。
窓際に置くと、測位してくれる。
測位できると、LEDが点滅する。
Amazonで「Raspberry Pi」を検索
関連記事
準天頂衛星「みちびき2号」の打ち上げに成功!
ラズパイGPSモジュール LCDに緯度経度を表示
ラズパイを車載する モバイルバッテリを購入
WiFiで位置情報 ロケーションサービスを実験する

投稿者プロフィール

asai
asai