Edison UARTに接続したGPSをpythonを使って読み出すテスト。
前提
インストールするモジュール
ハードウェア
- Intel Edison
-
LOCOSYS LS2003E UART0に接続
- ボーレート 9600bps
試してみる
UARTとの接続はmraaで行い、取得した値はpynmea2で処理する。
import mraa
import serial
import pynmea2
# UARTポートの指定
uart = mraa.Uart(0)
# Serialオブジェクトの生成。ボーレートは9600bps
ser = serial.Serial(uart.getDevicePath(), 9600)
while 1:
# 行単位でパースする
msg = pynmea2.parse(ser.readline())
# センテンスがGGAのものを処理
if msg.sentence_type == 'GGA': # Global Positioning System Fix Data
print {
'gps.number_of_satellites': msg.num_sats,
'gps.latitude': msg.latitude,
'gps.longitude': msg.longitude,
'gps.altitude': msg.altitude,
}
こんなのが取れる。
{
'gps.altitude': -12.8,
'gps.longitude': 139.77447469,
'gps.number_of_satellites': '11',
'gps.latitude': 35.700290937
}
感想
回路が繋がってさえいれば、python + mraa + pynmea2ですごく簡単に処理できる。
NMEAに定義されているsentenceはいくつかあるので、正しく使うにはNMEAの理解が必要そう。